diff --git a/LICENSE b/LICENSE index 7b180fd..77afca3 100755 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Jason Salzman +Copyright (c) 2016-2017 Jason Salzman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 8517307..b666038 100644 --- a/README.md +++ b/README.md @@ -88,4 +88,4 @@ The examples are hosted within the docs folder and are ran in the simple add tha ## License -Copyright (c) 2016 Jason Salzman. Licensed under MIT license, see [LICENSE](LICENSE) for the full license. +Copyright (c) 2016-2017 Jason Salzman. Licensed under MIT license, see [LICENSE](LICENSE) for the full license. \ No newline at end of file diff --git a/docs-site/bundle.js b/docs-site/bundle.js index 7f9c76e..aded5d1 100644 --- a/docs-site/bundle.js +++ b/docs-site/bundle.js @@ -80,11 +80,11 @@ var _react2 = _interopRequireDefault(_react); - var _reactDom = __webpack_require__(31); + var _reactDom = __webpack_require__(29); var _reactDom2 = _interopRequireDefault(_reactDom); - var _root = __webpack_require__(164); + var _root = __webpack_require__(167); var _root2 = _interopRequireDefault(_root); @@ -113,7 +113,6 @@ * 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 React */ 'use strict'; @@ -121,15 +120,15 @@ var _assign = __webpack_require__(4); var ReactChildren = __webpack_require__(5); - var ReactComponent = __webpack_require__(17); - var ReactPureComponent = __webpack_require__(20); - var ReactClass = __webpack_require__(21); - var ReactDOMFactories = __webpack_require__(26); + var ReactComponent = __webpack_require__(18); + var ReactPureComponent = __webpack_require__(21); + var ReactClass = __webpack_require__(22); + var ReactDOMFactories = __webpack_require__(24); var ReactElement = __webpack_require__(9); - var ReactPropTypes = __webpack_require__(27); - var ReactVersion = __webpack_require__(29); + var ReactPropTypes = __webpack_require__(25); + var ReactVersion = __webpack_require__(27); - var onlyChild = __webpack_require__(30); + var onlyChild = __webpack_require__(28); var warning = __webpack_require__(11); var createElement = ReactElement.createElement; @@ -296,7 +295,6 @@ * 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 ReactChildren */ 'use strict'; @@ -305,7 +303,7 @@ var ReactElement = __webpack_require__(9); var emptyFunction = __webpack_require__(12); - var traverseAllChildren = __webpack_require__(14); + var traverseAllChildren = __webpack_require__(15); var twoArgumentPooler = PooledClass.twoArgumentPooler; var fourArgumentPooler = PooledClass.fourArgumentPooler; @@ -336,8 +334,8 @@ PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler); function forEachSingleChild(bookKeeping, child, name) { - var func = bookKeeping.func; - var context = bookKeeping.context; + var func = bookKeeping.func, + context = bookKeeping.context; func.call(context, child, bookKeeping.count++); } @@ -389,10 +387,10 @@ PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler); function mapSingleChildIntoContext(bookKeeping, child, childKey) { - var result = bookKeeping.result; - var keyPrefix = bookKeeping.keyPrefix; - var func = bookKeeping.func; - var context = bookKeeping.context; + var result = bookKeeping.result, + keyPrefix = bookKeeping.keyPrefix, + func = bookKeeping.func, + context = bookKeeping.context; var mappedChild = func.call(context, child, bookKeeping.count++); @@ -482,131 +480,7 @@ /***/ }, /* 6 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * 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 PooledClass - */ - - 'use strict'; - - var _prodInvariant = __webpack_require__(7); - - var invariant = __webpack_require__(8); - - /** - * Static poolers. Several custom versions for each potential number of - * arguments. A completely generic pooler is easy to implement, but would - * require accessing the `arguments` object. In each of these, `this` refers to - * the Class itself, not an instance. If any others are needed, simply add them - * here, or in their own files. - */ - var oneArgumentPooler = function (copyFieldsFrom) { - var Klass = this; - if (Klass.instancePool.length) { - var instance = Klass.instancePool.pop(); - Klass.call(instance, copyFieldsFrom); - return instance; - } else { - return new Klass(copyFieldsFrom); - } - }; - - var twoArgumentPooler = function (a1, a2) { - var Klass = this; - if (Klass.instancePool.length) { - var instance = Klass.instancePool.pop(); - Klass.call(instance, a1, a2); - return instance; - } else { - return new Klass(a1, a2); - } - }; - - var threeArgumentPooler = function (a1, a2, a3) { - var Klass = this; - if (Klass.instancePool.length) { - var instance = Klass.instancePool.pop(); - Klass.call(instance, a1, a2, a3); - return instance; - } else { - return new Klass(a1, a2, a3); - } - }; - - var fourArgumentPooler = function (a1, a2, a3, a4) { - var Klass = this; - if (Klass.instancePool.length) { - var instance = Klass.instancePool.pop(); - Klass.call(instance, a1, a2, a3, a4); - return instance; - } else { - return new Klass(a1, a2, a3, a4); - } - }; - - var fiveArgumentPooler = function (a1, a2, a3, a4, a5) { - var Klass = this; - if (Klass.instancePool.length) { - var instance = Klass.instancePool.pop(); - Klass.call(instance, a1, a2, a3, a4, a5); - return instance; - } else { - return new Klass(a1, a2, a3, a4, a5); - } - }; - - var standardReleaser = function (instance) { - var Klass = this; - !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0; - instance.destructor(); - if (Klass.instancePool.length < Klass.poolSize) { - Klass.instancePool.push(instance); - } - }; - - var DEFAULT_POOL_SIZE = 10; - var DEFAULT_POOLER = oneArgumentPooler; - - /** - * Augments `CopyConstructor` to be a poolable class, augmenting only the class - * itself (statically) not adding any prototypical fields. Any CopyConstructor - * you give this may have a `poolSize` property, and will look for a - * prototypical `destructor` on instances. - * - * @param {Function} CopyConstructor Constructor that can be used to reset. - * @param {Function} pooler Customizable pooler. - */ - var addPoolingTo = function (CopyConstructor, pooler) { - var NewKlass = CopyConstructor; - NewKlass.instancePool = []; - NewKlass.getPooled = pooler || DEFAULT_POOLER; - if (!NewKlass.poolSize) { - NewKlass.poolSize = DEFAULT_POOL_SIZE; - } - NewKlass.release = standardReleaser; - return NewKlass; - }; - - var PooledClass = { - addPoolingTo: addPoolingTo, - oneArgumentPooler: oneArgumentPooler, - twoArgumentPooler: twoArgumentPooler, - threeArgumentPooler: threeArgumentPooler, - fourArgumentPooler: fourArgumentPooler, - fiveArgumentPooler: fiveArgumentPooler - }; - - module.exports = PooledClass; - -/***/ }, +[464, 7], /* 7 */ /***/ function(module, exports) { @@ -618,7 +492,6 @@ * 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 reactProdInvariant * */ 'use strict'; @@ -716,7 +589,6 @@ * 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 ReactElement */ 'use strict'; @@ -729,9 +601,7 @@ var canDefineProperty = __webpack_require__(13); var hasOwnProperty = Object.prototype.hasOwnProperty; - // The Symbol used to tag the ReactElement type. If there is no native Symbol - // nor polyfill, then a plain number is used for performance. - var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; + var REACT_ELEMENT_TYPE = __webpack_require__(14); var RESERVED_PROPS = { key: true, @@ -835,7 +705,6 @@ // This can be replaced with a WeakMap once they are implemented in // commonly used development environments. element._store = {}; - var shadowChildren = Array.isArray(props.children) ? props.children.slice(0) : props.children; // To make comparing ReactElements easier for testing purposes, we make // the validation flag non-enumerable (where possible, which should @@ -855,12 +724,6 @@ writable: false, value: self }); - Object.defineProperty(element, '_shadowChildren', { - configurable: false, - enumerable: false, - writable: false, - value: shadowChildren - }); // Two elements created in two different places should be considered // equal for testing purposes and therefore we hide it from enumeration. Object.defineProperty(element, '_source', { @@ -872,7 +735,6 @@ } else { element._store.validated = false; element._self = self; - element._shadowChildren = shadowChildren; element._source = source; } if (Object.freeze) { @@ -927,6 +789,11 @@ for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 2]; } + if (false) { + if (Object.freeze) { + Object.freeze(childArray); + } + } props.children = childArray; } @@ -1053,8 +920,6 @@ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; }; - ReactElement.REACT_ELEMENT_TYPE = REACT_ELEMENT_TYPE; - module.exports = ReactElement; /***/ }, @@ -1069,7 +934,7 @@ * 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 ReactCurrentOwner + * */ 'use strict'; @@ -1080,7 +945,6 @@ * The current owner is the component who should own any components that are * currently being constructed. */ - var ReactCurrentOwner = { /** @@ -1219,7 +1083,7 @@ * 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 canDefineProperty + * */ 'use strict'; @@ -1227,6 +1091,7 @@ var canDefineProperty = false; if (false) { try { + // $FlowFixMe https://github.com/facebook/flow/issues/285 Object.defineProperty({}, 'x', { get: function () {} }); canDefineProperty = true; } catch (x) { @@ -1238,6 +1103,30 @@ /***/ }, /* 14 */ +/***/ function(module, exports) { + + /** + * Copyright 2014-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. + * + * + */ + + 'use strict'; + + // The Symbol used to tag the ReactElement type. If there is no native Symbol + // nor polyfill, then a plain number is used for performance. + + var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; + + module.exports = REACT_ELEMENT_TYPE; + +/***/ }, +/* 15 */ /***/ function(module, exports, __webpack_require__) { /** @@ -1248,7 +1137,6 @@ * 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 traverseAllChildren */ 'use strict'; @@ -1256,16 +1144,22 @@ var _prodInvariant = __webpack_require__(7); var ReactCurrentOwner = __webpack_require__(10); - var ReactElement = __webpack_require__(9); + var REACT_ELEMENT_TYPE = __webpack_require__(14); - var getIteratorFn = __webpack_require__(15); + var getIteratorFn = __webpack_require__(16); var invariant = __webpack_require__(8); - var KeyEscapeUtils = __webpack_require__(16); + var KeyEscapeUtils = __webpack_require__(17); var warning = __webpack_require__(11); var SEPARATOR = '.'; var SUBSEPARATOR = ':'; + /** + * This is inlined from ReactElement since this file is shared between + * isomorphic and renderers. We could extract this to a + * + */ + /** * TODO: Test that a single child and an array with one item have the same key * pattern. @@ -1307,7 +1201,10 @@ children = null; } - if (children === null || type === 'string' || type === 'number' || ReactElement.isValidElement(children)) { + if (children === null || type === 'string' || type === 'number' || + // The following is inlined from ReactElement. This means we can optimize + // some checks. React Fiber also inlines this logic for similar purposes. + type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { callback(traverseContext, children, // If it's the only child, treat the name as if it was wrapped in an array // so that it's consistent if the number of children grows. @@ -1409,7 +1306,7 @@ module.exports = traverseAllChildren; /***/ }, -/* 15 */ +/* 16 */ /***/ function(module, exports) { /** @@ -1420,7 +1317,6 @@ * 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 getIteratorFn * */ @@ -1455,7 +1351,7 @@ module.exports = getIteratorFn; /***/ }, -/* 16 */ +/* 17 */ /***/ function(module, exports) { /** @@ -1466,7 +1362,6 @@ * 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 * */ @@ -1519,7 +1414,7 @@ module.exports = KeyEscapeUtils; /***/ }, -/* 17 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { /** @@ -1530,17 +1425,16 @@ * 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 ReactComponent */ 'use strict'; var _prodInvariant = __webpack_require__(7); - var ReactNoopUpdateQueue = __webpack_require__(18); + var ReactNoopUpdateQueue = __webpack_require__(19); var canDefineProperty = __webpack_require__(13); - var emptyObject = __webpack_require__(19); + var emptyObject = __webpack_require__(20); var invariant = __webpack_require__(8); var warning = __webpack_require__(11); @@ -1642,7 +1536,7 @@ module.exports = ReactComponent; /***/ }, -/* 18 */ +/* 19 */ /***/ function(module, exports, __webpack_require__) { /** @@ -1653,7 +1547,6 @@ * 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 ReactNoopUpdateQueue */ 'use strict'; @@ -1743,7 +1636,7 @@ module.exports = ReactNoopUpdateQueue; /***/ }, -/* 19 */ +/* 20 */ /***/ function(module, exports, __webpack_require__) { /** @@ -1767,7 +1660,7 @@ module.exports = emptyObject; /***/ }, -/* 20 */ +/* 21 */ /***/ function(module, exports, __webpack_require__) { /** @@ -1778,17 +1671,16 @@ * 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 ReactPureComponent */ 'use strict'; var _assign = __webpack_require__(4); - var ReactComponent = __webpack_require__(17); - var ReactNoopUpdateQueue = __webpack_require__(18); + var ReactComponent = __webpack_require__(18); + var ReactNoopUpdateQueue = __webpack_require__(19); - var emptyObject = __webpack_require__(19); + var emptyObject = __webpack_require__(20); /** * Base class helpers for the updating state of a component. @@ -1814,7 +1706,7 @@ module.exports = ReactPureComponent; /***/ }, -/* 21 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { /** @@ -1825,7 +1717,6 @@ * 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 ReactClass */ 'use strict'; @@ -1833,44 +1724,27 @@ var _prodInvariant = __webpack_require__(7), _assign = __webpack_require__(4); - var ReactComponent = __webpack_require__(17); + var ReactComponent = __webpack_require__(18); var ReactElement = __webpack_require__(9); - var ReactPropTypeLocations = __webpack_require__(22); - var ReactPropTypeLocationNames = __webpack_require__(24); - var ReactNoopUpdateQueue = __webpack_require__(18); + var ReactPropTypeLocationNames = __webpack_require__(23); + var ReactNoopUpdateQueue = __webpack_require__(19); - var emptyObject = __webpack_require__(19); + var emptyObject = __webpack_require__(20); var invariant = __webpack_require__(8); - var keyMirror = __webpack_require__(23); - var keyOf = __webpack_require__(25); var warning = __webpack_require__(11); - var MIXINS_KEY = keyOf({ mixins: null }); + var MIXINS_KEY = 'mixins'; + + // Helper function to allow the creation of anonymous functions which do not + // have .name set to the name of the variable being assigned to. + function identity(fn) { + return fn; + } /** * Policies that describe methods in `ReactClassInterface`. */ - var SpecPolicy = keyMirror({ - /** - * These methods may be defined only once by the class specification or mixin. - */ - DEFINE_ONCE: null, - /** - * These methods may be defined by both the class specification and mixins. - * Subsequent definitions will be chained. These methods must return void. - */ - DEFINE_MANY: null, - /** - * These methods are overriding the base class. - */ - OVERRIDE_BASE: null, - /** - * These methods are similar to DEFINE_MANY, except we assume they return - * objects. We try to merge the keys of the return values of all the mixed in - * functions. If there is a key conflict we throw. - */ - DEFINE_MANY_MERGED: null - }); + var injectedMixins = []; @@ -1904,7 +1778,7 @@ * @type {array} * @optional */ - mixins: SpecPolicy.DEFINE_MANY, + mixins: 'DEFINE_MANY', /** * An object containing properties and methods that should be defined on @@ -1913,7 +1787,7 @@ * @type {object} * @optional */ - statics: SpecPolicy.DEFINE_MANY, + statics: 'DEFINE_MANY', /** * Definition of prop types for this component. @@ -1921,7 +1795,7 @@ * @type {object} * @optional */ - propTypes: SpecPolicy.DEFINE_MANY, + propTypes: 'DEFINE_MANY', /** * Definition of context types for this component. @@ -1929,7 +1803,7 @@ * @type {object} * @optional */ - contextTypes: SpecPolicy.DEFINE_MANY, + contextTypes: 'DEFINE_MANY', /** * Definition of context types this component sets for its children. @@ -1937,7 +1811,7 @@ * @type {object} * @optional */ - childContextTypes: SpecPolicy.DEFINE_MANY, + childContextTypes: 'DEFINE_MANY', // ==== Definition methods ==== @@ -1951,7 +1825,7 @@ * @return {object} * @optional */ - getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED, + getDefaultProps: 'DEFINE_MANY_MERGED', /** * Invoked once before the component is mounted. The return value will be used @@ -1967,13 +1841,13 @@ * @return {object} * @optional */ - getInitialState: SpecPolicy.DEFINE_MANY_MERGED, + getInitialState: 'DEFINE_MANY_MERGED', /** * @return {object} * @optional */ - getChildContext: SpecPolicy.DEFINE_MANY_MERGED, + getChildContext: 'DEFINE_MANY_MERGED', /** * Uses props from `this.props` and state from `this.state` to render the @@ -1991,7 +1865,7 @@ * @nosideeffects * @required */ - render: SpecPolicy.DEFINE_ONCE, + render: 'DEFINE_ONCE', // ==== Delegate methods ==== @@ -2002,7 +1876,7 @@ * * @optional */ - componentWillMount: SpecPolicy.DEFINE_MANY, + componentWillMount: 'DEFINE_MANY', /** * Invoked when the component has been mounted and has a DOM representation. @@ -2014,7 +1888,7 @@ * @param {DOMElement} rootNode DOM element representing the component. * @optional */ - componentDidMount: SpecPolicy.DEFINE_MANY, + componentDidMount: 'DEFINE_MANY', /** * Invoked before the component receives new props. @@ -2035,7 +1909,7 @@ * @param {object} nextProps * @optional */ - componentWillReceiveProps: SpecPolicy.DEFINE_MANY, + componentWillReceiveProps: 'DEFINE_MANY', /** * Invoked while deciding if the component should be updated as a result of @@ -2057,7 +1931,7 @@ * @return {boolean} True if the component should update. * @optional */ - shouldComponentUpdate: SpecPolicy.DEFINE_ONCE, + shouldComponentUpdate: 'DEFINE_ONCE', /** * Invoked when the component is about to update due to a transition from @@ -2074,7 +1948,7 @@ * @param {ReactReconcileTransaction} transaction * @optional */ - componentWillUpdate: SpecPolicy.DEFINE_MANY, + componentWillUpdate: 'DEFINE_MANY', /** * Invoked when the component's DOM representation has been updated. @@ -2088,7 +1962,7 @@ * @param {DOMElement} rootNode DOM element representing the component. * @optional */ - componentDidUpdate: SpecPolicy.DEFINE_MANY, + componentDidUpdate: 'DEFINE_MANY', /** * Invoked when the component is about to be removed from its parent and have @@ -2101,7 +1975,7 @@ * * @optional */ - componentWillUnmount: SpecPolicy.DEFINE_MANY, + componentWillUnmount: 'DEFINE_MANY', // ==== Advanced methods ==== @@ -2115,7 +1989,7 @@ * @internal * @overridable */ - updateComponent: SpecPolicy.OVERRIDE_BASE + updateComponent: 'OVERRIDE_BASE' }; @@ -2141,13 +2015,13 @@ }, childContextTypes: function (Constructor, childContextTypes) { if (false) { - validateTypeDef(Constructor, childContextTypes, ReactPropTypeLocations.childContext); + validateTypeDef(Constructor, childContextTypes, 'childContext'); } Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes); }, contextTypes: function (Constructor, contextTypes) { if (false) { - validateTypeDef(Constructor, contextTypes, ReactPropTypeLocations.context); + validateTypeDef(Constructor, contextTypes, 'context'); } Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes); }, @@ -2164,7 +2038,7 @@ }, propTypes: function (Constructor, propTypes) { if (false) { - validateTypeDef(Constructor, propTypes, ReactPropTypeLocations.prop); + validateTypeDef(Constructor, propTypes, 'prop'); } Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); }, @@ -2173,7 +2047,6 @@ }, autobind: function () {} }; - // noop function validateTypeDef(Constructor, typeDef, location) { for (var propName in typeDef) { if (typeDef.hasOwnProperty(propName)) { @@ -2189,12 +2062,12 @@ // Disallow overriding of base class methods unless explicitly allowed. if (ReactClassMixin.hasOwnProperty(name)) { - !(specPolicy === SpecPolicy.OVERRIDE_BASE) ? false ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0; + !(specPolicy === 'OVERRIDE_BASE') ? false ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0; } // Disallow defining methods more than once unless explicitly allowed. if (isAlreadyDefined) { - !(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED) ? false ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0; + !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? false ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0; } } @@ -2260,13 +2133,13 @@ var specPolicy = ReactClassInterface[name]; // These cases should already be caught by validateMethodOverride. - !(isReactClassMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)) ? false ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0; + !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? false ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0; // For methods which are defined more than once, call the existing // methods before calling the new property, merging if appropriate. - if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) { + if (specPolicy === 'DEFINE_MANY_MERGED') { proto[name] = createMergedResultFunction(proto[name], property); - } else if (specPolicy === SpecPolicy.DEFINE_MANY) { + } else if (specPolicy === 'DEFINE_MANY') { proto[name] = createChainedFunction(proto[name], property); } } else { @@ -2461,7 +2334,10 @@ * @public */ createClass: function (spec) { - var Constructor = function (props, context, updater) { + // To keep our warnings more understandable, we'll use a little hack here to + // ensure that Constructor.name !== 'Constructor'. This makes sure we don't + // unnecessarily identify a class without displayName as 'Constructor'. + var Constructor = identity(function (props, context, updater) { // This constructor gets overridden by mocks. The argument is used // by mocks to assert on what gets mounted. @@ -2496,7 +2372,7 @@ !(typeof initialState === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0; this.state = initialState; - }; + }); Constructor.prototype = new ReactClassComponent(); Constructor.prototype.constructor = Constructor; Constructor.prototype.__reactAutoBindPairs = []; @@ -2550,87 +2426,8 @@ module.exports = ReactClass; -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * 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 ReactPropTypeLocations - */ - - 'use strict'; - - var keyMirror = __webpack_require__(23); - - var ReactPropTypeLocations = keyMirror({ - prop: null, - context: null, - childContext: null - }); - - module.exports = ReactPropTypeLocations; - /***/ }, /* 23 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * Copyright (c) 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. - * - * @typechecks static-only - */ - - 'use strict'; - - var invariant = __webpack_require__(8); - - /** - * Constructs an enumeration with keys equal to their value. - * - * For example: - * - * var COLORS = keyMirror({blue: null, red: null}); - * var myColor = COLORS.blue; - * var isColorValid = !!COLORS[myColor]; - * - * The last line could not be performed if the values of the generated enum were - * not equal to their keys. - * - * Input: {key1: val1, key2: val2} - * Output: {key1: key1, key2: key2} - * - * @param {object} obj - * @return {object} - */ - var keyMirror = function keyMirror(obj) { - var ret = {}; - var key; - !(obj instanceof Object && !Array.isArray(obj)) ? false ? invariant(false, 'keyMirror(...): Argument must be an object.') : invariant(false) : void 0; - for (key in obj) { - if (!obj.hasOwnProperty(key)) { - continue; - } - ret[key] = key; - } - return ret; - }; - - module.exports = keyMirror; - -/***/ }, -/* 24 */ /***/ function(module, exports, __webpack_require__) { /** @@ -2641,7 +2438,7 @@ * 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 ReactPropTypeLocationNames + * */ 'use strict'; @@ -2659,46 +2456,7 @@ module.exports = ReactPropTypeLocationNames; /***/ }, -/* 25 */ -/***/ function(module, exports) { - - "use strict"; - - /** - * Copyright (c) 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. - * - */ - - /** - * Allows extraction of a minified key. Let's the build system minify keys - * without losing the ability to dynamically use key strings as values - * themselves. Pass in an object with a single key/val pair and it will return - * you the string key of that single record. Suppose you want to grab the - * value for a key 'className' inside of an object. Key/val minification may - * have aliased that key to be 'xa12'. keyOf({className: null}) will return - * 'xa12' in that case. Resolve keys you want to use once at startup time, then - * reuse those resolutions. - */ - var keyOf = function keyOf(oneKeyObj) { - var key; - for (key in oneKeyObj) { - if (!oneKeyObj.hasOwnProperty(key)) { - continue; - } - return key; - } - return null; - }; - - module.exports = keyOf; - -/***/ }, -/* 26 */ +/* 24 */ /***/ function(module, exports, __webpack_require__) { /** @@ -2709,7 +2467,6 @@ * 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'; @@ -2873,7 +2630,7 @@ module.exports = ReactDOMFactories; /***/ }, -/* 27 */ +/* 25 */ /***/ function(module, exports, __webpack_require__) { /** @@ -2884,17 +2641,16 @@ * 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 ReactPropTypes */ 'use strict'; var ReactElement = __webpack_require__(9); - var ReactPropTypeLocationNames = __webpack_require__(24); - var ReactPropTypesSecret = __webpack_require__(28); + var ReactPropTypeLocationNames = __webpack_require__(23); + var ReactPropTypesSecret = __webpack_require__(26); var emptyFunction = __webpack_require__(12); - var getIteratorFn = __webpack_require__(15); + var getIteratorFn = __webpack_require__(16); var warning = __webpack_require__(11); /** @@ -3009,7 +2765,7 @@ if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') { var cacheKey = componentName + ':' + propName; if (!manualPropTypeCallCache[cacheKey]) { - process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in the next major version. You may be ' + 'seeing this warning due to a third-party PropTypes library. ' + 'See https://fb.me/react-warning-dont-call-proptypes for details.', propFullName, componentName) : void 0; + process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in production with the next major version. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName) : void 0; manualPropTypeCallCache[cacheKey] = true; } } @@ -3017,7 +2773,10 @@ if (props[propName] == null) { var locationName = ReactPropTypeLocationNames[location]; if (isRequired) { - return new PropTypeError('Required ' + locationName + ' `' + propFullName + '` was not specified in ' + ('`' + componentName + '`.')); + if (props[propName] === null) { + return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); } return null; } else { @@ -3309,7 +3068,7 @@ module.exports = ReactPropTypes; /***/ }, -/* 28 */ +/* 26 */ /***/ function(module, exports) { /** @@ -3320,7 +3079,7 @@ * 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 ReactPropTypesSecret + * */ 'use strict'; @@ -3330,7 +3089,7 @@ module.exports = ReactPropTypesSecret; /***/ }, -/* 29 */ +/* 27 */ /***/ function(module, exports) { /** @@ -3341,15 +3100,14 @@ * 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 ReactVersion */ 'use strict'; - module.exports = '15.3.2'; + module.exports = '15.4.1'; /***/ }, -/* 30 */ +/* 28 */ /***/ function(module, exports, __webpack_require__) { /** @@ -3360,7 +3118,6 @@ * 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 onlyChild */ 'use strict'; @@ -3392,16 +3149,16 @@ module.exports = onlyChild; /***/ }, -/* 31 */ +/* 29 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(32); + module.exports = __webpack_require__(30); /***/ }, -/* 32 */ +/* 30 */ /***/ function(module, exports, __webpack_require__) { /** @@ -3412,23 +3169,22 @@ * 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 ReactDOM */ /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/ 'use strict'; - var ReactDOMComponentTree = __webpack_require__(33); - var ReactDefaultInjection = __webpack_require__(36); - var ReactMount = __webpack_require__(156); + var ReactDOMComponentTree = __webpack_require__(31); + var ReactDefaultInjection = __webpack_require__(35); + var ReactMount = __webpack_require__(158); var ReactReconciler = __webpack_require__(56); var ReactUpdates = __webpack_require__(53); - var ReactVersion = __webpack_require__(29); + var ReactVersion = __webpack_require__(163); - var findDOMNode = __webpack_require__(161); - var getHostComponentFromComposite = __webpack_require__(162); - var renderSubtreeIntoContainer = __webpack_require__(163); + var findDOMNode = __webpack_require__(164); + var getHostComponentFromComposite = __webpack_require__(165); + var renderSubtreeIntoContainer = __webpack_require__(166); var warning = __webpack_require__(11); ReactDefaultInjection.inject(); @@ -3446,7 +3202,6 @@ // 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({ ComponentTree: { @@ -3493,7 +3248,7 @@ 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]; + Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim]; for (var i = 0; i < expectedFeatures.length; i++) { if (!expectedFeatures[i]) { @@ -3508,15 +3263,17 @@ var ReactInstrumentation = require('./ReactInstrumentation'); var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook'); var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook'); + var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook'); ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook); ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook); + ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook); } module.exports = ReactDOM; /***/ }, -/* 33 */ +/* 31 */ /***/ function(module, exports, __webpack_require__) { /** @@ -3527,15 +3284,14 @@ * 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 ReactDOMComponentTree */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); - var DOMProperty = __webpack_require__(34); - var ReactDOMComponentFlags = __webpack_require__(35); + var DOMProperty = __webpack_require__(33); + var ReactDOMComponentFlags = __webpack_require__(34); var invariant = __webpack_require__(8); @@ -3709,7 +3465,9 @@ module.exports = ReactDOMComponentTree; /***/ }, -/* 34 */ +/* 32 */ +7, +/* 33 */ /***/ function(module, exports, __webpack_require__) { /** @@ -3720,12 +3478,11 @@ * 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 DOMProperty */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); var invariant = __webpack_require__(8); @@ -3891,9 +3648,13 @@ /** * Mapping from lowercase property names to the properly cased version, used * to warn in the case of missing properties. Available only in __DEV__. + * + * autofocus is predefined, because adding it to the property whitelist + * causes unintended side effects. + * * @type {Object} */ - getPossibleStandardName: false ? {} : null, + getPossibleStandardName: false ? { autofocus: 'autoFocus' } : null, /** * All of the isCustomAttribute() functions that have been injected. @@ -3920,7 +3681,7 @@ module.exports = DOMProperty; /***/ }, -/* 35 */ +/* 34 */ /***/ function(module, exports) { /** @@ -3931,7 +3692,6 @@ * 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 ReactDOMComponentFlags */ 'use strict'; @@ -3943,7 +3703,7 @@ module.exports = ReactDOMComponentFlags; /***/ }, -/* 36 */ +/* 35 */ /***/ function(module, exports, __webpack_require__) { /** @@ -3954,29 +3714,29 @@ * 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 ReactDefaultInjection */ 'use strict'; + var ARIADOMPropertyConfig = __webpack_require__(36); var BeforeInputEventPlugin = __webpack_require__(37); var ChangeEventPlugin = __webpack_require__(52); var DefaultEventPluginOrder = __webpack_require__(64); var EnterLeaveEventPlugin = __webpack_require__(65); var HTMLDOMPropertyConfig = __webpack_require__(70); var ReactComponentBrowserEnvironment = __webpack_require__(71); - var ReactDOMComponent = __webpack_require__(85); - var ReactDOMComponentTree = __webpack_require__(33); - var ReactDOMEmptyComponent = __webpack_require__(127); - var ReactDOMTreeTraversal = __webpack_require__(128); - var ReactDOMTextComponent = __webpack_require__(129); - var ReactDefaultBatchingStrategy = __webpack_require__(130); - var ReactEventListener = __webpack_require__(131); - var ReactInjection = __webpack_require__(134); - var ReactReconcileTransaction = __webpack_require__(135); - var SVGDOMPropertyConfig = __webpack_require__(143); - var SelectEventPlugin = __webpack_require__(144); - var SimpleEventPlugin = __webpack_require__(145); + var ReactDOMComponent = __webpack_require__(84); + var ReactDOMComponentTree = __webpack_require__(31); + var ReactDOMEmptyComponent = __webpack_require__(129); + var ReactDOMTreeTraversal = __webpack_require__(130); + var ReactDOMTextComponent = __webpack_require__(131); + var ReactDefaultBatchingStrategy = __webpack_require__(132); + var ReactEventListener = __webpack_require__(133); + var ReactInjection = __webpack_require__(136); + var ReactReconcileTransaction = __webpack_require__(137); + var SVGDOMPropertyConfig = __webpack_require__(145); + var SelectEventPlugin = __webpack_require__(146); + var SimpleEventPlugin = __webpack_require__(147); var alreadyInjected = false; @@ -4014,6 +3774,7 @@ ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent); + ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig); ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig); ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig); @@ -4031,6 +3792,84 @@ inject: inject }; +/***/ }, +/* 36 */ +/***/ function(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. + * + */ + + 'use strict'; + + var ARIADOMPropertyConfig = { + Properties: { + // Global States and Properties + 'aria-current': 0, // state + 'aria-details': 0, + 'aria-disabled': 0, // state + 'aria-hidden': 0, // state + 'aria-invalid': 0, // state + 'aria-keyshortcuts': 0, + 'aria-label': 0, + 'aria-roledescription': 0, + // Widget Attributes + 'aria-autocomplete': 0, + 'aria-checked': 0, + 'aria-expanded': 0, + 'aria-haspopup': 0, + 'aria-level': 0, + 'aria-modal': 0, + 'aria-multiline': 0, + 'aria-multiselectable': 0, + 'aria-orientation': 0, + 'aria-placeholder': 0, + 'aria-pressed': 0, + 'aria-readonly': 0, + 'aria-required': 0, + 'aria-selected': 0, + 'aria-sort': 0, + 'aria-valuemax': 0, + 'aria-valuemin': 0, + 'aria-valuenow': 0, + 'aria-valuetext': 0, + // Live Region Attributes + 'aria-atomic': 0, + 'aria-busy': 0, + 'aria-live': 0, + 'aria-relevant': 0, + // Drag-and-Drop Attributes + 'aria-dropeffect': 0, + 'aria-grabbed': 0, + // Relationship Attributes + 'aria-activedescendant': 0, + 'aria-colcount': 0, + 'aria-colindex': 0, + 'aria-colspan': 0, + 'aria-controls': 0, + 'aria-describedby': 0, + 'aria-errormessage': 0, + 'aria-flowto': 0, + 'aria-labelledby': 0, + 'aria-owns': 0, + 'aria-posinset': 0, + 'aria-rowcount': 0, + 'aria-rowindex': 0, + 'aria-rowspan': 0, + 'aria-setsize': 0 + }, + DOMAttributeNames: {}, + DOMPropertyNames: {} + }; + + module.exports = ARIADOMPropertyConfig; + /***/ }, /* 37 */ /***/ function(module, exports, __webpack_require__) { @@ -4043,20 +3882,16 @@ * 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 BeforeInputEventPlugin */ 'use strict'; - var EventConstants = __webpack_require__(38); - var EventPropagators = __webpack_require__(39); - var ExecutionEnvironment = __webpack_require__(46); - var FallbackCompositionState = __webpack_require__(47); + var EventPropagators = __webpack_require__(38); + var ExecutionEnvironment = __webpack_require__(45); + var FallbackCompositionState = __webpack_require__(46); var SyntheticCompositionEvent = __webpack_require__(49); var SyntheticInputEvent = __webpack_require__(51); - var keyOf = __webpack_require__(25); - var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space var START_KEYCODE = 229; @@ -4089,37 +3924,35 @@ var SPACEBAR_CODE = 32; var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); - var topLevelTypes = EventConstants.topLevelTypes; - // Events and their corresponding property names. var eventTypes = { beforeInput: { phasedRegistrationNames: { - bubbled: keyOf({ onBeforeInput: null }), - captured: keyOf({ onBeforeInputCapture: null }) + bubbled: 'onBeforeInput', + captured: 'onBeforeInputCapture' }, - dependencies: [topLevelTypes.topCompositionEnd, topLevelTypes.topKeyPress, topLevelTypes.topTextInput, topLevelTypes.topPaste] + dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste'] }, compositionEnd: { phasedRegistrationNames: { - bubbled: keyOf({ onCompositionEnd: null }), - captured: keyOf({ onCompositionEndCapture: null }) + bubbled: 'onCompositionEnd', + captured: 'onCompositionEndCapture' }, - dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionEnd, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] }, compositionStart: { phasedRegistrationNames: { - bubbled: keyOf({ onCompositionStart: null }), - captured: keyOf({ onCompositionStartCapture: null }) + bubbled: 'onCompositionStart', + captured: 'onCompositionStartCapture' }, - dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionStart, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] }, compositionUpdate: { phasedRegistrationNames: { - bubbled: keyOf({ onCompositionUpdate: null }), - captured: keyOf({ onCompositionUpdateCapture: null }) + bubbled: 'onCompositionUpdate', + captured: 'onCompositionUpdateCapture' }, - dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionUpdate, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] } }; @@ -4145,11 +3978,11 @@ */ function getCompositionEventType(topLevelType) { switch (topLevelType) { - case topLevelTypes.topCompositionStart: + case 'topCompositionStart': return eventTypes.compositionStart; - case topLevelTypes.topCompositionEnd: + case 'topCompositionEnd': return eventTypes.compositionEnd; - case topLevelTypes.topCompositionUpdate: + case 'topCompositionUpdate': return eventTypes.compositionUpdate; } } @@ -4163,7 +3996,7 @@ * @return {boolean} */ function isFallbackCompositionStart(topLevelType, nativeEvent) { - return topLevelType === topLevelTypes.topKeyDown && nativeEvent.keyCode === START_KEYCODE; + return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE; } /** @@ -4175,16 +4008,16 @@ */ function isFallbackCompositionEnd(topLevelType, nativeEvent) { switch (topLevelType) { - case topLevelTypes.topKeyUp: + case 'topKeyUp': // Command keys insert or clear IME input. return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; - case topLevelTypes.topKeyDown: + case 'topKeyDown': // Expect IME keyCode on each keydown. If we get any other // code we must have exited earlier. return nativeEvent.keyCode !== START_KEYCODE; - case topLevelTypes.topKeyPress: - case topLevelTypes.topMouseDown: - case topLevelTypes.topBlur: + case 'topKeyPress': + case 'topMouseDown': + case 'topBlur': // Events are not possible without cancelling IME. return true; default: @@ -4269,9 +4102,9 @@ */ function getNativeBeforeInputChars(topLevelType, nativeEvent) { switch (topLevelType) { - case topLevelTypes.topCompositionEnd: + case 'topCompositionEnd': return getDataFromCustomEvent(nativeEvent); - case topLevelTypes.topKeyPress: + case 'topKeyPress': /** * If native `textInput` events are available, our goal is to make * use of them. However, there is a special case: the spacebar key. @@ -4294,7 +4127,7 @@ hasSpaceKeypress = true; return SPACEBAR_CHAR; - case topLevelTypes.topTextInput: + case 'topTextInput': // Record the characters to be added to the DOM. var chars = nativeEvent.data; @@ -4327,7 +4160,7 @@ // If composition event is available, we extract a string only at // compositionevent, otherwise extract it at fallback events. if (currentComposition) { - if (topLevelType === topLevelTypes.topCompositionEnd || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) { + if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) { var chars = currentComposition.getData(); FallbackCompositionState.release(currentComposition); currentComposition = null; @@ -4337,11 +4170,11 @@ } switch (topLevelType) { - case topLevelTypes.topPaste: + case 'topPaste': // If a paste event occurs after a keypress, throw out the input // chars. Paste events should not lead to BeforeInput events. return null; - case topLevelTypes.topKeyPress: + case 'topKeyPress': /** * As of v27, Firefox may fire keypress events even when no character * will be inserted. A few possibilities: @@ -4362,7 +4195,7 @@ return String.fromCharCode(nativeEvent.which); } return null; - case topLevelTypes.topCompositionEnd: + case 'topCompositionEnd': return useFallbackCompositionData ? null : nativeEvent.data; default: return null; @@ -4438,122 +4271,17 @@ * 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 */ 'use strict'; - var keyMirror = __webpack_require__(23); + var EventPluginHub = __webpack_require__(39); + var EventPluginUtils = __webpack_require__(41); - var PropagationPhases = keyMirror({ bubbled: null, captured: null }); - - /** - * Types of raw signals from the browser caught at the top level. - */ - var topLevelTypes = keyMirror({ - topAbort: null, - topAnimationEnd: null, - topAnimationIteration: null, - topAnimationStart: null, - topBlur: null, - topCanPlay: null, - topCanPlayThrough: 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, - topDurationChange: null, - topEmptied: null, - topEncrypted: null, - topEnded: null, - topError: null, - topFocus: null, - topInput: null, - topInvalid: null, - topKeyDown: null, - topKeyPress: null, - topKeyUp: null, - topLoad: null, - topLoadedData: null, - topLoadedMetadata: null, - topLoadStart: null, - topMouseDown: null, - topMouseMove: null, - topMouseOut: null, - topMouseOver: null, - topMouseUp: null, - topPaste: null, - topPause: null, - topPlay: null, - topPlaying: null, - topProgress: null, - topRateChange: null, - topReset: null, - topScroll: null, - topSeeked: null, - topSeeking: null, - topSelectionChange: null, - topStalled: null, - topSubmit: null, - topSuspend: null, - topTextInput: null, - topTimeUpdate: null, - topTouchCancel: null, - topTouchEnd: null, - topTouchMove: null, - topTouchStart: null, - topTransitionEnd: null, - topVolumeChange: null, - topWaiting: null, - topWheel: null - }); - - var EventConstants = { - topLevelTypes: topLevelTypes, - PropagationPhases: PropagationPhases - }; - - module.exports = EventConstants; - -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * 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 EventPropagators - */ - - 'use strict'; - - var EventConstants = __webpack_require__(38); - var EventPluginHub = __webpack_require__(40); - var EventPluginUtils = __webpack_require__(42); - - var accumulateInto = __webpack_require__(44); - var forEachAccumulated = __webpack_require__(45); + var accumulateInto = __webpack_require__(43); + var forEachAccumulated = __webpack_require__(44); var warning = __webpack_require__(11); - var PropagationPhases = EventConstants.PropagationPhases; var getListener = EventPluginHub.getListener; /** @@ -4571,11 +4299,10 @@ * Mutating the event's members allows us to not have to create a wrapping * "dispatch" object that pairs the event with the listener. */ - function accumulateDirectionalDispatches(inst, upwards, event) { + function accumulateDirectionalDispatches(inst, phase, event) { if (false) { process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0; } - var phase = upwards ? PropagationPhases.bubbled : PropagationPhases.captured; var listener = listenerAtPhase(inst, event, phase); if (listener) { event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); @@ -4671,7 +4398,7 @@ module.exports = EventPropagators; /***/ }, -/* 40 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { /** @@ -4682,19 +4409,18 @@ * 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 EventPluginHub */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); - var EventPluginRegistry = __webpack_require__(41); - var EventPluginUtils = __webpack_require__(42); - var ReactErrorUtils = __webpack_require__(43); + var EventPluginRegistry = __webpack_require__(40); + var EventPluginUtils = __webpack_require__(41); + var ReactErrorUtils = __webpack_require__(42); - var accumulateInto = __webpack_require__(44); - var forEachAccumulated = __webpack_require__(45); + var accumulateInto = __webpack_require__(43); + var forEachAccumulated = __webpack_require__(44); var invariant = __webpack_require__(8); /** @@ -4737,6 +4463,28 @@ return '.' + inst._rootNodeID; }; + function isInteractive(tag) { + return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; + } + + function shouldPreventMouseEvent(name, type, props) { + switch (name) { + case 'onClick': + case 'onClickCapture': + case 'onDoubleClick': + case 'onDoubleClickCapture': + case 'onMouseDown': + case 'onMouseDownCapture': + case 'onMouseMove': + case 'onMouseMoveCapture': + case 'onMouseUp': + case 'onMouseUpCapture': + return !!(props.disabled && isInteractive(type)); + default: + return false; + } + } + /** * This is a unified interface for event plugins to be installed and configured. * @@ -4805,7 +4553,12 @@ * @return {?function} The stored callback. */ getListener: function (inst, registrationName) { + // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not + // live here; needs to be moved to a better place soon var bankForRegistrationName = listenerBank[registrationName]; + if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) { + return null; + } var key = getDictionaryKey(inst); return bankForRegistrationName && bankForRegistrationName[key]; }, @@ -4927,7 +4680,7 @@ module.exports = EventPluginHub; /***/ }, -/* 41 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { /** @@ -4938,19 +4691,19 @@ * 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 EventPluginRegistry + * */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); var invariant = __webpack_require__(8); /** * Injectable ordering of event plugins. */ - var EventPluginOrder = null; + var eventPluginOrder = null; /** * Injectable mapping from names to event plugin modules. @@ -4963,22 +4716,22 @@ * @private */ function recomputePluginOrdering() { - if (!EventPluginOrder) { - // Wait until an `EventPluginOrder` is injected. + if (!eventPluginOrder) { + // Wait until an `eventPluginOrder` is injected. return; } for (var pluginName in namesToPlugins) { - var PluginModule = namesToPlugins[pluginName]; - var pluginIndex = EventPluginOrder.indexOf(pluginName); + var pluginModule = namesToPlugins[pluginName]; + var pluginIndex = eventPluginOrder.indexOf(pluginName); !(pluginIndex > -1) ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0; if (EventPluginRegistry.plugins[pluginIndex]) { continue; } - !PluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0; - EventPluginRegistry.plugins[pluginIndex] = PluginModule; - var publishedEvents = PluginModule.eventTypes; + !pluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0; + EventPluginRegistry.plugins[pluginIndex] = pluginModule; + var publishedEvents = pluginModule.eventTypes; for (var eventName in publishedEvents) { - !publishEventForPlugin(publishedEvents[eventName], PluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0; + !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0; } } } @@ -4991,7 +4744,7 @@ * @return {boolean} True if the event was successfully published. * @private */ - function publishEventForPlugin(dispatchConfig, PluginModule, eventName) { + function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0; EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig; @@ -5000,12 +4753,12 @@ for (var phaseName in phasedRegistrationNames) { if (phasedRegistrationNames.hasOwnProperty(phaseName)) { var phasedRegistrationName = phasedRegistrationNames[phaseName]; - publishRegistrationName(phasedRegistrationName, PluginModule, eventName); + publishRegistrationName(phasedRegistrationName, pluginModule, eventName); } } return true; } else if (dispatchConfig.registrationName) { - publishRegistrationName(dispatchConfig.registrationName, PluginModule, eventName); + publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName); return true; } return false; @@ -5019,10 +4772,10 @@ * @param {object} PluginModule Plugin publishing the event. * @private */ - function publishRegistrationName(registrationName, PluginModule, eventName) { + function publishRegistrationName(registrationName, pluginModule, eventName) { !!EventPluginRegistry.registrationNameModules[registrationName] ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0; - EventPluginRegistry.registrationNameModules[registrationName] = PluginModule; - EventPluginRegistry.registrationNameDependencies[registrationName] = PluginModule.eventTypes[eventName].dependencies; + EventPluginRegistry.registrationNameModules[registrationName] = pluginModule; + EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies; if (false) { var lowerCasedName = registrationName.toLowerCase(); @@ -5068,6 +4821,7 @@ * @type {Object} */ possibleRegistrationNames: false ? {} : null, + // Trust the developer to only use possibleRegistrationNames in __DEV__ /** * Injects an ordering of plugins (by plugin name). This allows the ordering @@ -5078,10 +4832,10 @@ * @internal * @see {EventPluginHub.injection.injectEventPluginOrder} */ - injectEventPluginOrder: function (InjectedEventPluginOrder) { - !!EventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0; + injectEventPluginOrder: function (injectedEventPluginOrder) { + !!eventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0; // Clone the ordering so it cannot be dynamically mutated. - EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder); + eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); recomputePluginOrdering(); }, @@ -5101,10 +4855,10 @@ if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { continue; } - var PluginModule = injectedNamesToPlugins[pluginName]; - if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== PluginModule) { + var pluginModule = injectedNamesToPlugins[pluginName]; + if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) { !!namesToPlugins[pluginName] ? false ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0; - namesToPlugins[pluginName] = PluginModule; + namesToPlugins[pluginName] = pluginModule; isOrderingDirty = true; } } @@ -5125,13 +4879,19 @@ if (dispatchConfig.registrationName) { return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null; } - for (var phase in dispatchConfig.phasedRegistrationNames) { - if (!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)) { - continue; - } - var PluginModule = EventPluginRegistry.registrationNameModules[dispatchConfig.phasedRegistrationNames[phase]]; - if (PluginModule) { - return PluginModule; + if (dispatchConfig.phasedRegistrationNames !== undefined) { + // pulling phasedRegistrationNames out of dispatchConfig helps Flow see + // that it is not undefined. + var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; + + for (var phase in phasedRegistrationNames) { + if (!phasedRegistrationNames.hasOwnProperty(phase)) { + continue; + } + var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]]; + if (pluginModule) { + return pluginModule; + } } } return null; @@ -5142,7 +4902,7 @@ * @private */ _resetEventPlugins: function () { - EventPluginOrder = null; + eventPluginOrder = null; for (var pluginName in namesToPlugins) { if (namesToPlugins.hasOwnProperty(pluginName)) { delete namesToPlugins[pluginName]; @@ -5179,7 +4939,7 @@ module.exports = EventPluginRegistry; /***/ }, -/* 42 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { /** @@ -5190,15 +4950,13 @@ * 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 */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); - var EventConstants = __webpack_require__(38); - var ReactErrorUtils = __webpack_require__(43); + var ReactErrorUtils = __webpack_require__(42); var invariant = __webpack_require__(8); var warning = __webpack_require__(11); @@ -5228,17 +4986,15 @@ } }; - var topLevelTypes = EventConstants.topLevelTypes; - function isEndish(topLevelType) { - return topLevelType === topLevelTypes.topMouseUp || topLevelType === topLevelTypes.topTouchEnd || topLevelType === topLevelTypes.topTouchCancel; + return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel'; } function isMoveish(topLevelType) { - return topLevelType === topLevelTypes.topMouseMove || topLevelType === topLevelTypes.topTouchMove; + return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove'; } function isStartish(topLevelType) { - return topLevelType === topLevelTypes.topMouseDown || topLevelType === topLevelTypes.topTouchStart; + return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart'; } var validateEventDispatches; @@ -5413,7 +5169,7 @@ module.exports = EventPluginUtils; /***/ }, -/* 43 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { /** @@ -5424,7 +5180,7 @@ * 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 ReactErrorUtils + * */ 'use strict'; @@ -5434,19 +5190,18 @@ /** * Call a function while guarding against errors that happens within it. * - * @param {?String} name of the guard to use for logging or debugging + * @param {String} name of the guard to use for logging or debugging * @param {Function} func The function to invoke * @param {*} a First argument * @param {*} b Second argument */ - function invokeGuardedCallback(name, func, a, b) { + function invokeGuardedCallback(name, func, a) { try { - return func(a, b); + func(a); } catch (x) { if (caughtError === null) { caughtError = x; } - return undefined; } } @@ -5479,11 +5234,12 @@ */ if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') { var fakeNode = document.createElement('react'); - ReactErrorUtils.invokeGuardedCallback = function (name, func, a, b) { - var boundFunc = func.bind(null, a, b); + ReactErrorUtils.invokeGuardedCallback = function (name, func, a) { + var boundFunc = func.bind(null, a); var evtType = 'react-' + name; fakeNode.addEventListener(evtType, boundFunc, false); var evt = document.createEvent('Event'); + // $FlowFixMe https://github.com/facebook/flow/issues/2336 evt.initEvent(evtType, false, false); fakeNode.dispatchEvent(evt); fakeNode.removeEventListener(evtType, boundFunc, false); @@ -5494,7 +5250,7 @@ module.exports = ReactErrorUtils; /***/ }, -/* 44 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { /** @@ -5505,13 +5261,12 @@ * 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 accumulateInto * */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); var invariant = __webpack_require__(8); @@ -5557,7 +5312,7 @@ module.exports = accumulateInto; /***/ }, -/* 45 */ +/* 44 */ /***/ function(module, exports) { /** @@ -5568,7 +5323,6 @@ * 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 forEachAccumulated * */ @@ -5593,7 +5347,7 @@ module.exports = forEachAccumulated; /***/ }, -/* 46 */ +/* 45 */ /***/ function(module, exports) { /** @@ -5633,7 +5387,7 @@ module.exports = ExecutionEnvironment; /***/ }, -/* 47 */ +/* 46 */ /***/ function(module, exports, __webpack_require__) { /** @@ -5644,14 +5398,13 @@ * 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 FallbackCompositionState */ 'use strict'; var _assign = __webpack_require__(4); - var PooledClass = __webpack_require__(6); + var PooledClass = __webpack_require__(47); var getTextContentAccessor = __webpack_require__(48); @@ -5733,6 +5486,8 @@ module.exports = FallbackCompositionState; /***/ }, +/* 47 */ +[464, 32], /* 48 */ /***/ function(module, exports, __webpack_require__) { @@ -5744,12 +5499,11 @@ * 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 getTextContentAccessor */ 'use strict'; - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); var contentKey = null; @@ -5782,7 +5536,6 @@ * 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 SyntheticCompositionEvent */ 'use strict'; @@ -5823,14 +5576,13 @@ * 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 SyntheticEvent */ 'use strict'; var _assign = __webpack_require__(4); - var PooledClass = __webpack_require__(6); + var PooledClass = __webpack_require__(47); var emptyFunction = __webpack_require__(12); var warning = __webpack_require__(11); @@ -6096,7 +5848,6 @@ * 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 SyntheticInputEvent */ 'use strict'; @@ -6138,33 +5889,28 @@ * 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 ChangeEventPlugin */ 'use strict'; - var EventConstants = __webpack_require__(38); - var EventPluginHub = __webpack_require__(40); - var EventPropagators = __webpack_require__(39); - var ExecutionEnvironment = __webpack_require__(46); - var ReactDOMComponentTree = __webpack_require__(33); + var EventPluginHub = __webpack_require__(39); + var EventPropagators = __webpack_require__(38); + var ExecutionEnvironment = __webpack_require__(45); + var ReactDOMComponentTree = __webpack_require__(31); var ReactUpdates = __webpack_require__(53); var SyntheticEvent = __webpack_require__(50); var getEventTarget = __webpack_require__(61); var isEventSupported = __webpack_require__(62); var isTextInputElement = __webpack_require__(63); - var keyOf = __webpack_require__(25); - - var topLevelTypes = EventConstants.topLevelTypes; var eventTypes = { change: { phasedRegistrationNames: { - bubbled: keyOf({ onChange: null }), - captured: keyOf({ onChangeCapture: null }) + bubbled: 'onChange', + captured: 'onChangeCapture' }, - dependencies: [topLevelTypes.topBlur, topLevelTypes.topChange, topLevelTypes.topClick, topLevelTypes.topFocus, topLevelTypes.topInput, topLevelTypes.topKeyDown, topLevelTypes.topKeyUp, topLevelTypes.topSelectionChange] + dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange'] } }; @@ -6229,17 +5975,17 @@ } function getTargetInstForChangeEvent(topLevelType, targetInst) { - if (topLevelType === topLevelTypes.topChange) { + if (topLevelType === 'topChange') { return targetInst; } } function handleEventsForChangeEventIE8(topLevelType, target, targetInst) { - if (topLevelType === topLevelTypes.topFocus) { + if (topLevelType === 'topFocus') { // stopWatching() should be a noop here but we call it just in case we // missed a blur event somehow. stopWatchingForChangeEventIE8(); startWatchingForChangeEventIE8(target, targetInst); - } else if (topLevelType === topLevelTypes.topBlur) { + } else if (topLevelType === 'topBlur') { stopWatchingForChangeEventIE8(); } } @@ -6337,7 +6083,7 @@ * If a `change` event should be fired, returns the target's ID. */ function getTargetInstForInputEvent(topLevelType, targetInst) { - if (topLevelType === topLevelTypes.topInput) { + if (topLevelType === 'topInput') { // In modern browsers (i.e., not IE8 or IE9), the input event is exactly // what we want so fall through here and trigger an abstract event return targetInst; @@ -6345,7 +6091,7 @@ } function handleEventsForInputEventIE(topLevelType, target, targetInst) { - if (topLevelType === topLevelTypes.topFocus) { + if (topLevelType === 'topFocus') { // In IE8, we can capture almost all .value changes by adding a // propertychange handler and looking for events with propertyName // equal to 'value' @@ -6361,14 +6107,14 @@ // missed a blur event somehow. stopWatchingForValueChange(); startWatchingForValueChange(target, targetInst); - } else if (topLevelType === topLevelTypes.topBlur) { + } else if (topLevelType === 'topBlur') { stopWatchingForValueChange(); } } // For IE8 and IE9. function getTargetInstForInputEventIE(topLevelType, targetInst) { - if (topLevelType === topLevelTypes.topSelectionChange || topLevelType === topLevelTypes.topKeyUp || topLevelType === topLevelTypes.topKeyDown) { + if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') { // On the selectionchange event, the target is just document which isn't // helpful for us so just check activeElement instead. // @@ -6397,7 +6143,7 @@ } function getTargetInstForClickEvent(topLevelType, targetInst) { - if (topLevelType === topLevelTypes.topClick) { + if (topLevelType === 'topClick') { return targetInst; } } @@ -6468,16 +6214,15 @@ * 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 ReactUpdates */ 'use strict'; - var _prodInvariant = __webpack_require__(7), + var _prodInvariant = __webpack_require__(32), _assign = __webpack_require__(4); var CallbackQueue = __webpack_require__(54); - var PooledClass = __webpack_require__(6); + var PooledClass = __webpack_require__(47); var ReactFeatureFlags = __webpack_require__(55); var ReactReconciler = __webpack_require__(56); var Transaction = __webpack_require__(60); @@ -6533,7 +6278,7 @@ /* useCreateElement */true); } - _assign(ReactUpdatesFlushTransaction.prototype, Transaction.Mixin, { + _assign(ReactUpdatesFlushTransaction.prototype, Transaction, { getTransactionWrappers: function () { return TRANSACTION_WRAPPERS; }, @@ -6549,7 +6294,7 @@ perform: function (method, scope, a) { // Essentially calls `this.reconcileTransaction.perform(method, scope, a)` // with this transaction's wrappers around it. - return Transaction.Mixin.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a); + return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a); } }); @@ -6557,7 +6302,7 @@ function batchedUpdates(callback, a, b, c, d, e) { ensureInjected(); - batchingStrategy.batchedUpdates(callback, a, b, c, d, e); + return batchingStrategy.batchedUpdates(callback, a, b, c, d, e); } /** @@ -6603,7 +6348,7 @@ if (ReactFeatureFlags.logTopLevelRenders) { var namedComponent = component; // Duck type TopLevelWrapper. This is probably always true. - if (component._currentElement.props === component._renderedComponent._currentElement) { + if (component._currentElement.type.isReactTopLevelWrapper) { namedComponent = component._renderedComponent; } markerName = 'React update: ' + namedComponent.getName(); @@ -6724,15 +6469,16 @@ * 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 CallbackQueue + * */ 'use strict'; - var _prodInvariant = __webpack_require__(7), - _assign = __webpack_require__(4); + var _prodInvariant = __webpack_require__(32); - var PooledClass = __webpack_require__(6); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var PooledClass = __webpack_require__(47); var invariant = __webpack_require__(8); @@ -6747,12 +6493,15 @@ * @implements PooledClass * @internal */ - function CallbackQueue() { - this._callbacks = null; - this._contexts = null; - } - _assign(CallbackQueue.prototype, { + var CallbackQueue = function () { + function CallbackQueue(arg) { + _classCallCheck(this, CallbackQueue); + + this._callbacks = null; + this._contexts = null; + this._arg = arg; + } /** * Enqueues a callback to be invoked when `notifyAll` is invoked. @@ -6761,12 +6510,14 @@ * @param {?object} context Context to call `callback` with. * @internal */ - enqueue: function (callback, context) { + + + CallbackQueue.prototype.enqueue = function enqueue(callback, context) { this._callbacks = this._callbacks || []; - this._contexts = this._contexts || []; this._callbacks.push(callback); + this._contexts = this._contexts || []; this._contexts.push(context); - }, + }; /** * Invokes all enqueued callbacks and clears the queue. This is invoked after @@ -6774,54 +6525,60 @@ * * @internal */ - notifyAll: function () { + + + CallbackQueue.prototype.notifyAll = function notifyAll() { var callbacks = this._callbacks; var contexts = this._contexts; - if (callbacks) { + var arg = this._arg; + if (callbacks && contexts) { !(callbacks.length === contexts.length) ? false ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0; this._callbacks = null; this._contexts = null; for (var i = 0; i < callbacks.length; i++) { - callbacks[i].call(contexts[i]); + callbacks[i].call(contexts[i], arg); } callbacks.length = 0; contexts.length = 0; } - }, + }; - checkpoint: function () { + CallbackQueue.prototype.checkpoint = function checkpoint() { return this._callbacks ? this._callbacks.length : 0; - }, + }; - rollback: function (len) { - if (this._callbacks) { + CallbackQueue.prototype.rollback = function rollback(len) { + if (this._callbacks && this._contexts) { this._callbacks.length = len; this._contexts.length = len; } - }, + }; /** * Resets the internal queue. * * @internal */ - reset: function () { + + + CallbackQueue.prototype.reset = function reset() { this._callbacks = null; this._contexts = null; - }, + }; /** * `PooledClass` looks for this. */ - destructor: function () { + + + CallbackQueue.prototype.destructor = function destructor() { this.reset(); - } + }; - }); + return CallbackQueue; + }(); - PooledClass.addPoolingTo(CallbackQueue); - - module.exports = CallbackQueue; + module.exports = PooledClass.addPoolingTo(CallbackQueue); /***/ }, /* 55 */ @@ -6835,7 +6592,6 @@ * 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 ReactFeatureFlags * */ @@ -6862,7 +6618,6 @@ * 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 ReactReconciler */ 'use strict'; @@ -7035,7 +6790,7 @@ * 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 ReactRef + * */ 'use strict'; @@ -7063,7 +6818,7 @@ } ReactRef.attachRefs = function (instance, element) { - if (element === null || element === false) { + if (element === null || typeof element !== 'object') { return; } var ref = element.ref; @@ -7085,19 +6840,27 @@ // is made. It probably belongs where the key checking and // instantiateReactComponent is done. - var prevEmpty = prevElement === null || prevElement === false; - var nextEmpty = nextElement === null || nextElement === false; + var prevRef = null; + var prevOwner = null; + if (prevElement !== null && typeof prevElement === 'object') { + prevRef = prevElement.ref; + prevOwner = prevElement._owner; + } - return ( - // This has a few false positives w/r/t empty components. - prevEmpty || nextEmpty || nextElement.ref !== prevElement.ref || - // If owner changes but we have an unchanged function ref, don't update refs - typeof nextElement.ref === 'string' && nextElement._owner !== prevElement._owner - ); + var nextRef = null; + var nextOwner = null; + if (nextElement !== null && typeof nextElement === 'object') { + nextRef = nextElement.ref; + nextOwner = nextElement._owner; + } + + return prevRef !== nextRef || + // If owner changes but we have an unchanged function ref, don't update refs + typeof nextRef === 'string' && nextOwner !== prevOwner; }; ReactRef.detachRefs = function (instance, element) { - if (element === null || element === false) { + if (element === null || typeof element !== 'object') { return; } var ref = element.ref; @@ -7120,15 +6883,24 @@ * 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 ReactOwner + * */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); var invariant = __webpack_require__(8); + /** + * @param {?object} object + * @return {boolean} True if `object` is a valid owner. + * @final + */ + function isValidOwner(object) { + return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function'); + } + /** * ReactOwners are capable of storing references to owned components. * @@ -7160,16 +6932,6 @@ * @class ReactOwner */ var ReactOwner = { - - /** - * @param {?object} object - * @return {boolean} True if `object` is a valid owner. - * @final - */ - isValidOwner: function (object) { - return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function'); - }, - /** * Adds a component by ref to an owner component. * @@ -7180,7 +6942,7 @@ * @internal */ addComponentAsRefTo: function (component, ref, owner) { - !ReactOwner.isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0; + !isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0; owner.attachRef(ref, component); }, @@ -7194,7 +6956,7 @@ * @internal */ removeComponentAsRefFrom: function (component, ref, owner) { - !ReactOwner.isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0; + !isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0; var ownerPublicInstance = owner.getPublicInstance(); // Check that `component`'s owner is still alive and that `component` is still the current ref // because we do not want to detach the ref if another component stole it. @@ -7219,11 +6981,13 @@ * 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 ReactInstrumentation + * */ 'use strict'; + // Trust the developer to only use ReactInstrumentation with a __DEV__ check + var debugTool = null; if (false) { @@ -7245,15 +7009,17 @@ * 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 Transaction + * */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); var invariant = __webpack_require__(8); + var OBSERVED_ERROR = {}; + /** * `Transaction` creates a black box that is able to wrap any method such that * certain invariants are maintained before and after the method is invoked @@ -7315,7 +7081,7 @@ * * @class Transaction */ - var Mixin = { + var TransactionImpl = { /** * Sets up this instance so that it is prepared for collecting metrics. Does * so such that this setup method may be used on an instance that is already @@ -7405,10 +7171,10 @@ // OBSERVED_ERROR state before overwriting it with the real return value // of initialize -- if it's still set to OBSERVED_ERROR in the finally // block, it means wrapper.initialize threw. - this.wrapperInitData[i] = Transaction.OBSERVED_ERROR; + this.wrapperInitData[i] = OBSERVED_ERROR; this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null; } finally { - if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) { + if (this.wrapperInitData[i] === OBSERVED_ERROR) { // The initializer for wrapper i threw an error; initialize the // remaining wrappers but silence any exceptions from them to ensure // that the first error is the one to bubble up. @@ -7439,7 +7205,7 @@ // close -- if it's still set to true in the finally block, it means // wrapper.close threw. errorThrown = true; - if (initData !== Transaction.OBSERVED_ERROR && wrapper.close) { + if (initData !== OBSERVED_ERROR && wrapper.close) { wrapper.close.call(this, initData); } errorThrown = false; @@ -7458,18 +7224,7 @@ } }; - var Transaction = { - - Mixin: Mixin, - - /** - * Token to look for to determine if an error occurred. - */ - OBSERVED_ERROR: {} - - }; - - module.exports = Transaction; + module.exports = TransactionImpl; /***/ }, /* 61 */ @@ -7483,7 +7238,6 @@ * 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 getEventTarget */ 'use strict'; @@ -7523,12 +7277,11 @@ * 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 isEventSupported */ 'use strict'; - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); var useHasFeature; if (ExecutionEnvironment.canUseDOM) { @@ -7588,7 +7341,6 @@ * 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 isTextInputElement * */ @@ -7634,7 +7386,7 @@ /***/ }, /* 64 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { /** * Copyright 2013-present, Facebook, Inc. @@ -7644,13 +7396,10 @@ * 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 DefaultEventPluginOrder */ 'use strict'; - var keyOf = __webpack_require__(25); - /** * Module that is injectable into `EventPluginHub`, that specifies a * deterministic ordering of `EventPlugin`s. A convenient way to reason about @@ -7660,7 +7409,8 @@ * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that * preventing default on events is convenient in `SimpleEventPlugin` handlers. */ - var DefaultEventPluginOrder = [keyOf({ ResponderEventPlugin: null }), keyOf({ SimpleEventPlugin: null }), keyOf({ TapEventPlugin: null }), keyOf({ EnterLeaveEventPlugin: null }), keyOf({ ChangeEventPlugin: null }), keyOf({ SelectEventPlugin: null }), keyOf({ BeforeInputEventPlugin: null })]; + + var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin']; module.exports = DefaultEventPluginOrder; @@ -7676,28 +7426,22 @@ * 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 EnterLeaveEventPlugin */ 'use strict'; - var EventConstants = __webpack_require__(38); - var EventPropagators = __webpack_require__(39); - var ReactDOMComponentTree = __webpack_require__(33); + var EventPropagators = __webpack_require__(38); + var ReactDOMComponentTree = __webpack_require__(31); var SyntheticMouseEvent = __webpack_require__(66); - var keyOf = __webpack_require__(25); - - var topLevelTypes = EventConstants.topLevelTypes; - var eventTypes = { mouseEnter: { - registrationName: keyOf({ onMouseEnter: null }), - dependencies: [topLevelTypes.topMouseOut, topLevelTypes.topMouseOver] + registrationName: 'onMouseEnter', + dependencies: ['topMouseOut', 'topMouseOver'] }, mouseLeave: { - registrationName: keyOf({ onMouseLeave: null }), - dependencies: [topLevelTypes.topMouseOut, topLevelTypes.topMouseOver] + registrationName: 'onMouseLeave', + dependencies: ['topMouseOut', 'topMouseOver'] } }; @@ -7713,10 +7457,10 @@ * the `mouseover` top-level event. */ extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { - if (topLevelType === topLevelTypes.topMouseOver && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { + if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { return null; } - if (topLevelType !== topLevelTypes.topMouseOut && topLevelType !== topLevelTypes.topMouseOver) { + if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') { // Must not be a mouse in or mouse out - ignoring. return null; } @@ -7737,7 +7481,7 @@ var from; var to; - if (topLevelType === topLevelTypes.topMouseOut) { + if (topLevelType === 'topMouseOut') { from = targetInst; var related = nativeEvent.relatedTarget || nativeEvent.toElement; to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null; @@ -7786,7 +7530,6 @@ * 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 SyntheticMouseEvent */ 'use strict'; @@ -7863,7 +7606,6 @@ * 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 SyntheticUIEvent */ 'use strict'; @@ -7927,7 +7669,6 @@ * 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 ViewportMetrics */ 'use strict'; @@ -7959,7 +7700,6 @@ * 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 getEventModifierState */ 'use strict'; @@ -8007,12 +7747,11 @@ * 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 HTMLDOMPropertyConfig */ 'use strict'; - var DOMProperty = __webpack_require__(34); + var DOMProperty = __webpack_require__(33); var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY; var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE; @@ -8224,13 +7963,12 @@ * 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 ReactComponentBrowserEnvironment */ 'use strict'; var DOMChildrenOperations = __webpack_require__(72); - var ReactDOMIDOperations = __webpack_require__(84); + var ReactDOMIDOperations = __webpack_require__(83); /** * Abstracts away all functionality of the reconciler that requires knowledge of @@ -8259,15 +7997,13 @@ * 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 DOMChildrenOperations */ 'use strict'; var DOMLazyTree = __webpack_require__(73); var Danger = __webpack_require__(79); - var ReactMultiChildUpdateTypes = __webpack_require__(83); - var ReactDOMComponentTree = __webpack_require__(33); + var ReactDOMComponentTree = __webpack_require__(31); var ReactInstrumentation = __webpack_require__(59); var createMicrosoftUnsafeLocalFunction = __webpack_require__(76); @@ -8365,7 +8101,11 @@ } if (false) { - ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, 'replace text', stringText); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, + type: 'replace text', + payload: stringText + }); } } @@ -8374,11 +8114,19 @@ dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) { Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup); if (prevInstance._debugID !== 0) { - ReactInstrumentation.debugTool.onHostOperation(prevInstance._debugID, 'replace with', markup.toString()); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: prevInstance._debugID, + type: 'replace with', + payload: markup.toString() + }); } else { var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node); if (nextInstance._debugID !== 0) { - ReactInstrumentation.debugTool.onHostOperation(nextInstance._debugID, 'mount', markup.toString()); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: nextInstance._debugID, + type: 'mount', + payload: markup.toString() + }); } } }; @@ -8408,34 +8156,54 @@ for (var k = 0; k < updates.length; k++) { var update = updates[k]; switch (update.type) { - case ReactMultiChildUpdateTypes.INSERT_MARKUP: + case 'INSERT_MARKUP': insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode)); if (false) { - ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'insert child', { toIndex: update.toIndex, content: update.content.toString() }); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'insert child', + payload: { toIndex: update.toIndex, content: update.content.toString() } + }); } break; - case ReactMultiChildUpdateTypes.MOVE_EXISTING: + case 'MOVE_EXISTING': moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode)); if (false) { - ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'move child', { fromIndex: update.fromIndex, toIndex: update.toIndex }); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'move child', + payload: { fromIndex: update.fromIndex, toIndex: update.toIndex } + }); } break; - case ReactMultiChildUpdateTypes.SET_MARKUP: + case 'SET_MARKUP': setInnerHTML(parentNode, update.content); if (false) { - ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'replace children', update.content.toString()); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'replace children', + payload: update.content.toString() + }); } break; - case ReactMultiChildUpdateTypes.TEXT_CONTENT: + case 'TEXT_CONTENT': setTextContent(parentNode, update.content); if (false) { - ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'replace text', update.content.toString()); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'replace text', + payload: update.content.toString() + }); } break; - case ReactMultiChildUpdateTypes.REMOVE_NODE: + case 'REMOVE_NODE': removeChild(parentNode, update.fromNode); if (false) { - ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'remove child', { fromIndex: update.fromIndex }); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'remove child', + payload: { fromIndex: update.fromIndex } + }); } break; } @@ -8458,7 +8226,6 @@ * 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 DOMLazyTree */ 'use strict'; @@ -8581,7 +8348,6 @@ * 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 DOMNamespaces */ 'use strict'; @@ -8606,12 +8372,11 @@ * 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 setInnerHTML */ 'use strict'; - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); var DOMNamespaces = __webpack_require__(74); var WHITESPACE_TEST = /^[ \r\n\t\f]/; @@ -8709,7 +8474,6 @@ * 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 createMicrosoftUnsafeLocalFunction */ /* globals MSApp */ @@ -8746,12 +8510,11 @@ * 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 setTextContent */ 'use strict'; - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); var escapeTextContentForBrowser = __webpack_require__(78); var setInnerHTML = __webpack_require__(75); @@ -8780,6 +8543,10 @@ if (ExecutionEnvironment.canUseDOM) { if (!('textContent' in document.documentElement)) { setTextContent = function (node, text) { + if (node.nodeType === 3) { + node.nodeValue = text; + return; + } setInnerHTML(node, escapeTextContentForBrowser(text)); }; } @@ -8824,7 +8591,6 @@ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * @providesModule escapeTextContentForBrowser */ 'use strict'; @@ -8927,15 +8693,14 @@ * 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 Danger */ 'use strict'; - var _prodInvariant = __webpack_require__(7); + var _prodInvariant = __webpack_require__(32); var DOMLazyTree = __webpack_require__(73); - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); var createNodesFromMarkup = __webpack_require__(80); var emptyFunction = __webpack_require__(12); @@ -8987,7 +8752,7 @@ /*eslint-disable fb-www/unsafe-html*/ - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); var createArrayFromMixed = __webpack_require__(81); var getMarkupWrap = __webpack_require__(82); @@ -9205,7 +8970,7 @@ /*eslint-disable fb-www/unsafe-html */ - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); var invariant = __webpack_require__(8); @@ -9298,50 +9063,12 @@ * 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 ReactMultiChildUpdateTypes - */ - - 'use strict'; - - var keyMirror = __webpack_require__(23); - - /** - * When a component's children are updated, a series of update configuration - * objects are created in order to batch and serialize the required changes. - * - * Enumerates all the possible types of update configurations. - * - * @internal - */ - var ReactMultiChildUpdateTypes = keyMirror({ - INSERT_MARKUP: null, - MOVE_EXISTING: null, - REMOVE_NODE: null, - SET_MARKUP: null, - TEXT_CONTENT: null - }); - - module.exports = ReactMultiChildUpdateTypes; - -/***/ }, -/* 84 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * 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 ReactDOMIDOperations */ 'use strict'; var DOMChildrenOperations = __webpack_require__(72); - var ReactDOMComponentTree = __webpack_require__(33); + var ReactDOMComponentTree = __webpack_require__(31); /** * Operations used to process updates to DOM nodes. @@ -9363,7 +9090,7 @@ module.exports = ReactDOMIDOperations; /***/ }, -/* 85 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { /** @@ -9374,44 +9101,40 @@ * 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 ReactDOMComponent */ /* global hasOwnProperty:true */ 'use strict'; - var _prodInvariant = __webpack_require__(7), + var _prodInvariant = __webpack_require__(32), _assign = __webpack_require__(4); - var AutoFocusUtils = __webpack_require__(86); - var CSSPropertyOperations = __webpack_require__(88); + var AutoFocusUtils = __webpack_require__(85); + var CSSPropertyOperations = __webpack_require__(87); var DOMLazyTree = __webpack_require__(73); var DOMNamespaces = __webpack_require__(74); - var DOMProperty = __webpack_require__(34); - var DOMPropertyOperations = __webpack_require__(96); - var EventConstants = __webpack_require__(38); - var EventPluginHub = __webpack_require__(40); - var EventPluginRegistry = __webpack_require__(41); - var ReactBrowserEventEmitter = __webpack_require__(98); - var ReactDOMButton = __webpack_require__(101); - var ReactDOMComponentFlags = __webpack_require__(35); - var ReactDOMComponentTree = __webpack_require__(33); - var ReactDOMInput = __webpack_require__(103); - var ReactDOMOption = __webpack_require__(105); - var ReactDOMSelect = __webpack_require__(106); - var ReactDOMTextarea = __webpack_require__(107); + var DOMProperty = __webpack_require__(33); + var DOMPropertyOperations = __webpack_require__(95); + var EventPluginHub = __webpack_require__(39); + var EventPluginRegistry = __webpack_require__(40); + var ReactBrowserEventEmitter = __webpack_require__(97); + var ReactDOMComponentFlags = __webpack_require__(34); + var ReactDOMComponentTree = __webpack_require__(31); + var ReactDOMInput = __webpack_require__(100); + var ReactDOMOption = __webpack_require__(103); + var ReactDOMSelect = __webpack_require__(104); + var ReactDOMTextarea = __webpack_require__(105); var ReactInstrumentation = __webpack_require__(59); - var ReactMultiChild = __webpack_require__(108); - var ReactServerRenderingTransaction = __webpack_require__(123); + var ReactMultiChild = __webpack_require__(106); + var ReactServerRenderingTransaction = __webpack_require__(125); var emptyFunction = __webpack_require__(12); var escapeTextContentForBrowser = __webpack_require__(78); var invariant = __webpack_require__(8); var isEventSupported = __webpack_require__(62); - var keyOf = __webpack_require__(25); - var shallowEqual = __webpack_require__(118); - var validateDOMNesting = __webpack_require__(126); + var shallowEqual = __webpack_require__(114); + var validateDOMNesting = __webpack_require__(128); var warning = __webpack_require__(11); var Flags = ReactDOMComponentFlags; @@ -9423,8 +9146,8 @@ // For quickly matching children type, to test if can be treated as content. var CONTENT_TYPES = { 'string': true, 'number': true }; - var STYLE = keyOf({ style: null }); - var HTML = keyOf({ __html: null }); + var STYLE = 'style'; + var HTML = '__html'; var RESERVED_PROPS = { children: null, dangerouslySetInnerHTML: null, @@ -9631,7 +9354,7 @@ switch (inst._tag) { case 'iframe': case 'object': - inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load', node)]; + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; break; case 'video': case 'audio': @@ -9640,23 +9363,23 @@ // Create listener for each media event for (var event in mediaEvents) { if (mediaEvents.hasOwnProperty(event)) { - inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes[event], mediaEvents[event], node)); + inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node)); } } break; case 'source': - inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topError, 'error', node)]; + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)]; break; case 'img': - inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topError, 'error', node), ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load', node)]; + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; break; case 'form': - inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topReset, 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topSubmit, 'submit', node)]; + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)]; break; case 'input': case 'select': case 'textarea': - inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topInvalid, 'invalid', node)]; + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)]; break; } } @@ -9686,7 +9409,6 @@ 'wbr': true }; - // NOTE: menuitem's close tag should be omitted, but that causes problems. var newlineEatingTags = { 'listing': true, 'pre': true, @@ -9795,9 +9517,6 @@ }; transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); break; - case 'button': - props = ReactDOMButton.getHostProps(this, props, hostParent); - break; case 'input': ReactDOMInput.mountWrapper(this, props, hostParent); props = ReactDOMInput.getHostProps(this, props); @@ -10101,10 +9820,6 @@ var nextProps = this._currentElement.props; switch (this._tag) { - case 'button': - lastProps = ReactDOMButton.getHostProps(this, lastProps); - nextProps = ReactDOMButton.getHostProps(this, nextProps); - break; case 'input': lastProps = ReactDOMInput.getHostProps(this, lastProps); nextProps = ReactDOMInput.getHostProps(this, nextProps); @@ -10374,7 +10089,7 @@ module.exports = ReactDOMComponent; /***/ }, -/* 86 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { /** @@ -10385,14 +10100,13 @@ * 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 AutoFocusUtils */ 'use strict'; - var ReactDOMComponentTree = __webpack_require__(33); + var ReactDOMComponentTree = __webpack_require__(31); - var focusNode = __webpack_require__(87); + var focusNode = __webpack_require__(86); var AutoFocusUtils = { focusDOMComponent: function () { @@ -10403,7 +10117,7 @@ module.exports = AutoFocusUtils; /***/ }, -/* 87 */ +/* 86 */ /***/ function(module, exports) { /** @@ -10434,7 +10148,7 @@ module.exports = focusNode; /***/ }, -/* 88 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { /** @@ -10445,19 +10159,18 @@ * 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 CSSPropertyOperations */ 'use strict'; - var CSSProperty = __webpack_require__(89); - var ExecutionEnvironment = __webpack_require__(46); + var CSSProperty = __webpack_require__(88); + var ExecutionEnvironment = __webpack_require__(45); var ReactInstrumentation = __webpack_require__(59); - var camelizeStyleName = __webpack_require__(90); - var dangerousStyleValue = __webpack_require__(92); - var hyphenateStyleName = __webpack_require__(93); - var memoizeStringOnly = __webpack_require__(95); + var camelizeStyleName = __webpack_require__(89); + var dangerousStyleValue = __webpack_require__(91); + var hyphenateStyleName = __webpack_require__(92); + var memoizeStringOnly = __webpack_require__(94); var warning = __webpack_require__(11); var processStyleName = memoizeStringOnly(function (styleName) { @@ -10607,7 +10320,11 @@ */ setValueForStyles: function (node, styles, component) { if (false) { - ReactInstrumentation.debugTool.onHostOperation(component._debugID, 'update styles', styles); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: component._debugID, + type: 'update styles', + payload: styles + }); } var style = node.style; @@ -10644,7 +10361,7 @@ module.exports = CSSPropertyOperations; /***/ }, -/* 89 */ +/* 88 */ /***/ function(module, exports) { /** @@ -10655,7 +10372,6 @@ * 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 CSSProperty */ 'use strict'; @@ -10797,7 +10513,7 @@ module.exports = CSSProperty; /***/ }, -/* 90 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { /** @@ -10813,7 +10529,7 @@ 'use strict'; - var camelize = __webpack_require__(91); + var camelize = __webpack_require__(90); var msPattern = /^-ms-/; @@ -10841,7 +10557,7 @@ module.exports = camelizeStyleName; /***/ }, -/* 91 */ +/* 90 */ /***/ function(module, exports) { "use strict"; @@ -10877,7 +10593,7 @@ module.exports = camelize; /***/ }, -/* 92 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { /** @@ -10888,12 +10604,11 @@ * 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 dangerousStyleValue */ 'use strict'; - var CSSProperty = __webpack_require__(89); + var CSSProperty = __webpack_require__(88); var warning = __webpack_require__(11); var isUnitlessNumber = CSSProperty.isUnitlessNumber; @@ -10961,7 +10676,7 @@ module.exports = dangerousStyleValue; /***/ }, -/* 93 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { /** @@ -10977,7 +10692,7 @@ 'use strict'; - var hyphenate = __webpack_require__(94); + var hyphenate = __webpack_require__(93); var msPattern = /^ms-/; @@ -11004,7 +10719,7 @@ module.exports = hyphenateStyleName; /***/ }, -/* 94 */ +/* 93 */ /***/ function(module, exports) { 'use strict'; @@ -11041,7 +10756,7 @@ module.exports = hyphenate; /***/ }, -/* 95 */ +/* 94 */ /***/ function(module, exports) { /** @@ -11075,7 +10790,7 @@ module.exports = memoizeStringOnly; /***/ }, -/* 96 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { /** @@ -11086,16 +10801,15 @@ * 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 DOMPropertyOperations */ 'use strict'; - var DOMProperty = __webpack_require__(34); - var ReactDOMComponentTree = __webpack_require__(33); + var DOMProperty = __webpack_require__(33); + var ReactDOMComponentTree = __webpack_require__(31); var ReactInstrumentation = __webpack_require__(59); - var quoteAttributeValueForBrowser = __webpack_require__(97); + var quoteAttributeValueForBrowser = __webpack_require__(96); var warning = __webpack_require__(11); var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); @@ -11231,7 +10945,11 @@ if (false) { var payload = {}; payload[name] = value; - ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'update attribute', payload); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'update attribute', + payload: payload + }); } }, @@ -11248,7 +10966,11 @@ if (false) { var payload = {}; payload[name] = value; - ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'update attribute', payload); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'update attribute', + payload: payload + }); } }, @@ -11261,7 +10983,11 @@ deleteValueForAttribute: function (node, name) { node.removeAttribute(name); if (false) { - ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'remove attribute', name); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'remove attribute', + payload: name + }); } }, @@ -11292,7 +11018,11 @@ } if (false) { - ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'remove attribute', name); + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'remove attribute', + payload: name + }); } } @@ -11301,7 +11031,7 @@ module.exports = DOMPropertyOperations; /***/ }, -/* 97 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { /** @@ -11312,7 +11042,6 @@ * 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 quoteAttributeValueForBrowser */ 'use strict'; @@ -11332,7 +11061,7 @@ module.exports = quoteAttributeValueForBrowser; /***/ }, -/* 98 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { /** @@ -11343,19 +11072,17 @@ * 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 ReactBrowserEventEmitter */ 'use strict'; var _assign = __webpack_require__(4); - var EventConstants = __webpack_require__(38); - var EventPluginRegistry = __webpack_require__(41); - var ReactEventEmitterMixin = __webpack_require__(99); + var EventPluginRegistry = __webpack_require__(40); + var ReactEventEmitterMixin = __webpack_require__(98); var ViewportMetrics = __webpack_require__(68); - var getVendorPrefixedEventName = __webpack_require__(100); + var getVendorPrefixedEventName = __webpack_require__(99); var isEventSupported = __webpack_require__(62); /** @@ -11574,42 +11301,41 @@ var isListening = getListeningForDocument(mountAt); var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName]; - var topLevelTypes = EventConstants.topLevelTypes; for (var i = 0; i < dependencies.length; i++) { var dependency = dependencies[i]; if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) { - if (dependency === topLevelTypes.topWheel) { + if (dependency === 'topWheel') { if (isEventSupported('wheel')) { - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'wheel', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt); } else if (isEventSupported('mousewheel')) { - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'mousewheel', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt); } else { // Firefox needs to capture a different mouse scroll event. // @see http://www.quirksmode.org/dom/events/tests/scroll.html - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'DOMMouseScroll', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt); } - } else if (dependency === topLevelTypes.topScroll) { + } else if (dependency === 'topScroll') { if (isEventSupported('scroll', true)) { - ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topScroll, 'scroll', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt); } else { - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topScroll, 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE); + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE); } - } else if (dependency === topLevelTypes.topFocus || dependency === topLevelTypes.topBlur) { + } else if (dependency === 'topFocus' || dependency === 'topBlur') { if (isEventSupported('focus', true)) { - ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topFocus, 'focus', mountAt); - ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topBlur, 'blur', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt); } else if (isEventSupported('focusin')) { // IE has `focusin` and `focusout` events which bubble. // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topFocus, 'focusin', mountAt); - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topBlur, 'focusout', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt); } // to make sure blur and focus event listeners are only attached once - isListening[topLevelTypes.topBlur] = true; - isListening[topLevelTypes.topFocus] = true; + isListening.topBlur = true; + isListening.topFocus = true; } else if (topEventMapping.hasOwnProperty(dependency)) { ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt); } @@ -11667,7 +11393,7 @@ module.exports = ReactBrowserEventEmitter; /***/ }, -/* 99 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { /** @@ -11678,12 +11404,11 @@ * 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 ReactEventEmitterMixin */ 'use strict'; - var EventPluginHub = __webpack_require__(40); + var EventPluginHub = __webpack_require__(39); function runEventQueueInBatch(events) { EventPluginHub.enqueueEvents(events); @@ -11705,7 +11430,7 @@ module.exports = ReactEventEmitterMixin; /***/ }, -/* 100 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { /** @@ -11716,12 +11441,11 @@ * 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 getVendorPrefixedEventName */ 'use strict'; - var ExecutionEnvironment = __webpack_require__(46); + var ExecutionEnvironment = __webpack_require__(45); /** * Generate a mapping of standard vendor prefixes using the defined style property and event name. @@ -11811,7 +11535,7 @@ module.exports = getVendorPrefixedEventName; /***/ }, -/* 101 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { /** @@ -11822,102 +11546,16 @@ * 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 ReactDOMButton */ 'use strict'; - var DisabledInputUtils = __webpack_require__(102); - - /** - * Implements a