diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-06-03 14:39:27 -0400 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-06-03 14:39:27 -0400 |
| commit | 53520d6c7fb404a6c789e91fef72e41a855893d6 (patch) | |
| tree | a40307cf5f95572be1b14e38b598c3e36745928e /client/web/vendor-dev/react.dll.js | |
| parent | d5394e9c1a936e8272ed036f259532939d37f44f (diff) | |
build
Diffstat (limited to 'client/web/vendor-dev/react.dll.js')
| -rw-r--r-- | client/web/vendor-dev/react.dll.js | 38802 |
1 files changed, 38802 insertions, 0 deletions
diff --git a/client/web/vendor-dev/react.dll.js b/client/web/vendor-dev/react.dll.js new file mode 100644 index 0000000..303f315 --- /dev/null +++ b/client/web/vendor-dev/react.dll.js @@ -0,0 +1,38802 @@ +var react = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 363); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + */ + + + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var validateFormat = function validateFormat(format) {}; + +if (true) { + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; +} + +function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +} + +module.exports = invariant; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2014-2015, 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. + * + */ + + + +var emptyFunction = __webpack_require__(10); + +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var warning = emptyFunction; + +if (true) { + (function () { + var printWarning = function printWarning(format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + warning = function warning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; // Ignore CompositeComponent proptype check. + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; + })(); +} + +module.exports = warning; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * + */ + + +/** + * WARNING: DO NOT manually require this module. + * This is a replacement for `invariant(...)` used by the error code system + * and will _only_ be required by the corresponding babel pass. + * It always throws. + */ + +function reactProdInvariant(code) { + var argCount = arguments.length - 1; + + var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; + + for (var argIdx = 0; argIdx < argCount; argIdx++) { + message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); + } + + message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; + + var error = new Error(message); + error.name = 'Invariant Violation'; + error.framesToPop = 1; // we don't care about reactProdInvariant's own frame + + throw error; +} + +module.exports = reactProdInvariant; + +/***/ }), +/* 3 */ +/***/ (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. + */ + +if (true) { + var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' && + Symbol.for && + Symbol.for('react.element')) || + 0xeac7; + + var isValidElement = function(object) { + return typeof object === 'object' && + object !== null && + object.$$typeof === REACT_ELEMENT_TYPE; + }; + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = __webpack_require__(113)(isValidElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + */ + + + +var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); + +/** + * Simple, lightweight module assisting with the detection and context of + * Worker. Helps avoid circular dependencies and allows code to reason about + * whether or not they are in a Worker, even if they never include the main + * `ReactWorker` dependency. + */ +var ExecutionEnvironment = { + + canUseDOM: canUseDOM, + + canUseWorkers: typeof Worker !== 'undefined', + + canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent), + + canUseViewport: canUseDOM && !!window.screen, + + isInWorker: !canUseDOM // For now, this is true - might change in the future. + +}; + +module.exports = ExecutionEnvironment; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = __webpack_require__(33); + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + + +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var DOMProperty = __webpack_require__(20); +var ReactDOMComponentFlags = __webpack_require__(118); + +var invariant = __webpack_require__(0); + +var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; +var Flags = ReactDOMComponentFlags; + +var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2); + +/** + * Check if a given node should be cached. + */ +function shouldPrecacheNode(node, nodeID) { + return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' '; +} + +/** + * Drill down (through composites and empty components) until we get a host or + * host text component. + * + * This is pretty polymorphic but unavoidable with the current structure we have + * for `_renderedChildren`. + */ +function getRenderedHostOrTextFromComponent(component) { + var rendered; + while (rendered = component._renderedComponent) { + component = rendered; + } + return component; +} + +/** + * Populate `_hostNode` on the rendered host/text component with the given + * DOM node. The passed `inst` can be a composite. + */ +function precacheNode(inst, node) { + var hostInst = getRenderedHostOrTextFromComponent(inst); + hostInst._hostNode = node; + node[internalInstanceKey] = hostInst; +} + +function uncacheNode(inst) { + var node = inst._hostNode; + if (node) { + delete node[internalInstanceKey]; + inst._hostNode = null; + } +} + +/** + * Populate `_hostNode` on each child of `inst`, assuming that the children + * match up with the DOM (element) children of `node`. + * + * We cache entire levels at once to avoid an n^2 problem where we access the + * children of a node sequentially and have to walk from the start to our target + * node every time. + * + * Since we update `_renderedChildren` and the actual DOM at (slightly) + * different times, we could race here and see a newer `_renderedChildren` than + * the DOM nodes we see. To avoid this, ReactMultiChild calls + * `prepareToManageChildren` before we change `_renderedChildren`, at which + * time the container's child nodes are always cached (until it unmounts). + */ +function precacheChildNodes(inst, node) { + if (inst._flags & Flags.hasCachedChildNodes) { + return; + } + var children = inst._renderedChildren; + var childNode = node.firstChild; + outer: for (var name in children) { + if (!children.hasOwnProperty(name)) { + continue; + } + var childInst = children[name]; + var childID = getRenderedHostOrTextFromComponent(childInst)._domID; + if (childID === 0) { + // We're currently unmounting this child in ReactMultiChild; skip it. + continue; + } + // We assume the child nodes are in the same order as the child instances. + for (; childNode !== null; childNode = childNode.nextSibling) { + if (shouldPrecacheNode(childNode, childID)) { + precacheNode(childInst, childNode); + continue outer; + } + } + // We reached the end of the DOM children without finding an ID match. + true ? true ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0; + } + inst._flags |= Flags.hasCachedChildNodes; +} + +/** + * Given a DOM node, return the closest ReactDOMComponent or + * ReactDOMTextComponent instance ancestor. + */ +function getClosestInstanceFromNode(node) { + if (node[internalInstanceKey]) { + return node[internalInstanceKey]; + } + + // Walk up the tree until we find an ancestor whose instance we have cached. + var parents = []; + while (!node[internalInstanceKey]) { + parents.push(node); + if (node.parentNode) { + node = node.parentNode; + } else { + // Top of the tree. This node must not be part of a React tree (or is + // unmounted, potentially). + return null; + } + } + + var closest; + var inst; + for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) { + closest = inst; + if (parents.length) { + precacheChildNodes(inst, node); + } + } + + return closest; +} + +/** + * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent + * instance, or null if the node was not rendered by this React. + */ +function getInstanceFromNode(node) { + var inst = getClosestInstanceFromNode(node); + if (inst != null && inst._hostNode === node) { + return inst; + } else { + return null; + } +} + +/** + * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding + * DOM node. + */ +function getNodeFromInstance(inst) { + // Without this first invariant, passing a non-DOM-component triggers the next + // invariant for a missing parent, which is super confusing. + !(inst._hostNode !== undefined) ? true ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; + + if (inst._hostNode) { + return inst._hostNode; + } + + // Walk up the tree until we find an ancestor whose DOM node we have cached. + var parents = []; + while (!inst._hostNode) { + parents.push(inst); + !inst._hostParent ? true ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0; + inst = inst._hostParent; + } + + // Now parents contains each ancestor that does *not* have a cached native + // node, and `inst` is the deepest ancestor that does. + for (; parents.length; inst = parents.pop()) { + precacheChildNodes(inst, inst._hostNode); + } + + return inst._hostNode; +} + +var ReactDOMComponentTree = { + getClosestInstanceFromNode: getClosestInstanceFromNode, + getInstanceFromNode: getInstanceFromNode, + getNodeFromInstance: getNodeFromInstance, + precacheChildNodes: precacheChildNodes, + precacheNode: precacheNode, + uncacheNode: uncacheNode +}; + +module.exports = ReactDOMComponentTree; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +var _flattenStyle=__webpack_require__(138);var _flattenStyle2=_interopRequireDefault(_flattenStyle); +var _registry=__webpack_require__(83);var _registry2=_interopRequireDefault(_registry);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var absoluteFillObject={ +position:'absolute', +left:0, +right:0, +top:0, +bottom:0}; + +var absoluteFill=_registry2.default.register(absoluteFillObject); + +module.exports={ +absoluteFill:absoluteFill, +absoluteFillObject:absoluteFillObject, +create:function create(styles){ +var result={}; +Object.keys(styles).forEach(function(key){ +if(true){ +__webpack_require__(309).validateStyle(key,styles); +} +result[key]=_registry2.default.register(styles[key]); +}); +return result; +}, +hairlineWidth:1, +flatten:_flattenStyle2.default, +renderToString:function renderToString(){ +return _registry2.default.getStyleSheetHtml(); +}}; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var + + + +Animated=function(){function Animated(){_classCallCheck(this,Animated);}_createClass(Animated,[{key:'__attach',value:function __attach() +{}},{key:'__detach',value:function __detach() +{}},{key:'__getValue',value:function __getValue() +{}},{key:'__getAnimatedValue',value:function __getAnimatedValue() +{return this.__getValue();}},{key:'__addChild',value:function __addChild( +child){}},{key:'__removeChild',value:function __removeChild( +child){}},{key:'__getChildren',value:function __getChildren() +{return[];}}]);return Animated;}(); + + +module.exports=Animated; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * + */ + +function makeEmptyFunction(arg) { + return function () { + return arg; + }; +} + +/** + * This function accepts and discards inputs; it has no side effects. This is + * primarily useful idiomatically for overridable function endpoints which + * always need to be callable, since JS lacks a null-call idiom ala Cocoa. + */ +var emptyFunction = function emptyFunction() {}; + +emptyFunction.thatReturns = makeEmptyFunction; +emptyFunction.thatReturnsFalse = makeEmptyFunction(false); +emptyFunction.thatReturnsTrue = makeEmptyFunction(true); +emptyFunction.thatReturnsNull = makeEmptyFunction(null); +emptyFunction.thatReturnsThis = function () { + return this; +}; +emptyFunction.thatReturnsArgument = function (arg) { + return arg; +}; + +module.exports = emptyFunction; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2016-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. + * + * + */ + + + +// Trust the developer to only use ReactInstrumentation with a __DEV__ check + +var debugTool = null; + +if (true) { + var ReactDebugTool = __webpack_require__(249); + debugTool = ReactDebugTool; +} + +module.exports = { debugTool: debugTool }; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _AccessibilityUtil=__webpack_require__(89);var _AccessibilityUtil2=_interopRequireDefault(_AccessibilityUtil); +var _applyLayout=__webpack_require__(91);var _applyLayout2=_interopRequireDefault(_applyLayout); +var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _propTypes=__webpack_require__(3); +var _createDOMElement=__webpack_require__(31);var _createDOMElement2=_interopRequireDefault(_createDOMElement); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var emptyObject={}; + +var calculateHitSlopStyle=function calculateHitSlopStyle(hitSlop){ +var hitStyle={}; +for(var prop in hitSlop){ +if(hitSlop.hasOwnProperty(prop)){ +var value=hitSlop[prop]; +hitStyle[prop]=value>0?-1*value:0; +} +} +return hitStyle; +};var + +View=function(_Component){_inherits(View,_Component);function View(){_classCallCheck(this,View);return _possibleConstructorReturn(this,(View.__proto__||Object.getPrototypeOf(View)).apply(this,arguments));}_createClass(View,[{key:'getChildContext',value:function getChildContext() + + + + + + + + + + + + +{ +var isInAButtonView= +_AccessibilityUtil2.default.propsToAriaRole(this.props)==='button'||this.context.isInAButtonView; +return isInAButtonView?{isInAButtonView:isInAButtonView}:emptyObject; +}},{key:'render',value:function render() + +{var _props= + + + + + + + + + + + +this.props,hitSlop=_props.hitSlop,style=_props.style,collapsable=_props.collapsable,onAccessibilityTap=_props.onAccessibilityTap,onLayout=_props.onLayout,onMagicTap=_props.onMagicTap,removeClippedSubviews=_props.removeClippedSubviews,otherProps=_objectWithoutProperties(_props,['hitSlop','style','collapsable','onAccessibilityTap','onLayout','onMagicTap','removeClippedSubviews']);var + +isInAButtonView=this.context.isInAButtonView; + +otherProps.style=[styles.initial,style]; + +if(hitSlop){ +var hitSlopStyle=calculateHitSlopStyle(hitSlop); +var hitSlopChild=(0,_createDOMElement2.default)('span',{style:[styles.hitSlop,hitSlopStyle]}); +otherProps.children=_react2.default.Children.toArray(otherProps.children); +otherProps.children.unshift(hitSlopChild); +otherProps.style.unshift(styles.hasHitSlop); +} + +var component=isInAButtonView?'span':'div'; +return(0,_createDOMElement2.default)(component,otherProps); +}}]);return View;}(_react.Component);View.displayName='View';View.childContextTypes={isInAButtonView:_propTypes.bool};View.contextTypes={isInAButtonView:_propTypes.bool}; true?View.propTypes=_ViewPropTypes2.default:void 0; + + +var styles=_StyleSheet2.default.create({ + +initial:{ +alignItems:'stretch', +borderWidth:0, +borderStyle:'solid', +boxSizing:'border-box', +display:'flex', +flexBasis:'auto', +flexDirection:'column', +margin:0, +padding:0, +position:'relative', + +minHeight:0, +minWidth:0}, + + + +hasHitSlop:{ +zIndex:0}, + +hitSlop:_extends({}, +_StyleSheet2.default.absoluteFillObject,{ +zIndex:-1})}); + + + +module.exports=(0,_applyLayout2.default)((0,_applyNativeMethods2.default)(View)); + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2016-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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(22); + +var ReactCurrentOwner = __webpack_require__(17); + +var _require = __webpack_require__(162), + getStackAddendumByWorkInProgressFiber = _require.getStackAddendumByWorkInProgressFiber, + describeComponentFrame = _require.describeComponentFrame; + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); +var getComponentName = __webpack_require__(97); + +function isNative(fn) { + // Based on isNative() from Lodash + var funcToString = Function.prototype.toString; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var reIsNative = RegExp('^' + funcToString + // Take an example native function source for comparison + .call(hasOwnProperty) + // Strip regex characters so we can use it for regex + .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') + // Remove hasOwnProperty from the template to make it generic + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); + try { + var source = funcToString.call(fn); + return reIsNative.test(source); + } catch (err) { + return false; + } +} + +var canUseCollections = +// Array.from +typeof Array.from === 'function' && +// Map +typeof Map === 'function' && isNative(Map) && +// Map.prototype.keys +Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) && +// Set +typeof Set === 'function' && isNative(Set) && +// Set.prototype.keys +Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys); + +var setItem; +var getItem; +var removeItem; +var getItemIDs; +var addRoot; +var removeRoot; +var getRootIDs; + +if (canUseCollections) { + var itemMap = new Map(); + var rootIDSet = new Set(); + + setItem = function (id, item) { + itemMap.set(id, item); + }; + getItem = function (id) { + return itemMap.get(id); + }; + removeItem = function (id) { + itemMap['delete'](id); + }; + getItemIDs = function () { + return Array.from(itemMap.keys()); + }; + + addRoot = function (id) { + rootIDSet.add(id); + }; + removeRoot = function (id) { + rootIDSet['delete'](id); + }; + getRootIDs = function () { + return Array.from(rootIDSet.keys()); + }; +} else { + var itemByKey = {}; + var rootByKey = {}; + + // Use non-numeric keys to prevent V8 performance issues: + // https://github.com/facebook/react/pull/7232 + var getKeyFromID = function (id) { + return '.' + id; + }; + var getIDFromKey = function (key) { + return parseInt(key.substr(1), 10); + }; + + setItem = function (id, item) { + var key = getKeyFromID(id); + itemByKey[key] = item; + }; + getItem = function (id) { + var key = getKeyFromID(id); + return itemByKey[key]; + }; + removeItem = function (id) { + var key = getKeyFromID(id); + delete itemByKey[key]; + }; + getItemIDs = function () { + return Object.keys(itemByKey).map(getIDFromKey); + }; + + addRoot = function (id) { + var key = getKeyFromID(id); + rootByKey[key] = true; + }; + removeRoot = function (id) { + var key = getKeyFromID(id); + delete rootByKey[key]; + }; + getRootIDs = function () { + return Object.keys(rootByKey).map(getIDFromKey); + }; +} + +var unmountedIDs = []; + +function purgeDeep(id) { + var item = getItem(id); + if (item) { + var childIDs = item.childIDs; + + removeItem(id); + childIDs.forEach(purgeDeep); + } +} + +function getDisplayName(element) { + if (element == null) { + return '#empty'; + } else if (typeof element === 'string' || typeof element === 'number') { + return '#text'; + } else if (typeof element.type === 'string') { + return element.type; + } else { + return element.type.displayName || element.type.name || 'Unknown'; + } +} + +function describeID(id) { + var name = ReactComponentTreeHook.getDisplayName(id); + var element = ReactComponentTreeHook.getElement(id); + var ownerID = ReactComponentTreeHook.getOwnerID(id); + var ownerName = void 0; + + if (ownerID) { + ownerName = ReactComponentTreeHook.getDisplayName(ownerID); + } + true ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0; + return describeComponentFrame(name || '', element && element._source, ownerName || ''); +} + +var ReactComponentTreeHook = { + onSetChildren: function (id, nextChildIDs) { + var item = getItem(id); + invariant(item, 'Item must have been set'); + item.childIDs = nextChildIDs; + + for (var i = 0; i < nextChildIDs.length; i++) { + var nextChildID = nextChildIDs[i]; + var nextChild = getItem(nextChildID); + !nextChild ? true ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0; + !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? true ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0; + !nextChild.isMounted ? true ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0; + if (nextChild.parentID == null) { + nextChild.parentID = id; + // TODO: This shouldn't be necessary but mounting a new root during in + // componentWillMount currently causes not-yet-mounted components to + // be purged from our tree data so their parent id is missing. + } + !(nextChild.parentID === id) ? true ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0; + } + }, + onBeforeMountComponent: function (id, element, parentID) { + var item = { + element: element, + parentID: parentID, + text: null, + childIDs: [], + isMounted: false, + updateCount: 0 + }; + setItem(id, item); + }, + onBeforeUpdateComponent: function (id, element) { + var item = getItem(id); + if (!item || !item.isMounted) { + // We may end up here as a result of setState() in componentWillUnmount(). + // In this case, ignore the element. + return; + } + item.element = element; + }, + onMountComponent: function (id) { + var item = getItem(id); + invariant(item, 'Item must have been set'); + item.isMounted = true; + var isRoot = item.parentID === 0; + if (isRoot) { + addRoot(id); + } + }, + onUpdateComponent: function (id) { + var item = getItem(id); + if (!item || !item.isMounted) { + // We may end up here as a result of setState() in componentWillUnmount(). + // In this case, ignore the element. + return; + } + item.updateCount++; + }, + onUnmountComponent: function (id) { + var item = getItem(id); + if (item) { + // We need to check if it exists. + // `item` might not exist if it is inside an error boundary, and a sibling + // error boundary child threw while mounting. Then this instance never + // got a chance to mount, but it still gets an unmounting event during + // the error boundary cleanup. + item.isMounted = false; + var isRoot = item.parentID === 0; + if (isRoot) { + removeRoot(id); + } + } + unmountedIDs.push(id); + }, + purgeUnmountedComponents: function () { + if (ReactComponentTreeHook._preventPurging) { + // Should only be used for testing. + return; + } + + for (var i = 0; i < unmountedIDs.length; i++) { + var id = unmountedIDs[i]; + purgeDeep(id); + } + unmountedIDs.length = 0; + }, + isMounted: function (id) { + var item = getItem(id); + return item ? item.isMounted : false; + }, + getCurrentStackAddendum: function (topElement) { + var info = ''; + if (topElement) { + var name = getDisplayName(topElement); + var owner = topElement._owner; + info += describeComponentFrame(name, topElement._source, owner && getComponentName(owner)); + } + + var currentOwner = ReactCurrentOwner.current; + if (currentOwner) { + if (typeof currentOwner.tag === 'number') { + var workInProgress = currentOwner; + // Safe because if current owner exists, we are reconciling, + // and it is guaranteed to be the work-in-progress version. + info += getStackAddendumByWorkInProgressFiber(workInProgress); + } else if (typeof currentOwner._debugID === 'number') { + info += ReactComponentTreeHook.getStackAddendumByID(currentOwner._debugID); + } + } + return info; + }, + getStackAddendumByID: function (id) { + var info = ''; + while (id) { + info += describeID(id); + id = ReactComponentTreeHook.getParentID(id); + } + return info; + }, + getChildIDs: function (id) { + var item = getItem(id); + return item ? item.childIDs : []; + }, + getDisplayName: function (id) { + var element = ReactComponentTreeHook.getElement(id); + if (!element) { + return null; + } + return getDisplayName(element); + }, + getElement: function (id) { + var item = getItem(id); + return item ? item.element : null; + }, + getOwnerID: function (id) { + var element = ReactComponentTreeHook.getElement(id); + if (!element || !element._owner) { + return null; + } + return element._owner._debugID; + }, + getParentID: function (id) { + var item = getItem(id); + return item ? item.parentID : null; + }, + getSource: function (id) { + var item = getItem(id); + var element = item ? item.element : null; + var source = element != null ? element._source : null; + return source; + }, + getText: function (id) { + var element = ReactComponentTreeHook.getElement(id); + if (typeof element === 'string') { + return element; + } else if (typeof element === 'number') { + return '' + element; + } else { + return null; + } + }, + getUpdateCount: function (id) { + var item = getItem(id); + return item ? item.updateCount : 0; + }, + + + getRootIDs: getRootIDs, + getRegisteredIDs: getItemIDs +}; + +module.exports = ReactComponentTreeHook; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2), + _assign = __webpack_require__(6); + +var CallbackQueue = __webpack_require__(116); +var PooledClass = __webpack_require__(24); +var ReactFeatureFlags = __webpack_require__(121); +var ReactReconciler = __webpack_require__(29); +var Transaction = __webpack_require__(55); + +var invariant = __webpack_require__(0); + +var dirtyComponents = []; +var updateBatchNumber = 0; +var asapCallbackQueue = CallbackQueue.getPooled(); +var asapEnqueued = false; + +var batchingStrategy = null; + +function ensureInjected() { + !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? true ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0; +} + +var NESTED_UPDATES = { + initialize: function () { + this.dirtyComponentsLength = dirtyComponents.length; + }, + close: function () { + if (this.dirtyComponentsLength !== dirtyComponents.length) { + // Additional updates were enqueued by componentDidUpdate handlers or + // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run + // these new updates so that if A's componentDidUpdate calls setState on + // B, B will update before the callback A's updater provided when calling + // setState. + dirtyComponents.splice(0, this.dirtyComponentsLength); + flushBatchedUpdates(); + } else { + dirtyComponents.length = 0; + } + } +}; + +var UPDATE_QUEUEING = { + initialize: function () { + this.callbackQueue.reset(); + }, + close: function () { + this.callbackQueue.notifyAll(); + } +}; + +var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING]; + +function ReactUpdatesFlushTransaction() { + this.reinitializeTransaction(); + this.dirtyComponentsLength = null; + this.callbackQueue = CallbackQueue.getPooled(); + this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled( + /* useCreateElement */true); +} + +_assign(ReactUpdatesFlushTransaction.prototype, Transaction, { + getTransactionWrappers: function () { + return TRANSACTION_WRAPPERS; + }, + + destructor: function () { + this.dirtyComponentsLength = null; + CallbackQueue.release(this.callbackQueue); + this.callbackQueue = null; + ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction); + this.reconcileTransaction = null; + }, + + perform: function (method, scope, a) { + // Essentially calls `this.reconcileTransaction.perform(method, scope, a)` + // with this transaction's wrappers around it. + return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a); + } +}); + +PooledClass.addPoolingTo(ReactUpdatesFlushTransaction); + +function batchedUpdates(callback, a, b, c, d, e) { + ensureInjected(); + return batchingStrategy.batchedUpdates(callback, a, b, c, d, e); +} + +/** + * Array comparator for ReactComponents by mount ordering. + * + * @param {ReactComponent} c1 first component you're comparing + * @param {ReactComponent} c2 second component you're comparing + * @return {number} Return value usable by Array.prototype.sort(). + */ +function mountOrderComparator(c1, c2) { + return c1._mountOrder - c2._mountOrder; +} + +function runBatchedUpdates(transaction) { + var len = transaction.dirtyComponentsLength; + !(len === dirtyComponents.length) ? true ? invariant(false, 'Expected flush transaction\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0; + + // Since reconciling a component higher in the owner hierarchy usually (not + // always -- see shouldComponentUpdate()) will reconcile children, reconcile + // them before their children by sorting the array. + dirtyComponents.sort(mountOrderComparator); + + // Any updates enqueued while reconciling must be performed after this entire + // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and + // C, B could update twice in a single batch if C's render enqueues an update + // to B (since B would have already updated, we should skip it, and the only + // way we can know to do so is by checking the batch counter). + updateBatchNumber++; + + for (var i = 0; i < len; i++) { + // If a component is unmounted before pending changes apply, it will still + // be here, but we assume that it has cleared its _pendingCallbacks and + // that performUpdateIfNecessary is a noop. + var component = dirtyComponents[i]; + + // If performUpdateIfNecessary happens to enqueue any new updates, we + // shouldn't execute the callbacks until the next render happens, so + // stash the callbacks first + var callbacks = component._pendingCallbacks; + component._pendingCallbacks = null; + + var markerName; + if (ReactFeatureFlags.logTopLevelRenders) { + var namedComponent = component; + // Duck type TopLevelWrapper. This is probably always true. + if (component._currentElement.type.isReactTopLevelWrapper) { + namedComponent = component._renderedComponent; + } + markerName = 'React update: ' + namedComponent.getName(); + console.time(markerName); + } + + ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber); + + if (markerName) { + console.timeEnd(markerName); + } + + if (callbacks) { + for (var j = 0; j < callbacks.length; j++) { + transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance()); + } + } + } +} + +var flushBatchedUpdates = function () { + // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents + // array and perform any updates enqueued by mount-ready handlers (i.e., + // componentDidUpdate) but we need to check here too in order to catch + // updates enqueued by setState callbacks and asap calls. + while (dirtyComponents.length || asapEnqueued) { + if (dirtyComponents.length) { + var transaction = ReactUpdatesFlushTransaction.getPooled(); + transaction.perform(runBatchedUpdates, null, transaction); + ReactUpdatesFlushTransaction.release(transaction); + } + + if (asapEnqueued) { + asapEnqueued = false; + var queue = asapCallbackQueue; + asapCallbackQueue = CallbackQueue.getPooled(); + queue.notifyAll(); + CallbackQueue.release(queue); + } + } +}; + +/** + * Mark a component as needing a rerender, adding an optional callback to a + * list of functions which will be executed once the rerender occurs. + */ +function enqueueUpdate(component) { + ensureInjected(); + + // Various parts of our code (such as ReactCompositeComponent's + // _renderValidatedComponent) assume that calls to render aren't nested; + // verify that that's the case. (This is called by each top-level update + // function, like setState, forceUpdate, etc.; creation and + // destruction of top-level components is guarded in ReactMount.) + + if (!batchingStrategy.isBatchingUpdates) { + batchingStrategy.batchedUpdates(enqueueUpdate, component); + return; + } + + dirtyComponents.push(component); + if (component._updateBatchNumber == null) { + component._updateBatchNumber = updateBatchNumber + 1; + } +} + +/** + * Enqueue a callback to be run at the end of the current batching cycle. Throws + * if no updates are currently being performed. + */ +function asap(callback, context) { + !batchingStrategy.isBatchingUpdates ? true ? invariant(false, 'ReactUpdates.asap: Can\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0; + asapCallbackQueue.enqueue(callback, context); + asapEnqueued = true; +} + +var ReactUpdatesInjection = { + injectReconcileTransaction: function (ReconcileTransaction) { + !ReconcileTransaction ? true ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0; + ReactUpdates.ReactReconcileTransaction = ReconcileTransaction; + }, + + injectBatchingStrategy: function (_batchingStrategy) { + !_batchingStrategy ? true ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0; + !(typeof _batchingStrategy.batchedUpdates === 'function') ? true ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0; + !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? true ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0; + batchingStrategy = _batchingStrategy; + } +}; + +var ReactUpdates = { + /** + * React references `ReactReconcileTransaction` using this property in order + * to allow dependency injection. + * + * @internal + */ + ReactReconcileTransaction: null, + + batchedUpdates: batchedUpdates, + enqueueUpdate: enqueueUpdate, + flushBatchedUpdates: flushBatchedUpdates, + injection: ReactUpdatesInjection, + asap: asap +}; + +module.exports = ReactUpdates; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var PooledClass = __webpack_require__(24); + +var emptyFunction = __webpack_require__(10); +var warning = __webpack_require__(1); + +var didWarnForAddedNewProperty = false; +var isProxySupported = typeof Proxy === 'function'; + +var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances']; + +/** + * @interface Event + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var EventInterface = { + type: null, + target: null, + // currentTarget is set when dispatching; no use in copying it here + currentTarget: emptyFunction.thatReturnsNull, + eventPhase: null, + bubbles: null, + cancelable: null, + timeStamp: function (event) { + return event.timeStamp || Date.now(); + }, + defaultPrevented: null, + isTrusted: null +}; + +/** + * Synthetic events are dispatched by event plugins, typically in response to a + * top-level event delegation handler. + * + * These systems should generally use pooling to reduce the frequency of garbage + * collection. The system should check `isPersistent` to determine whether the + * event should be released into the pool after being dispatched. Users that + * need a persisted event should invoke `persist`. + * + * Synthetic events (and subclasses) implement the DOM Level 3 Events API by + * normalizing browser quirks. Subclasses do not necessarily have to implement a + * DOM interface; custom application-specific events can also subclass this. + * + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {*} targetInst Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @param {DOMEventTarget} nativeEventTarget Target node. + */ +function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) { + if (true) { + // these have a getter/setter for warnings + delete this.nativeEvent; + delete this.preventDefault; + delete this.stopPropagation; + } + + this.dispatchConfig = dispatchConfig; + this._targetInst = targetInst; + this.nativeEvent = nativeEvent; + + var Interface = this.constructor.Interface; + for (var propName in Interface) { + if (!Interface.hasOwnProperty(propName)) { + continue; + } + if (true) { + delete this[propName]; // this has a getter/setter for warnings + } + var normalize = Interface[propName]; + if (normalize) { + this[propName] = normalize(nativeEvent); + } else { + if (propName === 'target') { + this.target = nativeEventTarget; + } else { + this[propName] = nativeEvent[propName]; + } + } + } + + var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false; + if (defaultPrevented) { + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + } else { + this.isDefaultPrevented = emptyFunction.thatReturnsFalse; + } + this.isPropagationStopped = emptyFunction.thatReturnsFalse; + return this; +} + +_assign(SyntheticEvent.prototype, { + + preventDefault: function () { + this.defaultPrevented = true; + var event = this.nativeEvent; + if (!event) { + return; + } + + if (event.preventDefault) { + event.preventDefault(); + } else if (typeof event.returnValue !== 'unknown') { + // eslint-disable-line valid-typeof + event.returnValue = false; + } + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + }, + + stopPropagation: function () { + var event = this.nativeEvent; + if (!event) { + return; + } + + if (event.stopPropagation) { + event.stopPropagation(); + } else if (typeof event.cancelBubble !== 'unknown') { + // eslint-disable-line valid-typeof + // The ChangeEventPlugin registers a "propertychange" event for + // IE. This event does not support bubbling or cancelling, and + // any references to cancelBubble throw "Member not found". A + // typeof check of "unknown" circumvents this issue (and is also + // IE specific). + event.cancelBubble = true; + } + + this.isPropagationStopped = emptyFunction.thatReturnsTrue; + }, + + /** + * We release all dispatched `SyntheticEvent`s after each event loop, adding + * them back into the pool. This allows a way to hold onto a reference that + * won't be added back into the pool. + */ + persist: function () { + this.isPersistent = emptyFunction.thatReturnsTrue; + }, + + /** + * Checks if this event should be released back into the pool. + * + * @return {boolean} True if this should not be released, false otherwise. + */ + isPersistent: emptyFunction.thatReturnsFalse, + + /** + * `PooledClass` looks for `destructor` on each instance it releases. + */ + destructor: function () { + var Interface = this.constructor.Interface; + for (var propName in Interface) { + if (true) { + Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName])); + } else { + this[propName] = null; + } + } + for (var i = 0; i < shouldBeReleasedProperties.length; i++) { + this[shouldBeReleasedProperties[i]] = null; + } + if (true) { + Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null)); + Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction)); + Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction)); + } + } + +}); + +SyntheticEvent.Interface = EventInterface; + +if (true) { + if (isProxySupported) { + /*eslint-disable no-func-assign */ + SyntheticEvent = new Proxy(SyntheticEvent, { + construct: function (target, args) { + return this.apply(target, Object.create(target.prototype), args); + }, + apply: function (constructor, that, args) { + return new Proxy(constructor.apply(that, args), { + set: function (target, prop, value) { + if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) { + true ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\'re ' + 'seeing this, you\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0; + didWarnForAddedNewProperty = true; + } + target[prop] = value; + return true; + } + }); + } + }); + /*eslint-enable no-func-assign */ + } +} +/** + * Helper to reduce boilerplate when creating subclasses. + * + * @param {function} Class + * @param {?object} Interface + */ +SyntheticEvent.augmentClass = function (Class, Interface) { + var Super = this; + + var E = function () {}; + E.prototype = Super.prototype; + var prototype = new E(); + + _assign(prototype, Class.prototype); + Class.prototype = prototype; + Class.prototype.constructor = Class; + + Class.Interface = _assign({}, Super.Interface, Interface); + Class.augmentClass = Super.augmentClass; + + PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler); +}; + +PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler); + +module.exports = SyntheticEvent; + +/** + * Helper to nullify syntheticEvent instance properties when destructing + * + * @param {object} SyntheticEvent + * @param {String} propName + * @return {object} defineProperty object + */ +function getPooledWarningPropertyDefinition(propName, getVal) { + var isFunction = typeof getVal === 'function'; + return { + configurable: true, + set: set, + get: get + }; + + function set(val) { + var action = isFunction ? 'setting the method' : 'setting the property'; + warn(action, 'This is effectively a no-op'); + return val; + } + + function get() { + var action = isFunction ? 'accessing the method' : 'accessing the property'; + var result = isFunction ? 'This is a no-op function' : 'This is set to null'; + warn(action, result); + return getVal; + } + + function warn(action, result) { + var warningCondition = false; + true ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\'re seeing this, ' + 'you\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0; + } +} + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + + + + + + +var colorPropType=function colorPropType(isRequired,props,propName,componentName,location,propFullName){ +var normalizeColor=__webpack_require__(50); +var ReactPropTypeLocationNames=__webpack_require__(94); +var color=props[propName]; +if(color===undefined||color===null){ +if(isRequired){ +var locationName=ReactPropTypeLocationNames[location]; +return new Error( +'Required '+ +locationName+ +' `'+( +propFullName||propName)+ +'` was not specified in `'+ +componentName+ +'`.'); + +} +return; +} + +if(typeof color==='number'){ + + + +return; +} + +if(color==='currentcolor'||color==='inherit'){ +return; +} + +if(normalizeColor(color)===null){ +var locationName=ReactPropTypeLocationNames[location]; +return new Error( +'Invalid '+ +locationName+ +' `'+( +propFullName||propName)+ +'` supplied to `'+ +componentName+ +'`: '+ +color+ +'\n'+'Valid color formats are\n - \'#f0f\' (#rgb)\n - \'#f0fc\' (#rgba)\n - \'#ff00ff\' (#rrggbb)\n - \'#ff00ff00\' (#rrggbbaa)\n - \'rgb(255, 255, 255)\'\n - \'rgba(255, 255, 255, 1.0)\'\n - \'hsl(360, 100%, 100%)\'\n - \'hsla(360, 100%, 100%, 1.0)\'\n - \'transparent\'\n - \'red\'\n - 0xff00ff00 (0xrrggbbaa)\n'); + + + + + + + + + + + + + + +} +}; + +if(true){ +var ColorPropType=colorPropType.bind(null,false); +ColorPropType.isRequired=colorPropType.bind(null,true); +}else{ +var ColorPropType=function ColorPropType(){}; +} + +module.exports=ColorPropType; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +/** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ +var ReactCurrentOwner = { + /** + * @internal + * @type {ReactComponent} + */ + current: null +}; + +module.exports = ReactCurrentOwner; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9);var + +AnimatedWithChildren=function(_Animated){_inherits(AnimatedWithChildren,_Animated); + + +function AnimatedWithChildren(){_classCallCheck(this,AnimatedWithChildren);var _this=_possibleConstructorReturn(this,(AnimatedWithChildren.__proto__||Object.getPrototypeOf(AnimatedWithChildren)).call(this)); + +_this._children=[];return _this; +}_createClass(AnimatedWithChildren,[{key:'__addChild',value:function __addChild( + +child){ +if(this._children.length===0){ +this.__attach(); +} +this._children.push(child); +}},{key:'__removeChild',value:function __removeChild( + +child){ +var index=this._children.indexOf(child); +if(index===-1){ +console.warn('Trying to remove a child that doesn\'t exist'); +return; +} +this._children.splice(index,1); +if(this._children.length===0){ +this.__detach(); +} +}},{key:'__getChildren',value:function __getChildren() + +{ +return this._children; +}}]);return AnimatedWithChildren;}(Animated); + + +module.exports=AnimatedWithChildren; + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _BaseComponentPropTypes=__webpack_require__(151);var _BaseComponentPropTypes2=_interopRequireDefault(_BaseComponentPropTypes); +var _EdgeInsetsPropType=__webpack_require__(92);var _EdgeInsetsPropType2=_interopRequireDefault(_EdgeInsetsPropType); +var _StyleSheetPropType=__webpack_require__(32);var _StyleSheetPropType2=_interopRequireDefault(_StyleSheetPropType); +var _ViewStylePropTypes=__webpack_require__(44);var _ViewStylePropTypes2=_interopRequireDefault(_ViewStylePropTypes); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var ViewPropTypes=_extends({},_BaseComponentPropTypes2.default,{ + +children:_propTypes.any, +collapsable:_propTypes.bool, +hitSlop:_EdgeInsetsPropType2.default, +onClick:_propTypes.func, +onClickCapture:_propTypes.func, +onLayout:_propTypes.func, +onMoveShouldSetResponder:_propTypes.func, +onMoveShouldSetResponderCapture:_propTypes.func, +onResponderGrant:_propTypes.func, +onResponderMove:_propTypes.func, +onResponderReject:_propTypes.func, +onResponderRelease:_propTypes.func, +onResponderTerminate:_propTypes.func, +onResponderTerminationRequest:_propTypes.func, +onStartShouldSetResponder:_propTypes.func, +onStartShouldSetResponderCapture:_propTypes.func, +onTouchCancel:_propTypes.func, +onTouchCancelCapture:_propTypes.func, +onTouchEnd:_propTypes.func, +onTouchEndCapture:_propTypes.func, +onTouchMove:_propTypes.func, +onTouchMoveCapture:_propTypes.func, +onTouchStart:_propTypes.func, +onTouchStartCapture:_propTypes.func, +pointerEvents:(0,_propTypes.oneOf)(['auto','box-none','box-only','none']), +style:(0,_StyleSheetPropType2.default)(_ViewStylePropTypes2.default)}); + + +module.exports=ViewPropTypes; + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +function checkMask(value, bitmask) { + return (value & bitmask) === bitmask; +} + +var DOMPropertyInjection = { + /** + * Mapping from normalized, camelcased property names to a configuration that + * specifies how the associated DOM property should be accessed or rendered. + */ + MUST_USE_PROPERTY: 0x1, + HAS_BOOLEAN_VALUE: 0x4, + HAS_NUMERIC_VALUE: 0x8, + HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8, + HAS_OVERLOADED_BOOLEAN_VALUE: 0x20, + + /** + * Inject some specialized knowledge about the DOM. This takes a config object + * with the following properties: + * + * isCustomAttribute: function that given an attribute name will return true + * if it can be inserted into the DOM verbatim. Useful for data-* or aria-* + * attributes where it's impossible to enumerate all of the possible + * attribute names, + * + * Properties: object mapping DOM property name to one of the + * DOMPropertyInjection constants or null. If your attribute isn't in here, + * it won't get written to the DOM. + * + * DOMAttributeNames: object mapping React attribute name to the DOM + * attribute name. Attribute names not specified use the **lowercase** + * normalized name. + * + * DOMAttributeNamespaces: object mapping React attribute name to the DOM + * attribute namespace URL. (Attribute names not specified use no namespace.) + * + * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties. + * Property names not specified use the normalized name. + * + * DOMMutationMethods: Properties that require special mutation methods. If + * `value` is undefined, the mutation method should unset the property. + * + * @param {object} domPropertyConfig the config as described above. + */ + injectDOMPropertyConfig: function (domPropertyConfig) { + var Injection = DOMPropertyInjection; + var Properties = domPropertyConfig.Properties || {}; + var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {}; + var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {}; + var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {}; + var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {}; + + if (domPropertyConfig.isCustomAttribute) { + DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute); + } + + for (var propName in Properties) { + !!DOMProperty.properties.hasOwnProperty(propName) ? true ? invariant(false, 'injectDOMPropertyConfig(...): You\'re trying to inject DOM property \'%s\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0; + + var lowerCased = propName.toLowerCase(); + var propConfig = Properties[propName]; + + var propertyInfo = { + attributeName: lowerCased, + attributeNamespace: null, + propertyName: propName, + mutationMethod: null, + + mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY), + hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE), + hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE), + hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE), + hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE) + }; + !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? true ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0; + + if (true) { + DOMProperty.getPossibleStandardName[lowerCased] = propName; + } + + if (DOMAttributeNames.hasOwnProperty(propName)) { + var attributeName = DOMAttributeNames[propName]; + propertyInfo.attributeName = attributeName; + if (true) { + DOMProperty.getPossibleStandardName[attributeName] = propName; + } + } + + if (DOMAttributeNamespaces.hasOwnProperty(propName)) { + propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName]; + } + + if (DOMPropertyNames.hasOwnProperty(propName)) { + propertyInfo.propertyName = DOMPropertyNames[propName]; + } + + if (DOMMutationMethods.hasOwnProperty(propName)) { + propertyInfo.mutationMethod = DOMMutationMethods[propName]; + } + + DOMProperty.properties[propName] = propertyInfo; + } + } +}; + +/* eslint-disable max-len */ +var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; +/* eslint-enable max-len */ + +/** + * DOMProperty exports lookup objects that can be used like functions: + * + * > DOMProperty.isValid['id'] + * true + * > DOMProperty.isValid['foobar'] + * undefined + * + * Although this may be confusing, it performs better in general. + * + * @see http://jsperf.com/key-exists + * @see http://jsperf.com/key-missing + */ +var DOMProperty = { + + ID_ATTRIBUTE_NAME: 'data-reactid', + ROOT_ATTRIBUTE_NAME: 'data-reactroot', + + ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR, + ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040', + + /** + * Map from property "standard name" to an object with info about how to set + * the property in the DOM. Each object contains: + * + * attributeName: + * Used when rendering markup or with `*Attribute()`. + * attributeNamespace + * propertyName: + * Used on DOM node instances. (This includes properties that mutate due to + * external factors.) + * mutationMethod: + * If non-null, used instead of the property or `setAttribute()` after + * initial render. + * mustUseProperty: + * Whether the property must be accessed and mutated as an object property. + * hasBooleanValue: + * Whether the property should be removed when set to a falsey value. + * hasNumericValue: + * Whether the property must be numeric or parse as a numeric and should be + * removed when set to a falsey value. + * hasPositiveNumericValue: + * Whether the property must be positive numeric or parse as a positive + * numeric and should be removed when set to a falsey value. + * hasOverloadedBooleanValue: + * Whether the property can be used as a flag as well as with a value. + * Removed when strictly equal to false; present without a value when + * strictly equal to true; present with a value otherwise. + */ + properties: {}, + + /** + * 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: true ? { autofocus: 'autoFocus' } : null, + + /** + * All of the isCustomAttribute() functions that have been injected. + */ + _isCustomAttributeFunctions: [], + + /** + * Checks whether a property name is a custom attribute. + * @method + */ + isCustomAttribute: function (attributeName) { + for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) { + var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i]; + if (isCustomAttributeFn(attributeName)) { + return true; + } + } + return false; + }, + + injection: DOMPropertyInjection +}; + +module.exports = DOMProperty; + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + +var _NativeMethodsMixin=__webpack_require__(60);var _NativeMethodsMixin2=_interopRequireDefault(_NativeMethodsMixin);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var applyNativeMethods=function applyNativeMethods(Component){ +Object.keys(_NativeMethodsMixin2.default).forEach(function(method){ +if(!Component.prototype[method]){ +Component.prototype[method]=_NativeMethodsMixin2.default[method]; +} +}); +return Component; +}; + +module.exports=applyNativeMethods; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * + */ + + +/** + * WARNING: DO NOT manually require this module. + * This is a replacement for `invariant(...)` used by the error code system + * and will _only_ be required by the corresponding babel pass. + * It always throws. + */ + +function reactProdInvariant(code) { + var argCount = arguments.length - 1; + + var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; + + for (var argIdx = 0; argIdx < argCount; argIdx++) { + message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); + } + + message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; + + var error = new Error(message); + error.name = 'Invariant Violation'; + error.framesToPop = 1; // we don't care about reactProdInvariant's own frame + + throw error; +} + +module.exports = reactProdInvariant; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var AnimatedWithChildren=__webpack_require__(18); +var InteractionManager=__webpack_require__(103); +var AnimatedInterpolation=__webpack_require__(46); +var Interpolation=__webpack_require__(36); +var Animation=__webpack_require__(35); +var guid=__webpack_require__(62); +var Set=global.Set||__webpack_require__(176); + + + + + + + + + + + + + + + + + + + + + + + + + + + + +function _flush(rootNode){ +var animatedStyles=new Set(); +function findAnimatedStyles(node){ +if(typeof node.update==='function'){ +animatedStyles.add(node); +}else{ +node.__getChildren().forEach(findAnimatedStyles); +} +} +findAnimatedStyles(rootNode); +animatedStyles.forEach(function(animatedStyle){return animatedStyle.update();}); +}var + + + + + + + +AnimatedValue=function(_AnimatedWithChildren){_inherits(AnimatedValue,_AnimatedWithChildren); + + + + + + +function AnimatedValue(value){_classCallCheck(this,AnimatedValue);var _this=_possibleConstructorReturn(this,(AnimatedValue.__proto__||Object.getPrototypeOf(AnimatedValue)).call(this)); + +_this._value=value; +_this._offset=0; +_this._animation=null; +_this._listeners={};return _this; +}_createClass(AnimatedValue,[{key:'__detach',value:function __detach() + +{ +this.stopAnimation(); +}},{key:'__getValue',value:function __getValue() + +{ +return this._value+this._offset; +}},{key:'setValue',value:function setValue( + + + + + +value){ +if(this._animation){ +this._animation.stop(); +this._animation=null; +} +this._updateValue(value); +}},{key:'setOffset',value:function setOffset( + + + + + + +offset){ +this._offset=offset; +}},{key:'flattenOffset',value:function flattenOffset() + + + + + +{ +this._value+=this._offset; +this._offset=0; +}},{key:'addListener',value:function addListener( + + + + + + +callback){ +var id=guid(); +this._listeners[id]=callback; +return id; +}},{key:'removeListener',value:function removeListener( + +id){ +delete this._listeners[id]; +}},{key:'removeAllListeners',value:function removeAllListeners() + +{ +this._listeners={}; +}},{key:'stopAnimation',value:function stopAnimation( + + + + + + +callback){ +this.stopTracking(); +this._animation&&this._animation.stop(); +this._animation=null; +callback&&callback(this.__getValue()); +}},{key:'interpolate',value:function interpolate( + + + + + +config){ +return new AnimatedInterpolation(this,Interpolation.create(config)); +}},{key:'animate',value:function animate( + + + + + +animation,callback){var _this2=this; +var handle=null; +if(animation.__isInteraction){ +handle=InteractionManager.current.createInteractionHandle(); +} +var previousAnimation=this._animation; +this._animation&&this._animation.stop(); +this._animation=animation; +animation.start( +this._value, +function(value){ +_this2._updateValue(value); +}, +function(result){ +_this2._animation=null; +if(handle!==null){ +InteractionManager.current.clearInteractionHandle(handle); +} +callback&&callback(result); +}, +previousAnimation); + +}},{key:'stopTracking',value:function stopTracking() + + + + +{ +this._tracking&&this._tracking.__detach(); +this._tracking=null; +}},{key:'track',value:function track( + + + + +tracking){ +this.stopTracking(); +this._tracking=tracking; +}},{key:'_updateValue',value:function _updateValue( + +value){ +this._value=value; +_flush(this); +for(var key in this._listeners){ +this._listeners[key]({value:this.__getValue()}); +} +}}]);return AnimatedValue;}(AnimatedWithChildren); + + +module.exports=AnimatedValue; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34))) + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +/** + * 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 standardReleaser = function (instance) { + var Klass = this; + !(instance instanceof Klass) ? true ? 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) { + // Casting as any so that flow ignores the actual implementation and trusts + // it to match the type we declared + 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 +}; + +module.exports = PooledClass; + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var ReactCurrentOwner = __webpack_require__(17); + +var warning = __webpack_require__(1); +var canDefineProperty = __webpack_require__(96); +var hasOwnProperty = Object.prototype.hasOwnProperty; + +var REACT_ELEMENT_TYPE = __webpack_require__(160); + +var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true +}; + +var specialPropKeyWarningShown, specialPropRefWarningShown; + +function hasValidRef(config) { + if (true) { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; +} + +function hasValidKey(config) { + if (true) { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; +} + +function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + true ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; + } + }; + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); +} + +function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + true ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; + } + }; + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); +} + +/** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, no instanceof check + * will work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} key + * @param {string|object} ref + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @param {*} owner + * @param {*} props + * @internal + */ +var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allow us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + + // Record the component responsible for creating this element. + _owner: owner + }; + + if (true) { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; + + // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + if (canDefineProperty) { + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + // self and source are DEV only properties. + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); + // 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', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + } else { + element._store.validated = false; + element._self = self; + element._source = source; + } + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + + return element; +}; + +/** + * Create and return a new ReactElement of the given type. + * See https://facebook.github.io/react/docs/react-api.html#createelement + */ +ReactElement.createElement = function (type, config, children) { + var propName; + + // Reserved names are extracted + var props = {}; + + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; + // Remaining properties are added to a new props object + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + if (true) { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } + + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + if (true) { + if (key || ref) { + if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); +}; + +/** + * Return a function that produces ReactElements of a given type. + * See https://facebook.github.io/react/docs/react-api.html#createfactory + */ +ReactElement.createFactory = function (type) { + var factory = ReactElement.createElement.bind(null, type); + // Expose the type on the factory and the prototype so that it can be + // easily accessed on elements. E.g. `<Foo />.type === Foo`. + // This should not be named `constructor` since this may not be the function + // that created the element, and it may not even be a constructor. + // Legacy hook TODO: Warn if this is accessed + factory.type = type; + return factory; +}; + +ReactElement.cloneAndReplaceKey = function (oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + + return newElement; +}; + +/** + * Clone and return a new ReactElement using element as the starting point. + * See https://facebook.github.io/react/docs/react-api.html#cloneelement + */ +ReactElement.cloneElement = function (element, config, children) { + var propName; + + // Original props are copied + var props = _assign({}, element.props); + + // Reserved names are extracted + var key = element.key; + var ref = element.ref; + // Self is preserved since the owner is preserved. + var self = element._self; + // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + var source = element._source; + + // Owner will be preserved, unless ref is overridden + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + // Remaining properties override existing props + var defaultProps; + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); +}; + +/** + * Verifies the object is a ReactElement. + * See https://facebook.github.io/react/docs/react-api.html#isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a valid component. + * @final + */ +ReactElement.isValidElement = function (object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +}; + +module.exports = ReactElement; + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + + + +var DOMNamespaces = __webpack_require__(68); +var setInnerHTML = __webpack_require__(57); + +var createMicrosoftUnsafeLocalFunction = __webpack_require__(74); +var setTextContent = __webpack_require__(135); + +var ELEMENT_NODE_TYPE = 1; +var DOCUMENT_FRAGMENT_NODE_TYPE = 11; + +/** + * In IE (8-11) and Edge, appending nodes with no children is dramatically + * faster than appending a full subtree, so we essentially queue up the + * .appendChild calls here and apply them so each node is added to its parent + * before any children are added. + * + * In other browsers, doing so is slower or neutral compared to the other order + * (in Firefox, twice as slow) so we only do this inversion in IE. + * + * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode. + */ +var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent); + +function insertTreeChildren(tree) { + if (!enableLazy) { + return; + } + var node = tree.node; + var children = tree.children; + if (children.length) { + for (var i = 0; i < children.length; i++) { + insertTreeBefore(node, children[i], null); + } + } else if (tree.html != null) { + setInnerHTML(node, tree.html); + } else if (tree.text != null) { + setTextContent(node, tree.text); + } +} + +var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) { + // DocumentFragments aren't actually part of the DOM after insertion so + // appending children won't update the DOM. We need to ensure the fragment + // is properly populated first, breaking out of our lazy approach for just + // this level. Also, some <object> plugins (like Flash Player) will read + // <param> nodes immediately upon insertion into the DOM, so <object> + // must also be populated prior to insertion into the DOM. + if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) { + insertTreeChildren(tree); + parentNode.insertBefore(tree.node, referenceNode); + } else { + parentNode.insertBefore(tree.node, referenceNode); + insertTreeChildren(tree); + } +}); + +function replaceChildWithTree(oldNode, newTree) { + oldNode.parentNode.replaceChild(newTree.node, oldNode); + insertTreeChildren(newTree); +} + +function queueChild(parentTree, childTree) { + if (enableLazy) { + parentTree.children.push(childTree); + } else { + parentTree.node.appendChild(childTree.node); + } +} + +function queueHTML(tree, html) { + if (enableLazy) { + tree.html = html; + } else { + setInnerHTML(tree.node, html); + } +} + +function queueText(tree, text) { + if (enableLazy) { + tree.text = text; + } else { + setTextContent(tree.node, text); + } +} + +function toString() { + return this.node.nodeName; +} + +function DOMLazyTree(node) { + return { + node: node, + children: [], + html: null, + text: null, + toString: toString + }; +} + +DOMLazyTree.insertTreeBefore = insertTreeBefore; +DOMLazyTree.replaceChildWithTree = replaceChildWithTree; +DOMLazyTree.queueChild = queueChild; +DOMLazyTree.queueHTML = queueHTML; +DOMLazyTree.queueText = queueText; + +module.exports = DOMLazyTree; + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var EventPluginRegistry = __webpack_require__(52); +var EventPluginUtils = __webpack_require__(40); +var ReactErrorUtils = __webpack_require__(72); + +var accumulateInto = __webpack_require__(129); +var forEachAccumulated = __webpack_require__(130); +var invariant = __webpack_require__(0); + +/** + * Internal store for event listeners + */ +var listenerBank = {}; + +/** + * Internal queue of events that have accumulated their dispatches and are + * waiting to have their dispatches executed. + */ +var eventQueue = null; + +/** + * Dispatches an event and releases it back into the pool, unless persistent. + * + * @param {?object} event Synthetic event to be dispatched. + * @param {boolean} simulated If the event is simulated (changes exn behavior) + * @private + */ +var executeDispatchesAndRelease = function (event, simulated) { + if (event) { + EventPluginUtils.executeDispatchesInOrder(event, simulated); + + if (!event.isPersistent()) { + event.constructor.release(event); + } + } +}; +var executeDispatchesAndReleaseSimulated = function (e) { + return executeDispatchesAndRelease(e, true); +}; +var executeDispatchesAndReleaseTopLevel = function (e) { + return executeDispatchesAndRelease(e, false); +}; + +var getDictionaryKey = function (inst) { + // Prevents V8 performance issue: + // https://github.com/facebook/react/pull/7232 + 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. + * + * Event plugins can implement the following properties: + * + * `extractEvents` {function(string, DOMEventTarget, string, object): *} + * Required. When a top-level event is fired, this method is expected to + * extract synthetic events that will in turn be queued and dispatched. + * + * `eventTypes` {object} + * Optional, plugins that fire events must publish a mapping of registration + * names that are used to register listeners. Values of this mapping must + * be objects that contain `registrationName` or `phasedRegistrationNames`. + * + * `executeDispatch` {function(object, function, string)} + * Optional, allows plugins to override how an event gets dispatched. By + * default, the listener is simply invoked. + * + * Each plugin that is injected into `EventsPluginHub` is immediately operable. + * + * @public + */ +var EventPluginHub = { + + /** + * Methods for injecting dependencies. + */ + injection: { + + /** + * @param {array} InjectedEventPluginOrder + * @public + */ + injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder, + + /** + * @param {object} injectedNamesToPlugins Map from names to plugin modules. + */ + injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName + + }, + + /** + * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent. + * + * @param {object} inst The instance, which is the source of events. + * @param {string} registrationName Name of listener (e.g. `onClick`). + * @param {function} listener The callback to store. + */ + putListener: function (inst, registrationName, listener) { + !(typeof listener === 'function') ? true ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0; + + var key = getDictionaryKey(inst); + var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {}); + bankForRegistrationName[key] = listener; + + var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; + if (PluginModule && PluginModule.didPutListener) { + PluginModule.didPutListener(inst, registrationName, listener); + } + }, + + /** + * @param {object} inst The instance, which is the source of events. + * @param {string} registrationName Name of listener (e.g. `onClick`). + * @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]; + }, + + /** + * Deletes a listener from the registration bank. + * + * @param {object} inst The instance, which is the source of events. + * @param {string} registrationName Name of listener (e.g. `onClick`). + */ + deleteListener: function (inst, registrationName) { + var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; + if (PluginModule && PluginModule.willDeleteListener) { + PluginModule.willDeleteListener(inst, registrationName); + } + + var bankForRegistrationName = listenerBank[registrationName]; + // TODO: This should never be null -- when is it? + if (bankForRegistrationName) { + var key = getDictionaryKey(inst); + delete bankForRegistrationName[key]; + } + }, + + /** + * Deletes all listeners for the DOM element with the supplied ID. + * + * @param {object} inst The instance, which is the source of events. + */ + deleteAllListeners: function (inst) { + var key = getDictionaryKey(inst); + for (var registrationName in listenerBank) { + if (!listenerBank.hasOwnProperty(registrationName)) { + continue; + } + + if (!listenerBank[registrationName][key]) { + continue; + } + + var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; + if (PluginModule && PluginModule.willDeleteListener) { + PluginModule.willDeleteListener(inst, registrationName); + } + + delete listenerBank[registrationName][key]; + } + }, + + /** + * Allows registered plugins an opportunity to extract events from top-level + * native browser events. + * + * @return {*} An accumulation of synthetic events. + * @internal + */ + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var events; + var plugins = EventPluginRegistry.plugins; + for (var i = 0; i < plugins.length; i++) { + // Not every plugin in the ordering may be loaded at runtime. + var possiblePlugin = plugins[i]; + if (possiblePlugin) { + var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); + if (extractedEvents) { + events = accumulateInto(events, extractedEvents); + } + } + } + return events; + }, + + /** + * Enqueues a synthetic event that should be dispatched when + * `processEventQueue` is invoked. + * + * @param {*} events An accumulation of synthetic events. + * @internal + */ + enqueueEvents: function (events) { + if (events) { + eventQueue = accumulateInto(eventQueue, events); + } + }, + + /** + * Dispatches all synthetic events on the event queue. + * + * @internal + */ + processEventQueue: function (simulated) { + // Set `eventQueue` to null before processing it so that we can tell if more + // events get enqueued while processing. + var processingEventQueue = eventQueue; + eventQueue = null; + if (simulated) { + forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated); + } else { + forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel); + } + !!eventQueue ? true ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0; + // This would be a good time to rethrow if any of the event handlers threw. + ReactErrorUtils.rethrowCaughtError(); + }, + + /** + * These are needed for tests only. Do not use! + */ + __purge: function () { + listenerBank = {}; + }, + + __getListenerBank: function () { + return listenerBank; + } + +}; + +module.exports = EventPluginHub; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var EventPluginHub = __webpack_require__(27); +var EventPluginUtils = __webpack_require__(40); + +var accumulateInto = __webpack_require__(129); +var forEachAccumulated = __webpack_require__(130); +var warning = __webpack_require__(1); + +var getListener = EventPluginHub.getListener; + +/** + * Some event types have a notion of different registration names for different + * "phases" of propagation. This finds listeners by a given phase. + */ +function listenerAtPhase(inst, event, propagationPhase) { + var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase]; + return getListener(inst, registrationName); +} + +/** + * Tags a `SyntheticEvent` with dispatched listeners. Creating this function + * here, allows us to not have to bind or create functions for each event. + * 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, phase, event) { + if (true) { + true ? warning(inst, 'Dispatching inst must not be null') : void 0; + } + var listener = listenerAtPhase(inst, event, phase); + if (listener) { + event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } +} + +/** + * Collect dispatches (must be entirely collected before dispatching - see unit + * tests). Lazily allocate the array to conserve memory. We must loop through + * each event and perform the traversal for each one. We cannot perform a + * single traversal for the entire collection of events because each event may + * have a different target. + */ +function accumulateTwoPhaseDispatchesSingle(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); + } +} + +/** + * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID. + */ +function accumulateTwoPhaseDispatchesSingleSkipTarget(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + var targetInst = event._targetInst; + var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null; + EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event); + } +} + +/** + * Accumulates without regard to direction, does not look for phased + * registration names. Same as `accumulateDirectDispatchesSingle` but without + * requiring that the `dispatchMarker` be the same as the dispatched ID. + */ +function accumulateDispatches(inst, ignoredDirection, event) { + if (event && event.dispatchConfig.registrationName) { + var registrationName = event.dispatchConfig.registrationName; + var listener = getListener(inst, registrationName); + if (listener) { + event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } + } +} + +/** + * Accumulates dispatches on an `SyntheticEvent`, but only for the + * `dispatchMarker`. + * @param {SyntheticEvent} event + */ +function accumulateDirectDispatchesSingle(event) { + if (event && event.dispatchConfig.registrationName) { + accumulateDispatches(event._targetInst, null, event); + } +} + +function accumulateTwoPhaseDispatches(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle); +} + +function accumulateTwoPhaseDispatchesSkipTarget(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget); +} + +function accumulateEnterLeaveDispatches(leave, enter, from, to) { + EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter); +} + +function accumulateDirectDispatches(events) { + forEachAccumulated(events, accumulateDirectDispatchesSingle); +} + +/** + * A small set of propagation patterns, each of which will accept a small amount + * of information, and generate a set of "dispatch ready event objects" - which + * are sets of events that have already been annotated with a set of dispatched + * listener functions/ids. The API is designed this way to discourage these + * propagation strategies from actually executing the dispatches, since we + * always want to collect the entire set of dispatches before executing event a + * single one. + * + * @constructor EventPropagators + */ +var EventPropagators = { + accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches, + accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget, + accumulateDirectDispatches: accumulateDirectDispatches, + accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches +}; + +module.exports = EventPropagators; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactRef = __webpack_require__(263); +var ReactInstrumentation = __webpack_require__(11); + +var warning = __webpack_require__(1); + +/** + * Helper to call ReactRef.attachRefs with this composite component, split out + * to avoid allocations in the transaction mount-ready queue. + */ +function attachRefs() { + ReactRef.attachRefs(this, this._currentElement); +} + +var ReactReconciler = { + + /** + * Initializes the component, renders markup, and registers event listeners. + * + * @param {ReactComponent} internalInstance + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @param {?object} the containing host component instance + * @param {?object} info about the host container + * @return {?string} Rendered markup to be inserted into the DOM. + * @final + * @internal + */ + mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots + ) { + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID); + } + } + var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID); + if (internalInstance._currentElement && internalInstance._currentElement.ref != null) { + transaction.getReactMountReady().enqueue(attachRefs, internalInstance); + } + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID); + } + } + return markup; + }, + + /** + * Returns a value that can be passed to + * ReactComponentEnvironment.replaceNodeWithMarkup. + */ + getHostNode: function (internalInstance) { + return internalInstance.getHostNode(); + }, + + /** + * Releases any resources allocated by `mountComponent`. + * + * @final + * @internal + */ + unmountComponent: function (internalInstance, safely) { + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID); + } + } + ReactRef.detachRefs(internalInstance, internalInstance._currentElement); + internalInstance.unmountComponent(safely); + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID); + } + } + }, + + /** + * Update a component using a new element. + * + * @param {ReactComponent} internalInstance + * @param {ReactElement} nextElement + * @param {ReactReconcileTransaction} transaction + * @param {object} context + * @internal + */ + receiveComponent: function (internalInstance, nextElement, transaction, context) { + var prevElement = internalInstance._currentElement; + + if (nextElement === prevElement && context === internalInstance._context) { + // Since elements are immutable after the owner is rendered, + // we can do a cheap identity compare here to determine if this is a + // superfluous reconcile. It's possible for state to be mutable but such + // change should trigger an update of the owner which would recreate + // the element. We explicitly check for the existence of an owner since + // it's possible for an element created outside a composite to be + // deeply mutated and reused. + + // TODO: Bailing out early is just a perf optimization right? + // TODO: Removing the return statement should affect correctness? + return; + } + + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement); + } + } + + var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement); + + if (refsChanged) { + ReactRef.detachRefs(internalInstance, prevElement); + } + + internalInstance.receiveComponent(nextElement, transaction, context); + + if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) { + transaction.getReactMountReady().enqueue(attachRefs, internalInstance); + } + + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); + } + } + }, + + /** + * Flush any dirty changes in a component. + * + * @param {ReactComponent} internalInstance + * @param {ReactReconcileTransaction} transaction + * @internal + */ + performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) { + if (internalInstance._updateBatchNumber !== updateBatchNumber) { + // The component's enqueued batch number should always be the current + // batch or the following one. + true ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0; + return; + } + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement); + } + } + internalInstance.performUpdateIfNecessary(transaction); + if (true) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); + } + } + } + +}; + +module.exports = ReactReconciler; + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +var _requestAnimationFrame=__webpack_require__(64);var _requestAnimationFrame2=_interopRequireDefault(_requestAnimationFrame); +var _setValueForStyles=__webpack_require__(350);var _setValueForStyles2=_interopRequireDefault(_setValueForStyles);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var getRect=function getRect(node){ +var height=node.offsetHeight; +var width=node.offsetWidth; +var left=0; +var top=0; +while(node&&node.nodeType===1){ +left+=node.offsetLeft; +top+=node.offsetTop; +node=node.offsetParent; +} +return{height:height,left:left,top:top,width:width}; +}; + +var _measureLayout=function _measureLayout(node,relativeToNativeNode,callback){ +(0,_requestAnimationFrame2.default)(function(){ +var relativeNode=relativeToNativeNode||node&&node.parentNode; +if(node&&relativeNode){ +var relativeRect=getRect(relativeNode);var _getRect= +getRect(node),height=_getRect.height,left=_getRect.left,top=_getRect.top,width=_getRect.width; +var x=left-relativeRect.left; +var y=top-relativeRect.top; +callback(x,y,width,height,left,top); +} +}); +}; + +var UIManager={ +blur:function blur(node){ +try{ +node.blur(); +}catch(err){} +}, + +focus:function focus(node){ +try{ +node.focus(); +}catch(err){} +}, + +measure:function measure(node,callback){ +_measureLayout(node,null,callback); +}, + +measureInWindow:function measureInWindow(node,callback){ +(0,_requestAnimationFrame2.default)(function(){ +if(node){var _getRect2= +getRect(node),height=_getRect2.height,left=_getRect2.left,top=_getRect2.top,width=_getRect2.width; +callback(left,top,width,height); +} +}); +}, + +measureLayout:function measureLayout(node,relativeToNativeNode,onFail,onSuccess){ +_measureLayout(node,relativeToNativeNode,onSuccess); +}, + +updateView:function updateView(node,props,component){ +for(var prop in props){ +if(!Object.prototype.hasOwnProperty.call(props,prop)){ +continue; +} + +var value=props[prop]; +switch(prop){ +case'style':{ +(0,_setValueForStyles2.default)(node,value,component._reactInternalInstance); +break; +} +case'class': +case'className':{ +node.setAttribute('class',value); +break; +} +case'text': +case'value': + +node.value=value; +break; +default: +node.setAttribute(prop,value);} + +} +}}; + + +module.exports=UIManager; + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(344); + +var _AccessibilityUtil=__webpack_require__(89);var _AccessibilityUtil2=_interopRequireDefault(_AccessibilityUtil); +var _createDOMProps=__webpack_require__(146);var _createDOMProps2=_interopRequireDefault(_createDOMProps); +var _modality=__webpack_require__(345);var _modality2=_interopRequireDefault(_modality); +var _normalizeNativeEvent=__webpack_require__(149);var _normalizeNativeEvent2=_interopRequireDefault(_normalizeNativeEvent); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +(0,_modality2.default)(); + +var eventHandlerNames={ +onClick:true, +onClickCapture:true, +onMoveShouldSetResponder:true, +onMoveShouldSetResponderCapture:true, +onResponderGrant:true, +onResponderMove:true, +onResponderReject:true, +onResponderRelease:true, +onResponderTerminate:true, +onResponderTerminationRequest:true, +onStartShouldSetResponder:true, +onStartShouldSetResponderCapture:true, +onTouchCancel:true, +onTouchCancelCapture:true, +onTouchEnd:true, +onTouchEndCapture:true, +onTouchMove:true, +onTouchMoveCapture:true, +onTouchStart:true, +onTouchStartCapture:true}; + + +var wrapEventHandler=function wrapEventHandler(handler){return function(e){ +e.nativeEvent=(0,_normalizeNativeEvent2.default)(e.nativeEvent); +return handler(e); +};}; + +var createDOMElement=function createDOMElement(component,props){ + +var accessibilityComponent=_AccessibilityUtil2.default.propsToAccessibilityComponent(props); +var Component=accessibilityComponent||component; +var domProps=(0,_createDOMProps2.default)(props); + + + +for(var prop in domProps){ +if(Object.prototype.hasOwnProperty.call(domProps,prop)){ +var isEventHandler=typeof prop==='function'&&eventHandlerNames[prop]; +if(isEventHandler){ +domProps[prop]=wrapEventHandler(prop); +} +} +} + +return _react2.default.createElement(Component,domProps); +}; + +module.exports=createDOMElement; + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + +module.exports=function StyleSheetPropType(shape){ +var createStrictShapeTypeChecker=__webpack_require__(93); +var StyleSheet=__webpack_require__(8); + +var shapePropType=createStrictShapeTypeChecker(shape); +return function(props,propName,componentName,location){ +var newProps=props; +if(props[propName]){ + +newProps={}; +newProps[propName]=StyleSheet.flatten(props[propName]); +} +return shapePropType(newProps,propName,componentName,location); +}; +}; + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactBaseClasses = __webpack_require__(158); +var ReactChildren = __webpack_require__(353); +var ReactClass = __webpack_require__(354); +var ReactDOMFactories = __webpack_require__(355); +var ReactElement = __webpack_require__(25); +var ReactPropTypes = __webpack_require__(356); +var ReactVersion = __webpack_require__(358); + +var onlyChild = __webpack_require__(361); +var warning = __webpack_require__(1); +var checkPropTypes = __webpack_require__(165); + +var createElement = ReactElement.createElement; +var createFactory = ReactElement.createFactory; +var cloneElement = ReactElement.cloneElement; + +if (true) { + var ReactElementValidator = __webpack_require__(161); + createElement = ReactElementValidator.createElement; + createFactory = ReactElementValidator.createFactory; + cloneElement = ReactElementValidator.cloneElement; +} + +var createMixin = function (mixin) { + return mixin; +}; + +if (true) { + var warnedForCreateMixin = false; + + createMixin = function (mixin) { + true ? warning(warnedForCreateMixin, 'React.createMixin is deprecated and should not be used. You ' + 'can use this mixin directly instead.') : void 0; + warnedForCreateMixin = true; + return mixin; + }; +} + +var React = { + // Modern + + Children: { + map: ReactChildren.map, + forEach: ReactChildren.forEach, + count: ReactChildren.count, + toArray: ReactChildren.toArray, + only: onlyChild + }, + + Component: ReactBaseClasses.Component, + PureComponent: ReactBaseClasses.PureComponent, + + createElement: createElement, + cloneElement: cloneElement, + isValidElement: ReactElement.isValidElement, + + checkPropTypes: checkPropTypes, + + // Classic + + PropTypes: ReactPropTypes, + createClass: ReactClass.createClass, + createFactory: createFactory, + createMixin: createMixin, + + // This looks DOM specific but these are actually isomorphic helpers + // since they are just generating DOM strings. + DOM: ReactDOMFactories, + + version: ReactVersion +}; + +module.exports = React; + +/***/ }), +/* 34 */ +/***/ (function(module, exports) { + +var g;
+
+// This works in non-strict mode
+g = (function() {
+ return this;
+})();
+
+try {
+ // This works if eval is allowed (see CSP)
+ g = g || Function("return this")() || (1,eval)("this");
+} catch(e) {
+ // This works if the window reference is available
+ if(typeof window === "object")
+ g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+ + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var + + + + + + + + + + +Animation=function(){function Animation(){_classCallCheck(this,Animation);}_createClass(Animation,[{key:'start',value:function start( + + + + +fromValue, +onUpdate, +onEnd, +previousAnimation) +{}},{key:'stop',value:function stop() +{}},{key:'__debouncedOnEnd',value:function __debouncedOnEnd( + +result){ +var onEnd=this.__onEnd; +this.__onEnd=null; +onEnd&&onEnd(result); +}}]);return Animation;}(); + + +module.exports=Animation; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var normalizeColor=__webpack_require__(50); + +var invariant=__webpack_require__(39); + + + + + + + + + + + + +var linear=function linear(t){return t;};var + + + + + +Interpolation=function(){function Interpolation(){_classCallCheck(this,Interpolation);}_createClass(Interpolation,null,[{key:'create',value:function create( +config){ + +if(config.outputRange&&typeof config.outputRange[0]==='string'){ +return createInterpolationFromStringOutputRange(config); +} + +var outputRange=config.outputRange; +checkInfiniteRange('outputRange',outputRange); + +var inputRange=config.inputRange; +checkInfiniteRange('inputRange',inputRange); +checkValidInputRange(inputRange); + +invariant( +inputRange.length===outputRange.length, +'inputRange ('+inputRange.length+') and outputRange ('+ +outputRange.length+') must have the same length'); + + +var easing=config.easing||linear; + +var extrapolateLeft='extend'; +if(config.extrapolateLeft!==undefined){ +extrapolateLeft=config.extrapolateLeft; +}else if(config.extrapolate!==undefined){ +extrapolateLeft=config.extrapolate; +} + +var extrapolateRight='extend'; +if(config.extrapolateRight!==undefined){ +extrapolateRight=config.extrapolateRight; +}else if(config.extrapolate!==undefined){ +extrapolateRight=config.extrapolate; +} + +return function(input){ +invariant( +typeof input==='number', +'Cannot interpolation an input which is not a number'); + + +var range=findRange(input,inputRange); +return interpolate( +input, +inputRange[range], +inputRange[range+1], +outputRange[range], +outputRange[range+1], +easing, +extrapolateLeft, +extrapolateRight); + +}; +}}]);return Interpolation;}(); + + +function interpolate( +input, +inputMin, +inputMax, +outputMin, +outputMax, +easing, +extrapolateLeft, +extrapolateRight) +{ +var result=input; + + +if(result<inputMin){ +if(extrapolateLeft==='identity'){ +return result; +}else if(extrapolateLeft==='clamp'){ +result=inputMin; +}else if(extrapolateLeft==='extend'){ + +} +} + +if(result>inputMax){ +if(extrapolateRight==='identity'){ +return result; +}else if(extrapolateRight==='clamp'){ +result=inputMax; +}else if(extrapolateRight==='extend'){ + +} +} + +if(outputMin===outputMax){ +return outputMin; +} + +if(inputMin===inputMax){ +if(input<=inputMin){ +return outputMin; +} +return outputMax; +} + + +if(inputMin===-Infinity){ +result=-result; +}else if(inputMax===Infinity){ +result=result-inputMin; +}else{ +result=(result-inputMin)/(inputMax-inputMin); +} + + +result=easing(result); + + +if(outputMin===-Infinity){ +result=-result; +}else if(outputMax===Infinity){ +result=result+outputMin; +}else{ +result=result*(outputMax-outputMin)+outputMin; +} + +return result; +} + +function colorToRgba(input){ +var int32Color=normalizeColor(input); +if(int32Color===null){ +return input; +} + +int32Color=int32Color||0; + +var r=(int32Color&0xff000000)>>>24; +var g=(int32Color&0x00ff0000)>>>16; +var b=(int32Color&0x0000ff00)>>>8; +var a=(int32Color&0x000000ff)/255; + +return'rgba('+r+', '+g+', '+b+', '+a+')'; +} + +var stringShapeRegex=/[0-9\.-]+/g; + + + + + + + + + +function createInterpolationFromStringOutputRange( +config) +{ +var outputRange=config.outputRange; +invariant(outputRange.length>=2,'Bad output range'); +outputRange=outputRange.map(colorToRgba); +checkPattern(outputRange); + + + + + + + + + + + + +var outputRanges=outputRange[0].match(stringShapeRegex).map(function(){return[];}); +outputRange.forEach(function(value){ + + + +value.match(stringShapeRegex).forEach(function(number,i){ +outputRanges[i].push(+number); +}); +}); + + + + +var interpolations=outputRange[0].match(stringShapeRegex).map(function(value,i){ +return Interpolation.create(_extends({}, +config,{ +outputRange:outputRanges[i]})); + +}); + + + +var shouldRound=/^rgb/.test(outputRange[0]); + +return function(input){ +var i=0; + + + +return outputRange[0].replace(stringShapeRegex,function(){ +var val=interpolations[i++](input); +return String(shouldRound&&i<4?Math.round(val):val); +}); +}; +} + +function checkPattern(arr){ +var pattern=arr[0].replace(stringShapeRegex,''); +for(var i=1;i<arr.length;++i){ +invariant( +pattern===arr[i].replace(stringShapeRegex,''), +'invalid pattern '+arr[0]+' and '+arr[i]); + +} +} + +function findRange(input,inputRange){ +for(var i=1;i<inputRange.length-1;++i){ +if(inputRange[i]>=input){ +break; +} +} +return i-1; +} + +function checkValidInputRange(arr){ +invariant(arr.length>=2,'inputRange must have at least 2 elements'); +for(var i=1;i<arr.length;++i){ +invariant( +arr[i]>=arr[i-1], + + + + + + +'inputRange must be monotonically increasing '+arr); + +} +} + +function checkInfiniteRange(name,arr){ +invariant(arr.length>=2,name+' must have at least 2 elements'); +invariant( +arr.length!==2||arr[0]!==-Infinity||arr[1]!==Infinity, + + + + + + +name+'cannot be ]-infinity;+infinity[ '+arr); + +} + +module.exports=Interpolation; + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isPrefixedValue; + +var regex = /-webkit-|-moz-|-ms-/; + +function isPrefixedValue(value) { + return typeof value === 'string' && regex.test(value); +} +module.exports = exports['default']; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + */ + + + +var emptyObject = {}; + +if (true) { + Object.freeze(emptyObject); +} + +module.exports = emptyObject; + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2013-2015, 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 invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var invariant = function(condition, format, a, b, c, d, e, f) { + if (true) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } + + if (!condition) { + var error; + if (format === undefined) { + error = new Error( + 'Minified exception occurred; use the non-minified dev environment ' + + 'for the full error message and additional helpful warnings.' + ); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error( + format.replace(/%s/g, function() { return args[argIndex++]; }) + ); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; + +module.exports = invariant; + + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var ReactErrorUtils = __webpack_require__(72); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +/** + * Injected dependencies: + */ + +/** + * - `ComponentTree`: [required] Module that can convert between React instances + * and actual node references. + */ +var ComponentTree; +var TreeTraversal; +var injection = { + injectComponentTree: function (Injected) { + ComponentTree = Injected; + if (true) { + true ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0; + } + }, + injectTreeTraversal: function (Injected) { + TreeTraversal = Injected; + if (true) { + true ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0; + } + } +}; + +function isEndish(topLevelType) { + return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel'; +} + +function isMoveish(topLevelType) { + return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove'; +} +function isStartish(topLevelType) { + return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart'; +} + +var validateEventDispatches; +if (true) { + validateEventDispatches = function (event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + + var listenersIsArr = Array.isArray(dispatchListeners); + var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0; + + var instancesIsArr = Array.isArray(dispatchInstances); + var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0; + + true ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0; + }; +} + +/** + * Dispatch the event to the listener. + * @param {SyntheticEvent} event SyntheticEvent to handle + * @param {boolean} simulated If the event is simulated (changes exn behavior) + * @param {function} listener Application-level callback + * @param {*} inst Internal component instance + */ +function executeDispatch(event, simulated, listener, inst) { + var type = event.type || 'unknown-event'; + event.currentTarget = EventPluginUtils.getNodeFromInstance(inst); + if (simulated) { + ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event); + } else { + ReactErrorUtils.invokeGuardedCallback(type, listener, event); + } + event.currentTarget = null; +} + +/** + * Standard/simple iteration through an event's collected dispatches. + */ +function executeDispatchesInOrder(event, simulated) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + if (true) { + validateEventDispatches(event); + } + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + // Listeners and Instances are two parallel arrays that are always in sync. + executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]); + } + } else if (dispatchListeners) { + executeDispatch(event, simulated, dispatchListeners, dispatchInstances); + } + event._dispatchListeners = null; + event._dispatchInstances = null; +} + +/** + * Standard/simple iteration through an event's collected dispatches, but stops + * at the first dispatch execution returning true, and returns that id. + * + * @return {?string} id of the first dispatch execution who's listener returns + * true, or null if no listener returned true. + */ +function executeDispatchesInOrderStopAtTrueImpl(event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + if (true) { + validateEventDispatches(event); + } + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + // Listeners and Instances are two parallel arrays that are always in sync. + if (dispatchListeners[i](event, dispatchInstances[i])) { + return dispatchInstances[i]; + } + } + } else if (dispatchListeners) { + if (dispatchListeners(event, dispatchInstances)) { + return dispatchInstances; + } + } + return null; +} + +/** + * @see executeDispatchesInOrderStopAtTrueImpl + */ +function executeDispatchesInOrderStopAtTrue(event) { + var ret = executeDispatchesInOrderStopAtTrueImpl(event); + event._dispatchInstances = null; + event._dispatchListeners = null; + return ret; +} + +/** + * Execution of a "direct" dispatch - there must be at most one dispatch + * accumulated on the event or it is considered an error. It doesn't really make + * sense for an event with multiple dispatches (bubbled) to keep track of the + * return values at each dispatch execution, but it does tend to make sense when + * dealing with "direct" dispatches. + * + * @return {*} The return value of executing the single dispatch. + */ +function executeDirectDispatch(event) { + if (true) { + validateEventDispatches(event); + } + var dispatchListener = event._dispatchListeners; + var dispatchInstance = event._dispatchInstances; + !!Array.isArray(dispatchListener) ? true ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0; + event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null; + var res = dispatchListener ? dispatchListener(event) : null; + event.currentTarget = null; + event._dispatchListeners = null; + event._dispatchInstances = null; + return res; +} + +/** + * @param {SyntheticEvent} event + * @return {boolean} True iff number of dispatches accumulated is greater than 0. + */ +function hasDispatches(event) { + return !!event._dispatchListeners; +} + +/** + * General utilities that are useful in creating custom Event Plugins. + */ +var EventPluginUtils = { + isEndish: isEndish, + isMoveish: isMoveish, + isStartish: isStartish, + + executeDirectDispatch: executeDirectDispatch, + executeDispatchesInOrder: executeDispatchesInOrder, + executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue, + hasDispatches: hasDispatches, + + getInstanceFromNode: function (node) { + return ComponentTree.getInstanceFromNode(node); + }, + getNodeFromInstance: function (node) { + return ComponentTree.getNodeFromInstance(node); + }, + isAncestor: function (a, b) { + return TreeTraversal.isAncestor(a, b); + }, + getLowestCommonAncestor: function (a, b) { + return TreeTraversal.getLowestCommonAncestor(a, b); + }, + getParentInstance: function (inst) { + return TreeTraversal.getParentInstance(inst); + }, + traverseTwoPhase: function (target, fn, arg) { + return TreeTraversal.traverseTwoPhase(target, fn, arg); + }, + traverseEnterLeave: function (from, to, fn, argFrom, argTo) { + return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo); + }, + + injection: injection +}; + +module.exports = EventPluginUtils; + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * `ReactInstanceMap` maintains a mapping from a public facing stateful + * instance (key) and the internal representation (value). This allows public + * methods to accept the user facing instance as an argument and map them back + * to internal methods. + */ + +// TODO: Replace this with ES6: var ReactInstanceMap = new Map(); + +var ReactInstanceMap = { + + /** + * This API should be called `delete` but we'd have to make sure to always + * transform these to strings for IE support. When this transform is fully + * supported we can rename it. + */ + remove: function (key) { + key._reactInternalInstance = undefined; + }, + + get: function (key) { + return key._reactInternalInstance; + }, + + has: function (key) { + return key._reactInternalInstance !== undefined; + }, + + set: function (key, value) { + key._reactInternalInstance = value; + } + +}; + +module.exports = ReactInstanceMap; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticEvent = __webpack_require__(15); + +var getEventTarget = __webpack_require__(77); + +/** + * @interface UIEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var UIEventInterface = { + view: function (event) { + if (event.view) { + return event.view; + } + + var target = getEventTarget(event); + if (target.window === target) { + // target is a window object + return target; + } + + var doc = target.ownerDocument; + // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. + if (doc) { + return doc.defaultView || doc.parentWindow; + } else { + return window; + } + }, + detail: function (event) { + return event.detail || 0; + } +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticEvent} + */ +function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface); + +module.exports = SyntheticUIEvent; + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +var _unitlessNumbers=__webpack_require__(150);var _unitlessNumbers2=_interopRequireDefault(_unitlessNumbers);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var normalizeValue=function normalizeValue(property,value){ +if(!_unitlessNumbers2.default[property]&&typeof value==='number'){ +value=value+'px'; +} +return value; +}; + +module.exports=normalizeValue; + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _AnimationPropTypes=__webpack_require__(347);var _AnimationPropTypes2=_interopRequireDefault(_AnimationPropTypes); +var _BorderPropTypes=__webpack_require__(152);var _BorderPropTypes2=_interopRequireDefault(_BorderPropTypes); +var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _LayoutPropTypes=__webpack_require__(153);var _LayoutPropTypes2=_interopRequireDefault(_LayoutPropTypes); +var _ShadowPropTypes=__webpack_require__(154);var _ShadowPropTypes2=_interopRequireDefault(_ShadowPropTypes); +var _TransformPropTypes=__webpack_require__(155);var _TransformPropTypes2=_interopRequireDefault(_TransformPropTypes); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +module.exports=_extends({},_AnimationPropTypes2.default,_BorderPropTypes2.default,_LayoutPropTypes2.default,_ShadowPropTypes2.default,_TransformPropTypes2.default,{ + + + + + +backgroundColor:_ColorPropType2.default, +opacity:_propTypes.number, + + + +elevation:_propTypes.number, + + + +backgroundAttachment:_propTypes.string, +backgroundClip:_propTypes.string, +backgroundImage:_propTypes.string, +backgroundOrigin:(0,_propTypes.oneOf)(['border-box','content-box','padding-box']), +backgroundPosition:_propTypes.string, +backgroundRepeat:_propTypes.string, +backgroundSize:_propTypes.string, +boxShadow:_propTypes.string, +clip:_propTypes.string, +cursor:_propTypes.string, +filter:_propTypes.string, +outline:_propTypes.string, +outlineColor:_ColorPropType2.default, +perspective:(0,_propTypes.oneOfType)([_propTypes.number,_propTypes.string]), +perspectiveOrigin:_propTypes.string, +transitionDelay:_propTypes.string, +transitionDuration:_propTypes.string, +transitionProperty:_propTypes.string, +transitionTimingFunction:_propTypes.string, +userSelect:_propTypes.string, +willChange:_propTypes.string, +WebkitMaskImage:_propTypes.string, +WebkitOverflowScrolling:(0,_propTypes.oneOf)(['auto','touch'])}); + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +Object.defineProperty(exports,"__esModule",{value:true});var _reactDom=__webpack_require__(51);exports.default=_reactDom.findDOMNode; + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedWithChildren=__webpack_require__(18); +var invariant=__webpack_require__(39); +var Interpolation=__webpack_require__(36); +var guid=__webpack_require__(62);var + + + +AnimatedInterpolation=function(_AnimatedWithChildren){_inherits(AnimatedInterpolation,_AnimatedWithChildren); + + + + + +function AnimatedInterpolation(parent,interpolation){_classCallCheck(this,AnimatedInterpolation);var _this=_possibleConstructorReturn(this,(AnimatedInterpolation.__proto__||Object.getPrototypeOf(AnimatedInterpolation)).call(this)); + +_this._parent=parent; +_this._interpolation=interpolation; +_this._listeners={};return _this; +}_createClass(AnimatedInterpolation,[{key:'__getValue',value:function __getValue() + +{ +var parentValue=this._parent.__getValue(); +invariant( +typeof parentValue==='number', +'Cannot interpolate an input which is not a number.'); + +return this._interpolation(parentValue); +}},{key:'addListener',value:function addListener( + +callback){var _this2=this; +if(!this._parentListener){ +this._parentListener=this._parent.addListener(function(){ +for(var key in _this2._listeners){ +_this2._listeners[key]({value:_this2.__getValue()}); +} +}); +} +var id=guid(); +this._listeners[id]=callback; +return id; +}},{key:'removeListener',value:function removeListener( + +id){ +delete this._listeners[id]; +}},{key:'interpolate',value:function interpolate( + +config){ +return new AnimatedInterpolation(this,Interpolation.create(config)); +}},{key:'__attach',value:function __attach() + +{ +this._parent.__addChild(this); +}},{key:'__detach',value:function __detach() + +{ +this._parent.__removeChild(this); +this._parentListener=this._parent.removeListener(this._parentListener); +}}]);return AnimatedInterpolation;}(AnimatedWithChildren); + + +module.exports=AnimatedInterpolation; + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + + + + + + + + + + + +var CancelAnimationFrame={ +current:function current(id){return global.cancelAnimationFrame(id);}, +inject:function inject(injected){ +CancelAnimationFrame.current=injected; +}}; + + +module.exports=CancelAnimationFrame; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34))) + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + + + + + + + + + + + +var RequestAnimationFrame={ +current:function current(cb){return global.requestAnimationFrame(cb);}, +inject:function inject(injected){ +RequestAnimationFrame.current=injected; +}}; + + +module.exports=RequestAnimationFrame; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34))) + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var React = __webpack_require__(5); +var factory = __webpack_require__(184); + +// Hack to grab NoopUpdateQueue from isomorphic React +var ReactNoopUpdateQueue = new React.Component().updater; + +module.exports = factory( + React.Component, + React.isValidElement, + ReactNoopUpdateQueue +); + + +/***/ }), +/* 50 */ +/***/ (function(module, exports) { + +/* + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +function normalizeColor(color) { + var match; + + if (typeof color === 'number') { + if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) { + return color; + } + return null; + } + + // Ordered based on occurrences on Facebook codebase + if ((match = matchers.hex6.exec(color))) { + return parseInt(match[1] + 'ff', 16) >>> 0; + } + + if (names.hasOwnProperty(color)) { + return names[color]; + } + + if ((match = matchers.rgb.exec(color))) { + return ( + parse255(match[1]) << 24 | // r + parse255(match[2]) << 16 | // g + parse255(match[3]) << 8 | // b + 0x000000ff // a + ) >>> 0; + } + + if ((match = matchers.rgba.exec(color))) { + return ( + parse255(match[1]) << 24 | // r + parse255(match[2]) << 16 | // g + parse255(match[3]) << 8 | // b + parse1(match[4]) // a + ) >>> 0; + } + + if ((match = matchers.hex3.exec(color))) { + return parseInt( + match[1] + match[1] + // r + match[2] + match[2] + // g + match[3] + match[3] + // b + 'ff', // a + 16 + ) >>> 0; + } + + // https://drafts.csswg.org/css-color-4/#hex-notation + if ((match = matchers.hex8.exec(color))) { + return parseInt(match[1], 16) >>> 0; + } + + if ((match = matchers.hex4.exec(color))) { + return parseInt( + match[1] + match[1] + // r + match[2] + match[2] + // g + match[3] + match[3] + // b + match[4] + match[4], // a + 16 + ) >>> 0; + } + + if ((match = matchers.hsl.exec(color))) { + return ( + hslToRgb( + parse360(match[1]), // h + parsePercentage(match[2]), // s + parsePercentage(match[3]) // l + ) | + 0x000000ff // a + ) >>> 0; + } + + if ((match = matchers.hsla.exec(color))) { + return ( + hslToRgb( + parse360(match[1]), // h + parsePercentage(match[2]), // s + parsePercentage(match[3]) // l + ) | + parse1(match[4]) // a + ) >>> 0; + } + + return null; +} + +function hue2rgb(p, q, t) { + if (t < 0) { + t += 1; + } + if (t > 1) { + t -= 1; + } + if (t < 1 / 6) { + return p + (q - p) * 6 * t; + } + if (t < 1 / 2) { + return q; + } + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6; + } + return p; +} + +function hslToRgb(h, s, l) { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + var r = hue2rgb(p, q, h + 1 / 3); + var g = hue2rgb(p, q, h); + var b = hue2rgb(p, q, h - 1 / 3); + + return ( + Math.round(r * 255) << 24 | + Math.round(g * 255) << 16 | + Math.round(b * 255) << 8 + ); +} + +// var INTEGER = '[-+]?\\d+'; +var NUMBER = '[-+]?\\d*\\.?\\d+'; +var PERCENTAGE = NUMBER + '%'; + +function toArray(arrayLike) { + return Array.prototype.slice.call(arrayLike, 0); +} + +function call() { + return '\\(\\s*(' + toArray(arguments).join(')\\s*,\\s*(') + ')\\s*\\)'; +} + +var matchers = { + rgb: new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER)), + rgba: new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)), + hsl: new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)), + hsla: new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)), + hex3: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex4: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#([0-9a-fA-F]{6})$/, + hex8: /^#([0-9a-fA-F]{8})$/, +}; + +function parse255(str) { + var int = parseInt(str, 10); + if (int < 0) { + return 0; + } + if (int > 255) { + return 255; + } + return int; +} + +function parse360(str) { + var int = parseFloat(str); + return (((int % 360) + 360) % 360) / 360; +} + +function parse1(str) { + var num = parseFloat(str); + if (num < 0) { + return 0; + } + if (num > 1) { + return 255; + } + return Math.round(num * 255); +} + +function parsePercentage(str) { + // parseFloat conveniently ignores the final % + var int = parseFloat(str, 10); + if (int < 0) { + return 0; + } + if (int > 100) { + return 1; + } + return int / 100; +} + +var names = { + transparent: 0x00000000, + + // http://www.w3.org/TR/css3-color/#svg-color + aliceblue: 0xf0f8ffff, + antiquewhite: 0xfaebd7ff, + aqua: 0x00ffffff, + aquamarine: 0x7fffd4ff, + azure: 0xf0ffffff, + beige: 0xf5f5dcff, + bisque: 0xffe4c4ff, + black: 0x000000ff, + blanchedalmond: 0xffebcdff, + blue: 0x0000ffff, + blueviolet: 0x8a2be2ff, + brown: 0xa52a2aff, + burlywood: 0xdeb887ff, + burntsienna: 0xea7e5dff, + cadetblue: 0x5f9ea0ff, + chartreuse: 0x7fff00ff, + chocolate: 0xd2691eff, + coral: 0xff7f50ff, + cornflowerblue: 0x6495edff, + cornsilk: 0xfff8dcff, + crimson: 0xdc143cff, + cyan: 0x00ffffff, + darkblue: 0x00008bff, + darkcyan: 0x008b8bff, + darkgoldenrod: 0xb8860bff, + darkgray: 0xa9a9a9ff, + darkgreen: 0x006400ff, + darkgrey: 0xa9a9a9ff, + darkkhaki: 0xbdb76bff, + darkmagenta: 0x8b008bff, + darkolivegreen: 0x556b2fff, + darkorange: 0xff8c00ff, + darkorchid: 0x9932ccff, + darkred: 0x8b0000ff, + darksalmon: 0xe9967aff, + darkseagreen: 0x8fbc8fff, + darkslateblue: 0x483d8bff, + darkslategray: 0x2f4f4fff, + darkslategrey: 0x2f4f4fff, + darkturquoise: 0x00ced1ff, + darkviolet: 0x9400d3ff, + deeppink: 0xff1493ff, + deepskyblue: 0x00bfffff, + dimgray: 0x696969ff, + dimgrey: 0x696969ff, + dodgerblue: 0x1e90ffff, + firebrick: 0xb22222ff, + floralwhite: 0xfffaf0ff, + forestgreen: 0x228b22ff, + fuchsia: 0xff00ffff, + gainsboro: 0xdcdcdcff, + ghostwhite: 0xf8f8ffff, + gold: 0xffd700ff, + goldenrod: 0xdaa520ff, + gray: 0x808080ff, + green: 0x008000ff, + greenyellow: 0xadff2fff, + grey: 0x808080ff, + honeydew: 0xf0fff0ff, + hotpink: 0xff69b4ff, + indianred: 0xcd5c5cff, + indigo: 0x4b0082ff, + ivory: 0xfffff0ff, + khaki: 0xf0e68cff, + lavender: 0xe6e6faff, + lavenderblush: 0xfff0f5ff, + lawngreen: 0x7cfc00ff, + lemonchiffon: 0xfffacdff, + lightblue: 0xadd8e6ff, + lightcoral: 0xf08080ff, + lightcyan: 0xe0ffffff, + lightgoldenrodyellow: 0xfafad2ff, + lightgray: 0xd3d3d3ff, + lightgreen: 0x90ee90ff, + lightgrey: 0xd3d3d3ff, + lightpink: 0xffb6c1ff, + lightsalmon: 0xffa07aff, + lightseagreen: 0x20b2aaff, + lightskyblue: 0x87cefaff, + lightslategray: 0x778899ff, + lightslategrey: 0x778899ff, + lightsteelblue: 0xb0c4deff, + lightyellow: 0xffffe0ff, + lime: 0x00ff00ff, + limegreen: 0x32cd32ff, + linen: 0xfaf0e6ff, + magenta: 0xff00ffff, + maroon: 0x800000ff, + mediumaquamarine: 0x66cdaaff, + mediumblue: 0x0000cdff, + mediumorchid: 0xba55d3ff, + mediumpurple: 0x9370dbff, + mediumseagreen: 0x3cb371ff, + mediumslateblue: 0x7b68eeff, + mediumspringgreen: 0x00fa9aff, + mediumturquoise: 0x48d1ccff, + mediumvioletred: 0xc71585ff, + midnightblue: 0x191970ff, + mintcream: 0xf5fffaff, + mistyrose: 0xffe4e1ff, + moccasin: 0xffe4b5ff, + navajowhite: 0xffdeadff, + navy: 0x000080ff, + oldlace: 0xfdf5e6ff, + olive: 0x808000ff, + olivedrab: 0x6b8e23ff, + orange: 0xffa500ff, + orangered: 0xff4500ff, + orchid: 0xda70d6ff, + palegoldenrod: 0xeee8aaff, + palegreen: 0x98fb98ff, + paleturquoise: 0xafeeeeff, + palevioletred: 0xdb7093ff, + papayawhip: 0xffefd5ff, + peachpuff: 0xffdab9ff, + peru: 0xcd853fff, + pink: 0xffc0cbff, + plum: 0xdda0ddff, + powderblue: 0xb0e0e6ff, + purple: 0x800080ff, + rebeccapurple: 0x663399ff, + red: 0xff0000ff, + rosybrown: 0xbc8f8fff, + royalblue: 0x4169e1ff, + saddlebrown: 0x8b4513ff, + salmon: 0xfa8072ff, + sandybrown: 0xf4a460ff, + seagreen: 0x2e8b57ff, + seashell: 0xfff5eeff, + sienna: 0xa0522dff, + silver: 0xc0c0c0ff, + skyblue: 0x87ceebff, + slateblue: 0x6a5acdff, + slategray: 0x708090ff, + slategrey: 0x708090ff, + snow: 0xfffafaff, + springgreen: 0x00ff7fff, + steelblue: 0x4682b4ff, + tan: 0xd2b48cff, + teal: 0x008080ff, + thistle: 0xd8bfd8ff, + tomato: 0xff6347ff, + turquoise: 0x40e0d0ff, + violet: 0xee82eeff, + wheat: 0xf5deb3ff, + white: 0xffffffff, + whitesmoke: 0xf5f5f5ff, + yellow: 0xffff00ff, + yellowgreen: 0x9acd32ff, +}; + +function rgba(colorInt) { + var r = Math.round(((colorInt & 0xff000000) >>> 24)); + var g = Math.round(((colorInt & 0x00ff0000) >>> 16)); + var b = Math.round(((colorInt & 0x0000ff00) >>> 8)); + var a = ((colorInt & 0x000000ff) >>> 0) / 255; + return { + r: r, + g: g, + b: b, + a: a, + }; +}; + +normalizeColor.rgba = rgba; + +module.exports = normalizeColor; + + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = __webpack_require__(234); + + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +/** + * Injectable ordering of event plugins. + */ +var eventPluginOrder = null; + +/** + * Injectable mapping from names to event plugin modules. + */ +var namesToPlugins = {}; + +/** + * Recomputes the plugin list using the injected plugins and plugin ordering. + * + * @private + */ +function recomputePluginOrdering() { + if (!eventPluginOrder) { + // Wait until an `eventPluginOrder` is injected. + return; + } + for (var pluginName in namesToPlugins) { + var pluginModule = namesToPlugins[pluginName]; + var pluginIndex = eventPluginOrder.indexOf(pluginName); + !(pluginIndex > -1) ? true ? 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 ? true ? 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) ? true ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0; + } + } +} + +/** + * Publishes an event so that it can be dispatched by the supplied plugin. + * + * @param {object} dispatchConfig Dispatch configuration for the event. + * @param {object} PluginModule Plugin publishing the event. + * @return {boolean} True if the event was successfully published. + * @private + */ +function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { + !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? true ? 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; + + var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; + if (phasedRegistrationNames) { + for (var phaseName in phasedRegistrationNames) { + if (phasedRegistrationNames.hasOwnProperty(phaseName)) { + var phasedRegistrationName = phasedRegistrationNames[phaseName]; + publishRegistrationName(phasedRegistrationName, pluginModule, eventName); + } + } + return true; + } else if (dispatchConfig.registrationName) { + publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName); + return true; + } + return false; +} + +/** + * Publishes a registration name that is used to identify dispatched events and + * can be used with `EventPluginHub.putListener` to register listeners. + * + * @param {string} registrationName Registration name to add. + * @param {object} PluginModule Plugin publishing the event. + * @private + */ +function publishRegistrationName(registrationName, pluginModule, eventName) { + !!EventPluginRegistry.registrationNameModules[registrationName] ? true ? 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; + + if (true) { + var lowerCasedName = registrationName.toLowerCase(); + EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName; + + if (registrationName === 'onDoubleClick') { + EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName; + } + } +} + +/** + * Registers plugins so that they can extract and dispatch events. + * + * @see {EventPluginHub} + */ +var EventPluginRegistry = { + + /** + * Ordered list of injected plugins. + */ + plugins: [], + + /** + * Mapping from event name to dispatch config + */ + eventNameDispatchConfigs: {}, + + /** + * Mapping from registration name to plugin module + */ + registrationNameModules: {}, + + /** + * Mapping from registration name to event name + */ + registrationNameDependencies: {}, + + /** + * Mapping from lowercase registration names to the properly cased version, + * used to warn in the case of missing event handlers. Available + * only in __DEV__. + * @type {Object} + */ + possibleRegistrationNames: true ? {} : null, + // Trust the developer to only use possibleRegistrationNames in __DEV__ + + /** + * Injects an ordering of plugins (by plugin name). This allows the ordering + * to be decoupled from injection of the actual plugins so that ordering is + * always deterministic regardless of packaging, on-the-fly injection, etc. + * + * @param {array} InjectedEventPluginOrder + * @internal + * @see {EventPluginHub.injection.injectEventPluginOrder} + */ + injectEventPluginOrder: function (injectedEventPluginOrder) { + !!eventPluginOrder ? true ? 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); + recomputePluginOrdering(); + }, + + /** + * Injects plugins to be used by `EventPluginHub`. The plugin names must be + * in the ordering injected by `injectEventPluginOrder`. + * + * Plugins can be injected as part of page initialization or on-the-fly. + * + * @param {object} injectedNamesToPlugins Map from names to plugin modules. + * @internal + * @see {EventPluginHub.injection.injectEventPluginsByName} + */ + injectEventPluginsByName: function (injectedNamesToPlugins) { + var isOrderingDirty = false; + for (var pluginName in injectedNamesToPlugins) { + if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { + continue; + } + var pluginModule = injectedNamesToPlugins[pluginName]; + if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) { + !!namesToPlugins[pluginName] ? true ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0; + namesToPlugins[pluginName] = pluginModule; + isOrderingDirty = true; + } + } + if (isOrderingDirty) { + recomputePluginOrdering(); + } + }, + + /** + * Looks up the plugin for the supplied event. + * + * @param {object} event A synthetic event. + * @return {?object} The plugin that created the supplied event. + * @internal + */ + getPluginModuleForEvent: function (event) { + var dispatchConfig = event.dispatchConfig; + if (dispatchConfig.registrationName) { + return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null; + } + 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; + }, + + /** + * Exposed for unit testing. + * @private + */ + _resetEventPlugins: function () { + eventPluginOrder = null; + for (var pluginName in namesToPlugins) { + if (namesToPlugins.hasOwnProperty(pluginName)) { + delete namesToPlugins[pluginName]; + } + } + EventPluginRegistry.plugins.length = 0; + + var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs; + for (var eventName in eventNameDispatchConfigs) { + if (eventNameDispatchConfigs.hasOwnProperty(eventName)) { + delete eventNameDispatchConfigs[eventName]; + } + } + + var registrationNameModules = EventPluginRegistry.registrationNameModules; + for (var registrationName in registrationNameModules) { + if (registrationNameModules.hasOwnProperty(registrationName)) { + delete registrationNameModules[registrationName]; + } + } + + if (true) { + var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames; + for (var lowerCasedName in possibleRegistrationNames) { + if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) { + delete possibleRegistrationNames[lowerCasedName]; + } + } + } + } + +}; + +module.exports = EventPluginRegistry; + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var EventPluginRegistry = __webpack_require__(52); +var ReactEventEmitterMixin = __webpack_require__(253); +var ViewportMetrics = __webpack_require__(128); + +var getVendorPrefixedEventName = __webpack_require__(291); +var isEventSupported = __webpack_require__(78); + +/** + * Summary of `ReactBrowserEventEmitter` event handling: + * + * - Top-level delegation is used to trap most native browser events. This + * may only occur in the main thread and is the responsibility of + * ReactEventListener, which is injected and can therefore support pluggable + * event sources. This is the only work that occurs in the main thread. + * + * - We normalize and de-duplicate events to account for browser quirks. This + * may be done in the worker thread. + * + * - Forward these native events (with the associated top-level type used to + * trap it) to `EventPluginHub`, which in turn will ask plugins if they want + * to extract any synthetic events. + * + * - The `EventPluginHub` will then process each event by annotating them with + * "dispatches", a sequence of listeners and IDs that care about that event. + * + * - The `EventPluginHub` then dispatches the events. + * + * Overview of React and the event system: + * + * +------------+ . + * | DOM | . + * +------------+ . + * | . + * v . + * +------------+ . + * | ReactEvent | . + * | Listener | . + * +------------+ . +-----------+ + * | . +--------+|SimpleEvent| + * | . | |Plugin | + * +-----|------+ . v +-----------+ + * | | | . +--------------+ +------------+ + * | +-----------.--->|EventPluginHub| | Event | + * | | . | | +-----------+ | Propagators| + * | ReactEvent | . | | |TapEvent | |------------| + * | Emitter | . | |<---+|Plugin | |other plugin| + * | | . | | +-----------+ | utilities | + * | +-----------.--->| | +------------+ + * | | | . +--------------+ + * +-----|------+ . ^ +-----------+ + * | . | |Enter/Leave| + * + . +-------+|Plugin | + * +-------------+ . +-----------+ + * | application | . + * |-------------| . + * | | . + * | | . + * +-------------+ . + * . + * React Core . General Purpose Event Plugin System + */ + +var hasEventPageXY; +var alreadyListeningTo = {}; +var isMonitoringScrollValue = false; +var reactTopListenersCounter = 0; + +// For events like 'submit' which don't consistently bubble (which we trap at a +// lower node than `document`), binding at `document` would cause duplicate +// events so we don't include them here +var topEventMapping = { + topAbort: 'abort', + topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend', + topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration', + topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart', + topBlur: 'blur', + topCanPlay: 'canplay', + topCanPlayThrough: 'canplaythrough', + topChange: 'change', + topClick: 'click', + topCompositionEnd: 'compositionend', + topCompositionStart: 'compositionstart', + topCompositionUpdate: 'compositionupdate', + topContextMenu: 'contextmenu', + topCopy: 'copy', + topCut: 'cut', + topDoubleClick: 'dblclick', + topDrag: 'drag', + topDragEnd: 'dragend', + topDragEnter: 'dragenter', + topDragExit: 'dragexit', + topDragLeave: 'dragleave', + topDragOver: 'dragover', + topDragStart: 'dragstart', + topDrop: 'drop', + topDurationChange: 'durationchange', + topEmptied: 'emptied', + topEncrypted: 'encrypted', + topEnded: 'ended', + topError: 'error', + topFocus: 'focus', + topInput: 'input', + topKeyDown: 'keydown', + topKeyPress: 'keypress', + topKeyUp: 'keyup', + topLoadedData: 'loadeddata', + topLoadedMetadata: 'loadedmetadata', + topLoadStart: 'loadstart', + topMouseDown: 'mousedown', + topMouseMove: 'mousemove', + topMouseOut: 'mouseout', + topMouseOver: 'mouseover', + topMouseUp: 'mouseup', + topPaste: 'paste', + topPause: 'pause', + topPlay: 'play', + topPlaying: 'playing', + topProgress: 'progress', + topRateChange: 'ratechange', + topScroll: 'scroll', + topSeeked: 'seeked', + topSeeking: 'seeking', + topSelectionChange: 'selectionchange', + topStalled: 'stalled', + topSuspend: 'suspend', + topTextInput: 'textInput', + topTimeUpdate: 'timeupdate', + topTouchCancel: 'touchcancel', + topTouchEnd: 'touchend', + topTouchMove: 'touchmove', + topTouchStart: 'touchstart', + topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend', + topVolumeChange: 'volumechange', + topWaiting: 'waiting', + topWheel: 'wheel' +}; + +/** + * To ensure no conflicts with other potential React instances on the page + */ +var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2); + +function getListeningForDocument(mountAt) { + // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty` + // directly. + if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) { + mountAt[topListenersIDKey] = reactTopListenersCounter++; + alreadyListeningTo[mountAt[topListenersIDKey]] = {}; + } + return alreadyListeningTo[mountAt[topListenersIDKey]]; +} + +/** + * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For + * example: + * + * EventPluginHub.putListener('myID', 'onClick', myFunction); + * + * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'. + * + * @internal + */ +var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, { + + /** + * Injectable event backend + */ + ReactEventListener: null, + + injection: { + /** + * @param {object} ReactEventListener + */ + injectReactEventListener: function (ReactEventListener) { + ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel); + ReactBrowserEventEmitter.ReactEventListener = ReactEventListener; + } + }, + + /** + * Sets whether or not any created callbacks should be enabled. + * + * @param {boolean} enabled True if callbacks should be enabled. + */ + setEnabled: function (enabled) { + if (ReactBrowserEventEmitter.ReactEventListener) { + ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled); + } + }, + + /** + * @return {boolean} True if callbacks are enabled. + */ + isEnabled: function () { + return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled()); + }, + + /** + * We listen for bubbled touch events on the document object. + * + * Firefox v8.01 (and possibly others) exhibited strange behavior when + * mounting `onmousemove` events at some node that was not the document + * element. The symptoms were that if your mouse is not moving over something + * contained within that mount point (for example on the background) the + * top-level listeners for `onmousemove` won't be called. However, if you + * register the `mousemove` on the document object, then it will of course + * catch all `mousemove`s. This along with iOS quirks, justifies restricting + * top-level listeners to the document object only, at least for these + * movement types of events and possibly all events. + * + * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html + * + * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but + * they bubble to document. + * + * @param {string} registrationName Name of listener (e.g. `onClick`). + * @param {object} contentDocumentHandle Document which owns the container + */ + listenTo: function (registrationName, contentDocumentHandle) { + var mountAt = contentDocumentHandle; + var isListening = getListeningForDocument(mountAt); + var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName]; + + for (var i = 0; i < dependencies.length; i++) { + var dependency = dependencies[i]; + if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) { + if (dependency === 'topWheel') { + if (isEventSupported('wheel')) { + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt); + } else if (isEventSupported('mousewheel')) { + 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('topWheel', 'DOMMouseScroll', mountAt); + } + } else if (dependency === 'topScroll') { + + if (isEventSupported('scroll', true)) { + ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt); + } else { + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE); + } + } else if (dependency === 'topFocus' || dependency === 'topBlur') { + + if (isEventSupported('focus', true)) { + 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('topFocus', 'focusin', mountAt); + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt); + } + + // to make sure blur and focus event listeners are only attached once + isListening.topBlur = true; + isListening.topFocus = true; + } else if (topEventMapping.hasOwnProperty(dependency)) { + ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt); + } + + isListening[dependency] = true; + } + } + }, + + trapBubbledEvent: function (topLevelType, handlerBaseName, handle) { + return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle); + }, + + trapCapturedEvent: function (topLevelType, handlerBaseName, handle) { + return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle); + }, + + /** + * Protect against document.createEvent() returning null + * Some popup blocker extensions appear to do this: + * https://github.com/facebook/react/issues/6887 + */ + supportsEventPageXY: function () { + if (!document.createEvent) { + return false; + } + var ev = document.createEvent('MouseEvent'); + return ev != null && 'pageX' in ev; + }, + + /** + * Listens to window scroll and resize events. We cache scroll values so that + * application code can access them without triggering reflows. + * + * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when + * pageX/pageY isn't supported (legacy browsers). + * + * NOTE: Scroll events do not bubble. + * + * @see http://www.quirksmode.org/dom/events/scroll.html + */ + ensureScrollValueMonitoring: function () { + if (hasEventPageXY === undefined) { + hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY(); + } + if (!hasEventPageXY && !isMonitoringScrollValue) { + var refresh = ViewportMetrics.refreshScrollValues; + ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh); + isMonitoringScrollValue = true; + } + } + +}); + +module.exports = ReactBrowserEventEmitter; + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticUIEvent = __webpack_require__(42); +var ViewportMetrics = __webpack_require__(128); + +var getEventModifierState = __webpack_require__(76); + +/** + * @interface MouseEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var MouseEventInterface = { + screenX: null, + screenY: null, + clientX: null, + clientY: null, + ctrlKey: null, + shiftKey: null, + altKey: null, + metaKey: null, + getModifierState: getEventModifierState, + button: function (event) { + // Webkit, Firefox, IE9+ + // which: 1 2 3 + // button: 0 1 2 (standard) + var button = event.button; + if ('which' in event) { + return button; + } + // IE<9 + // which: undefined + // button: 0 0 0 + // button: 1 4 2 (onmouseup) + return button === 2 ? 2 : button === 4 ? 1 : 0; + }, + buttons: null, + relatedTarget: function (event) { + return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement); + }, + // "Proprietary" Interface. + pageX: function (event) { + return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft; + }, + pageY: function (event) { + return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop; + } +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface); + +module.exports = SyntheticMouseEvent; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +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 + * (Even if an exception is thrown while invoking the wrapped method). Whoever + * instantiates a transaction can provide enforcers of the invariants at + * creation time. The `Transaction` class itself will supply one additional + * automatic invariant for you - the invariant that any transaction instance + * should not be run while it is already being run. You would typically create a + * single instance of a `Transaction` for reuse multiple times, that potentially + * is used to wrap several different methods. Wrappers are extremely simple - + * they only require implementing two methods. + * + * <pre> + * wrappers (injected at creation time) + * + + + * | | + * +-----------------|--------|--------------+ + * | v | | + * | +---------------+ | | + * | +--| wrapper1 |---|----+ | + * | | +---------------+ v | | + * | | +-------------+ | | + * | | +----| wrapper2 |--------+ | + * | | | +-------------+ | | | + * | | | | | | + * | v v v v | wrapper + * | +---+ +---+ +---------+ +---+ +---+ | invariants + * perform(anyMethod) | | | | | | | | | | | | maintained + * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|--------> + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * | +---+ +---+ +---------+ +---+ +---+ | + * | initialize close | + * +-----------------------------------------+ + * </pre> + * + * Use cases: + * - Preserving the input selection ranges before/after reconciliation. + * Restoring selection even in the event of an unexpected error. + * - Deactivating events while rearranging the DOM, preventing blurs/focuses, + * while guaranteeing that afterwards, the event system is reactivated. + * - Flushing a queue of collected DOM mutations to the main UI thread after a + * reconciliation takes place in a worker thread. + * - Invoking any collected `componentDidUpdate` callbacks after rendering new + * content. + * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue + * to preserve the `scrollTop` (an automatic scroll aware DOM). + * - (Future use case): Layout calculations before and after DOM updates. + * + * Transactional plugin API: + * - A module that has an `initialize` method that returns any precomputation. + * - and a `close` method that accepts the precomputation. `close` is invoked + * when the wrapped process is completed, or has failed. + * + * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules + * that implement `initialize` and `close`. + * @return {Transaction} Single transaction for reuse in thread. + * + * @class Transaction + */ +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 + * initialized, in a way that does not consume additional memory upon reuse. + * That can be useful if you decide to make your subclass of this mixin a + * "PooledClass". + */ + reinitializeTransaction: function () { + this.transactionWrappers = this.getTransactionWrappers(); + if (this.wrapperInitData) { + this.wrapperInitData.length = 0; + } else { + this.wrapperInitData = []; + } + this._isInTransaction = false; + }, + + _isInTransaction: false, + + /** + * @abstract + * @return {Array<TransactionWrapper>} Array of transaction wrappers. + */ + getTransactionWrappers: null, + + isInTransaction: function () { + return !!this._isInTransaction; + }, + + /** + * Executes the function within a safety window. Use this for the top level + * methods that result in large amounts of computation/mutations that would + * need to be safety checked. The optional arguments helps prevent the need + * to bind in many cases. + * + * @param {function} method Member of scope to call. + * @param {Object} scope Scope to invoke from. + * @param {Object?=} a Argument to pass to the method. + * @param {Object?=} b Argument to pass to the method. + * @param {Object?=} c Argument to pass to the method. + * @param {Object?=} d Argument to pass to the method. + * @param {Object?=} e Argument to pass to the method. + * @param {Object?=} f Argument to pass to the method. + * + * @return {*} Return value from `method`. + */ + perform: function (method, scope, a, b, c, d, e, f) { + !!this.isInTransaction() ? true ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0; + var errorThrown; + var ret; + try { + this._isInTransaction = true; + // Catching errors makes debugging more difficult, so we start with + // errorThrown set to true before setting it to false after calling + // close -- if it's still set to true in the finally block, it means + // one of these calls threw. + errorThrown = true; + this.initializeAll(0); + ret = method.call(scope, a, b, c, d, e, f); + errorThrown = false; + } finally { + try { + if (errorThrown) { + // If `method` throws, prefer to show that stack trace over any thrown + // by invoking `closeAll`. + try { + this.closeAll(0); + } catch (err) {} + } else { + // Since `method` didn't throw, we don't want to silence the exception + // here. + this.closeAll(0); + } + } finally { + this._isInTransaction = false; + } + } + return ret; + }, + + initializeAll: function (startIndex) { + var transactionWrappers = this.transactionWrappers; + for (var i = startIndex; i < transactionWrappers.length; i++) { + var wrapper = transactionWrappers[i]; + try { + // Catching errors makes debugging more difficult, so we start with the + // 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] = OBSERVED_ERROR; + this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null; + } finally { + 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. + try { + this.initializeAll(i + 1); + } catch (err) {} + } + } + } + }, + + /** + * Invokes each of `this.transactionWrappers.close[i]` functions, passing into + * them the respective return values of `this.transactionWrappers.init[i]` + * (`close`rs that correspond to initializers that failed will not be + * invoked). + */ + closeAll: function (startIndex) { + !this.isInTransaction() ? true ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0; + var transactionWrappers = this.transactionWrappers; + for (var i = startIndex; i < transactionWrappers.length; i++) { + var wrapper = transactionWrappers[i]; + var initData = this.wrapperInitData[i]; + var errorThrown; + try { + // Catching errors makes debugging more difficult, so we start with + // errorThrown set to true before setting it to false after calling + // close -- if it's still set to true in the finally block, it means + // wrapper.close threw. + errorThrown = true; + if (initData !== OBSERVED_ERROR && wrapper.close) { + wrapper.close.call(this, initData); + } + errorThrown = false; + } finally { + if (errorThrown) { + // The closer for wrapper i threw an error; close the remaining + // wrappers but silence any exceptions from them to ensure that the + // first error is the one to bubble up. + try { + this.closeAll(i + 1); + } catch (e) {} + } + } + } + this.wrapperInitData.length = 0; + } +}; + +module.exports = TransactionImpl; + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2016-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. + * + * Based on the escape-html library, which is used under the MIT License below: + * + * Copyright (c) 2012-2013 TJ Holowaychuk + * Copyright (c) 2015 Andreas Lubbe + * Copyright (c) 2015 Tiancheng "Timothy" Gu + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, 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. + * + */ + + + +// code copied and modified from escape-html +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + // " + escape = '"'; + break; + case 38: + // & + escape = '&'; + break; + case 39: + // ' + escape = '''; // modified from escape-html; used to be ''' + break; + case 60: + // < + escape = '<'; + break; + case 62: + // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index ? html + str.substring(lastIndex, index) : html; +} +// end code copied and modified from escape-html + + +/** + * Escapes text to prevent scripting attacks. + * + * @param {*} text Text value to escape. + * @return {string} An escaped string. + */ +function escapeTextContentForBrowser(text) { + if (typeof text === 'boolean' || typeof text === 'number') { + // this shortcircuit helps perf for types that we know will never have + // special characters, especially given that this function is used often + // for numeric dom ids. + return '' + text; + } + return escapeHtml(text); +} + +module.exports = escapeTextContentForBrowser; + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ExecutionEnvironment = __webpack_require__(4); +var DOMNamespaces = __webpack_require__(68); + +var WHITESPACE_TEST = /^[ \r\n\t\f]/; +var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/; + +var createMicrosoftUnsafeLocalFunction = __webpack_require__(74); + +// SVG temp container for IE lacking innerHTML +var reusableSVGContainer; + +/** + * Set the innerHTML property of a node, ensuring that whitespace is preserved + * even in IE8. + * + * @param {DOMElement} node + * @param {string} html + * @internal + */ +var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) { + // IE does not have innerHTML for SVG nodes, so instead we inject the + // new markup in a temp node and then move the child nodes across into + // the target node + if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) { + reusableSVGContainer = reusableSVGContainer || document.createElement('div'); + reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>'; + var svgNode = reusableSVGContainer.firstChild; + while (svgNode.firstChild) { + node.appendChild(svgNode.firstChild); + } + } else { + node.innerHTML = html; + } +}); + +if (ExecutionEnvironment.canUseDOM) { + // IE8: When updating a just created node with innerHTML only leading + // whitespace is removed. When updating an existing node with innerHTML + // whitespace in root TextNodes is also collapsed. + // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html + + // Feature detection; only IE8 is known to behave improperly like this. + var testElement = document.createElement('div'); + testElement.innerHTML = ' '; + if (testElement.innerHTML === '') { + setInnerHTML = function (node, html) { + // Magic theory: IE8 supposedly differentiates between added and updated + // nodes when processing innerHTML, innerHTML on updated nodes suffers + // from worse whitespace behavior. Re-adding a node like this triggers + // the initial and more favorable whitespace behavior. + // TODO: What to do on a detached node? + if (node.parentNode) { + node.parentNode.replaceChild(node, node); + } + + // We also implement a workaround for non-visible tags disappearing into + // thin air on IE8, this only happens if there is no visible text + // in-front of the non-visible tags. Piggyback on the whitespace fix + // and simply check if any non-visible tags appear in the source. + if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) { + // Recover leading whitespace by temporarily prepending any character. + // \uFEFF has the potential advantage of being zero-width/invisible. + // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode + // in hopes that this is preserved even if "\uFEFF" is transformed to + // the actual Unicode character (by Babel, for example). + // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216 + node.innerHTML = String.fromCharCode(0xFEFF) + html; + + // deleteData leaves an empty `TextNode` which offsets the index of all + // children. Definitely want to avoid this. + var textNode = node.firstChild; + if (textNode.data.length === 1) { + node.removeChild(textNode); + } else { + textNode.deleteData(0, 1); + } + } else { + node.innerHTML = html; + } + }; + } + testElement = null; +} + +module.exports = setInnerHTML; + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + + + + + + + +var _createReactClass=__webpack_require__(49);var _createReactClass2=_interopRequireDefault(_createReactClass); +var _dismissKeyboard=__webpack_require__(342);var _dismissKeyboard2=_interopRequireDefault(_dismissKeyboard); +var _findNodeHandle=__webpack_require__(45);var _findNodeHandle2=_interopRequireDefault(_findNodeHandle); +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant); +var _ScrollResponder=__webpack_require__(341);var _ScrollResponder2=_interopRequireDefault(_ScrollResponder); +var _ScrollViewBase=__webpack_require__(327);var _ScrollViewBase2=_interopRequireDefault(_ScrollViewBase); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _StyleSheetPropType=__webpack_require__(32);var _StyleSheetPropType2=_interopRequireDefault(_StyleSheetPropType); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _ViewStylePropTypes=__webpack_require__(44);var _ViewStylePropTypes2=_interopRequireDefault(_ViewStylePropTypes); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;} + +var emptyObject={}; + + +var ScrollView=(0,_createReactClass2.default)({ +propTypes:_extends({},_ViewPropTypes2.default,{ + +contentContainerStyle:(0,_StyleSheetPropType2.default)(_ViewStylePropTypes2.default), +horizontal:_propTypes.bool, +keyboardDismissMode:(0,_propTypes.oneOf)(['none','interactive','on-drag']), +onContentSizeChange:_propTypes.func, +onScroll:_propTypes.func, +pagingEnabled:_propTypes.bool, +refreshControl:_propTypes.element, +scrollEnabled:_propTypes.bool, +scrollEventThrottle:_propTypes.number, +style:(0,_StyleSheetPropType2.default)(_ViewStylePropTypes2.default)}), + + +mixins:[_ScrollResponder2.default.Mixin], + +getInitialState:function getInitialState(){ +return this.scrollResponderMixinGetInitialState(); +}, + +setNativeProps:function setNativeProps(props){ +this._scrollViewRef.setNativeProps(props); +}, + + + + + + + +getScrollResponder:function getScrollResponder(){ +return this; +}, + +getScrollableNode:function getScrollableNode(){ +return(0,_findNodeHandle2.default)(this._scrollViewRef); +}, + +getInnerViewNode:function getInnerViewNode(){ +return(0,_findNodeHandle2.default)(this._innerViewRef); +}, + + + + + + + + + + + +scrollTo:function scrollTo( +y, +x, +animated) +{ +if(typeof y==='number'){ +console.warn( +'`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, animated: true})` instead.'); + +}else{var _ref= +y||emptyObject;x=_ref.x;y=_ref.y;animated=_ref.animated; +} + +this.getScrollResponder().scrollResponderScrollTo({ +x:x||0, +y:y||0, +animated:animated!==false}); + +}, + + + + +scrollWithoutAnimationTo:function scrollWithoutAnimationTo(){var y=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var x=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0; +console.warn('`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead'); +this.scrollTo({x:x,y:y,animated:false}); +}, + +render:function render(){var _props= + + + + + + + + + + + +this.props,contentContainerStyle=_props.contentContainerStyle,horizontal=_props.horizontal,onContentSizeChange=_props.onContentSizeChange,refreshControl=_props.refreshControl,keyboardDismissMode=_props.keyboardDismissMode,onScroll=_props.onScroll,pagingEnabled=_props.pagingEnabled,other=_objectWithoutProperties(_props,['contentContainerStyle','horizontal','onContentSizeChange','refreshControl','keyboardDismissMode','onScroll','pagingEnabled']); + +if("development"!=='production'&&this.props.style){ +var style=_StyleSheet2.default.flatten(this.props.style); +var childLayoutProps=['alignItems','justifyContent'].filter( +function(prop){return style&&style[prop]!==undefined;}); + +(0,_invariant2.default)( +childLayoutProps.length===0, +'ScrollView child layout ('+JSON.stringify(childLayoutProps)+') '+ +'must be applied through the contentContainerStyle prop.'); + +} + +var contentSizeChangeProps={}; +if(onContentSizeChange){ +contentSizeChangeProps={ +onLayout:this._handleContentOnLayout}; + +} + +var contentContainer= +_react2.default.createElement(_View2.default,_extends({}, +contentSizeChangeProps,{ +children:this.props.children, +collapsable:false, +ref:this._setInnerViewRef, +style:[horizontal&&styles.contentContainerHorizontal,contentContainerStyle]})); + + + +var props=_extends({}, +other,{ +style:[styles.base,horizontal&&styles.baseHorizontal,this.props.style], +onTouchStart:this.scrollResponderHandleTouchStart, +onTouchMove:this.scrollResponderHandleTouchMove, +onTouchEnd:this.scrollResponderHandleTouchEnd, +onScrollBeginDrag:this.scrollResponderHandleScrollBeginDrag, +onScrollEndDrag:this.scrollResponderHandleScrollEndDrag, +onMomentumScrollBegin:this.scrollResponderHandleMomentumScrollBegin, +onMomentumScrollEnd:this.scrollResponderHandleMomentumScrollEnd, +onStartShouldSetResponder:this.scrollResponderHandleStartShouldSetResponder, +onStartShouldSetResponderCapture:this.scrollResponderHandleStartShouldSetResponderCapture, +onScrollShouldSetResponder:this.scrollResponderHandleScrollShouldSetResponder, +onScroll:this._handleScroll, +onResponderGrant:this.scrollResponderHandleResponderGrant, +onResponderTerminationRequest:this.scrollResponderHandleTerminationRequest, +onResponderTerminate:this.scrollResponderHandleTerminate, +onResponderRelease:this.scrollResponderHandleResponderRelease, +onResponderReject:this.scrollResponderHandleResponderReject}); + + +var ScrollViewClass=_ScrollViewBase2.default; + +(0,_invariant2.default)(ScrollViewClass!==undefined,'ScrollViewClass must not be undefined'); + +if(refreshControl){ +return _react2.default.cloneElement( +refreshControl, +{style:props.style}, +_react2.default.createElement(ScrollViewClass,_extends({},props,{ref:this._setScrollViewRef,style:styles.base}), +contentContainer)); + + +} + +return( +_react2.default.createElement(ScrollViewClass,_extends({},props,{ref:this._setScrollViewRef,style:props.style}), +contentContainer)); + + +}, + +_handleContentOnLayout:function _handleContentOnLayout(e){var _e$nativeEvent$layout= +e.nativeEvent.layout,width=_e$nativeEvent$layout.width,height=_e$nativeEvent$layout.height; +this.props.onContentSizeChange(width,height); +}, + +_handleScroll:function _handleScroll(e){ +if(true){ +if(this.props.onScroll&&!this.props.scrollEventThrottle){ +console.log( +'You specified `onScroll` on a <ScrollView> but not '+ +'`scrollEventThrottle`. You will only receive one event. '+ +'Using `16` you get all the events but be aware that it may '+ +"cause frame drops, use a bigger number if you don't need as "+ +'much precision.'); + +} +} + +if(this.props.keyboardDismissMode==='on-drag'){ +(0,_dismissKeyboard2.default)(); +} + +this.scrollResponderHandleScroll(e); +}, + +_setInnerViewRef:function _setInnerViewRef(component){ +this._innerViewRef=component; +}, + +_setScrollViewRef:function _setScrollViewRef(component){ +this._scrollViewRef=component; +}}); + + +var styles=_StyleSheet2.default.create({ +base:{ +flex:1, +overflowX:'hidden', +overflowY:'auto', +WebkitOverflowScrolling:'touch', + + + +transform:[{translateZ:0}]}, + +baseHorizontal:{ +flexDirection:'row', +overflowX:'auto', +overflowY:'hidden'}, + +contentContainerHorizontal:{ +flexDirection:'row'}}); + + + +module.exports=ScrollView; + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + + +var BoundingDimensions=__webpack_require__(332); +var normalizeColor=__webpack_require__(50); +var Position=__webpack_require__(333); +var React=__webpack_require__(5); +var TouchEventUtils=__webpack_require__(187); +var UIManager=__webpack_require__(30); +var View=__webpack_require__(12); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var States={ +NOT_RESPONDER:'NOT_RESPONDER', +RESPONDER_INACTIVE_PRESS_IN:'RESPONDER_INACTIVE_PRESS_IN', +RESPONDER_INACTIVE_PRESS_OUT:'RESPONDER_INACTIVE_PRESS_OUT', +RESPONDER_ACTIVE_PRESS_IN:'RESPONDER_ACTIVE_PRESS_IN', +RESPONDER_ACTIVE_PRESS_OUT:'RESPONDER_ACTIVE_PRESS_OUT', +RESPONDER_ACTIVE_LONG_PRESS_IN:'RESPONDER_ACTIVE_LONG_PRESS_IN', +RESPONDER_ACTIVE_LONG_PRESS_OUT:'RESPONDER_ACTIVE_LONG_PRESS_OUT', +ERROR:'ERROR'}; + + + + + +var IsActive={ +RESPONDER_ACTIVE_PRESS_OUT:true, +RESPONDER_ACTIVE_PRESS_IN:true}; + + + + + + +var IsPressingIn={ +RESPONDER_INACTIVE_PRESS_IN:true, +RESPONDER_ACTIVE_PRESS_IN:true, +RESPONDER_ACTIVE_LONG_PRESS_IN:true}; + + +var IsLongPressingIn={ +RESPONDER_ACTIVE_LONG_PRESS_IN:true}; + + + + + +var Signals={ +DELAY:'DELAY', +RESPONDER_GRANT:'RESPONDER_GRANT', +RESPONDER_RELEASE:'RESPONDER_RELEASE', +RESPONDER_TERMINATED:'RESPONDER_TERMINATED', +ENTER_PRESS_RECT:'ENTER_PRESS_RECT', +LEAVE_PRESS_RECT:'LEAVE_PRESS_RECT', +LONG_PRESS_DETECTED:'LONG_PRESS_DETECTED'}; + + + + + +var Transitions={ +NOT_RESPONDER:{ +DELAY:States.ERROR, +RESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN, +RESPONDER_RELEASE:States.ERROR, +RESPONDER_TERMINATED:States.ERROR, +ENTER_PRESS_RECT:States.ERROR, +LEAVE_PRESS_RECT:States.ERROR, +LONG_PRESS_DETECTED:States.ERROR}, + +RESPONDER_INACTIVE_PRESS_IN:{ +DELAY:States.RESPONDER_ACTIVE_PRESS_IN, +RESPONDER_GRANT:States.ERROR, +RESPONDER_RELEASE:States.NOT_RESPONDER, +RESPONDER_TERMINATED:States.NOT_RESPONDER, +ENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN, +LEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT, +LONG_PRESS_DETECTED:States.ERROR}, + +RESPONDER_INACTIVE_PRESS_OUT:{ +DELAY:States.RESPONDER_ACTIVE_PRESS_OUT, +RESPONDER_GRANT:States.ERROR, +RESPONDER_RELEASE:States.NOT_RESPONDER, +RESPONDER_TERMINATED:States.NOT_RESPONDER, +ENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN, +LEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT, +LONG_PRESS_DETECTED:States.ERROR}, + +RESPONDER_ACTIVE_PRESS_IN:{ +DELAY:States.ERROR, +RESPONDER_GRANT:States.ERROR, +RESPONDER_RELEASE:States.NOT_RESPONDER, +RESPONDER_TERMINATED:States.NOT_RESPONDER, +ENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN, +LEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT, +LONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN}, + +RESPONDER_ACTIVE_PRESS_OUT:{ +DELAY:States.ERROR, +RESPONDER_GRANT:States.ERROR, +RESPONDER_RELEASE:States.NOT_RESPONDER, +RESPONDER_TERMINATED:States.NOT_RESPONDER, +ENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN, +LEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT, +LONG_PRESS_DETECTED:States.ERROR}, + +RESPONDER_ACTIVE_LONG_PRESS_IN:{ +DELAY:States.ERROR, +RESPONDER_GRANT:States.ERROR, +RESPONDER_RELEASE:States.NOT_RESPONDER, +RESPONDER_TERMINATED:States.NOT_RESPONDER, +ENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN, +LEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT, +LONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN}, + +RESPONDER_ACTIVE_LONG_PRESS_OUT:{ +DELAY:States.ERROR, +RESPONDER_GRANT:States.ERROR, +RESPONDER_RELEASE:States.NOT_RESPONDER, +RESPONDER_TERMINATED:States.NOT_RESPONDER, +ENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN, +LEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT, +LONG_PRESS_DETECTED:States.ERROR}, + +error:{ +DELAY:States.NOT_RESPONDER, +RESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN, +RESPONDER_RELEASE:States.NOT_RESPONDER, +RESPONDER_TERMINATED:States.NOT_RESPONDER, +ENTER_PRESS_RECT:States.NOT_RESPONDER, +LEAVE_PRESS_RECT:States.NOT_RESPONDER, +LONG_PRESS_DETECTED:States.NOT_RESPONDER}}; + + + + + + +var HIGHLIGHT_DELAY_MS=130; + +var PRESS_EXPAND_PX=20; + +var LONG_PRESS_THRESHOLD=500; + +var LONG_PRESS_DELAY_MS=LONG_PRESS_THRESHOLD-HIGHLIGHT_DELAY_MS; + +var LONG_PRESS_ALLOWED_MOVEMENT=10; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var TouchableMixin={ + + + +componentWillUnmount:function componentWillUnmount(){ +this.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout); +this.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout); +this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout); +}, + + + + + + + + +touchableGetInitialState:function touchableGetInitialState(){ +return{ +touchable:{touchState:undefined,responderID:null}}; + +}, + + + + + +touchableHandleResponderTerminationRequest:function touchableHandleResponderTerminationRequest(){ +return!this.props.rejectResponderTermination; +}, + + + + +touchableHandleStartShouldSetResponder:function touchableHandleStartShouldSetResponder(){ +return!this.props.disabled; +}, + + + + +touchableLongPressCancelsPress:function touchableLongPressCancelsPress(){ +return true; +}, + + + + + + +touchableHandleResponderGrant:function touchableHandleResponderGrant(e){ +var dispatchID=e.currentTarget; + + + +e.persist(); + +this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout); +this.pressOutDelayTimeout=null; + +this.state.touchable.touchState=States.NOT_RESPONDER; +this.state.touchable.responderID=dispatchID; +this._receiveSignal(Signals.RESPONDER_GRANT,e); +var delayMS=this.touchableGetHighlightDelayMS!==undefined? +Math.max(this.touchableGetHighlightDelayMS(),0): +HIGHLIGHT_DELAY_MS; +delayMS=isNaN(delayMS)?HIGHLIGHT_DELAY_MS:delayMS; +if(delayMS!==0){ +this.touchableDelayTimeout=setTimeout(this._handleDelay.bind(this,e),delayMS); +}else{ +this._handleDelay(e); +} + +var longDelayMS=this.touchableGetLongPressDelayMS!==undefined? +Math.max(this.touchableGetLongPressDelayMS(),10): +LONG_PRESS_DELAY_MS; +longDelayMS=isNaN(longDelayMS)?LONG_PRESS_DELAY_MS:longDelayMS; +this.longPressDelayTimeout=setTimeout( +this._handleLongDelay.bind(this,e), +longDelayMS+delayMS); + +}, + + + + +touchableHandleResponderRelease:function touchableHandleResponderRelease(e){ +this._receiveSignal(Signals.RESPONDER_RELEASE,e); + + + + +if(e.cancelable&&!e.isDefaultPrevented()){ +e.preventDefault(); +} +}, + + + + +touchableHandleResponderTerminate:function touchableHandleResponderTerminate(e){ +this._receiveSignal(Signals.RESPONDER_TERMINATED,e); +}, + + + + +touchableHandleResponderMove:function touchableHandleResponderMove(e){ + + +if(this.state.touchable.touchState===States.RESPONDER_INACTIVE_PRESS_IN){ +return; +} + + +if(!this.state.touchable.positionOnActivate){ +return; +} + +var positionOnActivate=this.state.touchable.positionOnActivate; +var dimensionsOnActivate=this.state.touchable.dimensionsOnActivate; +var pressRectOffset=this.touchableGetPressRectOffset? +this.touchableGetPressRectOffset(): +{ +left:PRESS_EXPAND_PX, +right:PRESS_EXPAND_PX, +top:PRESS_EXPAND_PX, +bottom:PRESS_EXPAND_PX}; + + +var pressExpandLeft=pressRectOffset.left; +var pressExpandTop=pressRectOffset.top; +var pressExpandRight=pressRectOffset.right; +var pressExpandBottom=pressRectOffset.bottom; + +var hitSlop=this.touchableGetHitSlop?this.touchableGetHitSlop():null; + +if(hitSlop){ +pressExpandLeft+=hitSlop.left; +pressExpandTop+=hitSlop.top; +pressExpandRight+=hitSlop.right; +pressExpandBottom+=hitSlop.bottom; +} + +var touch=TouchEventUtils.extractSingleTouch(e.nativeEvent); +var pageX=touch&&touch.pageX; +var pageY=touch&&touch.pageY; + +if(this.pressInLocation){ +var movedDistance=this._getDistanceBetweenPoints( +pageX, +pageY, +this.pressInLocation.pageX, +this.pressInLocation.pageY); + +if(movedDistance>LONG_PRESS_ALLOWED_MOVEMENT){ +this._cancelLongPressDelayTimeout(); +} +} + +var isTouchWithinActive= +pageX>positionOnActivate.left-pressExpandLeft&& +pageY>positionOnActivate.top-pressExpandTop&& +pageX<positionOnActivate.left+dimensionsOnActivate.width+pressExpandRight&& +pageY<positionOnActivate.top+dimensionsOnActivate.height+pressExpandBottom; +if(isTouchWithinActive){ +this._receiveSignal(Signals.ENTER_PRESS_RECT,e); +var curState=this.state.touchable.touchState; +if(curState===States.RESPONDER_INACTIVE_PRESS_IN){ + +this._cancelLongPressDelayTimeout(); +} +}else{ +this._cancelLongPressDelayTimeout(); +this._receiveSignal(Signals.LEAVE_PRESS_RECT,e); +} +}, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +_remeasureMetricsOnActivation:function _remeasureMetricsOnActivation(){ +var tag=this.state.touchable.responderID; +if(tag==null){ +return; +} + +UIManager.measure(tag,this._handleQueryLayout); +}, + +_handleQueryLayout:function _handleQueryLayout(l,t,w,h,globalX,globalY){ +this.state.touchable.positionOnActivate&& +Position.release(this.state.touchable.positionOnActivate); +this.state.touchable.dimensionsOnActivate&& +BoundingDimensions.release(this.state.touchable.dimensionsOnActivate); +this.state.touchable.positionOnActivate=Position.getPooled(globalX,globalY); +this.state.touchable.dimensionsOnActivate=BoundingDimensions.getPooled(w,h); +}, + +_handleDelay:function _handleDelay(e){ +this.touchableDelayTimeout=null; +this._receiveSignal(Signals.DELAY,e); +}, + +_handleLongDelay:function _handleLongDelay(e){ +this.longPressDelayTimeout=null; +var curState=this.state.touchable.touchState; +if( +curState!==States.RESPONDER_ACTIVE_PRESS_IN&& +curState!==States.RESPONDER_ACTIVE_LONG_PRESS_IN) +{ +console.error( +'Attempted to transition from state `'+ +curState+ +'` to `'+ +States.RESPONDER_ACTIVE_LONG_PRESS_IN+ +'`, which is not supported. This is '+ +'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.'); + +}else{ +this._receiveSignal(Signals.LONG_PRESS_DETECTED,e); +} +}, + + + + + + + + + +_receiveSignal:function _receiveSignal(signal,e){ +var responderID=this.state.touchable.responderID; +var curState=this.state.touchable.touchState; +var nextState=Transitions[curState]&&Transitions[curState][signal]; +if(!responderID&&signal===Signals.RESPONDER_RELEASE){ +return; +} +if(!nextState){ +throw new Error( +'Unrecognized signal `'+ +signal+ +'` or state `'+ +curState+ +'` for Touchable responder `'+ +responderID+ +'`'); + +} +if(nextState===States.ERROR){ +throw new Error( +'Touchable cannot transition from `'+ +curState+ +'` to `'+ +signal+ +'` for responder `'+ +responderID+ +'`'); + +} +if(curState!==nextState){ +this._performSideEffectsForTransition(curState,nextState,signal,e); +this.state.touchable.touchState=nextState; +} +}, + +_cancelLongPressDelayTimeout:function _cancelLongPressDelayTimeout(){ +this.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout); +this.longPressDelayTimeout=null; +}, + +_isHighlight:function _isHighlight(state){ +return( +state===States.RESPONDER_ACTIVE_PRESS_IN||state===States.RESPONDER_ACTIVE_LONG_PRESS_IN); + +}, + +_savePressInLocation:function _savePressInLocation(e){ +var touch=TouchEventUtils.extractSingleTouch(e.nativeEvent); +var pageX=touch&&touch.pageX; +var pageY=touch&&touch.pageY; +var locationX=touch&&touch.locationX; +var locationY=touch&&touch.locationY; +this.pressInLocation={pageX:pageX,pageY:pageY,locationX:locationX,locationY:locationY}; +}, + +_getDistanceBetweenPoints:function _getDistanceBetweenPoints(aX,aY,bX,bY){ +var deltaX=aX-bX; +var deltaY=aY-bY; +return Math.sqrt(deltaX*deltaX+deltaY*deltaY); +}, + + + + + + + + + + + + +_performSideEffectsForTransition:function _performSideEffectsForTransition(curState,nextState,signal,e){ +var curIsHighlight=this._isHighlight(curState); +var newIsHighlight=this._isHighlight(nextState); + +var isFinalSignal= +signal===Signals.RESPONDER_TERMINATED||signal===Signals.RESPONDER_RELEASE; + +if(isFinalSignal){ +this._cancelLongPressDelayTimeout(); +} + +if(!IsActive[curState]&&IsActive[nextState]){ +this._remeasureMetricsOnActivation(); +} + +if(IsPressingIn[curState]&&signal===Signals.LONG_PRESS_DETECTED){ +this.touchableHandleLongPress&&this.touchableHandleLongPress(e); +} + +if(newIsHighlight&&!curIsHighlight){ +this._startHighlight(e); +}else if(!newIsHighlight&&curIsHighlight){ +this._endHighlight(e); +} + +if(IsPressingIn[curState]&&signal===Signals.RESPONDER_RELEASE){ +var hasLongPressHandler=!!this.props.onLongPress; +var pressIsLongButStillCallOnPress= +IsLongPressingIn[curState]&&( +!hasLongPressHandler|| +!this.touchableLongPressCancelsPress()); + +var shouldInvokePress=!IsLongPressingIn[curState]||pressIsLongButStillCallOnPress; +if(shouldInvokePress&&this.touchableHandlePress){ +if(!newIsHighlight&&!curIsHighlight){ + +this._startHighlight(e); +this._endHighlight(e); +} +this.touchableHandlePress(e); +} +} + +this.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout); +this.touchableDelayTimeout=null; +}, + +_startHighlight:function _startHighlight(e){ +this._savePressInLocation(e); +this.touchableHandleActivePressIn&&this.touchableHandleActivePressIn(e); +}, + +_endHighlight:function _endHighlight(e){var _this=this; +if(this.touchableHandleActivePressOut){ +if(this.touchableGetPressOutDelayMS&&this.touchableGetPressOutDelayMS()){ +this.pressOutDelayTimeout=setTimeout(function(){ +_this.touchableHandleActivePressOut(e); +},this.touchableGetPressOutDelayMS()); +}else{ +this.touchableHandleActivePressOut(e); +} +} +}}; + + +var Touchable={ +Mixin:TouchableMixin, +TOUCH_TARGET_DEBUG:false, + + + +renderDebugView:function renderDebugView(_ref){var color=_ref.color,hitSlop=_ref.hitSlop; +if(true){ +if(!Touchable.TOUCH_TARGET_DEBUG){ +return null; +} + +var debugHitSlopStyle={}; +hitSlop=hitSlop||{top:0,bottom:0,left:0,right:0}; +for(var key in hitSlop){ +debugHitSlopStyle[key]=-hitSlop[key]; +} + +var hexColor='#'+('00000000'+normalizeColor(color).toString(16)).substr(-8); + +return( +React.createElement(View,{ +pointerEvents:'none', +style:_extends({ +position:'absolute', +borderColor:hexColor.slice(0,-2)+'55', +borderWidth:1, +borderStyle:'dashed', +backgroundColor:hexColor.slice(0,-2)+'0F'}, +debugHitSlopStyle)})); + + + +} +}}; + + +module.exports=Touchable; + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + + + + + + + +var _createDOMProps=__webpack_require__(146);var _createDOMProps2=_interopRequireDefault(_createDOMProps); +var _findNodeHandle=__webpack_require__(45);var _findNodeHandle2=_interopRequireDefault(_findNodeHandle); +var _registry=__webpack_require__(83);var _registry2=_interopRequireDefault(_registry); +var _UIManager=__webpack_require__(30);var _UIManager2=_interopRequireDefault(_UIManager);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var NativeMethodsMixin={ + + + +blur:function blur(){ +_UIManager2.default.blur((0,_findNodeHandle2.default)(this)); +}, + + + + + +focus:function focus(){ +_UIManager2.default.focus((0,_findNodeHandle2.default)(this)); +}, + + + + +measure:function measure(callback){ +_UIManager2.default.measure((0,_findNodeHandle2.default)(this),callback); +}, + + + + + + + + + + + + + + + + +measureInWindow:function measureInWindow(callback){ +_UIManager2.default.measureInWindow((0,_findNodeHandle2.default)(this),callback); +}, + + + + +measureLayout:function measureLayout(relativeToNativeNode,onSuccess,onFail){ +_UIManager2.default.measureLayout((0,_findNodeHandle2.default)(this),relativeToNativeNode,onFail,onSuccess); +}, + + + + + + + +setNativeProps:function setNativeProps(nativeProps){ + +var node=(0,_findNodeHandle2.default)(this); +var classList=Array.prototype.slice.call(node.classList); +var style=_extends({},node.style); +var domStyleProps={classList:classList,style:style}; + + +var domProps=(0,_createDOMProps2.default)(nativeProps,function(style){return( +_registry2.default.resolveStateful(style,domStyleProps));}); + +_UIManager2.default.updateView(node,domProps,this); +}}; + + +module.exports=NativeMethodsMixin; + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +var _normalizeCssColor=__webpack_require__(50);var _normalizeCssColor2=_interopRequireDefault(_normalizeCssColor);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var processColor=function processColor(color){var opacity=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1; +if( +color===undefined|| +color===null|| +opacity===1&&typeof color==='string'&&color.charAt(0)!=='#') +{ +return color; +} + + +var int32Color=(0,_normalizeCssColor2.default)(color); +if(int32Color===null){ +return undefined; +} + + +var rgba=_normalizeCssColor2.default.rgba(int32Color); +rgba.a=rgba.a.toFixed(1);var +r=rgba.r,g=rgba.g,b=rgba.b,a=rgba.a; +return'rgba('+r+','+g+','+b+','+a*opacity+')'; +}; + +module.exports=processColor; + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var _uniqueId=0; + +module.exports=function uniqueId(){ +return String(_uniqueId++); +}; + +/***/ }), +/* 63 */ +/***/ (function(module, exports) { + +/** + * Returns a function, that, as long as it continues to be invoked, will not + * be triggered. The function will be called after it stops being called for + * N milliseconds. If `immediate` is passed, trigger the function on the + * leading edge, instead of the trailing. The function also has a property 'clear' + * that is a function which will clear the timer to prevent previously scheduled executions. + * + * @source underscore.js + * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/ + * @param {Function} function to wrap + * @param {Number} timeout in ms (`100`) + * @param {Boolean} whether to execute at the beginning (`false`) + * @api public + */ + +module.exports = function debounce(func, wait, immediate){ + var timeout, args, context, timestamp, result; + if (null == wait) wait = 100; + + function later() { + var last = Date.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + context = args = null; + } + } + }; + + var debounced = function(){ + context = this; + args = arguments; + timestamp = Date.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + + debounced.clear = function() { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + }; + + return debounced; +}; + + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + +/** + * Copyright 2014-2015, 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. + * + */ + +var emptyFunction = __webpack_require__(10); +var nativeRequestAnimationFrame = __webpack_require__(199); + +var lastTime = 0; + +var requestAnimationFrame = nativeRequestAnimationFrame || function (callback) { + var currTime = Date.now(); + var timeDelay = Math.max(0, 16 - (currTime - lastTime)); + lastTime = currTime + timeDelay; + return global.setTimeout(function () { + callback(Date.now()); + }, timeDelay); +}; + +// Works around a rare bug in Safari 6 where the first request is never invoked. +requestAnimationFrame(emptyFunction); + +module.exports = requestAnimationFrame; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34))) + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + * + */ + +/*eslint-disable no-self-compare */ + + + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +/** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ +function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + // Added the nonzero y check to make Flow happy, but it is redundant + return x !== 0 || y !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } +} + +/** + * Performs equality by iterating through keys on an object and returning false + * when any key has values which are not strictly equal between the arguments. + * Returns true when the values of all keys are strictly equal. + */ +function shallowEqual(objA, objB) { + if (is(objA, objB)) { + return true; + } + + if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { + return false; + } + + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); + + if (keysA.length !== keysB.length) { + return false; + } + + // Test for A's keys different from B. + for (var i = 0; i < keysA.length; i++) { + if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { + return false; + } + } + + return true; +} + +module.exports = shallowEqual; + +/***/ }), +/* 66 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMLazyTree = __webpack_require__(26); +var Danger = __webpack_require__(226); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactInstrumentation = __webpack_require__(11); + +var createMicrosoftUnsafeLocalFunction = __webpack_require__(74); +var setInnerHTML = __webpack_require__(57); +var setTextContent = __webpack_require__(135); + +function getNodeAfter(parentNode, node) { + // Special case for text components, which return [open, close] comments + // from getHostNode. + if (Array.isArray(node)) { + node = node[1]; + } + return node ? node.nextSibling : parentNode.firstChild; +} + +/** + * Inserts `childNode` as a child of `parentNode` at the `index`. + * + * @param {DOMElement} parentNode Parent node in which to insert. + * @param {DOMElement} childNode Child node to insert. + * @param {number} index Index at which to insert the child. + * @internal + */ +var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) { + // We rely exclusively on `insertBefore(node, null)` instead of also using + // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so + // we are careful to use `null`.) + parentNode.insertBefore(childNode, referenceNode); +}); + +function insertLazyTreeChildAt(parentNode, childTree, referenceNode) { + DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode); +} + +function moveChild(parentNode, childNode, referenceNode) { + if (Array.isArray(childNode)) { + moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode); + } else { + insertChildAt(parentNode, childNode, referenceNode); + } +} + +function removeChild(parentNode, childNode) { + if (Array.isArray(childNode)) { + var closingComment = childNode[1]; + childNode = childNode[0]; + removeDelimitedText(parentNode, childNode, closingComment); + parentNode.removeChild(closingComment); + } + parentNode.removeChild(childNode); +} + +function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) { + var node = openingComment; + while (true) { + var nextNode = node.nextSibling; + insertChildAt(parentNode, node, referenceNode); + if (node === closingComment) { + break; + } + node = nextNode; + } +} + +function removeDelimitedText(parentNode, startNode, closingComment) { + while (true) { + var node = startNode.nextSibling; + if (node === closingComment) { + // The closing comment is removed by ReactMultiChild. + break; + } else { + parentNode.removeChild(node); + } + } +} + +function replaceDelimitedText(openingComment, closingComment, stringText) { + var parentNode = openingComment.parentNode; + var nodeAfterComment = openingComment.nextSibling; + if (nodeAfterComment === closingComment) { + // There are no text nodes between the opening and closing comments; insert + // a new one if stringText isn't empty. + if (stringText) { + insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment); + } + } else { + if (stringText) { + // Set the text content of the first node after the opening comment, and + // remove all following nodes up until the closing comment. + setTextContent(nodeAfterComment, stringText); + removeDelimitedText(parentNode, nodeAfterComment, closingComment); + } else { + removeDelimitedText(parentNode, openingComment, closingComment); + } + } + + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, + type: 'replace text', + payload: stringText + }); + } +} + +var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup; +if (true) { + dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) { + Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup); + if (prevInstance._debugID !== 0) { + 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({ + instanceID: nextInstance._debugID, + type: 'mount', + payload: markup.toString() + }); + } + } + }; +} + +/** + * Operations for updating with DOM children. + */ +var DOMChildrenOperations = { + + dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup, + + replaceDelimitedText: replaceDelimitedText, + + /** + * Updates a component's children by processing a series of updates. The + * update configurations are each expected to have a `parentNode` property. + * + * @param {array<object>} updates List of update configurations. + * @internal + */ + processUpdates: function (parentNode, updates) { + if (true) { + var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID; + } + + for (var k = 0; k < updates.length; k++) { + var update = updates[k]; + switch (update.type) { + case 'INSERT_MARKUP': + insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode)); + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'insert child', + payload: { toIndex: update.toIndex, content: update.content.toString() } + }); + } + break; + case 'MOVE_EXISTING': + moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode)); + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'move child', + payload: { fromIndex: update.fromIndex, toIndex: update.toIndex } + }); + } + break; + case 'SET_MARKUP': + setInnerHTML(parentNode, update.content); + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'replace children', + payload: update.content.toString() + }); + } + break; + case 'TEXT_CONTENT': + setTextContent(parentNode, update.content); + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'replace text', + payload: update.content.toString() + }); + } + break; + case 'REMOVE_NODE': + removeChild(parentNode, update.fromNode); + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'remove child', + payload: { fromIndex: update.fromIndex } + }); + } + break; + } + } + } + +}; + +module.exports = DOMChildrenOperations; + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMNamespaces = { + html: 'http://www.w3.org/1999/xhtml', + mathml: 'http://www.w3.org/1998/Math/MathML', + svg: 'http://www.w3.org/2000/svg' +}; + +module.exports = DOMNamespaces; + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +/** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ + +function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = ('' + key).replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + + return '$' + escapedString; +} + +/** + * Unescape and unwrap key for human-readable display + * + * @param {string} key to unescape. + * @return {string} the unescaped key. + */ +function unescape(key) { + var unescapeRegex = /(=0|=2)/g; + var unescaperLookup = { + '=0': '=', + '=2': ':' + }; + var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1); + + return ('' + keySubstring).replace(unescapeRegex, function (match) { + return unescaperLookup[match]; + }); +} + +var KeyEscapeUtils = { + escape: escape, + unescape: unescape +}; + +module.exports = KeyEscapeUtils; + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var ReactPropTypesSecret = __webpack_require__(126); +var propTypesFactory = __webpack_require__(220); + +var React = __webpack_require__(33); +var PropTypes = propTypesFactory(React.isValidElement); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var hasReadOnlyValue = { + 'button': true, + 'checkbox': true, + 'image': true, + 'hidden': true, + 'radio': true, + 'reset': true, + 'submit': true +}; + +function _assertSingleLink(inputProps) { + !(inputProps.checkedLink == null || inputProps.valueLink == null) ? true ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0; +} +function _assertValueLink(inputProps) { + _assertSingleLink(inputProps); + !(inputProps.value == null && inputProps.onChange == null) ? true ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\'t want to use valueLink.') : _prodInvariant('88') : void 0; +} + +function _assertCheckedLink(inputProps) { + _assertSingleLink(inputProps); + !(inputProps.checked == null && inputProps.onChange == null) ? true ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\'t want to use checkedLink') : _prodInvariant('89') : void 0; +} + +var propTypes = { + value: function (props, propName, componentName) { + if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) { + return null; + } + return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); + }, + checked: function (props, propName, componentName) { + if (!props[propName] || props.onChange || props.readOnly || props.disabled) { + return null; + } + return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); + }, + onChange: PropTypes.func +}; + +var loggedTypeFailures = {}; +function getDeclarationErrorAddendum(owner) { + if (owner) { + var name = owner.getName(); + if (name) { + return ' Check the render method of `' + name + '`.'; + } + } + return ''; +} + +/** + * Provide a linked `value` attribute for controlled forms. You should not use + * this outside of the ReactDOM controlled form components. + */ +var LinkedValueUtils = { + checkPropTypes: function (tagName, props, owner) { + for (var propName in propTypes) { + if (propTypes.hasOwnProperty(propName)) { + var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var addendum = getDeclarationErrorAddendum(owner); + true ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0; + } + } + }, + + /** + * @param {object} inputProps Props for form component + * @return {*} current value of the input either from value prop or link. + */ + getValue: function (inputProps) { + if (inputProps.valueLink) { + _assertValueLink(inputProps); + return inputProps.valueLink.value; + } + return inputProps.value; + }, + + /** + * @param {object} inputProps Props for form component + * @return {*} current checked status of the input either from checked prop + * or link. + */ + getChecked: function (inputProps) { + if (inputProps.checkedLink) { + _assertCheckedLink(inputProps); + return inputProps.checkedLink.value; + } + return inputProps.checked; + }, + + /** + * @param {object} inputProps Props for form component + * @param {SyntheticEvent} event change event to handle + */ + executeOnChange: function (inputProps, event) { + if (inputProps.valueLink) { + _assertValueLink(inputProps); + return inputProps.valueLink.requestChange(event.target.value); + } else if (inputProps.checkedLink) { + _assertCheckedLink(inputProps); + return inputProps.checkedLink.requestChange(event.target.checked); + } else if (inputProps.onChange) { + return inputProps.onChange.call(undefined, event); + } + } +}; + +module.exports = LinkedValueUtils; + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +var injected = false; + +var ReactComponentEnvironment = { + + /** + * Optionally injectable hook for swapping out mount images in the middle of + * the tree. + */ + replaceNodeWithMarkup: null, + + /** + * Optionally injectable hook for processing a queue of child updates. Will + * later move into MultiChildComponents. + */ + processChildrenUpdates: null, + + injection: { + injectEnvironment: function (environment) { + !!injected ? true ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0; + ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup; + ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates; + injected = true; + } + } + +}; + +module.exports = ReactComponentEnvironment; + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var caughtError = null; + +/** + * Call a function while guarding against errors that happens within it. + * + * @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) { + try { + func(a); + } catch (x) { + if (caughtError === null) { + caughtError = x; + } + } +} + +var ReactErrorUtils = { + invokeGuardedCallback: invokeGuardedCallback, + + /** + * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event + * handler are sure to be rethrown by rethrowCaughtError. + */ + invokeGuardedCallbackWithCatch: invokeGuardedCallback, + + /** + * During execution of guarded functions we will capture the first error which + * we will rethrow to be handled by the top level error handler. + */ + rethrowCaughtError: function () { + if (caughtError) { + var error = caughtError; + caughtError = null; + throw error; + } + } +}; + +if (true) { + /** + * To help development we can get better devtools integration by simulating a + * real browser event. + */ + 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) { + var boundFunc = func.bind(null, a); + var evtType = 'react-' + name; + fakeNode.addEventListener(evtType, boundFunc, false); + var evt = document.createEvent('Event'); + evt.initEvent(evtType, false, false); + fakeNode.dispatchEvent(evt); + fakeNode.removeEventListener(evtType, boundFunc, false); + }; + } +} + +module.exports = ReactErrorUtils; + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var ReactCurrentOwner = __webpack_require__(17); +var ReactInstanceMap = __webpack_require__(41); +var ReactInstrumentation = __webpack_require__(11); +var ReactUpdates = __webpack_require__(14); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +function enqueueUpdate(internalInstance) { + ReactUpdates.enqueueUpdate(internalInstance); +} + +function formatUnexpectedArgument(arg) { + var type = typeof arg; + if (type !== 'object') { + return type; + } + var displayName = arg.constructor && arg.constructor.name || type; + var keys = Object.keys(arg); + if (keys.length > 0 && keys.length < 20) { + return displayName + ' (keys: ' + keys.join(', ') + ')'; + } + return displayName; +} + +function getInternalInstanceReadyForUpdate(publicInstance, callerName) { + var internalInstance = ReactInstanceMap.get(publicInstance); + if (!internalInstance) { + if (true) { + var ctor = publicInstance.constructor; + // Only warn when we have a callerName. Otherwise we should be silent. + // We're probably calling from enqueueCallback. We don't want to warn + // there because we already warned for the corresponding lifecycle method. + true ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0; + } + return null; + } + + if (true) { + true ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0; + } + + return internalInstance; +} + +/** + * ReactUpdateQueue allows for state updates to be scheduled into a later + * reconciliation step. + */ +var ReactUpdateQueue = { + + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + if (true) { + var owner = ReactCurrentOwner.current; + if (owner !== null) { + true ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0; + owner._warnedAboutRefsInRender = true; + } + } + var internalInstance = ReactInstanceMap.get(publicInstance); + if (internalInstance) { + // During componentWillMount and render this will still be null but after + // that will always render to something. At least for now. So we can use + // this hack. + return !!internalInstance._renderedComponent; + } else { + return false; + } + }, + + /** + * Enqueue a callback that will be executed after all the pending updates + * have processed. + * + * @param {ReactClass} publicInstance The instance to use as `this` context. + * @param {?function} callback Called after state is updated. + * @param {string} callerName Name of the calling function in the public API. + * @internal + */ + enqueueCallback: function (publicInstance, callback, callerName) { + ReactUpdateQueue.validateCallback(callback, callerName); + var internalInstance = getInternalInstanceReadyForUpdate(publicInstance); + + // Previously we would throw an error if we didn't have an internal + // instance. Since we want to make it a no-op instead, we mirror the same + // behavior we have in other enqueue* methods. + // We also need to ignore callbacks in componentWillMount. See + // enqueueUpdates. + if (!internalInstance) { + return null; + } + + if (internalInstance._pendingCallbacks) { + internalInstance._pendingCallbacks.push(callback); + } else { + internalInstance._pendingCallbacks = [callback]; + } + // TODO: The callback here is ignored when setState is called from + // componentWillMount. Either fix it or disallow doing so completely in + // favor of getInitialState. Alternatively, we can disallow + // componentWillMount during server-side rendering. + enqueueUpdate(internalInstance); + }, + + enqueueCallbackInternal: function (internalInstance, callback) { + if (internalInstance._pendingCallbacks) { + internalInstance._pendingCallbacks.push(callback); + } else { + internalInstance._pendingCallbacks = [callback]; + } + enqueueUpdate(internalInstance); + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @internal + */ + enqueueForceUpdate: function (publicInstance) { + var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate'); + + if (!internalInstance) { + return; + } + + internalInstance._pendingForceUpdate = true; + + enqueueUpdate(internalInstance); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback) { + var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState'); + + if (!internalInstance) { + return; + } + + internalInstance._pendingStateQueue = [completeState]; + internalInstance._pendingReplaceState = true; + + // Future-proof 15.5 + if (callback !== undefined && callback !== null) { + ReactUpdateQueue.validateCallback(callback, 'replaceState'); + if (internalInstance._pendingCallbacks) { + internalInstance._pendingCallbacks.push(callback); + } else { + internalInstance._pendingCallbacks = [callback]; + } + } + + enqueueUpdate(internalInstance); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @internal + */ + enqueueSetState: function (publicInstance, partialState) { + if (true) { + ReactInstrumentation.debugTool.onSetState(); + true ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0; + } + + var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState'); + + if (!internalInstance) { + return; + } + + var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []); + queue.push(partialState); + + enqueueUpdate(internalInstance); + }, + + enqueueElementInternal: function (internalInstance, nextElement, nextContext) { + internalInstance._pendingElement = nextElement; + // TODO: introduce _pendingContext instead of setting it directly. + internalInstance._context = nextContext; + enqueueUpdate(internalInstance); + }, + + validateCallback: function (callback, callerName) { + !(!callback || typeof callback === 'function') ? true ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0; + } + +}; + +module.exports = ReactUpdateQueue; + +/***/ }), +/* 74 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + +/* globals MSApp */ + + + +/** + * Create a function which has 'unsafe' privileges (required by windows8 apps) + */ + +var createMicrosoftUnsafeLocalFunction = function (func) { + if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) { + return function (arg0, arg1, arg2, arg3) { + MSApp.execUnsafeLocalFunction(function () { + return func(arg0, arg1, arg2, arg3); + }); + }; + } else { + return func; + } +}; + +module.exports = createMicrosoftUnsafeLocalFunction; + +/***/ }), +/* 75 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * `charCode` represents the actual "character code" and is safe to use with + * `String.fromCharCode`. As such, only keys that correspond to printable + * characters produce a valid `charCode`, the only exception to this is Enter. + * The Tab-key is considered non-printable and does not have a `charCode`, + * presumably because it does not produce a tab-character in browsers. + * + * @param {object} nativeEvent Native browser event. + * @return {number} Normalized `charCode` property. + */ + +function getEventCharCode(nativeEvent) { + var charCode; + var keyCode = nativeEvent.keyCode; + + if ('charCode' in nativeEvent) { + charCode = nativeEvent.charCode; + + // FF does not set `charCode` for the Enter-key, check against `keyCode`. + if (charCode === 0 && keyCode === 13) { + charCode = 13; + } + } else { + // IE8 does not implement `charCode`, but `keyCode` has the correct value. + charCode = keyCode; + } + + // Some non-printable keys are reported in `charCode`/`keyCode`, discard them. + // Must not discard the (non-)printable Enter-key. + if (charCode >= 32 || charCode === 13) { + return charCode; + } + + return 0; +} + +module.exports = getEventCharCode; + +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * Translation from modifier key to the associated property in the event. + * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers + */ + +var modifierKeyToProp = { + 'Alt': 'altKey', + 'Control': 'ctrlKey', + 'Meta': 'metaKey', + 'Shift': 'shiftKey' +}; + +// IE8 does not implement getModifierState so we simply map it to the only +// modifier keys exposed by the event itself, does not support Lock-keys. +// Currently, all major browsers except Chrome seems to support Lock-keys. +function modifierStateGetter(keyArg) { + var syntheticEvent = this; + var nativeEvent = syntheticEvent.nativeEvent; + if (nativeEvent.getModifierState) { + return nativeEvent.getModifierState(keyArg); + } + var keyProp = modifierKeyToProp[keyArg]; + return keyProp ? !!nativeEvent[keyProp] : false; +} + +function getEventModifierState(nativeEvent) { + return modifierStateGetter; +} + +module.exports = getEventModifierState; + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * Gets the target node from a native browser event by accounting for + * inconsistencies in browser DOM APIs. + * + * @param {object} nativeEvent Native browser event. + * @return {DOMEventTarget} Target node. + */ + +function getEventTarget(nativeEvent) { + var target = nativeEvent.target || nativeEvent.srcElement || window; + + // Normalize SVG <use> element events #4963 + if (target.correspondingUseElement) { + target = target.correspondingUseElement; + } + + // Safari may fire events on text nodes (Node.TEXT_NODE is 3). + // @see http://www.quirksmode.org/js/events_properties.html + return target.nodeType === 3 ? target.parentNode : target; +} + +module.exports = getEventTarget; + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ExecutionEnvironment = __webpack_require__(4); + +var useHasFeature; +if (ExecutionEnvironment.canUseDOM) { + useHasFeature = document.implementation && document.implementation.hasFeature && + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + document.implementation.hasFeature('', '') !== true; +} + +/** + * Checks if an event is supported in the current execution environment. + * + * NOTE: This will not work correctly for non-generic events such as `change`, + * `reset`, `load`, `error`, and `select`. + * + * Borrows from Modernizr. + * + * @param {string} eventNameSuffix Event name, e.g. "click". + * @param {?boolean} capture Check if the capture phase is supported. + * @return {boolean} True if the event is supported. + * @internal + * @license Modernizr 3.0.0pre (Custom Build) | MIT + */ +function isEventSupported(eventNameSuffix, capture) { + if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) { + return false; + } + + var eventName = 'on' + eventNameSuffix; + var isSupported = eventName in document; + + if (!isSupported) { + var element = document.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = document.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; +} + +module.exports = isEventSupported; + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * Given a `prevElement` and `nextElement`, determines if the existing + * instance should be updated as opposed to being destroyed or replaced by a new + * instance. Both arguments are elements. This ensures that this logic can + * operate on stateless trees without any backing instance. + * + * @param {?object} prevElement + * @param {?object} nextElement + * @return {boolean} True if the existing instance should be updated. + * @protected + */ + +function shouldUpdateReactComponent(prevElement, nextElement) { + var prevEmpty = prevElement === null || prevElement === false; + var nextEmpty = nextElement === null || nextElement === false; + if (prevEmpty || nextEmpty) { + return prevEmpty === nextEmpty; + } + + var prevType = typeof prevElement; + var nextType = typeof nextElement; + if (prevType === 'string' || prevType === 'number') { + return nextType === 'string' || nextType === 'number'; + } else { + return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key; + } +} + +module.exports = shouldUpdateReactComponent; + +/***/ }), +/* 80 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + + + +var _assign = __webpack_require__(6); + +var emptyFunction = __webpack_require__(10); +var warning = __webpack_require__(1); + +var validateDOMNesting = emptyFunction; + +if (true) { + // This validation code was written based on the HTML5 parsing spec: + // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope + // + // Note: this does not catch all invalid nesting, nor does it try to (as it's + // not clear what practical benefit doing so provides); instead, we warn only + // for cases where the parser will give a parse tree differing from what React + // intended. For example, <b><div></div></b> is invalid but we don't warn + // because it still parses correctly; we do warn for other cases like nested + // <p> tags where the beginning of the second element implicitly closes the + // first, causing a confusing mess. + + // https://html.spec.whatwg.org/multipage/syntax.html#special + var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; + + // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope + var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', + + // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point + // TODO: Distinguish by namespace here -- for <title>, including it here + // errs on the side of fewer warnings + 'foreignObject', 'desc', 'title']; + + // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope + var buttonScopeTags = inScopeTags.concat(['button']); + + // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags + var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt']; + + var emptyAncestorInfo = { + current: null, + + formTag: null, + aTagInScope: null, + buttonTagInScope: null, + nobrTagInScope: null, + pTagInButtonScope: null, + + listItemTagAutoclosing: null, + dlItemTagAutoclosing: null + }; + + var updatedAncestorInfo = function (oldInfo, tag, instance) { + var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo); + var info = { tag: tag, instance: instance }; + + if (inScopeTags.indexOf(tag) !== -1) { + ancestorInfo.aTagInScope = null; + ancestorInfo.buttonTagInScope = null; + ancestorInfo.nobrTagInScope = null; + } + if (buttonScopeTags.indexOf(tag) !== -1) { + ancestorInfo.pTagInButtonScope = null; + } + + // See rules for 'li', 'dd', 'dt' start tags in + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody + if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') { + ancestorInfo.listItemTagAutoclosing = null; + ancestorInfo.dlItemTagAutoclosing = null; + } + + ancestorInfo.current = info; + + if (tag === 'form') { + ancestorInfo.formTag = info; + } + if (tag === 'a') { + ancestorInfo.aTagInScope = info; + } + if (tag === 'button') { + ancestorInfo.buttonTagInScope = info; + } + if (tag === 'nobr') { + ancestorInfo.nobrTagInScope = info; + } + if (tag === 'p') { + ancestorInfo.pTagInButtonScope = info; + } + if (tag === 'li') { + ancestorInfo.listItemTagAutoclosing = info; + } + if (tag === 'dd' || tag === 'dt') { + ancestorInfo.dlItemTagAutoclosing = info; + } + + return ancestorInfo; + }; + + /** + * Returns whether + */ + var isTagValidWithParent = function (tag, parentTag) { + // First, let's check if we're in an unusual parsing mode... + switch (parentTag) { + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect + case 'select': + return tag === 'option' || tag === 'optgroup' || tag === '#text'; + case 'optgroup': + return tag === 'option' || tag === '#text'; + // Strictly speaking, seeing an <option> doesn't mean we're in a <select> + // but + case 'option': + return tag === '#text'; + + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption + // No special behavior since these rules fall back to "in body" mode for + // all except special table nodes which cause bad parsing behavior anyway. + + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr + case 'tr': + return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template'; + + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody + case 'tbody': + case 'thead': + case 'tfoot': + return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template'; + + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup + case 'colgroup': + return tag === 'col' || tag === 'template'; + + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable + case 'table': + return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template'; + + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead + case 'head': + return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template'; + + // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element + case 'html': + return tag === 'head' || tag === 'body'; + case '#document': + return tag === 'html'; + } + + // Probably in the "in body" parsing mode, so we outlaw only tag combos + // where the parsing rules cause implicit opens or closes to be added. + // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody + switch (tag) { + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': + return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6'; + + case 'rp': + case 'rt': + return impliedEndTags.indexOf(parentTag) === -1; + + case 'body': + case 'caption': + case 'col': + case 'colgroup': + case 'frame': + case 'head': + case 'html': + case 'tbody': + case 'td': + case 'tfoot': + case 'th': + case 'thead': + case 'tr': + // These tags are only valid with a few parents that have special child + // parsing rules -- if we're down here, then none of those matched and + // so we allow it only if we don't know what the parent is, as all other + // cases are invalid. + return parentTag == null; + } + + return true; + }; + + /** + * Returns whether + */ + var findInvalidAncestorForTag = function (tag, ancestorInfo) { + switch (tag) { + case 'address': + case 'article': + case 'aside': + case 'blockquote': + case 'center': + case 'details': + case 'dialog': + case 'dir': + case 'div': + case 'dl': + case 'fieldset': + case 'figcaption': + case 'figure': + case 'footer': + case 'header': + case 'hgroup': + case 'main': + case 'menu': + case 'nav': + case 'ol': + case 'p': + case 'section': + case 'summary': + case 'ul': + case 'pre': + case 'listing': + case 'table': + case 'hr': + case 'xmp': + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': + return ancestorInfo.pTagInButtonScope; + + case 'form': + return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope; + + case 'li': + return ancestorInfo.listItemTagAutoclosing; + + case 'dd': + case 'dt': + return ancestorInfo.dlItemTagAutoclosing; + + case 'button': + return ancestorInfo.buttonTagInScope; + + case 'a': + // Spec says something about storing a list of markers, but it sounds + // equivalent to this check. + return ancestorInfo.aTagInScope; + + case 'nobr': + return ancestorInfo.nobrTagInScope; + } + + return null; + }; + + /** + * Given a ReactCompositeComponent instance, return a list of its recursive + * owners, starting at the root and ending with the instance itself. + */ + var findOwnerStack = function (instance) { + if (!instance) { + return []; + } + + var stack = []; + do { + stack.push(instance); + } while (instance = instance._currentElement._owner); + stack.reverse(); + return stack; + }; + + var didWarn = {}; + + validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) { + ancestorInfo = ancestorInfo || emptyAncestorInfo; + var parentInfo = ancestorInfo.current; + var parentTag = parentInfo && parentInfo.tag; + + if (childText != null) { + true ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0; + childTag = '#text'; + } + + var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo; + var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo); + var problematic = invalidParent || invalidAncestor; + + if (problematic) { + var ancestorTag = problematic.tag; + var ancestorInstance = problematic.instance; + + var childOwner = childInstance && childInstance._currentElement._owner; + var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner; + + var childOwners = findOwnerStack(childOwner); + var ancestorOwners = findOwnerStack(ancestorOwner); + + var minStackLen = Math.min(childOwners.length, ancestorOwners.length); + var i; + + var deepestCommon = -1; + for (i = 0; i < minStackLen; i++) { + if (childOwners[i] === ancestorOwners[i]) { + deepestCommon = i; + } else { + break; + } + } + + var UNKNOWN = '(unknown)'; + var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) { + return inst.getName() || UNKNOWN; + }); + var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) { + return inst.getName() || UNKNOWN; + }); + var ownerInfo = [].concat( + // If the parent and child instances have a common owner ancestor, start + // with that -- otherwise we just start with the parent's owners. + deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag, + // If we're warning about an invalid (non-parent) ancestry, add '...' + invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > '); + + var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo; + if (didWarn[warnKey]) { + return; + } + didWarn[warnKey] = true; + + var tagDisplayName = childTag; + var whitespaceInfo = ''; + if (childTag === '#text') { + if (/\S/.test(childText)) { + tagDisplayName = 'Text nodes'; + } else { + tagDisplayName = 'Whitespace text nodes'; + whitespaceInfo = ' Make sure you don\'t have any extra whitespace between tags on ' + 'each line of your source code.'; + } + } else { + tagDisplayName = '<' + childTag + '>'; + } + + if (invalidParent) { + var info = ''; + if (ancestorTag === 'table' && childTag === 'tr') { + info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.'; + } + true ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0; + } else { + true ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0; + } + } + }; + + validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo; + + // For testing + validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) { + ancestorInfo = ancestorInfo || emptyAncestorInfo; + var parentInfo = ancestorInfo.current; + var parentTag = parentInfo && parentInfo.tag; + return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo); + }; +} + +module.exports = validateDOMNesting; + +/***/ }), +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + + + + + +var _ExecutionEnvironment=__webpack_require__(4); +var _debounce=__webpack_require__(63);var _debounce2=_interopRequireDefault(_debounce); +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var win=_ExecutionEnvironment.canUseDOM?window:{screen:{}}; + +var dimensions={};var + +Dimensions=function(){function Dimensions(){_classCallCheck(this,Dimensions);}_createClass(Dimensions,null,[{key:'get',value:function get( +dimension){ +(0,_invariant2.default)(dimensions[dimension],'No dimension set for key '+dimension); +return dimensions[dimension]; +}},{key:'set',value:function set() + +{ +dimensions.window={ +fontScale:1, +height:win.innerHeight, +scale:win.devicePixelRatio||1, +width:win.innerWidth}; + + +dimensions.screen={ +fontScale:1, +height:win.screen.height, +scale:win.devicePixelRatio||1, +width:win.screen.width}; + +}}]);return Dimensions;}(); + + +Dimensions.set(); + +if(_ExecutionEnvironment.canUseDOM){ +window.addEventListener('resize',(0,_debounce2.default)(Dimensions.set,16),false); +} + +module.exports=Dimensions; + +/***/ }), +/* 82 */ +/***/ (function(module, exports, __webpack_require__) { + +var _ExecutionEnvironment=__webpack_require__(4);var _ExecutionEnvironment2=_interopRequireDefault(_ExecutionEnvironment);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + + + + + + + + +var isPreferredLanguageRTL=false; +var isRTLAllowed=true; +var isRTLForced=false; + +var isRTL=function isRTL(){ +if(isRTLForced){ +return true; +} +return isRTLAllowed&&isPreferredLanguageRTL; +}; + +var onChange=function onChange(){ +if(_ExecutionEnvironment2.default.canUseDOM){ +document.documentElement.setAttribute('dir',isRTL()?'rtl':'ltr'); +} +}; + +var I18nManager={ +allowRTL:function allowRTL(bool){ +isRTLAllowed=bool; +onChange(); +}, +forceRTL:function forceRTL(bool){ +isRTLForced=bool; +onChange(); +}, +setPreferredLanguageRTL:function setPreferredLanguageRTL(bool){ +isPreferredLanguageRTL=bool; +onChange(); +}, +get isRTL(){ +return isRTL(); +}}; + + +module.exports=I18nManager; + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +var _StyleRegistry=__webpack_require__(308);var _StyleRegistry2=_interopRequireDefault(_StyleRegistry);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} +var registry=new _StyleRegistry2.default(); +module.exports=registry; + +/***/ }), +/* 84 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _ViewStylePropTypes=__webpack_require__(44);var _ViewStylePropTypes2=_interopRequireDefault(_ViewStylePropTypes); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var numberOrString=(0,_propTypes.oneOfType)([_propTypes.number,_propTypes.string]); + +var ShadowOffsetPropType=(0,_propTypes.shape)({width:_propTypes.number,height:_propTypes.number}); +var TextAlignPropType=(0,_propTypes.oneOf)(['center','inherit','justify','justify-all','left','right']); +var WritingDirectionPropType=(0,_propTypes.oneOf)(['auto','ltr','rtl']); + +var TextOnlyStylePropTypes={ +color:_ColorPropType2.default, +fontFamily:_propTypes.string, +fontFeatureSettings:_propTypes.string, +fontSize:numberOrString, +fontStyle:_propTypes.string, +fontWeight:_propTypes.string, +letterSpacing:numberOrString, +lineHeight:numberOrString, +textAlign:TextAlignPropType, +textAlignVertical:(0,_propTypes.oneOf)(['auto','bottom','center','top']), +textDecorationLine:_propTypes.string, +textShadowColor:_ColorPropType2.default, +textShadowOffset:ShadowOffsetPropType, +textShadowRadius:_propTypes.number, +writingDirection:WritingDirectionPropType, + +textIndent:numberOrString, +textOverflow:_propTypes.string, +textRendering:(0,_propTypes.oneOf)(['auto','geometricPrecision','optimizeLegibility','optimizeSpeed']), +textTransform:(0,_propTypes.oneOf)(['capitalize','lowercase','none','uppercase']), +unicodeBidi:(0,_propTypes.oneOf)([ +'normal', +'bidi-override', +'embed', +'isolate', +'isolate-override', +'plaintext']), + +whiteSpace:_propTypes.string, +wordWrap:_propTypes.string, +MozOsxFontSmoothing:_propTypes.string, +WebkitFontSmoothing:_propTypes.string}; + + +module.exports=_extends({},_ViewStylePropTypes2.default, + +TextOnlyStylePropTypes); + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _applyLayout=__webpack_require__(91);var _applyLayout2=_interopRequireDefault(_applyLayout); +var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _BaseComponentPropTypes=__webpack_require__(151);var _BaseComponentPropTypes2=_interopRequireDefault(_BaseComponentPropTypes); +var _react=__webpack_require__(5); +var _createDOMElement=__webpack_require__(31);var _createDOMElement2=_interopRequireDefault(_createDOMElement); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _StyleSheetPropType=__webpack_require__(32);var _StyleSheetPropType2=_interopRequireDefault(_StyleSheetPropType); +var _TextStylePropTypes=__webpack_require__(84);var _TextStylePropTypes2=_interopRequireDefault(_TextStylePropTypes); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var + +Text=function(_Component){_inherits(Text,_Component);function Text(){_classCallCheck(this,Text);return _possibleConstructorReturn(this,(Text.__proto__||Object.getPrototypeOf(Text)).apply(this,arguments));}_createClass(Text,[{key:'getChildContext',value:function getChildContext() + + + + + + + + + + + + + + + + + + + + + +{ +return{isInAParentText:true}; +}},{key:'render',value:function render() + +{var _props= + + + + + + + + + + + + + + + + +this.props,dir=_props.dir,numberOfLines=_props.numberOfLines,onPress=_props.onPress,selectable=_props.selectable,style=_props.style,adjustsFontSizeToFit=_props.adjustsFontSizeToFit,allowFontScaling=_props.allowFontScaling,ellipsizeMode=_props.ellipsizeMode,lineBreakMode=_props.lineBreakMode,minimumFontScale=_props.minimumFontScale,onLayout=_props.onLayout,suppressHighlighting=_props.suppressHighlighting,otherProps=_objectWithoutProperties(_props,['dir','numberOfLines','onPress','selectable','style','adjustsFontSizeToFit','allowFontScaling','ellipsizeMode','lineBreakMode','minimumFontScale','onLayout','suppressHighlighting']); + +if(onPress){ +otherProps.accessible=true; +otherProps.onClick=onPress; +otherProps.onKeyDown=this._createEnterHandler(onPress); +} + + +otherProps.dir=dir!==undefined?dir:'auto'; +otherProps.style=[ +styles.initial, +this.context.isInAParentText!==true&&styles.preserveWhitespace, +style, +selectable===false&&styles.notSelectable, +numberOfLines===1&&styles.singleLineStyle, +onPress&&styles.pressable]; + + +return(0,_createDOMElement2.default)('div',otherProps); +}},{key:'_createEnterHandler',value:function _createEnterHandler( + +fn){ +return function(e){ +if(e.keyCode===13){ +fn&&fn(e); +} +}; +}}]);return Text;}(_react.Component);Text.displayName='Text';Text.childContextTypes={isInAParentText:_propTypes.bool};Text.contextTypes={isInAParentText:_propTypes.bool}; true?Text.propTypes=_extends({},_BaseComponentPropTypes2.default,{accessibilityRole:(0,_propTypes.oneOf)(['button','heading','link','listitem']),children:_propTypes.any,numberOfLines:_propTypes.number,onLayout:_propTypes.func,onPress:_propTypes.func,selectable:_propTypes.bool,style:(0,_StyleSheetPropType2.default)(_TextStylePropTypes2.default)}):void 0; + + +var styles=_StyleSheet2.default.create({ +initial:{ +borderWidth:0, +color:'inherit', +display:'inline', +font:'inherit', +margin:0, +padding:0, +textDecorationLine:'none', +wordWrap:'break-word'}, + +preserveWhitespace:{ +whiteSpace:'pre-wrap'}, + +notSelectable:{ +userSelect:'none'}, + +pressable:{ +cursor:'pointer'}, + +singleLineStyle:{ +maxWidth:'100%', +overflow:'hidden', +textOverflow:'ellipsis', +whiteSpace:'nowrap'}}); + + + +module.exports=(0,_applyLayout2.default)((0,_applyNativeMethods2.default)(Text)); + +/***/ }), +/* 86 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + + +var _UIManager=__webpack_require__(30);var _UIManager2=_interopRequireDefault(_UIManager);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + + + + + + +var TextInputState={ + + + +_currentlyFocusedNode:null, + + + + + +currentlyFocusedField:function currentlyFocusedField(){ +if(document.activeElement!==this._currentlyFocusedNode){ +this._currentlyFocusedNode=null; +} +return this._currentlyFocusedNode; +}, + + + + + + +focusTextInput:function focusTextInput(textFieldNode){ +if(document.activeElement!==textFieldNode&&textFieldNode!==null){ +this._currentlyFocusedNode=textFieldNode; +_UIManager2.default.focus(textFieldNode); +} +}, + + + + + + +blurTextInput:function blurTextInput(textFieldNode){ +if(document.activeElement===textFieldNode&&textFieldNode!==null){ +this._currentlyFocusedNode=null; +_UIManager2.default.blur(textFieldNode); +} +}}; + + +module.exports=TextInputState; + +/***/ }), +/* 87 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + + + + + + + + +var _createReactClass=__webpack_require__(49);var _createReactClass2=_interopRequireDefault(_createReactClass); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}var EdgeInsetsPropType=__webpack_require__(92);var React=__webpack_require__(5);var TimerMixin=__webpack_require__(95);var Touchable=__webpack_require__(59);var ensurePositiveDelayProps=__webpack_require__(88);var warning=__webpack_require__(1);var StyleSheet=__webpack_require__(8); + + + +var PRESS_RETENTION_OFFSET={top:20,left:20,right:20,bottom:30}; + + + + + + + + + + +var TouchableWithoutFeedback=(0,_createReactClass2.default)({ +mixins:[TimerMixin,Touchable.Mixin], + +propTypes:{ +accessible:_propTypes.bool, +accessibilityLabel:_propTypes.string, +accessibilityRole:_propTypes.string, + + + +disabled:_propTypes.bool, + + + + +onPress:_propTypes.func, +onPressIn:_propTypes.func, +onPressOut:_propTypes.func, + + + + + +onLayout:_propTypes.func, + +onLongPress:_propTypes.func, + + + + +delayPressIn:_propTypes.number, + + + +delayPressOut:_propTypes.number, + + + +delayLongPress:_propTypes.number, + + + + + + + +pressRetentionOffset:EdgeInsetsPropType, + + + + + + + + +hitSlop:EdgeInsetsPropType}, + + +getInitialState:function getInitialState(){ +return this.touchableGetInitialState(); +}, + +componentDidMount:function componentDidMount(){ +ensurePositiveDelayProps(this.props); +}, + +componentWillReceiveProps:function componentWillReceiveProps(nextProps){ +ensurePositiveDelayProps(nextProps); +}, + + + + + +touchableHandlePress:function touchableHandlePress(e){ +this.props.onPress&&this.props.onPress(e); +}, + +touchableHandleActivePressIn:function touchableHandleActivePressIn(e){ +this.props.onPressIn&&this.props.onPressIn(e); +}, + +touchableHandleActivePressOut:function touchableHandleActivePressOut(e){ +this.props.onPressOut&&this.props.onPressOut(e); +}, + +touchableHandleLongPress:function touchableHandleLongPress(e){ +this.props.onLongPress&&this.props.onLongPress(e); +}, + +touchableGetPressRectOffset:function touchableGetPressRectOffset(){ +return this.props.pressRetentionOffset||PRESS_RETENTION_OFFSET; +}, + +touchableGetHitSlop:function touchableGetHitSlop(){ +return this.props.hitSlop; +}, + +touchableGetHighlightDelayMS:function touchableGetHighlightDelayMS(){ +return this.props.delayPressIn||0; +}, + +touchableGetLongPressDelayMS:function touchableGetLongPressDelayMS(){ +return this.props.delayLongPress===0?0:this.props.delayLongPress||500; +}, + +touchableGetPressOutDelayMS:function touchableGetPressOutDelayMS(){ +return this.props.delayPressOut||0; +}, + +render:function render(){var _props= + + + + + + + + + + + + +this.props,delayLongPress=_props.delayLongPress,delayPressIn=_props.delayPressIn,delayPressOut=_props.delayPressOut,onLongPress=_props.onLongPress,onPress=_props.onPress,onPressIn=_props.onPressIn,onPressOut=_props.onPressOut,pressRetentionOffset=_props.pressRetentionOffset,other=_objectWithoutProperties(_props,['delayLongPress','delayPressIn','delayPressOut','onLongPress','onPress','onPressIn','onPressOut','pressRetentionOffset']); + + +var child=React.Children.only(this.props.children); +var children=child.props.children; +warning( +!child.type||child.type.displayName!=='Text', +'TouchableWithoutFeedback does not work well with Text children. Wrap children in a View instead. See '+( +child._owner&&child._owner.getName&&child._owner.getName()||'<unknown>')); + +if( +"development"!=='production'&& +Touchable.TOUCH_TARGET_DEBUG&& +child.type&& +child.type.displayName==='View') +{ +children=React.Children.toArray(children); +children.push(Touchable.renderDebugView({color:'red',hitSlop:this.props.hitSlop})); +} +var style=Touchable.TOUCH_TARGET_DEBUG&&child.type&&child.type.displayName==='Text'? +[styles.root,this.props.disabled&&styles.disabled,child.props.style,{color:'red'}]: +[styles.root,this.props.disabled&&styles.disabled,child.props.style]; +return React.cloneElement(child,_extends({}, +other,{ +accessible:this.props.accessible!==false, +onStartShouldSetResponder:this.touchableHandleStartShouldSetResponder, +onResponderTerminationRequest:this.touchableHandleResponderTerminationRequest, +onResponderGrant:this.touchableHandleResponderGrant, +onResponderMove:this.touchableHandleResponderMove, +onResponderRelease:this.touchableHandleResponderRelease, +onResponderTerminate:this.touchableHandleResponderTerminate, +style:style, +children:children})); + +}}); + + +var styles=StyleSheet.create({ +root:{ +cursor:'pointer'}, + +disabled:{ +cursor:'default'}}); + + + +module.exports=TouchableWithoutFeedback; + +/***/ }), +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + +var invariant=__webpack_require__(0); + +var ensurePositiveDelayProps=function ensurePositiveDelayProps(props){ +invariant( +!(props.delayPressIn<0||props.delayPressOut<0||props.delayLongPress<0), +'Touchable components cannot have negative delay properties'); + +}; + +module.exports=ensurePositiveDelayProps; + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +var _propsToAccessibilityComponent=__webpack_require__(337);var _propsToAccessibilityComponent2=_interopRequireDefault(_propsToAccessibilityComponent); +var _propsToAriaRole=__webpack_require__(90);var _propsToAriaRole2=_interopRequireDefault(_propsToAriaRole); +var _propsToTabIndex=__webpack_require__(338);var _propsToTabIndex2=_interopRequireDefault(_propsToTabIndex);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +module.exports={ +propsToAccessibilityComponent:_propsToAccessibilityComponent2.default, +propsToAriaRole:_propsToAriaRole2.default, +propsToTabIndex:_propsToTabIndex2.default}; + +/***/ }), +/* 90 */ +/***/ (function(module, exports) { + +var accessibilityComponentTypeToRole={ +button:'button', +none:'presentation'}; + + +var accessibilityTraitsToRole={ +adjustable:'slider', +button:'button', +header:'heading', +image:'img', +link:'link', +none:'presentation', +search:'search', +summary:'region'}; + + +var propsToAriaRole=function propsToAriaRole(_ref) + + + +{var accessibilityComponentType=_ref.accessibilityComponentType,accessibilityRole=_ref.accessibilityRole,accessibilityTraits=_ref.accessibilityTraits; +if(accessibilityRole){ +return accessibilityRole; +} +if(accessibilityTraits){ +var trait=Array.isArray(accessibilityTraits)?accessibilityTraits[0]:accessibilityTraits; +return accessibilityTraitsToRole[trait]; +} +if(accessibilityComponentType){ +return accessibilityComponentTypeToRole[accessibilityComponentType]; +} +}; + +module.exports=propsToAriaRole; + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + +var _ExecutionEnvironment=__webpack_require__(4); +var _debounce=__webpack_require__(63);var _debounce2=_interopRequireDefault(_debounce);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var emptyObject={}; +var registry={}; + +var id=1; +var guid=function guid(){return'r-'+id++;}; + +if(_ExecutionEnvironment.canUseDOM){ +var triggerAll=function triggerAll(){ +Object.keys(registry).forEach(function(key){ +var instance=registry[key]; +instance._handleLayout(); +}); +}; + +window.addEventListener('resize',(0,_debounce2.default)(triggerAll,16),false); +} + +var safeOverride=function safeOverride(original,next){ +if(original){ +return function prototypeOverride(){ +original.call(this); +next.call(this); +}; +} +return next; +}; + +var applyLayout=function applyLayout(Component){ +var componentDidMount=Component.prototype.componentDidMount; +var componentDidUpdate=Component.prototype.componentDidUpdate; +var componentWillUnmount=Component.prototype.componentWillUnmount; + +Component.prototype.componentDidMount=safeOverride( +componentDidMount, +function componentDidMount(){ +this._layoutState=emptyObject; +this._isMounted=true; +this._onLayoutId=guid(); +registry[this._onLayoutId]=this; +this._handleLayout(); +}); + + +Component.prototype.componentDidUpdate=safeOverride( +componentDidUpdate, +function componentDidUpdate(){ +this._handleLayout(); +}); + + +Component.prototype.componentWillUnmount=safeOverride( +componentWillUnmount, +function componentWillUnmount(){ +this._isMounted=false; +delete registry[this._onLayoutId]; +}); + + +Component.prototype._handleLayout=function(){var _this=this; +var layout=this._layoutState;var +onLayout=this.props.onLayout; + +if(onLayout){ +this.measure(function(x,y,width,height){ +if(!_this._isMounted)return; + +if( +layout.x!==x||layout.y!==y||layout.width!==width||layout.height!==height) +{ +_this._layoutState={x:x,y:y,width:width,height:height}; +var nativeEvent={layout:_this._layoutState}; +onLayout({nativeEvent:nativeEvent,timeStamp:Date.now()}); +} +}); +} +}; +return Component; +}; + +module.exports=applyLayout; + +/***/ }), +/* 92 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + +var _propTypes=__webpack_require__(3); + +var EdgeInsetsPropType=__webpack_require__(93)({ +top:_propTypes.number, +left:_propTypes.number, +bottom:_propTypes.number, +right:_propTypes.number}); + + +module.exports=EdgeInsetsPropType; + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + + + + + + + + + + + + +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant); +var _ReactPropTypeLocationNames=__webpack_require__(94);var _ReactPropTypeLocationNames2=_interopRequireDefault(_ReactPropTypeLocationNames); +var _ReactPropTypesSecret=__webpack_require__(157);var _ReactPropTypesSecret2=_interopRequireDefault(_ReactPropTypesSecret);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +function createStrictShapeTypeChecker( +shapeTypes) +{ +function checkType(isRequired,props,propName,componentName,location){ +if(!props[propName]){ +if(isRequired){ +(0,_invariant2.default)( +false, +'Required object `'+propName+'` was not specified in '+('`'+componentName+'`.')); + +} +return; +} +var propValue=props[propName]; +var propType=typeof propValue; +var locationName=location&&_ReactPropTypeLocationNames2.default[location]||'(unknown)'; +if(propType!=='object'){ +(0,_invariant2.default)( +false, +'Invalid '+locationName+' `'+propName+'` of type `'+propType+'` '+('supplied to `'+ +componentName+'`, expected `object`.')); + +} + + +var allKeys=_extends({},props[propName],shapeTypes); +for(var key in allKeys){ +var checker=shapeTypes[key]; +if(!checker){ +(0,_invariant2.default)( +false, +'Invalid props.'+propName+' key `'+key+'` supplied to `'+componentName+'`.'+'\nBad object: '+ + +JSON.stringify(props[propName],null,' ')+'\nValid keys: '+ + +JSON.stringify(Object.keys(shapeTypes),null,' ')); + +} +var error=checker(propValue,key,componentName,location,null,_ReactPropTypesSecret2.default); +if(error){ +(0,_invariant2.default)( +false, +error.message+'\nBad object: '+JSON.stringify(props[propName],null,' ')); + +} +} +} +function chainedCheckType( +props, +propName, +componentName, +location) +{ +return checkType(false,props,propName,componentName,location); +} +chainedCheckType.isRequired=checkType.bind(null,true); +return chainedCheckType; +} + +module.exports=createStrictShapeTypeChecker; + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + + + +var ReactPropTypeLocationNames={}; + +if(true){ +ReactPropTypeLocationNames={ +prop:'prop', +context:'context', +childContext:'child context'}; + +} + +module.exports=ReactPropTypeLocationNames; + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/* + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + + +var GLOBAL = typeof window === 'undefined' ? global : window; + +var setter = function(_setter, _clearer, array) { + return function(callback, delta) { + var id = _setter(function() { + _clearer.call(this, id); + callback.apply(this, arguments); + }.bind(this), delta); + + if (!this[array]) { + this[array] = [id]; + } else { + this[array].push(id); + } + return id; + }; +}; + +var clearer = function(_clearer, array) { + return function(id) { + if (this[array]) { + var index = this[array].indexOf(id); + if (index !== -1) { + this[array].splice(index, 1); + } + } + _clearer(id); + }; +}; + +var _timeouts = 'TimerMixin_timeouts'; +var _clearTimeout = clearer(GLOBAL.clearTimeout, _timeouts); +var _setTimeout = setter(GLOBAL.setTimeout, _clearTimeout, _timeouts); + +var _intervals = 'TimerMixin_intervals'; +var _clearInterval = clearer(GLOBAL.clearInterval, _intervals); +var _setInterval = setter(GLOBAL.setInterval, function() {/* noop */}, _intervals); + +var _immediates = 'TimerMixin_immediates'; +var _clearImmediate = clearer(GLOBAL.clearImmediate, _immediates); +var _setImmediate = setter(GLOBAL.setImmediate, _clearImmediate, _immediates); + +var _rafs = 'TimerMixin_rafs'; +var _cancelAnimationFrame = clearer(GLOBAL.cancelAnimationFrame, _rafs); +var _requestAnimationFrame = setter(GLOBAL.requestAnimationFrame, _cancelAnimationFrame, _rafs); + +var TimerMixin = { + componentWillUnmount: function() { + this[_timeouts] && this[_timeouts].forEach(function(id) { + GLOBAL.clearTimeout(id); + }); + this[_timeouts] = null; + this[_intervals] && this[_intervals].forEach(function(id) { + GLOBAL.clearInterval(id); + }); + this[_intervals] = null; + this[_immediates] && this[_immediates].forEach(function(id) { + GLOBAL.clearImmediate(id); + }); + this[_immediates] = null; + this[_rafs] && this[_rafs].forEach(function(id) { + GLOBAL.cancelAnimationFrame(id); + }); + this[_rafs] = null; + }, + + setTimeout: _setTimeout, + clearTimeout: _clearTimeout, + + setInterval: _setInterval, + clearInterval: _clearInterval, + + setImmediate: _setImmediate, + clearImmediate: _clearImmediate, + + requestAnimationFrame: _requestAnimationFrame, + cancelAnimationFrame: _cancelAnimationFrame, +}; + +module.exports = TimerMixin; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34))) + +/***/ }), +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var canDefineProperty = false; +if (true) { + try { + // $FlowFixMe https://github.com/facebook/flow/issues/285 + Object.defineProperty({}, 'x', { get: function () {} }); + canDefineProperty = true; + } catch (x) { + // IE will fail on defineProperty + } +} + +module.exports = canDefineProperty; + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +function getComponentName(instanceOrFiber) { + if (typeof instanceOrFiber.getName === 'function') { + // Stack reconciler + var instance = instanceOrFiber; + return instance.getName(); + } + if (typeof instanceOrFiber.tag === 'number') { + // Fiber reconciler + var fiber = instanceOrFiber; + var type = fiber.type; + + if (typeof type === 'string') { + return type; + } + if (typeof type === 'function') { + return type.displayName || type.name; + } + } + return null; +} + +module.exports = getComponentName; + +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +/* global Symbol */ + +var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; +var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + +/** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ +function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } +} + +module.exports = getIteratorFn; + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedStyle=__webpack_require__(170);var + +AnimatedProps=function(_Animated){_inherits(AnimatedProps,_Animated); + + + +function AnimatedProps( +props, +callback) +{_classCallCheck(this,AnimatedProps);var _this=_possibleConstructorReturn(this,(AnimatedProps.__proto__||Object.getPrototypeOf(AnimatedProps)).call(this)); + +if(props.style){ +props=_extends({}, +props,{ +style:new AnimatedStyle(props.style)}); + +} +_this._props=props; +_this._callback=callback; +_this.__attach();return _this; +}_createClass(AnimatedProps,[{key:'__getValue',value:function __getValue() + +{ +var props={}; +for(var key in this._props){ +var value=this._props[key]; +if(value instanceof Animated){ +props[key]=value.__getValue(); +}else{ +props[key]=value; +} +} +return props; +}},{key:'__getAnimatedValue',value:function __getAnimatedValue() + +{ +var props={}; +for(var key in this._props){ +var value=this._props[key]; +if(value instanceof Animated){ +props[key]=value.__getAnimatedValue(); +} +} +return props; +}},{key:'__attach',value:function __attach() + +{ +for(var key in this._props){ +var value=this._props[key]; +if(value instanceof Animated){ +value.__addChild(this); +} +} +}},{key:'__detach',value:function __detach() + +{ +for(var key in this._props){ +var value=this._props[key]; +if(value instanceof Animated){ +value.__removeChild(this); +} +} +}},{key:'update',value:function update() + +{ +this._callback(); +}}]);return AnimatedProps;}(Animated); + + +module.exports=AnimatedProps; + +/***/ }), +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var _bezier=__webpack_require__(180);var + + + + + + +Easing=function(){function Easing(){_classCallCheck(this,Easing);}_createClass(Easing,null,[{key:'step0',value:function step0( +n){ +return n>0?1:0; +}},{key:'step1',value:function step1( + +n){ +return n>=1?1:0; +}},{key:'linear',value:function linear( + +t){ +return t; +}},{key:'ease',value:function ease( + +t){ +return _ease(t); +}},{key:'quad',value:function quad( + +t){ +return t*t; +}},{key:'cubic',value:function cubic( + +t){ +return t*t*t; +}},{key:'poly',value:function poly( + +n){ +return function(t){return Math.pow(t,n);}; +}},{key:'sin',value:function sin( + +t){ +return 1-Math.cos(t*Math.PI/2); +}},{key:'circle',value:function circle( + +t){ +return 1-Math.sqrt(1-t*t); +}},{key:'exp',value:function exp( + +t){ +return Math.pow(2,10*(t-1)); +}},{key:'elastic',value:function elastic() + + + + + + + + + + + +{var bounciness=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1; +var p=bounciness*Math.PI; +return function(t){return 1-Math.pow(Math.cos(t*Math.PI/2),3)*Math.cos(t*p);}; +}},{key:'back',value:function back( + +s){ +if(s===undefined){ +s=1.70158; +} +return function(t){return t*t*((s+1)*t-s);}; +}},{key:'bounce',value:function bounce( + +t){ +if(t<1/2.75){ +return 7.5625*t*t; +} + +if(t<2/2.75){ +t-=1.5/2.75; +return 7.5625*t*t+0.75; +} + +if(t<2.5/2.75){ +t-=2.25/2.75; +return 7.5625*t*t+0.9375; +} + +t-=2.625/2.75; +return 7.5625*t*t+0.984375; +}},{key:'bezier',value:function bezier( + + +x1, +y1, +x2, +y2) +{ +return _bezier(x1,y1,x2,y2); +}},{key:'in',value:function _in( + + +easing) +{ +return easing; +}},{key:'out',value:function out( + + + + + +easing) +{ +return function(t){return 1-easing(1-t);}; +}},{key:'inOut',value:function inOut( + + + + + +easing) +{ +return function(t){ +if(t<0.5){ +return easing(t*2)/2; +} +return 1-easing((1-t)*2)/2; +}; +}}]);return Easing;}(); + + +var _ease=Easing.bezier(0.42,0,1,1); + + + +module.exports=Easing; + +/***/ }), +/* 101 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var ApplyAnimatedValues={ +current:function ApplyAnimatedValues(instance,props){ +if(instance.setNativeProps){ +instance.setNativeProps(props); +}else{ +return false; +} +}, +inject:function inject(apply){ +ApplyAnimatedValues.current=apply; +}}; + + +module.exports=ApplyAnimatedValues; + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var FlattenStyle={ +current:function current(style){return style;}, +inject:function inject(flatten){ +FlattenStyle.current=flatten; +}}; + + +module.exports=FlattenStyle; + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var InteractionManager={ +current:{ +createInteractionHandle:function createInteractionHandle(){}, +clearInteractionHandle:function clearInteractionHandle(){}}, + +inject:function inject(manager){ +InteractionManager.current=manager; +}}; + + +module.exports=InteractionManager; + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = function (arr, predicate, ctx) { + if (typeof Array.prototype.findIndex === 'function') { + return arr.findIndex(predicate, ctx); + } + + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + + var list = Object(arr); + var len = list.length; + + if (len === 0) { + return -1; + } + + for (var i = 0; i < len; i++) { + if (predicate.call(ctx, list[i], i, list)) { + return i; + } + } + + return -1; +}; + + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @typechecks + */ + +var emptyFunction = __webpack_require__(10); + +/** + * Upstream version of event listener. Does not take into account specific + * nature of platform. + */ +var EventListener = { + /** + * Listen to DOM events during the bubble phase. + * + * @param {DOMEventTarget} target DOM element to register listener on. + * @param {string} eventType Event type, e.g. 'click' or 'mouseover'. + * @param {function} callback Callback function. + * @return {object} Object with a `remove` method. + */ + listen: function listen(target, eventType, callback) { + if (target.addEventListener) { + target.addEventListener(eventType, callback, false); + return { + remove: function remove() { + target.removeEventListener(eventType, callback, false); + } + }; + } else if (target.attachEvent) { + target.attachEvent('on' + eventType, callback); + return { + remove: function remove() { + target.detachEvent('on' + eventType, callback); + } + }; + } + }, + + /** + * Listen to DOM events during the capture phase. + * + * @param {DOMEventTarget} target DOM element to register listener on. + * @param {string} eventType Event type, e.g. 'click' or 'mouseover'. + * @param {function} callback Callback function. + * @return {object} Object with a `remove` method. + */ + capture: function capture(target, eventType, callback) { + if (target.addEventListener) { + target.addEventListener(eventType, callback, true); + return { + remove: function remove() { + target.removeEventListener(eventType, callback, true); + } + }; + } else { + if (true) { + console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.'); + } + return { + remove: emptyFunction + }; + } + }, + + registerDefault: function registerDefault() {} +}; + +module.exports = EventListener; + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + + + +var camelize = __webpack_require__(188); + +var msPattern = /^-ms-/; + +/** + * Camelcases a hyphenated CSS property name, for example: + * + * > camelizeStyleName('background-color') + * < "backgroundColor" + * > camelizeStyleName('-moz-transition') + * < "MozTransition" + * > camelizeStyleName('-ms-transition') + * < "msTransition" + * + * As Andi Smith suggests + * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix + * is converted to lowercase `ms`. + * + * @param {string} string + * @return {string} + */ +function camelizeStyleName(string) { + return camelize(string.replace(msPattern, 'ms-')); +} + +module.exports = camelizeStyleName; + +/***/ }), +/* 107 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + */ + + + +/** + * @param {DOMElement} node input/textarea to focus + */ + +function focusNode(node) { + // IE8 can throw "Can't move focus to the control because it is invisible, + // not enabled, or of a type that does not accept the focus." for all kinds of + // reasons that are too expensive and fragile to test. + try { + node.focus(); + } catch (e) {} +} + +module.exports = focusNode; + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +/* eslint-disable fb-www/typeof-undefined */ + +/** + * Same as document.activeElement but wraps in a try-catch block. In IE it is + * not safe to call document.activeElement if there is nothing focused. + * + * The activeElement will be null only if the document or document body is not + * yet defined. + * + * @param {?DOMDocument} doc Defaults to current document. + * @return {?DOMElement} + */ +function getActiveElement(doc) /*?DOMElement*/{ + doc = doc || (typeof document !== 'undefined' ? document : undefined); + if (typeof doc === 'undefined') { + return null; + } + try { + return doc.activeElement || doc.body; + } catch (e) { + return doc.body; + } +} + +module.exports = getActiveElement; + +/***/ }), +/* 109 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * + */ + + + +/* eslint-disable fb-www/typeof-undefined */ +/* eslint-disable no-unused-vars */ + +var invariant = __webpack_require__(0); + +/** + * Checks if a value is empty. + */ +function isEmpty(value) { + if (Array.isArray(value)) { + return value.length === 0; + } else if (typeof value === 'object') { + if (value) { + !(!isIterable(value) || value.size === undefined) ? true ? invariant(false, 'isEmpty() does not support iterable collections.') : invariant(false) : void 0; + for (var _ in value) { + return false; + } + } + return true; + } else { + return !value; + } +} + +function isIterable(value) { + if (typeof Symbol === 'undefined') { + return false; + } + return value[Symbol.iterator]; +} + +module.exports = isEmpty; + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var uppercasePattern = /[A-Z]/g; +var msPattern = /^ms-/; +var cache = {}; + +function hyphenateStyleName(string) { + return string in cache + ? cache[string] + : cache[string] = string + .replace(uppercasePattern, '-$&') + .toLowerCase() + .replace(msPattern, '-ms-'); +} + +module.exports = hyphenateStyleName; + + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createPrefixer = __webpack_require__(202); + +var _createPrefixer2 = _interopRequireDefault(_createPrefixer); + +var _staticData = __webpack_require__(213); + +var _staticData2 = _interopRequireDefault(_staticData); + +var _cursor = __webpack_require__(204); + +var _cursor2 = _interopRequireDefault(_cursor); + +var _crossFade = __webpack_require__(203); + +var _crossFade2 = _interopRequireDefault(_crossFade); + +var _filter = __webpack_require__(205); + +var _filter2 = _interopRequireDefault(_filter); + +var _flex = __webpack_require__(206); + +var _flex2 = _interopRequireDefault(_flex); + +var _flexboxOld = __webpack_require__(207); + +var _flexboxOld2 = _interopRequireDefault(_flexboxOld); + +var _gradient = __webpack_require__(208); + +var _gradient2 = _interopRequireDefault(_gradient); + +var _imageSet = __webpack_require__(209); + +var _imageSet2 = _interopRequireDefault(_imageSet); + +var _position = __webpack_require__(210); + +var _position2 = _interopRequireDefault(_position); + +var _sizing = __webpack_require__(211); + +var _sizing2 = _interopRequireDefault(_sizing); + +var _transition = __webpack_require__(212); + +var _transition2 = _interopRequireDefault(_transition); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var plugins = [_crossFade2.default, _cursor2.default, _filter2.default, _flexboxOld2.default, _gradient2.default, _imageSet2.default, _position2.default, _sizing2.default, _transition2.default, _flex2.default]; + +exports.default = (0, _createPrefixer2.default)({ + prefixMap: _staticData2.default.prefixMap, + plugins: plugins +}); +module.exports = exports['default']; + +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = capitalizeString; +function capitalizeString(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} +module.exports = exports["default"]; + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + */ + + + +var emptyFunction = __webpack_require__(10); +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var ReactPropTypesSecret = __webpack_require__(114); +var checkPropTypes = __webpack_require__(219); + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<<anonymous>>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (true) { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + invariant( + false, + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + } else if ("development" !== 'production' && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + warning( + false, + 'You are manually calling a React.PropTypes validation ' + + 'function for the `%s` prop on `%s`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + '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 + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunction.thatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + true ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (propValue.hasOwnProperty(key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + true ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + warning( + false, + 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' + + 'received %s at index %s.', + getPostfixForTypeWarning(checker), + i + ); + return emptyFunction.thatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + + +/***/ }), +/* 114 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + + +/***/ }), +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * CSS properties which accept numbers but are not in units of "px". + */ + +var isUnitlessNumber = { + animationIterationCount: true, + borderImageOutset: true, + borderImageSlice: true, + borderImageWidth: true, + boxFlex: true, + boxFlexGroup: true, + boxOrdinalGroup: true, + columnCount: true, + flex: true, + flexGrow: true, + flexPositive: true, + flexShrink: true, + flexNegative: true, + flexOrder: true, + gridRow: true, + gridColumn: true, + fontWeight: true, + lineClamp: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + tabSize: true, + widows: true, + zIndex: true, + zoom: true, + + // SVG-related properties + fillOpacity: true, + floodOpacity: true, + stopOpacity: true, + strokeDasharray: true, + strokeDashoffset: true, + strokeMiterlimit: true, + strokeOpacity: true, + strokeWidth: true +}; + +/** + * @param {string} prefix vendor-specific prefix, eg: Webkit + * @param {string} key style name, eg: transitionDuration + * @return {string} style name prefixed with `prefix`, properly camelCased, eg: + * WebkitTransitionDuration + */ +function prefixKey(prefix, key) { + return prefix + key.charAt(0).toUpperCase() + key.substring(1); +} + +/** + * Support style names that may come passed in prefixed by adding permutations + * of vendor prefixes. + */ +var prefixes = ['Webkit', 'ms', 'Moz', 'O']; + +// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an +// infinite loop, because it iterates over the newly added props too. +Object.keys(isUnitlessNumber).forEach(function (prop) { + prefixes.forEach(function (prefix) { + isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop]; + }); +}); + +/** + * Most style properties can be unset by doing .style[prop] = '' but IE8 + * doesn't like doing that with shorthand properties so for the properties that + * IE8 breaks on, which are listed here, we instead unset each of the + * individual properties. See http://bugs.jquery.com/ticket/12385. + * The 4-value 'clock' properties like margin, padding, border-width seem to + * behave without any problems. Curiously, list-style works too without any + * special prodding. + */ +var shorthandPropertyExpansions = { + background: { + backgroundAttachment: true, + backgroundColor: true, + backgroundImage: true, + backgroundPositionX: true, + backgroundPositionY: true, + backgroundRepeat: true + }, + backgroundPosition: { + backgroundPositionX: true, + backgroundPositionY: true + }, + border: { + borderWidth: true, + borderStyle: true, + borderColor: true + }, + borderBottom: { + borderBottomWidth: true, + borderBottomStyle: true, + borderBottomColor: true + }, + borderLeft: { + borderLeftWidth: true, + borderLeftStyle: true, + borderLeftColor: true + }, + borderRight: { + borderRightWidth: true, + borderRightStyle: true, + borderRightColor: true + }, + borderTop: { + borderTopWidth: true, + borderTopStyle: true, + borderTopColor: true + }, + font: { + fontStyle: true, + fontVariant: true, + fontWeight: true, + fontSize: true, + lineHeight: true, + fontFamily: true + }, + outline: { + outlineWidth: true, + outlineStyle: true, + outlineColor: true + } +}; + +var CSSProperty = { + isUnitlessNumber: isUnitlessNumber, + shorthandPropertyExpansions: shorthandPropertyExpansions +}; + +module.exports = CSSProperty; + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var PooledClass = __webpack_require__(24); + +var invariant = __webpack_require__(0); + +/** + * A specialized pseudo-event module to help keep track of components waiting to + * be notified when their DOM representations are available for use. + * + * This implements `PooledClass`, so you should never need to instantiate this. + * Instead, use `CallbackQueue.getPooled()`. + * + * @class ReactMountReady + * @implements PooledClass + * @internal + */ + +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. + * + * @param {function} callback Invoked when `notifyAll` is invoked. + * @param {?object} context Context to call `callback` with. + * @internal + */ + + + CallbackQueue.prototype.enqueue = function enqueue(callback, context) { + this._callbacks = this._callbacks || []; + this._callbacks.push(callback); + this._contexts = this._contexts || []; + this._contexts.push(context); + }; + + /** + * Invokes all enqueued callbacks and clears the queue. This is invoked after + * the DOM representation of a component has been created or updated. + * + * @internal + */ + + + CallbackQueue.prototype.notifyAll = function notifyAll() { + var callbacks = this._callbacks; + var contexts = this._contexts; + var arg = this._arg; + if (callbacks && contexts) { + !(callbacks.length === contexts.length) ? true ? 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], arg); + } + callbacks.length = 0; + contexts.length = 0; + } + }; + + CallbackQueue.prototype.checkpoint = function checkpoint() { + return this._callbacks ? this._callbacks.length : 0; + }; + + CallbackQueue.prototype.rollback = function rollback(len) { + if (this._callbacks && this._contexts) { + this._callbacks.length = len; + this._contexts.length = len; + } + }; + + /** + * Resets the internal queue. + * + * @internal + */ + + + CallbackQueue.prototype.reset = function reset() { + this._callbacks = null; + this._contexts = null; + }; + + /** + * `PooledClass` looks for this. + */ + + + CallbackQueue.prototype.destructor = function destructor() { + this.reset(); + }; + + return CallbackQueue; +}(); + +module.exports = PooledClass.addPoolingTo(CallbackQueue); + +/***/ }), +/* 117 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMProperty = __webpack_require__(20); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactInstrumentation = __webpack_require__(11); + +var quoteAttributeValueForBrowser = __webpack_require__(292); +var warning = __webpack_require__(1); + +var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); +var illegalAttributeNameCache = {}; +var validatedAttributeNameCache = {}; + +function isAttributeNameSafe(attributeName) { + if (validatedAttributeNameCache.hasOwnProperty(attributeName)) { + return true; + } + if (illegalAttributeNameCache.hasOwnProperty(attributeName)) { + return false; + } + if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { + validatedAttributeNameCache[attributeName] = true; + return true; + } + illegalAttributeNameCache[attributeName] = true; + true ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0; + return false; +} + +function shouldIgnoreValue(propertyInfo, value) { + return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false; +} + +/** + * Operations for dealing with DOM properties. + */ +var DOMPropertyOperations = { + + /** + * Creates markup for the ID property. + * + * @param {string} id Unescaped ID. + * @return {string} Markup string. + */ + createMarkupForID: function (id) { + return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id); + }, + + setAttributeForID: function (node, id) { + node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id); + }, + + createMarkupForRoot: function () { + return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""'; + }, + + setAttributeForRoot: function (node) { + node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, ''); + }, + + /** + * Creates markup for a property. + * + * @param {string} name + * @param {*} value + * @return {?string} Markup string, or null if the property was invalid. + */ + createMarkupForProperty: function (name, value) { + var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; + if (propertyInfo) { + if (shouldIgnoreValue(propertyInfo, value)) { + return ''; + } + var attributeName = propertyInfo.attributeName; + if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { + return attributeName + '=""'; + } + return attributeName + '=' + quoteAttributeValueForBrowser(value); + } else if (DOMProperty.isCustomAttribute(name)) { + if (value == null) { + return ''; + } + return name + '=' + quoteAttributeValueForBrowser(value); + } + return null; + }, + + /** + * Creates markup for a custom property. + * + * @param {string} name + * @param {*} value + * @return {string} Markup string, or empty string if the property was invalid. + */ + createMarkupForCustomAttribute: function (name, value) { + if (!isAttributeNameSafe(name) || value == null) { + return ''; + } + return name + '=' + quoteAttributeValueForBrowser(value); + }, + + /** + * Sets the value for a property on a node. + * + * @param {DOMElement} node + * @param {string} name + * @param {*} value + */ + setValueForProperty: function (node, name, value) { + var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; + if (propertyInfo) { + var mutationMethod = propertyInfo.mutationMethod; + if (mutationMethod) { + mutationMethod(node, value); + } else if (shouldIgnoreValue(propertyInfo, value)) { + this.deleteValueForProperty(node, name); + return; + } else if (propertyInfo.mustUseProperty) { + // Contrary to `setAttribute`, object properties are properly + // `toString`ed by IE8/9. + node[propertyInfo.propertyName] = value; + } else { + var attributeName = propertyInfo.attributeName; + var namespace = propertyInfo.attributeNamespace; + // `setAttribute` with objects becomes only `[object]` in IE8/9, + // ('' + value) makes it output the correct toString()-value. + if (namespace) { + node.setAttributeNS(namespace, attributeName, '' + value); + } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { + node.setAttribute(attributeName, ''); + } else { + node.setAttribute(attributeName, '' + value); + } + } + } else if (DOMProperty.isCustomAttribute(name)) { + DOMPropertyOperations.setValueForAttribute(node, name, value); + return; + } + + if (true) { + var payload = {}; + payload[name] = value; + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'update attribute', + payload: payload + }); + } + }, + + setValueForAttribute: function (node, name, value) { + if (!isAttributeNameSafe(name)) { + return; + } + if (value == null) { + node.removeAttribute(name); + } else { + node.setAttribute(name, '' + value); + } + + if (true) { + var payload = {}; + payload[name] = value; + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'update attribute', + payload: payload + }); + } + }, + + /** + * Deletes an attributes from a node. + * + * @param {DOMElement} node + * @param {string} name + */ + deleteValueForAttribute: function (node, name) { + node.removeAttribute(name); + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'remove attribute', + payload: name + }); + } + }, + + /** + * Deletes the value for a property on a node. + * + * @param {DOMElement} node + * @param {string} name + */ + deleteValueForProperty: function (node, name) { + var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; + if (propertyInfo) { + var mutationMethod = propertyInfo.mutationMethod; + if (mutationMethod) { + mutationMethod(node, undefined); + } else if (propertyInfo.mustUseProperty) { + var propName = propertyInfo.propertyName; + if (propertyInfo.hasBooleanValue) { + node[propName] = false; + } else { + node[propName] = ''; + } + } else { + node.removeAttribute(propertyInfo.attributeName); + } + } else if (DOMProperty.isCustomAttribute(name)) { + node.removeAttribute(name); + } + + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, + type: 'remove attribute', + payload: name + }); + } + } + +}; + +module.exports = DOMPropertyOperations; + +/***/ }), +/* 118 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + + + +var ReactDOMComponentFlags = { + hasCachedChildNodes: 1 << 0 +}; + +module.exports = ReactDOMComponentFlags; + +/***/ }), +/* 119 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var LinkedValueUtils = __webpack_require__(70); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactUpdates = __webpack_require__(14); + +var warning = __webpack_require__(1); + +var didWarnValueLink = false; +var didWarnValueDefaultValue = false; + +function updateOptionsIfPendingUpdateAndMounted() { + if (this._rootNodeID && this._wrapperState.pendingUpdate) { + this._wrapperState.pendingUpdate = false; + + var props = this._currentElement.props; + var value = LinkedValueUtils.getValue(props); + + if (value != null) { + updateOptions(this, Boolean(props.multiple), value); + } + } +} + +function getDeclarationErrorAddendum(owner) { + if (owner) { + var name = owner.getName(); + if (name) { + return ' Check the render method of `' + name + '`.'; + } + } + return ''; +} + +var valuePropNames = ['value', 'defaultValue']; + +/** + * Validation function for `value` and `defaultValue`. + * @private + */ +function checkSelectPropTypes(inst, props) { + var owner = inst._currentElement._owner; + LinkedValueUtils.checkPropTypes('select', props, owner); + + if (props.valueLink !== undefined && !didWarnValueLink) { + true ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0; + didWarnValueLink = true; + } + + for (var i = 0; i < valuePropNames.length; i++) { + var propName = valuePropNames[i]; + if (props[propName] == null) { + continue; + } + var isArray = Array.isArray(props[propName]); + if (props.multiple && !isArray) { + true ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0; + } else if (!props.multiple && isArray) { + true ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0; + } + } +} + +/** + * @param {ReactDOMComponent} inst + * @param {boolean} multiple + * @param {*} propValue A stringable (with `multiple`, a list of stringables). + * @private + */ +function updateOptions(inst, multiple, propValue) { + var selectedValue, i; + var options = ReactDOMComponentTree.getNodeFromInstance(inst).options; + + if (multiple) { + selectedValue = {}; + for (i = 0; i < propValue.length; i++) { + selectedValue['' + propValue[i]] = true; + } + for (i = 0; i < options.length; i++) { + var selected = selectedValue.hasOwnProperty(options[i].value); + if (options[i].selected !== selected) { + options[i].selected = selected; + } + } + } else { + // Do not set `select.value` as exact behavior isn't consistent across all + // browsers for all cases. + selectedValue = '' + propValue; + for (i = 0; i < options.length; i++) { + if (options[i].value === selectedValue) { + options[i].selected = true; + return; + } + } + if (options.length) { + options[0].selected = true; + } + } +} + +/** + * Implements a <select> host component that allows optionally setting the + * props `value` and `defaultValue`. If `multiple` is false, the prop must be a + * stringable. If `multiple` is true, the prop must be an array of stringables. + * + * If `value` is not supplied (or null/undefined), user actions that change the + * selected option will trigger updates to the rendered options. + * + * If it is supplied (and not null/undefined), the rendered options will not + * update in response to user actions. Instead, the `value` prop must change in + * order for the rendered options to update. + * + * If `defaultValue` is provided, any options with the supplied values will be + * selected. + */ +var ReactDOMSelect = { + getHostProps: function (inst, props) { + return _assign({}, props, { + onChange: inst._wrapperState.onChange, + value: undefined + }); + }, + + mountWrapper: function (inst, props) { + if (true) { + checkSelectPropTypes(inst, props); + } + + var value = LinkedValueUtils.getValue(props); + inst._wrapperState = { + pendingUpdate: false, + initialValue: value != null ? value : props.defaultValue, + listeners: null, + onChange: _handleChange.bind(inst), + wasMultiple: Boolean(props.multiple) + }; + + if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { + true ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0; + didWarnValueDefaultValue = true; + } + }, + + getSelectValueContext: function (inst) { + // ReactDOMOption looks at this initial value so the initial generated + // markup has correct `selected` attributes + return inst._wrapperState.initialValue; + }, + + postUpdateWrapper: function (inst) { + var props = inst._currentElement.props; + + // After the initial mount, we control selected-ness manually so don't pass + // this value down + inst._wrapperState.initialValue = undefined; + + var wasMultiple = inst._wrapperState.wasMultiple; + inst._wrapperState.wasMultiple = Boolean(props.multiple); + + var value = LinkedValueUtils.getValue(props); + if (value != null) { + inst._wrapperState.pendingUpdate = false; + updateOptions(inst, Boolean(props.multiple), value); + } else if (wasMultiple !== Boolean(props.multiple)) { + // For simplicity, reapply `defaultValue` if `multiple` is toggled. + if (props.defaultValue != null) { + updateOptions(inst, Boolean(props.multiple), props.defaultValue); + } else { + // Revert the select back to its default unselected state. + updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : ''); + } + } + } +}; + +function _handleChange(event) { + var props = this._currentElement.props; + var returnValue = LinkedValueUtils.executeOnChange(props, event); + + if (this._rootNodeID) { + this._wrapperState.pendingUpdate = true; + } + ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this); + return returnValue; +} + +module.exports = ReactDOMSelect; + +/***/ }), +/* 120 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var emptyComponentFactory; + +var ReactEmptyComponentInjection = { + injectEmptyComponentFactory: function (factory) { + emptyComponentFactory = factory; + } +}; + +var ReactEmptyComponent = { + create: function (instantiate) { + return emptyComponentFactory(instantiate); + } +}; + +ReactEmptyComponent.injection = ReactEmptyComponentInjection; + +module.exports = ReactEmptyComponent; + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var ReactFeatureFlags = { + // When true, call console.time() before and .timeEnd() after each top-level + // render (both initial renders and updates). Useful when looking at prod-mode + // timeline profiles in Chrome, for example. + logTopLevelRenders: false +}; + +module.exports = ReactFeatureFlags; + +/***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +var genericComponentClass = null; +var textComponentClass = null; + +var ReactHostComponentInjection = { + // This accepts a class that receives the tag string. This is a catch all + // that can render any kind of tag. + injectGenericComponentClass: function (componentClass) { + genericComponentClass = componentClass; + }, + // This accepts a text component class that takes the text string to be + // rendered as props. + injectTextComponentClass: function (componentClass) { + textComponentClass = componentClass; + } +}; + +/** + * Get a host internal component class for a specific tag. + * + * @param {ReactElement} element The element to create. + * @return {function} The internal class constructor function. + */ +function createInternalComponent(element) { + !genericComponentClass ? true ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0; + return new genericComponentClass(element); +} + +/** + * @param {ReactText} text + * @return {ReactComponent} + */ +function createInstanceForText(text) { + return new textComponentClass(text); +} + +/** + * @param {ReactComponent} component + * @return {boolean} + */ +function isTextComponent(component) { + return component instanceof textComponentClass; +} + +var ReactHostComponent = { + createInternalComponent: createInternalComponent, + createInstanceForText: createInstanceForText, + isTextComponent: isTextComponent, + injection: ReactHostComponentInjection +}; + +module.exports = ReactHostComponent; + +/***/ }), +/* 123 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactDOMSelection = __webpack_require__(244); + +var containsNode = __webpack_require__(189); +var focusNode = __webpack_require__(107); +var getActiveElement = __webpack_require__(108); + +function isInDocument(node) { + return containsNode(document.documentElement, node); +} + +/** + * @ReactInputSelection: React input selection module. Based on Selection.js, + * but modified to be suitable for react and has a couple of bug fixes (doesn't + * assume buttons have range selections allowed). + * Input selection module for React. + */ +var ReactInputSelection = { + + hasSelectionCapabilities: function (elem) { + var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); + return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true'); + }, + + getSelectionInformation: function () { + var focusedElem = getActiveElement(); + return { + focusedElem: focusedElem, + selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null + }; + }, + + /** + * @restoreSelection: If any selection information was potentially lost, + * restore it. This is useful when performing operations that could remove dom + * nodes and place them back in, resulting in focus being lost. + */ + restoreSelection: function (priorSelectionInformation) { + var curFocusedElem = getActiveElement(); + var priorFocusedElem = priorSelectionInformation.focusedElem; + var priorSelectionRange = priorSelectionInformation.selectionRange; + if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) { + if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) { + ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange); + } + focusNode(priorFocusedElem); + } + }, + + /** + * @getSelection: Gets the selection bounds of a focused textarea, input or + * contentEditable node. + * -@input: Look up selection bounds of this input + * -@return {start: selectionStart, end: selectionEnd} + */ + getSelection: function (input) { + var selection; + + if ('selectionStart' in input) { + // Modern browser with input or textarea. + selection = { + start: input.selectionStart, + end: input.selectionEnd + }; + } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') { + // IE8 input. + var range = document.selection.createRange(); + // There can only be one selection per document in IE, so it must + // be in our element. + if (range.parentElement() === input) { + selection = { + start: -range.moveStart('character', -input.value.length), + end: -range.moveEnd('character', -input.value.length) + }; + } + } else { + // Content editable or old IE textarea. + selection = ReactDOMSelection.getOffsets(input); + } + + return selection || { start: 0, end: 0 }; + }, + + /** + * @setSelection: Sets the selection bounds of a textarea or input and focuses + * the input. + * -@input Set selection bounds of this input or textarea + * -@offsets Object of same form that is returned from get* + */ + setSelection: function (input, offsets) { + var start = offsets.start; + var end = offsets.end; + if (end === undefined) { + end = start; + } + + if ('selectionStart' in input) { + input.selectionStart = start; + input.selectionEnd = Math.min(end, input.value.length); + } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') { + var range = input.createTextRange(); + range.collapse(true); + range.moveStart('character', start); + range.moveEnd('character', end - start); + range.select(); + } else { + ReactDOMSelection.setOffsets(input, offsets); + } + } +}; + +module.exports = ReactInputSelection; + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var DOMLazyTree = __webpack_require__(26); +var DOMProperty = __webpack_require__(20); +var React = __webpack_require__(33); +var ReactBrowserEventEmitter = __webpack_require__(53); +var ReactCurrentOwner = __webpack_require__(17); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactDOMContainerInfo = __webpack_require__(236); +var ReactDOMFeatureFlags = __webpack_require__(238); +var ReactFeatureFlags = __webpack_require__(121); +var ReactInstanceMap = __webpack_require__(41); +var ReactInstrumentation = __webpack_require__(11); +var ReactMarkupChecksum = __webpack_require__(258); +var ReactReconciler = __webpack_require__(29); +var ReactUpdateQueue = __webpack_require__(73); +var ReactUpdates = __webpack_require__(14); + +var emptyObject = __webpack_require__(38); +var instantiateReactComponent = __webpack_require__(133); +var invariant = __webpack_require__(0); +var setInnerHTML = __webpack_require__(57); +var shouldUpdateReactComponent = __webpack_require__(79); +var warning = __webpack_require__(1); + +var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; +var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME; + +var ELEMENT_NODE_TYPE = 1; +var DOC_NODE_TYPE = 9; +var DOCUMENT_FRAGMENT_NODE_TYPE = 11; + +var instancesByReactRootID = {}; + +/** + * Finds the index of the first character + * that's not common between the two given strings. + * + * @return {number} the index of the character where the strings diverge + */ +function firstDifferenceIndex(string1, string2) { + var minLen = Math.min(string1.length, string2.length); + for (var i = 0; i < minLen; i++) { + if (string1.charAt(i) !== string2.charAt(i)) { + return i; + } + } + return string1.length === string2.length ? -1 : minLen; +} + +/** + * @param {DOMElement|DOMDocument} container DOM element that may contain + * a React component + * @return {?*} DOM element that may have the reactRoot ID, or null. + */ +function getReactRootElementInContainer(container) { + if (!container) { + return null; + } + + if (container.nodeType === DOC_NODE_TYPE) { + return container.documentElement; + } else { + return container.firstChild; + } +} + +function internalGetID(node) { + // If node is something like a window, document, or text node, none of + // which support attributes or a .getAttribute method, gracefully return + // the empty string, as if the attribute were missing. + return node.getAttribute && node.getAttribute(ATTR_NAME) || ''; +} + +/** + * Mounts this component and inserts it into the DOM. + * + * @param {ReactComponent} componentInstance The instance to mount. + * @param {DOMElement} container DOM element to mount into. + * @param {ReactReconcileTransaction} transaction + * @param {boolean} shouldReuseMarkup If true, do not insert markup + */ +function mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) { + var markerName; + if (ReactFeatureFlags.logTopLevelRenders) { + var wrappedElement = wrapperInstance._currentElement.props.child; + var type = wrappedElement.type; + markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name); + console.time(markerName); + } + + var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */ + ); + + if (markerName) { + console.timeEnd(markerName); + } + + wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance; + ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction); +} + +/** + * Batched mount. + * + * @param {ReactComponent} componentInstance The instance to mount. + * @param {DOMElement} container DOM element to mount into. + * @param {boolean} shouldReuseMarkup If true, do not insert markup + */ +function batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) { + var transaction = ReactUpdates.ReactReconcileTransaction.getPooled( + /* useCreateElement */ + !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement); + transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context); + ReactUpdates.ReactReconcileTransaction.release(transaction); +} + +/** + * Unmounts a component and removes it from the DOM. + * + * @param {ReactComponent} instance React component instance. + * @param {DOMElement} container DOM element to unmount from. + * @final + * @internal + * @see {ReactMount.unmountComponentAtNode} + */ +function unmountComponentFromNode(instance, container, safely) { + if (true) { + ReactInstrumentation.debugTool.onBeginFlush(); + } + ReactReconciler.unmountComponent(instance, safely); + if (true) { + ReactInstrumentation.debugTool.onEndFlush(); + } + + if (container.nodeType === DOC_NODE_TYPE) { + container = container.documentElement; + } + + // http://jsperf.com/emptying-a-node + while (container.lastChild) { + container.removeChild(container.lastChild); + } +} + +/** + * True if the supplied DOM node has a direct React-rendered child that is + * not a React root element. Useful for warning in `render`, + * `unmountComponentAtNode`, etc. + * + * @param {?DOMElement} node The candidate DOM node. + * @return {boolean} True if the DOM element contains a direct child that was + * rendered by React but is not a root element. + * @internal + */ +function hasNonRootReactChild(container) { + var rootEl = getReactRootElementInContainer(container); + if (rootEl) { + var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl); + return !!(inst && inst._hostParent); + } +} + +/** + * True if the supplied DOM node is a React DOM element and + * it has been rendered by another copy of React. + * + * @param {?DOMElement} node The candidate DOM node. + * @return {boolean} True if the DOM has been rendered by another copy of React + * @internal + */ +function nodeIsRenderedByOtherInstance(container) { + var rootEl = getReactRootElementInContainer(container); + return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl)); +} + +/** + * True if the supplied DOM node is a valid node element. + * + * @param {?DOMElement} node The candidate DOM node. + * @return {boolean} True if the DOM is a valid DOM node. + * @internal + */ +function isValidContainer(node) { + return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)); +} + +/** + * True if the supplied DOM node is a valid React node element. + * + * @param {?DOMElement} node The candidate DOM node. + * @return {boolean} True if the DOM is a valid React DOM node. + * @internal + */ +function isReactNode(node) { + return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME)); +} + +function getHostRootInstanceInContainer(container) { + var rootEl = getReactRootElementInContainer(container); + var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl); + return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null; +} + +function getTopLevelWrapperInContainer(container) { + var root = getHostRootInstanceInContainer(container); + return root ? root._hostContainerInfo._topLevelWrapper : null; +} + +/** + * Temporary (?) hack so that we can store all top-level pending updates on + * composites instead of having to worry about different types of components + * here. + */ +var topLevelRootCounter = 1; +var TopLevelWrapper = function () { + this.rootID = topLevelRootCounter++; +}; +TopLevelWrapper.prototype.isReactComponent = {}; +if (true) { + TopLevelWrapper.displayName = 'TopLevelWrapper'; +} +TopLevelWrapper.prototype.render = function () { + return this.props.child; +}; +TopLevelWrapper.isReactTopLevelWrapper = true; + +/** + * Mounting is the process of initializing a React component by creating its + * representative DOM elements and inserting them into a supplied `container`. + * Any prior content inside `container` is destroyed in the process. + * + * ReactMount.render( + * component, + * document.getElementById('container') + * ); + * + * <div id="container"> <-- Supplied `container`. + * <div data-reactid=".3"> <-- Rendered reactRoot of React + * // ... component. + * </div> + * </div> + * + * Inside of `container`, the first element rendered is the "reactRoot". + */ +var ReactMount = { + + TopLevelWrapper: TopLevelWrapper, + + /** + * Used by devtools. The keys are not important. + */ + _instancesByReactRootID: instancesByReactRootID, + + /** + * This is a hook provided to support rendering React components while + * ensuring that the apparent scroll position of its `container` does not + * change. + * + * @param {DOMElement} container The `container` being rendered into. + * @param {function} renderCallback This must be called once to do the render. + */ + scrollMonitor: function (container, renderCallback) { + renderCallback(); + }, + + /** + * Take a component that's already mounted into the DOM and replace its props + * @param {ReactComponent} prevComponent component instance already in the DOM + * @param {ReactElement} nextElement component instance to render + * @param {DOMElement} container container to render into + * @param {?function} callback function triggered on completion + */ + _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) { + ReactMount.scrollMonitor(container, function () { + ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext); + if (callback) { + ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback); + } + }); + + return prevComponent; + }, + + /** + * Render a new component into the DOM. Hooked by hooks! + * + * @param {ReactElement} nextElement element to render + * @param {DOMElement} container container to render into + * @param {boolean} shouldReuseMarkup if we should skip the markup insertion + * @return {ReactComponent} nextComponent + */ + _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) { + // Various parts of our code (such as ReactCompositeComponent's + // _renderValidatedComponent) assume that calls to render aren't nested; + // verify that that's the case. + true ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0; + + !isValidContainer(container) ? true ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0; + + ReactBrowserEventEmitter.ensureScrollValueMonitoring(); + var componentInstance = instantiateReactComponent(nextElement, false); + + // The initial render is synchronous but any updates that happen during + // rendering, in componentWillMount or componentDidMount, will be batched + // according to the current batching strategy. + + ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context); + + var wrapperID = componentInstance._instance.rootID; + instancesByReactRootID[wrapperID] = componentInstance; + + return componentInstance; + }, + + /** + * Renders a React component into the DOM in the supplied `container`. + * + * If the React component was previously rendered into `container`, this will + * perform an update on it and only mutate the DOM as necessary to reflect the + * latest React component. + * + * @param {ReactComponent} parentComponent The conceptual parent of this render tree. + * @param {ReactElement} nextElement Component element to render. + * @param {DOMElement} container DOM element to render into. + * @param {?function} callback function triggered on completion + * @return {ReactComponent} Component instance rendered in `container`. + */ + renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) { + !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? true ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0; + return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback); + }, + + _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) { + ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render'); + !React.isValidElement(nextElement) ? true ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : + // Check if it quacks like an element + nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0; + + true ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0; + + var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement }); + + var nextContext; + if (parentComponent) { + var parentInst = ReactInstanceMap.get(parentComponent); + nextContext = parentInst._processChildContext(parentInst._context); + } else { + nextContext = emptyObject; + } + + var prevComponent = getTopLevelWrapperInContainer(container); + + if (prevComponent) { + var prevWrappedElement = prevComponent._currentElement; + var prevElement = prevWrappedElement.props.child; + if (shouldUpdateReactComponent(prevElement, nextElement)) { + var publicInst = prevComponent._renderedComponent.getPublicInstance(); + var updatedCallback = callback && function () { + callback.call(publicInst); + }; + ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback); + return publicInst; + } else { + ReactMount.unmountComponentAtNode(container); + } + } + + var reactRootElement = getReactRootElementInContainer(container); + var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement); + var containerHasNonRootReactChild = hasNonRootReactChild(container); + + if (true) { + true ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0; + + if (!containerHasReactMarkup || reactRootElement.nextSibling) { + var rootElementSibling = reactRootElement; + while (rootElementSibling) { + if (internalGetID(rootElementSibling)) { + true ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0; + break; + } + rootElementSibling = rootElementSibling.nextSibling; + } + } + } + + var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild; + var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance(); + if (callback) { + callback.call(component); + } + return component; + }, + + /** + * Renders a React component into the DOM in the supplied `container`. + * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render + * + * If the React component was previously rendered into `container`, this will + * perform an update on it and only mutate the DOM as necessary to reflect the + * latest React component. + * + * @param {ReactElement} nextElement Component element to render. + * @param {DOMElement} container DOM element to render into. + * @param {?function} callback function triggered on completion + * @return {ReactComponent} Component instance rendered in `container`. + */ + render: function (nextElement, container, callback) { + return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback); + }, + + /** + * Unmounts and destroys the React component rendered in the `container`. + * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode + * + * @param {DOMElement} container DOM element containing a React component. + * @return {boolean} True if a component was found in and unmounted from + * `container` + */ + unmountComponentAtNode: function (container) { + // Various parts of our code (such as ReactCompositeComponent's + // _renderValidatedComponent) assume that calls to render aren't nested; + // verify that that's the case. (Strictly speaking, unmounting won't cause a + // render but we still don't expect to be in a render call here.) + true ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0; + + !isValidContainer(container) ? true ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0; + + if (true) { + true ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0; + } + + var prevComponent = getTopLevelWrapperInContainer(container); + if (!prevComponent) { + // Check if the node being unmounted was rendered by React, but isn't a + // root node. + var containerHasNonRootReactChild = hasNonRootReactChild(container); + + // Check if the container itself is a React root node. + var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME); + + if (true) { + true ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0; + } + + return false; + } + delete instancesByReactRootID[prevComponent._instance.rootID]; + ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false); + return true; + }, + + _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) { + !isValidContainer(container) ? true ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0; + + if (shouldReuseMarkup) { + var rootElement = getReactRootElementInContainer(container); + if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) { + ReactDOMComponentTree.precacheNode(instance, rootElement); + return; + } else { + var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); + rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); + + var rootMarkup = rootElement.outerHTML; + rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum); + + var normalizedMarkup = markup; + if (true) { + // because rootMarkup is retrieved from the DOM, various normalizations + // will have occurred which will not be present in `markup`. Here, + // insert markup into a <div> or <iframe> depending on the container + // type to perform the same normalizations before comparing. + var normalizer; + if (container.nodeType === ELEMENT_NODE_TYPE) { + normalizer = document.createElement('div'); + normalizer.innerHTML = markup; + normalizedMarkup = normalizer.innerHTML; + } else { + normalizer = document.createElement('iframe'); + document.body.appendChild(normalizer); + normalizer.contentDocument.write(markup); + normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML; + document.body.removeChild(normalizer); + } + } + + var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup); + var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20); + + !(container.nodeType !== DOC_NODE_TYPE) ? true ? invariant(false, 'You\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s', difference) : _prodInvariant('42', difference) : void 0; + + if (true) { + true ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\n%s', difference) : void 0; + } + } + } + + !(container.nodeType !== DOC_NODE_TYPE) ? true ? invariant(false, 'You\'re trying to render a component to the document but you didn\'t use server rendering. We can\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0; + + if (transaction.useCreateElement) { + while (container.lastChild) { + container.removeChild(container.lastChild); + } + DOMLazyTree.insertTreeBefore(container, markup, null); + } else { + setInnerHTML(container, markup); + ReactDOMComponentTree.precacheNode(instance, container.firstChild); + } + + if (true) { + var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild); + if (hostNode._debugID !== 0) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: hostNode._debugID, + type: 'mount', + payload: markup.toString() + }); + } + } + } +}; + +module.exports = ReactMount; + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var React = __webpack_require__(33); + +var invariant = __webpack_require__(0); + +var ReactNodeTypes = { + HOST: 0, + COMPOSITE: 1, + EMPTY: 2, + + getType: function (node) { + if (node === null || node === false) { + return ReactNodeTypes.EMPTY; + } else if (React.isValidElement(node)) { + if (typeof node.type === 'function') { + return ReactNodeTypes.COMPOSITE; + } else { + return ReactNodeTypes.HOST; + } + } + true ? true ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0; + } +}; + +module.exports = ReactNodeTypes; + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + +/***/ }), +/* 127 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var EventPluginUtils = __webpack_require__(40); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var isEndish = EventPluginUtils.isEndish, + isMoveish = EventPluginUtils.isMoveish, + isStartish = EventPluginUtils.isStartish; + +/** + * Tracks the position and time of each active touch by `touch.identifier`. We + * should typically only see IDs in the range of 1-20 because IDs get recycled + * when touches end and start again. + */ + +var MAX_TOUCH_BANK = 20; +var touchBank = []; +var touchHistory = { + touchBank: touchBank, + numberActiveTouches: 0, + // If there is only one active touch, we remember its location. This prevents + // us having to loop through all of the touches all the time in the most + // common case. + indexOfSingleActiveTouch: -1, + mostRecentTimeStamp: 0 +}; + +function timestampForTouch(touch) { + // The legacy internal implementation provides "timeStamp", which has been + // renamed to "timestamp". Let both work for now while we iron it out + // TODO (evv): rename timeStamp to timestamp in internal code + return touch.timeStamp || touch.timestamp; +} + +/** + * TODO: Instead of making gestures recompute filtered velocity, we could + * include a built in velocity computation that can be reused globally. + */ +function createTouchRecord(touch) { + return { + touchActive: true, + startPageX: touch.pageX, + startPageY: touch.pageY, + startTimeStamp: timestampForTouch(touch), + currentPageX: touch.pageX, + currentPageY: touch.pageY, + currentTimeStamp: timestampForTouch(touch), + previousPageX: touch.pageX, + previousPageY: touch.pageY, + previousTimeStamp: timestampForTouch(touch) + }; +} + +function resetTouchRecord(touchRecord, touch) { + touchRecord.touchActive = true; + touchRecord.startPageX = touch.pageX; + touchRecord.startPageY = touch.pageY; + touchRecord.startTimeStamp = timestampForTouch(touch); + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchRecord.previousPageX = touch.pageX; + touchRecord.previousPageY = touch.pageY; + touchRecord.previousTimeStamp = timestampForTouch(touch); +} + +function getTouchIdentifier(_ref) { + var identifier = _ref.identifier; + + !(identifier != null) ? true ? invariant(false, 'Touch object is missing identifier.') : _prodInvariant('138') : void 0; + true ? warning(identifier <= MAX_TOUCH_BANK, 'Touch identifier %s is greater than maximum supported %s which causes ' + 'performance issues backfilling array locations for all of the indices.', identifier, MAX_TOUCH_BANK) : void 0; + return identifier; +} + +function recordTouchStart(touch) { + var identifier = getTouchIdentifier(touch); + var touchRecord = touchBank[identifier]; + if (touchRecord) { + resetTouchRecord(touchRecord, touch); + } else { + touchBank[identifier] = createTouchRecord(touch); + } + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); +} + +function recordTouchMove(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + if (touchRecord) { + touchRecord.touchActive = true; + touchRecord.previousPageX = touchRecord.currentPageX; + touchRecord.previousPageY = touchRecord.currentPageY; + touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } else { + console.error('Cannot record touch move without a touch start.\n' + 'Touch Move: %s\n', 'Touch Bank: %s', printTouch(touch), printTouchBank()); + } +} + +function recordTouchEnd(touch) { + var touchRecord = touchBank[getTouchIdentifier(touch)]; + if (touchRecord) { + touchRecord.touchActive = false; + touchRecord.previousPageX = touchRecord.currentPageX; + touchRecord.previousPageY = touchRecord.currentPageY; + touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; + touchRecord.currentPageX = touch.pageX; + touchRecord.currentPageY = touch.pageY; + touchRecord.currentTimeStamp = timestampForTouch(touch); + touchHistory.mostRecentTimeStamp = timestampForTouch(touch); + } else { + console.error('Cannot record touch end without a touch start.\n' + 'Touch End: %s\n', 'Touch Bank: %s', printTouch(touch), printTouchBank()); + } +} + +function printTouch(touch) { + return JSON.stringify({ + identifier: touch.identifier, + pageX: touch.pageX, + pageY: touch.pageY, + timestamp: timestampForTouch(touch) + }); +} + +function printTouchBank() { + var printed = JSON.stringify(touchBank.slice(0, MAX_TOUCH_BANK)); + if (touchBank.length > MAX_TOUCH_BANK) { + printed += ' (original size: ' + touchBank.length + ')'; + } + return printed; +} + +var ResponderTouchHistoryStore = { + recordTouchTrack: function (topLevelType, nativeEvent) { + if (isMoveish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchMove); + } else if (isStartish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchStart); + touchHistory.numberActiveTouches = nativeEvent.touches.length; + if (touchHistory.numberActiveTouches === 1) { + touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier; + } + } else if (isEndish(topLevelType)) { + nativeEvent.changedTouches.forEach(recordTouchEnd); + touchHistory.numberActiveTouches = nativeEvent.touches.length; + if (touchHistory.numberActiveTouches === 1) { + for (var i = 0; i < touchBank.length; i++) { + var touchTrackToCheck = touchBank[i]; + if (touchTrackToCheck != null && touchTrackToCheck.touchActive) { + touchHistory.indexOfSingleActiveTouch = i; + break; + } + } + if (true) { + var activeRecord = touchBank[touchHistory.indexOfSingleActiveTouch]; + true ? warning(activeRecord != null && activeRecord.touchActive, 'Cannot find single active touch.') : void 0; + } + } + } + }, + + + touchHistory: touchHistory +}; + +module.exports = ResponderTouchHistoryStore; + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ViewportMetrics = { + + currentScrollLeft: 0, + + currentScrollTop: 0, + + refreshScrollValues: function (scrollPosition) { + ViewportMetrics.currentScrollLeft = scrollPosition.x; + ViewportMetrics.currentScrollTop = scrollPosition.y; + } + +}; + +module.exports = ViewportMetrics; + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +/** + * Accumulates items that must not be null or undefined into the first one. This + * is used to conserve memory by avoiding array allocations, and thus sacrifices + * API cleanness. Since `current` can be null before being passed in and not + * null after this function, make sure to assign it back to `current`: + * + * `a = accumulateInto(a, b);` + * + * This API should be sparingly used. Try `accumulate` for something cleaner. + * + * @return {*|array<*>} An accumulation of items. + */ + +function accumulateInto(current, next) { + !(next != null) ? true ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0; + + if (current == null) { + return next; + } + + // Both are not empty. Warning: Never call x.concat(y) when you are not + // certain that x is an Array (x could be a string with concat method). + if (Array.isArray(current)) { + if (Array.isArray(next)) { + current.push.apply(current, next); + return current; + } + current.push(next); + return current; + } + + if (Array.isArray(next)) { + // A bit too dangerous to mutate `next`. + return [current].concat(next); + } + + return [current, next]; +} + +module.exports = accumulateInto; + +/***/ }), +/* 130 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +/** + * @param {array} arr an "accumulation" of items which is either an Array or + * a single item. Useful when paired with the `accumulate` module. This is a + * simple utility that allows us to reason about a collection of items, but + * handling the case when there is exactly one item (and we do not need to + * allocate an array). + */ + +function forEachAccumulated(arr, cb, scope) { + if (Array.isArray(arr)) { + arr.forEach(cb, scope); + } else if (arr) { + cb.call(scope, arr); + } +} + +module.exports = forEachAccumulated; + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactNodeTypes = __webpack_require__(125); + +function getHostComponentFromComposite(inst) { + var type; + + while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) { + inst = inst._renderedComponent; + } + + if (type === ReactNodeTypes.HOST) { + return inst._renderedComponent; + } else if (type === ReactNodeTypes.EMPTY) { + return null; + } +} + +module.exports = getHostComponentFromComposite; + +/***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ExecutionEnvironment = __webpack_require__(4); + +var contentKey = null; + +/** + * Gets the key used to access text content on a DOM node. + * + * @return {?string} Key used to access text content. + * @internal + */ +function getTextContentAccessor() { + if (!contentKey && ExecutionEnvironment.canUseDOM) { + // Prefer textContent to innerText because many browsers support both but + // SVG <text> elements don't support innerText even when <div> does. + contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText'; + } + return contentKey; +} + +module.exports = getTextContentAccessor; + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2), + _assign = __webpack_require__(6); + +var ReactCompositeComponent = __webpack_require__(233); +var ReactEmptyComponent = __webpack_require__(120); +var ReactHostComponent = __webpack_require__(122); + +var getNextDebugID = __webpack_require__(360); +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +// To avoid a cyclic dependency, we create the final class in this module +var ReactCompositeComponentWrapper = function (element) { + this.construct(element); +}; + +function getDeclarationErrorAddendum(owner) { + if (owner) { + var name = owner.getName(); + if (name) { + return ' Check the render method of `' + name + '`.'; + } + } + return ''; +} + +/** + * Check if the type reference is a known internal type. I.e. not a user + * provided composite type. + * + * @param {function} type + * @return {boolean} Returns true if this is a valid internal type. + */ +function isInternalComponentType(type) { + return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function'; +} + +/** + * Given a ReactNode, create an instance that will actually be mounted. + * + * @param {ReactNode} node + * @param {boolean} shouldHaveDebugID + * @return {object} A new instance of the element's constructor. + * @protected + */ +function instantiateReactComponent(node, shouldHaveDebugID) { + var instance; + + if (node === null || node === false) { + instance = ReactEmptyComponent.create(instantiateReactComponent); + } else if (typeof node === 'object') { + var element = node; + var type = element.type; + if (typeof type !== 'function' && typeof type !== 'string') { + var info = ''; + if (true) { + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.'; + } + } + info += getDeclarationErrorAddendum(element._owner); + true ? true ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0; + } + + // Special case string values + if (typeof element.type === 'string') { + instance = ReactHostComponent.createInternalComponent(element); + } else if (isInternalComponentType(element.type)) { + // This is temporarily available for custom components that are not string + // representations. I.e. ART. Once those are updated to use the string + // representation, we can drop this code path. + instance = new element.type(element); + + // We renamed this. Allow the old name for compat. :( + if (!instance.getHostNode) { + instance.getHostNode = instance.getNativeNode; + } + } else { + instance = new ReactCompositeComponentWrapper(element); + } + } else if (typeof node === 'string' || typeof node === 'number') { + instance = ReactHostComponent.createInstanceForText(node); + } else { + true ? true ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0; + } + + if (true) { + true ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0; + } + + // These two fields are used by the DOM and ART diffing algorithms + // respectively. Instead of using expandos on components, we should be + // storing the state needed by the diffing algorithms elsewhere. + instance._mountIndex = 0; + instance._mountImage = null; + + if (true) { + instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0; + } + + // Internal instances should fully constructed at this point, so they should + // not get any new fields added to them at this point. + if (true) { + if (Object.preventExtensions) { + Object.preventExtensions(instance); + } + } + + return instance; +} + +_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, { + _instantiateReactComponent: instantiateReactComponent +}); + +module.exports = instantiateReactComponent; + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +/** + * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary + */ + +var supportedInputTypes = { + 'color': true, + 'date': true, + 'datetime': true, + 'datetime-local': true, + 'email': true, + 'month': true, + 'number': true, + 'password': true, + 'range': true, + 'search': true, + 'tel': true, + 'text': true, + 'time': true, + 'url': true, + 'week': true +}; + +function isTextInputElement(elem) { + var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); + + if (nodeName === 'input') { + return !!supportedInputTypes[elem.type]; + } + + if (nodeName === 'textarea') { + return true; + } + + return false; +} + +module.exports = isTextInputElement; + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ExecutionEnvironment = __webpack_require__(4); +var escapeTextContentForBrowser = __webpack_require__(56); +var setInnerHTML = __webpack_require__(57); + +/** + * Set the textContent property of a node, ensuring that whitespace is preserved + * even in IE8. innerText is a poor substitute for textContent and, among many + * issues, inserts <br> instead of the literal newline chars. innerHTML behaves + * as it should. + * + * @param {DOMElement} node + * @param {string} text + * @internal + */ +var setTextContent = function (node, text) { + if (text) { + var firstChild = node.firstChild; + + if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) { + firstChild.nodeValue = text; + return; + } + } + node.textContent = text; +}; + +if (ExecutionEnvironment.canUseDOM) { + if (!('textContent' in document.documentElement)) { + setTextContent = function (node, text) { + if (node.nodeType === 3) { + node.nodeValue = text; + return; + } + setInnerHTML(node, escapeTextContentForBrowser(text)); + }; + } +} + +module.exports = setTextContent; + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var ReactCurrentOwner = __webpack_require__(17); +var REACT_ELEMENT_TYPE = __webpack_require__(252); + +var getIteratorFn = __webpack_require__(289); +var invariant = __webpack_require__(0); +var KeyEscapeUtils = __webpack_require__(69); +var warning = __webpack_require__(1); + +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. + */ + +var didWarnAboutMaps = false; + +/** + * Generate a key string that identifies a component within a set. + * + * @param {*} component A component that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ +function getComponentKey(component, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (component && typeof component === 'object' && component.key != null) { + // Explicit key + return KeyEscapeUtils.escape(component.key); + } + // Implicit key determined by the index in the set + return index.toString(36); +} + +/** + * @param {?*} children Children tree container. + * @param {!string} nameSoFar Name of the key path so far. + * @param {!function} callback Callback to invoke with each child found. + * @param {?*} traverseContext Used to pass information throughout the traversal + * process. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + 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. + nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getComponentKey(child, i); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + var iteratorFn = getIteratorFn(children); + if (iteratorFn) { + var iterator = iteratorFn.call(children); + var step; + if (iteratorFn !== children.entries) { + var ii = 0; + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getComponentKey(child, ii++); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + if (true) { + var mapsAsChildrenAddendum = ''; + if (ReactCurrentOwner.current) { + var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); + if (mapsAsChildrenOwnerName) { + mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; + } + } + true ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; + didWarnAboutMaps = true; + } + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + child = entry[1]; + nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } + } + } else if (type === 'object') { + var addendum = ''; + if (true) { + addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; + if (children._isReactElement) { + addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.'; + } + if (ReactCurrentOwner.current) { + var name = ReactCurrentOwner.current.getName(); + if (name) { + addendum += ' Check the render method of `' + name + '`.'; + } + } + } + var childrenString = String(children); + true ? true ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; + } + } + + return subtreeCount; +} + +/** + * Traverses children that are typically specified as `props.children`, but + * might also be specified through attributes: + * + * - `traverseAllChildren(this.props.children, ...)` + * - `traverseAllChildren(this.props.leftPanelChildren, ...)` + * + * The `traverseContext` is an optional argument that is passed through the + * entire traversal. It can be used to store accumulations or anything else that + * the callback might find relevant. + * + * @param {?*} children Children tree object. + * @param {!function} callback To invoke upon traversing each child. + * @param {?*} traverseContext Context for traversal. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildren(children, callback, traverseContext) { + if (children == null) { + return 0; + } + + return traverseAllChildrenImpl(children, '', callback, traverseContext); +} + +module.exports = traverseAllChildren; + +/***/ }), +/* 137 */ +/***/ (function(module, exports) { + +var Platform={ +OS:'web', +select:function select(obj){return'web'in obj?obj.web:obj.default;}}; + + +module.exports=Platform; + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + + + + + +var _ReactNativePropRegistry=__webpack_require__(145);var _ReactNativePropRegistry2=_interopRequireDefault(_ReactNativePropRegistry); +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +function getStyle(style){ +if(typeof style==='number'){ +return _ReactNativePropRegistry2.default.getByID(style); +} +return style; +} + +function flattenStyle(style){ +if(!style){ +return undefined; +} + +if(true){ +(0,_invariant2.default)(style!==true,'style may be false but not true'); +} + +if(!Array.isArray(style)){ +return getStyle(style); +} + +var result={}; +for(var i=0,styleLength=style.length;i<styleLength;++i){ +var computedStyle=flattenStyle(style[i]); +if(computedStyle){ +for(var key in computedStyle){ +var value=computedStyle[key]; +result[key]=value; +} +} +} +return result; +} + +module.exports=flattenStyle; + +/***/ }), +/* 139 */ +/***/ (function(module, exports) { + +var ImageResizeMode={ +center:'center', +contain:'contain', +cover:'cover', +none:'none', +repeat:'repeat', +stretch:'stretch'}; + + +module.exports=ImageResizeMode; + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _BorderPropTypes=__webpack_require__(152);var _BorderPropTypes2=_interopRequireDefault(_BorderPropTypes); +var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _ImageResizeMode=__webpack_require__(139);var _ImageResizeMode2=_interopRequireDefault(_ImageResizeMode); +var _LayoutPropTypes=__webpack_require__(153);var _LayoutPropTypes2=_interopRequireDefault(_LayoutPropTypes); +var _ShadowPropTypes=__webpack_require__(154);var _ShadowPropTypes2=_interopRequireDefault(_ShadowPropTypes); +var _TransformPropTypes=__webpack_require__(155);var _TransformPropTypes2=_interopRequireDefault(_TransformPropTypes); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +module.exports=_extends({},_BorderPropTypes2.default,_LayoutPropTypes2.default,_ShadowPropTypes2.default,_TransformPropTypes2.default,{ + + + + +backgroundColor:_ColorPropType2.default, +opacity:_propTypes.number, +resizeMode:(0,_propTypes.oneOf)(Object.keys(_ImageResizeMode2.default)), + + + +overlayColor:_propTypes.string, +tintColor:_ColorPropType2.default, + + + +boxShadow:_propTypes.string}); + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); +var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _createDOMElement=__webpack_require__(31);var _createDOMElement2=_interopRequireDefault(_createDOMElement); +var _ImageLoader=__webpack_require__(339);var _ImageLoader2=_interopRequireDefault(_ImageLoader); +var _ImageResizeMode=__webpack_require__(139);var _ImageResizeMode2=_interopRequireDefault(_ImageResizeMode); +var _ImageStylePropTypes=__webpack_require__(140);var _ImageStylePropTypes2=_interopRequireDefault(_ImageStylePropTypes); +var _ImageUriCache=__webpack_require__(323);var _ImageUriCache2=_interopRequireDefault(_ImageUriCache); +var _requestIdleCallback=__webpack_require__(346);var _requestIdleCallback2=_interopRequireDefault(_requestIdleCallback); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _StyleSheetPropType=__webpack_require__(32);var _StyleSheetPropType2=_interopRequireDefault(_StyleSheetPropType); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _propTypes=__webpack_require__(3); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var emptyObject={}; + +var STATUS_ERRORED='ERRORED'; +var STATUS_LOADED='LOADED'; +var STATUS_LOADING='LOADING'; +var STATUS_PENDING='PENDING'; +var STATUS_IDLE='IDLE'; + +var ImageSourcePropType=(0,_propTypes.oneOfType)([ +(0,_propTypes.shape)({ +height:_propTypes.number, +uri:_propTypes.string.isRequired, +width:_propTypes.number}),_propTypes.string]); + + + + +var getImageState=function getImageState(uri,isPreviouslyLoaded){ +return isPreviouslyLoaded?STATUS_LOADED:uri?STATUS_PENDING:STATUS_IDLE; +}; + +var resolveAssetDimensions=function resolveAssetDimensions(source){ +if(typeof source==='object'){var +height=source.height,width=source.width; +return{height:height,width:width}; +} +}; + +var resolveAssetSource=function resolveAssetSource(source){ +return(typeof source==='object'?source.uri:source)||null; +};var + +Image=function(_Component){_inherits(Image,_Component);_createClass(Image,null,[{key:'getSize',value:function getSize( + + + + + + + + + + + + + + + + + + + + +uri,success,failure){ +_ImageLoader2.default.getSize(uri,success,failure); +}},{key:'prefetch',value:function prefetch( + +uri){ +return _ImageLoader2.default.prefetch(uri); +}}]); + + + +function Image(props,context){_classCallCheck(this,Image);var _this=_possibleConstructorReturn(this,(Image.__proto__||Object.getPrototypeOf(Image)).call(this, +props,context));_this. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +_onError=function(){var _this$props= +_this.props,onError=_this$props.onError,source=_this$props.source; +_this._updateImageState(STATUS_ERRORED); +if(onError){ +onError({ +nativeEvent:{ +error:'Failed to load resource '+resolveAssetSource(source)+' (404)'}}); + + +} +_this._onLoadEnd(); +};_this. + +_onLoad=function(e){var _this$props2= +_this.props,onLoad=_this$props2.onLoad,source=_this$props2.source; +var event={nativeEvent:e}; +_ImageUriCache2.default.add(resolveAssetSource(source)); +_this._updateImageState(STATUS_LOADED); +if(onLoad){ +onLoad(event); +} +_this._onLoadEnd(); +};var uri=resolveAssetSource(props.source);var isPreviouslyLoaded=_ImageUriCache2.default.has(uri);_this.state={shouldDisplaySource:isPreviouslyLoaded};_this._imageState=getImageState(uri,isPreviouslyLoaded);isPreviouslyLoaded&&_ImageUriCache2.default.add(uri);_this._isMounted=false;return _this;}_createClass(Image,[{key:'componentDidMount',value:function componentDidMount(){this._isMounted=true;if(this._imageState===STATUS_PENDING){this._createImageLoader();}}},{key:'componentDidUpdate',value:function componentDidUpdate(){if(this._imageState===STATUS_PENDING){this._createImageLoader();}}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps(nextProps){var uri=resolveAssetSource(this.props.source);var nextUri=resolveAssetSource(nextProps.source);if(uri!==nextUri){_ImageUriCache2.default.remove(uri);var isPreviouslyLoaded=_ImageUriCache2.default.has(nextUri);isPreviouslyLoaded&&_ImageUriCache2.default.add(uri);this._updateImageState(getImageState(uri,isPreviouslyLoaded));}}},{key:'componentWillUnmount',value:function componentWillUnmount(){_ImageUriCache2.default.remove(resolveAssetSource(this.props.source));this._destroyImageLoader();this._isMounted=false;}},{key:'render',value:function render(){var shouldDisplaySource=this.state.shouldDisplaySource;var _props=this.props,accessibilityLabel=_props.accessibilityLabel,accessible=_props.accessible,children=_props.children,defaultSource=_props.defaultSource,onLayout=_props.onLayout,source=_props.source,testID=_props.testID,onError=_props.onError,onLoad=_props.onLoad,onLoadEnd=_props.onLoadEnd,onLoadStart=_props.onLoadStart,resizeMode=_props.resizeMode,other=_objectWithoutProperties(_props,['accessibilityLabel','accessible','children','defaultSource','onLayout','source','testID','onError','onLoad','onLoadEnd','onLoadStart','resizeMode']);var displayImage=resolveAssetSource(shouldDisplaySource?source:defaultSource);var imageSizeStyle=resolveAssetDimensions(shouldDisplaySource?source:defaultSource);var backgroundImage=displayImage?'url("'+displayImage+'")':null;var originalStyle=_StyleSheet2.default.flatten(this.props.style);var finalResizeMode=resizeMode||originalStyle.resizeMode||_ImageResizeMode2.default.cover;var style=_StyleSheet2.default.flatten([styles.initial,imageSizeStyle,originalStyle,resizeModeStyles[finalResizeMode],backgroundImage&&{backgroundImage:backgroundImage}]);delete style.resizeMode;var hiddenImage=displayImage?(0,_createDOMElement2.default)('img',{src:displayImage,style:[_StyleSheet2.default.absoluteFill,styles.img]}):null;return _react2.default.createElement(_View2.default,_extends({},other,{accessibilityLabel:accessibilityLabel,accessible:accessible,onLayout:onLayout,style:style,testID:testID}),hiddenImage,children);}},{key:'_createImageLoader',value:function _createImageLoader(){var _this2=this;this._destroyImageLoader();this._loadRequest=(0,_requestIdleCallback2.default)(function(){var uri=resolveAssetSource(_this2.props.source);_this2._imageRequestId=_ImageLoader2.default.load(uri,_this2._onLoad,_this2._onError);_this2._onLoadStart();});}},{key:'_destroyImageLoader',value:function _destroyImageLoader(){if(this._loadRequest){(0,_requestIdleCallback.cancelIdleCallback)(this._loadRequest);this._loadRequest=null;}if(this._imageRequestId){_ImageLoader2.default.abort(this._imageRequestId);this._imageRequestId=null;}}},{key:'_onLoadEnd',value:function _onLoadEnd() + +{var +onLoadEnd=this.props.onLoadEnd; +if(onLoadEnd){ +onLoadEnd(); +} +}},{key:'_onLoadStart',value:function _onLoadStart() + +{var +onLoadStart=this.props.onLoadStart; +this._updateImageState(STATUS_LOADING); +if(onLoadStart){ +onLoadStart(); +} +}},{key:'_updateImageState',value:function _updateImageState( + +status){ +this._imageState=status; +var shouldDisplaySource= +this._imageState===STATUS_LOADED||this._imageState===STATUS_LOADING; + +if(shouldDisplaySource!==this.state.shouldDisplaySource){ +if(this._isMounted){ +this.setState(function(){return{shouldDisplaySource:shouldDisplaySource};}); +} +} +}}]);return Image;}(_react.Component);Image.displayName='Image';Image.defaultProps={style:emptyObject};Image.resizeMode=_ImageResizeMode2.default; true?Image.propTypes=_extends({},_ViewPropTypes2.default,{children:_propTypes.any,defaultSource:ImageSourcePropType,onError:_propTypes.func,onLayout:_propTypes.func,onLoad:_propTypes.func,onLoadEnd:_propTypes.func,onLoadStart:_propTypes.func,resizeMode:(0,_propTypes.oneOf)(Object.keys(_ImageResizeMode2.default)),source:ImageSourcePropType,style:(0,_StyleSheetPropType2.default)(_ImageStylePropTypes2.default)}):void 0; + + +var styles=_StyleSheet2.default.create({ +initial:{ +backgroundColor:'transparent', +backgroundPosition:'center', +backgroundRepeat:'no-repeat', +backgroundSize:'cover', +zIndex:0}, + +img:{ +height:'100%', +opacity:0, +width:'100%', +zIndex:-1}}); + + + +var resizeModeStyles=_StyleSheet2.default.create({ +center:{ +backgroundSize:'auto', +backgroundPosition:'center'}, + +contain:{ +backgroundSize:'contain'}, + +cover:{ +backgroundSize:'cover'}, + +none:{ +backgroundSize:'auto'}, + +repeat:{ +backgroundSize:'auto', +backgroundRepeat:'repeat'}, + +stretch:{ +backgroundSize:'100% 100%'}}); + + + +module.exports=(0,_applyNativeMethods2.default)(Image); + +/***/ }), +/* 142 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var invariant=__webpack_require__(0); +var isEmpty=__webpack_require__(109); +var warning=__webpack_require__(1); + +function defaultGetRowData(dataBlob,sectionID,rowID){ +return dataBlob[sectionID][rowID]; +} + +function defaultGetSectionHeaderData(dataBlob,sectionID){ +return dataBlob[sectionID]; +}var + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ListViewDataSource=function(){ + + + + + + + + + + + + + + + + + + + + + + + + + +function ListViewDataSource(params){_classCallCheck(this,ListViewDataSource); +invariant( +params&&typeof params.rowHasChanged==='function', +'Must provide a rowHasChanged function.'); + +this._rowHasChanged=params.rowHasChanged; +this._getRowData=params.getRowData||defaultGetRowData; +this._sectionHeaderHasChanged=params.sectionHeaderHasChanged; +this._getSectionHeaderData=params.getSectionHeaderData||defaultGetSectionHeaderData; + +this._dataBlob=null; +this._dirtyRows=[]; +this._dirtySections=[]; +this._cachedRowCount=0; + + + +this.rowIdentities=[]; +this.sectionIdentities=[]; +}_createClass(ListViewDataSource,[{key:'cloneWithRows',value:function cloneWithRows( + + + + + + + + + + + + + + + + + + +dataBlob, +rowIdentities) +{ +var rowIds=rowIdentities?[rowIdentities]:null; +if(!this._sectionHeaderHasChanged){ +this._sectionHeaderHasChanged=function(){return false;}; +} +return this.cloneWithRowsAndSections({s1:dataBlob},['s1'],rowIds); +}},{key:'cloneWithRowsAndSections',value:function cloneWithRowsAndSections( + + + + + + + + + + + + + +dataBlob, +sectionIdentities, +rowIdentities) +{ +invariant( +typeof this._sectionHeaderHasChanged==='function', +'Must provide a sectionHeaderHasChanged function with section data.'); + +var newSource=new ListViewDataSource({ +getRowData:this._getRowData, +getSectionHeaderData:this._getSectionHeaderData, +rowHasChanged:this._rowHasChanged, +sectionHeaderHasChanged:this._sectionHeaderHasChanged}); + +newSource._dataBlob=dataBlob; +if(sectionIdentities){ +newSource.sectionIdentities=sectionIdentities; +}else{ +newSource.sectionIdentities=Object.keys(dataBlob); +} +if(rowIdentities){ +newSource.rowIdentities=rowIdentities; +}else{ +newSource.rowIdentities=[]; +newSource.sectionIdentities.forEach(function(sectionID){ +newSource.rowIdentities.push(Object.keys(dataBlob[sectionID])); +}); +} +newSource._cachedRowCount=countRows(newSource.rowIdentities); + +newSource._calculateDirtyArrays(this._dataBlob,this.sectionIdentities,this.rowIdentities); + +return newSource; +}},{key:'getRowCount',value:function getRowCount() + +{ +return this._cachedRowCount; +}},{key:'getRowAndSectionCount',value:function getRowAndSectionCount() + +{ +return this._cachedRowCount+this.sectionIdentities.length; +}},{key:'rowShouldUpdate',value:function rowShouldUpdate( + + + + +sectionIndex,rowIndex){ +var needsUpdate=this._dirtyRows[sectionIndex][rowIndex]; +warning( +needsUpdate!==undefined, +'missing dirtyBit for section, row: '+sectionIndex+', '+rowIndex); + +return needsUpdate; +}},{key:'getRowData',value:function getRowData( + + + + +sectionIndex,rowIndex){ +var sectionID=this.sectionIdentities[sectionIndex]; +var rowID=this.rowIdentities[sectionIndex][rowIndex]; +warning( +sectionID!==undefined&&rowID!==undefined, +'rendering invalid section, row: '+sectionIndex+', '+rowIndex); + +return this._getRowData(this._dataBlob,sectionID,rowID); +}},{key:'getRowIDForFlatIndex',value:function getRowIDForFlatIndex( + + + + + +index){ +var accessIndex=index; +for(var ii=0;ii<this.sectionIdentities.length;ii++){ +if(accessIndex>=this.rowIdentities[ii].length){ +accessIndex-=this.rowIdentities[ii].length; +}else{ +return this.rowIdentities[ii][accessIndex]; +} +} +return null; +}},{key:'getSectionIDForFlatIndex',value:function getSectionIDForFlatIndex( + + + + + +index){ +var accessIndex=index; +for(var ii=0;ii<this.sectionIdentities.length;ii++){ +if(accessIndex>=this.rowIdentities[ii].length){ +accessIndex-=this.rowIdentities[ii].length; +}else{ +return this.sectionIdentities[ii]; +} +} +return null; +}},{key:'getSectionLengths',value:function getSectionLengths() + + + + +{ +var results=[]; +for(var ii=0;ii<this.sectionIdentities.length;ii++){ +results.push(this.rowIdentities[ii].length); +} +return results; +}},{key:'sectionHeaderShouldUpdate',value:function sectionHeaderShouldUpdate( + + + + +sectionIndex){ +var needsUpdate=this._dirtySections[sectionIndex]; +warning(needsUpdate!==undefined,'missing dirtyBit for section: '+sectionIndex); +return needsUpdate; +}},{key:'getSectionHeaderData',value:function getSectionHeaderData( + + + + +sectionIndex){ +if(!this._getSectionHeaderData){ +return null; +} +var sectionID=this.sectionIdentities[sectionIndex]; +warning(sectionID!==undefined,'renderSection called on invalid section: '+sectionIndex); +return this._getSectionHeaderData(this._dataBlob,sectionID); +}},{key:'_calculateDirtyArrays',value:function _calculateDirtyArrays( + + + + + + + + + + + + + + + + + + + + + +prevDataBlob, +prevSectionIDs, +prevRowIDs) +{ + +var prevSectionsHash=keyedDictionaryFromArray(prevSectionIDs); +var prevRowsHash={}; +for(var ii=0;ii<prevRowIDs.length;ii++){ +var sectionID=prevSectionIDs[ii]; +warning(!prevRowsHash[sectionID],'SectionID appears more than once: '+sectionID); +prevRowsHash[sectionID]=keyedDictionaryFromArray(prevRowIDs[ii]); +} + + +this._dirtySections=[]; +this._dirtyRows=[]; + +var dirty; +for(var sIndex=0;sIndex<this.sectionIdentities.length;sIndex++){ +var sectionID=this.sectionIdentities[sIndex]; + +dirty=!prevSectionsHash[sectionID]; +var sectionHeaderHasChanged=this._sectionHeaderHasChanged; +if(!dirty&§ionHeaderHasChanged){ +dirty=sectionHeaderHasChanged( +this._getSectionHeaderData(prevDataBlob,sectionID), +this._getSectionHeaderData(this._dataBlob,sectionID)); + +} +this._dirtySections.push(!!dirty); + +this._dirtyRows[sIndex]=[]; +for(var rIndex=0;rIndex<this.rowIdentities[sIndex].length;rIndex++){ +var rowID=this.rowIdentities[sIndex][rIndex]; + +dirty= +!prevSectionsHash[sectionID]|| +!prevRowsHash[sectionID][rowID]|| +this._rowHasChanged( +this._getRowData(prevDataBlob,sectionID,rowID), +this._getRowData(this._dataBlob,sectionID,rowID)); + +this._dirtyRows[sIndex].push(!!dirty); +} +} +}}]);return ListViewDataSource;}(); + + +function countRows(allRowIDs){ +var totalRows=0; +for(var sectionIdx=0;sectionIdx<allRowIDs.length;sectionIdx++){ +var rowIDs=allRowIDs[sectionIdx]; +totalRows+=rowIDs.length; +} +return totalRows; +} + +function keyedDictionaryFromArray(arr){ +if(isEmpty(arr)){ +return{}; +} +var result={}; +for(var ii=0;ii<arr.length;ii++){ +var key=arr[ii]; +warning(!result[key],'Value appears more than once in array: '+key); +result[key]=true; +} +return result; +} + +module.exports=ListViewDataSource; + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _TextStylePropTypes=__webpack_require__(84);var _TextStylePropTypes2=_interopRequireDefault(_TextStylePropTypes); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var TextInputOnlyStylePropTypes={ + +resize:(0,_propTypes.oneOf)(['none','vertical','horizontal','both'])}; + + +module.exports=_extends({},_TextStylePropTypes2.default, + +TextInputOnlyStylePropTypes); + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + + + + + + + + + + +var _createReactClass=__webpack_require__(49);var _createReactClass2=_interopRequireDefault(_createReactClass); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}var NativeMethodsMixin=__webpack_require__(60);var React=__webpack_require__(5);var StyleSheet=__webpack_require__(8);var TimerMixin=__webpack_require__(95);var Touchable=__webpack_require__(59);var TouchableWithoutFeedback=__webpack_require__(87);var View=__webpack_require__(12); + +var ensurePositiveDelayProps=__webpack_require__(88); +var flattenStyle=StyleSheet.flatten; + + + +var PRESS_RETENTION_OFFSET={top:20,left:20,right:20,bottom:30}; + + + + + + + + + + + + + + + + + + + + + + +var TouchableOpacity=(0,_createReactClass2.default)({ +mixins:[TimerMixin,Touchable.Mixin,NativeMethodsMixin], + +propTypes:_extends({}, +TouchableWithoutFeedback.propTypes,{ + + + + +activeOpacity:_propTypes.number, +focusedOpacity:_propTypes.number}), + + +getDefaultProps:function getDefaultProps(){ +return{ +activeOpacity:0.2, +focusedOpacity:0.7}; + +}, + +getInitialState:function getInitialState(){ +return this.touchableGetInitialState(); +}, + +componentDidMount:function componentDidMount(){ +ensurePositiveDelayProps(this.props); +}, + +componentWillReceiveProps:function componentWillReceiveProps(nextProps){ +ensurePositiveDelayProps(nextProps); +}, + +setOpacityTo:function setOpacityTo(value,duration){ +this.setNativeProps({ +style:{ +opacity:value, +transitionDuration:duration/1000+'s'}}); + + +}, + + + + + +touchableHandleActivePressIn:function touchableHandleActivePressIn(e){ +if(e.dispatchConfig.registrationName==='onResponderGrant'){ +this._opacityActive(0); +}else{ +this._opacityActive(150); +} +this.props.onPressIn&&this.props.onPressIn(e); +}, + +touchableHandleActivePressOut:function touchableHandleActivePressOut(e){ +this._opacityInactive(250); +this.props.onPressOut&&this.props.onPressOut(e); +}, + +touchableHandlePress:function touchableHandlePress(e){ +this.props.onPress&&this.props.onPress(e); +}, + +touchableHandleLongPress:function touchableHandleLongPress(e){ +this.props.onLongPress&&this.props.onLongPress(e); +}, + +touchableGetPressRectOffset:function touchableGetPressRectOffset(){ +return this.props.pressRetentionOffset||PRESS_RETENTION_OFFSET; +}, + +touchableGetHitSlop:function touchableGetHitSlop(){ +return this.props.hitSlop; +}, + +touchableGetHighlightDelayMS:function touchableGetHighlightDelayMS(){ +return this.props.delayPressIn||0; +}, + +touchableGetLongPressDelayMS:function touchableGetLongPressDelayMS(){ +return this.props.delayLongPress===0?0:this.props.delayLongPress||500; +}, + +touchableGetPressOutDelayMS:function touchableGetPressOutDelayMS(){ +return this.props.delayPressOut; +}, + +_opacityActive:function _opacityActive(duration){ +this.setOpacityTo(this.props.activeOpacity,duration); +}, + +_opacityInactive:function _opacityInactive(duration){ +var childStyle=flattenStyle(this.props.style)||{}; +this.setOpacityTo(childStyle.opacity===undefined?1:childStyle.opacity,duration); +}, + +_opacityFocused:function _opacityFocused(){ +this.setOpacityTo(this.props.focusedOpacity); +}, + +_onKeyEnter:function _onKeyEnter(e,callback){ +var ENTER=13; +if((e.type==='keypress'?e.charCode:e.keyCode)===ENTER){ +callback&&callback(e); +e.stopPropagation(); +} +}, + +render:function render(){var _this=this;var _props= + + + + + + + + + + + + + + +this.props,activeOpacity=_props.activeOpacity,focusedOpacity=_props.focusedOpacity,delayLongPress=_props.delayLongPress,delayPressIn=_props.delayPressIn,delayPressOut=_props.delayPressOut,onLongPress=_props.onLongPress,onPress=_props.onPress,onPressIn=_props.onPressIn,onPressOut=_props.onPressOut,pressRetentionOffset=_props.pressRetentionOffset,other=_objectWithoutProperties(_props,['activeOpacity','focusedOpacity','delayLongPress','delayPressIn','delayPressOut','onLongPress','onPress','onPressIn','onPressOut','pressRetentionOffset']); + +return( +React.createElement(View,_extends({}, +other,{ +accessible:this.props.accessible!==false, +style:[styles.root,this.props.disabled&&styles.disabled,this.props.style], +onKeyDown:function onKeyDown(e){ +_this._onKeyEnter(e,_this.touchableHandleActivePressIn); +}, +onKeyPress:function onKeyPress(e){ +_this._onKeyEnter(e,_this.touchableHandlePress); +}, +onKeyUp:function onKeyUp(e){ +_this._onKeyEnter(e,_this.touchableHandleActivePressOut); +}, +onStartShouldSetResponder:this.touchableHandleStartShouldSetResponder, +onResponderTerminationRequest:this.touchableHandleResponderTerminationRequest, +onResponderGrant:this.touchableHandleResponderGrant, +onResponderMove:this.touchableHandleResponderMove, +onResponderRelease:this.touchableHandleResponderRelease, +onResponderTerminate:this.touchableHandleResponderTerminate}), + +this.props.children, +Touchable.renderDebugView({color:'blue',hitSlop:this.props.hitSlop}))); + + +}}); + + +var styles=StyleSheet.create({ +root:{ +cursor:'pointer', +transitionProperty:'opacity', +transitionDuration:'0.15s', +userSelect:'none'}, + +disabled:{ +cursor:'default'}}); + + + +module.exports=TouchableOpacity; + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var emptyObject={}; +var objects={}; +var prefix='r'; +var uniqueID=1; + +var createKey=function createKey(id){return prefix+'-'+id;};var + +ReactNativePropRegistry=function(){function ReactNativePropRegistry(){_classCallCheck(this,ReactNativePropRegistry);}_createClass(ReactNativePropRegistry,null,[{key:'register',value:function register( +object){ +var id=uniqueID++; +if(true){ +Object.freeze(object); +} +var key=createKey(id); +objects[key]=object; +return id; +}},{key:'getByID',value:function getByID( + +id){ +if(!id){ + + +return emptyObject; +} +var key=createKey(id); +var object=objects[key]; +if(!object){ +console.warn('Invalid style with id `'+id+'`. Skipping ...'); +return emptyObject; +} +return object; +}}]);return ReactNativePropRegistry;}(); + + +module.exports=ReactNativePropRegistry; + +/***/ }), +/* 146 */ +/***/ (function(module, exports, __webpack_require__) { + +var _AccessibilityUtil=__webpack_require__(89);var _AccessibilityUtil2=_interopRequireDefault(_AccessibilityUtil); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _registry=__webpack_require__(83);var _registry2=_interopRequireDefault(_registry);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;} + +var emptyObject={}; + +var styles=_StyleSheet2.default.create({ +buttonReset:{ +appearance:'none', +backgroundColor:'transparent', +color:'inherit', +font:'inherit', +textAlign:'inherit'}, + +linkReset:{ +backgroundColor:'transparent', +color:'inherit', +textDecorationLine:'none'}, + +listReset:{ +listStyle:'none'}}); + + + +var pointerEventStyles=_StyleSheet2.default.create({ +auto:{ +pointerEvents:'auto'}, + +'box-none':{ +pointerEvents:'box-none'}, + +'box-only':{ +pointerEvents:'box-only'}, + +none:{ +pointerEvents:'none'}}); + + + +var resolver=function resolver(style){return _registry2.default.resolve(style);}; + +var createDOMProps=function createDOMProps(rnProps){var resolveStyle=arguments.length>1&&arguments[1]!==undefined?arguments[1]:resolver; +var props=rnProps||emptyObject;var + +accessibilityLabel= + + + + + + + + + + + + + +props.accessibilityLabel,accessibilityLiveRegion=props.accessibilityLiveRegion,accessible=props.accessible,importantForAccessibility=props.importantForAccessibility,pointerEvents=props.pointerEvents,rnStyle=props.style,testID=props.testID,type=props.type,accessibilityComponentType=props.accessibilityComponentType,accessibilityRole=props.accessibilityRole,accessibilityTraits=props.accessibilityTraits,domProps=_objectWithoutProperties(props,['accessibilityLabel','accessibilityLiveRegion','accessible','importantForAccessibility','pointerEvents','style','testID','type','accessibilityComponentType','accessibilityRole','accessibilityTraits']); + +var role=_AccessibilityUtil2.default.propsToAriaRole(props); +var pointerEventStyle=pointerEvents!==undefined&&pointerEventStyles[pointerEvents]; +var reactNativeStyle=[ +role==='button'&&styles.buttonReset|| +role==='link'&&styles.linkReset|| +role==='list'&&styles.listReset, +rnStyle, +pointerEventStyle];var _ref= + +resolveStyle(reactNativeStyle)||emptyObject,className=_ref.className,style=_ref.style; + +if(accessible===true){ +domProps.tabIndex=_AccessibilityUtil2.default.propsToTabIndex(props); +} +if(typeof accessibilityLabel==='string'){ +domProps['aria-label']=accessibilityLabel; +} +if(typeof accessibilityLiveRegion==='string'){ +domProps['aria-live']=accessibilityLiveRegion==='none'?'off':accessibilityLiveRegion; +} +if(typeof className==='string'&&className!==''){ +domProps.className=domProps.className?domProps.className+' '+className:className; +} +if(importantForAccessibility==='no-hide-descendants'){ +domProps['aria-hidden']=true; +} +if(typeof role==='string'){ +domProps.role=role; +if(role==='button'){ +domProps.type='button'; +}else if(role==='link'&&domProps.target==='_blank'){ +domProps.rel=(domProps.rel||'')+' noopener noreferrer'; +} +} +if(style!=null){ +domProps.style=style; +} +if(typeof testID==='string'){ +domProps['data-testid']=testID; +} +if(typeof type==='string'){ +domProps.type=type; +} + +return domProps; +}; + +module.exports=createDOMProps; + +/***/ }), +/* 147 */ +/***/ (function(module, exports) { + +var hasOwnProperty=Object.prototype.hasOwnProperty; + +var mapKeyValue=function mapKeyValue(obj,fn){ +var result=[]; +for(var key in obj){ +if(hasOwnProperty.call(obj,key)){ +var r=fn(key,obj[key]); +r&&result.push(r); +} +} +return result; +}; + +module.exports=mapKeyValue; + +/***/ }), +/* 148 */ +/***/ (function(module, exports) { + +Object.defineProperty(exports,"__esModule",{value:true});var CSS_UNIT_RE=/^[+-]?\d*(?:\.\d+)?(?:[Ee][+-]?\d+)?(%|\w*)/; + +var getUnit=function getUnit(str){return str.match(CSS_UNIT_RE)[1];}; + +var isNumeric=function isNumeric(n){ +return!isNaN(parseFloat(n))&&isFinite(n); +}; + +var multiplyStyleLengthValue=function multiplyStyleLengthValue(value,multiple){ +if(typeof value==='string'){ +var number=parseFloat(value,10)*multiple; +var unit=getUnit(value); +return''+number+unit; +}else if(isNumeric(value)){ +return value*multiple; +} +};exports.default= + +multiplyStyleLengthValue; + +/***/ }), +/* 149 */ +/***/ (function(module, exports) { + +var emptyArray=[]; + + +var normalizeTouches=function normalizeTouches(){var touches=arguments.length>0&&arguments[0]!==undefined?arguments[0]:emptyArray;return( +Array.prototype.slice.call(touches).map(function(touch){ +var identifier=touch.identifier>20?touch.identifier%20:touch.identifier; + +var rect=touch.target&&touch.target.getBoundingClientRect(); +var locationX=touch.pageX-rect.left; +var locationY=touch.pageY-rect.top; + +return{ +_normalized:true, +clientX:touch.clientX, +clientY:touch.clientY, +force:touch.force, +locationX:locationX, +locationY:locationY, +identifier:identifier, +pageX:touch.pageX, +pageY:touch.pageY, +radiusX:touch.radiusX, +radiusY:touch.radiusY, +rotationAngle:touch.rotationAngle, +screenX:touch.screenX, +screenY:touch.screenY, +target:touch.target, + + +timestamp:Date.now()}; + +}));}; + +function normalizeTouchEvent(nativeEvent){ +var changedTouches=normalizeTouches(nativeEvent.changedTouches); +var touches=normalizeTouches(nativeEvent.touches); + +var event={ +_normalized:true, +changedTouches:changedTouches, +pageX:nativeEvent.pageX, +pageY:nativeEvent.pageY, +preventDefault:nativeEvent.preventDefault.bind(nativeEvent), +stopImmediatePropagation:nativeEvent.stopImmediatePropagation.bind(nativeEvent), +stopPropagation:nativeEvent.stopPropagation.bind(nativeEvent), +target:nativeEvent.target, + + +timestamp:Date.now(), +touches:touches}; + + +if(changedTouches[0]){ +event.identifier=changedTouches[0].identifier; +event.pageX=changedTouches[0].pageX; +event.pageY=changedTouches[0].pageY; +event.locationX=changedTouches[0].locationX; +event.locationY=changedTouches[0].locationY; +} + +return event; +} + +function normalizeMouseEvent(nativeEvent){ +var touches=[ +{ +_normalized:true, +clientX:nativeEvent.clientX, +clientY:nativeEvent.clientY, +force:nativeEvent.force, +locationX:nativeEvent.clientX, +locationY:nativeEvent.clientY, +identifier:0, +pageX:nativeEvent.pageX, +pageY:nativeEvent.pageY, +screenX:nativeEvent.screenX, +screenY:nativeEvent.screenY, +target:nativeEvent.target, +timestamp:Date.now()}]; + + +return{ +_normalized:true, +changedTouches:touches, +identifier:touches[0].identifier, +locationX:nativeEvent.offsetX, +locationY:nativeEvent.offsetY, +pageX:nativeEvent.pageX, +pageY:nativeEvent.pageY, +preventDefault:nativeEvent.preventDefault.bind(nativeEvent), +stopImmediatePropagation:nativeEvent.stopImmediatePropagation.bind(nativeEvent), +stopPropagation:nativeEvent.stopPropagation.bind(nativeEvent), +target:nativeEvent.target, +timestamp:touches[0].timestamp, +touches:nativeEvent.type==='mouseup'?emptyArray:touches}; + +} + +function normalizeNativeEvent(nativeEvent){ +if(nativeEvent._normalized){ +return nativeEvent; +} +var eventType=nativeEvent.type||''; +var mouse=eventType.indexOf('mouse')>=0; +return mouse?normalizeMouseEvent(nativeEvent):normalizeTouchEvent(nativeEvent); +} + +module.exports=normalizeNativeEvent; + +/***/ }), +/* 150 */ +/***/ (function(module, exports) { + +var unitlessNumbers={ +animationIterationCount:true, +borderImageOutset:true, +borderImageSlice:true, +borderImageWidth:true, +boxFlex:true, +boxFlexGroup:true, +boxOrdinalGroup:true, +columnCount:true, +flex:true, +flexGrow:true, +flexOrder:true, +flexPositive:true, +flexShrink:true, +flexNegative:true, +fontWeight:true, +gridRow:true, +gridColumn:true, +lineClamp:true, +opacity:true, +order:true, +orphans:true, +tabSize:true, +widows:true, +zIndex:true, +zoom:true, + +fillOpacity:true, +floodOpacity:true, +stopOpacity:true, +strokeDasharray:true, +strokeDashoffset:true, +strokeMiterlimit:true, +strokeOpacity:true, +strokeWidth:true, + +scale:true, +scaleX:true, +scaleY:true, +scaleZ:true, + +shadowOpacity:true}; + + +module.exports=unitlessNumbers; + +/***/ }), +/* 151 */ +/***/ (function(module, exports, __webpack_require__) { + +var _propTypes=__webpack_require__(3); + +var BaseComponentPropTypes={ +accessibilityLabel:_propTypes.string, +accessibilityLiveRegion:(0,_propTypes.oneOf)(['assertive','none','polite']), +accessibilityRole:_propTypes.string, +accessible:_propTypes.bool, +importantForAccessibility:(0,_propTypes.oneOf)(['auto','no','no-hide-descendants','yes']), +style:(0,_propTypes.oneOfType)([_propTypes.array,_propTypes.number,_propTypes.object]), +testID:_propTypes.string}; + + +module.exports=BaseComponentPropTypes; + +/***/ }), +/* 152 */ +/***/ (function(module, exports, __webpack_require__) { + +var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var numberOrString=(0,_propTypes.oneOfType)([_propTypes.number,_propTypes.string]); +var BorderStylePropType=(0,_propTypes.oneOf)(['solid','dotted','dashed']); + +var BorderPropTypes={ +borderColor:_ColorPropType2.default, +borderTopColor:_ColorPropType2.default, +borderRightColor:_ColorPropType2.default, +borderBottomColor:_ColorPropType2.default, +borderLeftColor:_ColorPropType2.default, +borderRadius:numberOrString, +borderTopLeftRadius:numberOrString, +borderTopRightRadius:numberOrString, +borderBottomLeftRadius:numberOrString, +borderBottomRightRadius:numberOrString, +borderStyle:BorderStylePropType, +borderTopStyle:BorderStylePropType, +borderRightStyle:BorderStylePropType, +borderBottomStyle:BorderStylePropType, +borderLeftStyle:BorderStylePropType}; + + +module.exports=BorderPropTypes; + +/***/ }), +/* 153 */ +/***/ (function(module, exports, __webpack_require__) { + +var _propTypes=__webpack_require__(3); +var OverflowPropType=(0,_propTypes.oneOf)(['auto','hidden','scroll','visible']); +var hiddenOrVisible=(0,_propTypes.oneOf)(['hidden','visible']); +var numberOrString=(0,_propTypes.oneOfType)([_propTypes.number,_propTypes.string]); + +var LayoutPropTypes={ +alignContent:(0,_propTypes.oneOf)([ +'center', +'flex-end', +'flex-start', +'space-around', +'space-between', +'stretch']), + +alignItems:(0,_propTypes.oneOf)(['baseline','center','flex-end','flex-start','stretch']), +alignSelf:(0,_propTypes.oneOf)(['auto','baseline','center','flex-end','flex-start','stretch']), +backfaceVisibility:hiddenOrVisible, +borderWidth:numberOrString, +borderBottomWidth:numberOrString, +borderLeftWidth:numberOrString, +borderRightWidth:numberOrString, +borderTopWidth:numberOrString, +bottom:numberOrString, +boxSizing:_propTypes.string, +direction:(0,_propTypes.oneOf)(['inherit','ltr','rtl']), +display:_propTypes.string, +flex:_propTypes.number, +flexBasis:numberOrString, +flexDirection:(0,_propTypes.oneOf)(['column','column-reverse','row','row-reverse']), +flexGrow:_propTypes.number, +flexShrink:_propTypes.number, +flexWrap:(0,_propTypes.oneOf)(['nowrap','wrap','wrap-reverse']), +height:numberOrString, +justifyContent:(0,_propTypes.oneOf)(['center','flex-end','flex-start','space-around','space-between']), +left:numberOrString, +margin:numberOrString, +marginBottom:numberOrString, +marginHorizontal:numberOrString, +marginLeft:numberOrString, +marginRight:numberOrString, +marginTop:numberOrString, +marginVertical:numberOrString, +maxHeight:numberOrString, +maxWidth:numberOrString, +minHeight:numberOrString, +minWidth:numberOrString, +order:_propTypes.number, +overflow:OverflowPropType, +overflowX:OverflowPropType, +overflowY:OverflowPropType, +padding:numberOrString, +paddingBottom:numberOrString, +paddingHorizontal:numberOrString, +paddingLeft:numberOrString, +paddingRight:numberOrString, +paddingTop:numberOrString, +paddingVertical:numberOrString, +position:(0,_propTypes.oneOf)(['absolute','fixed','relative','static']), +right:numberOrString, +top:numberOrString, +visibility:hiddenOrVisible, +width:numberOrString, +zIndex:_propTypes.number, + + + +aspectRatio:_propTypes.number, + + + +gridAutoColumns:_propTypes.string, +gridAutoFlow:_propTypes.string, +gridAutoRows:_propTypes.string, +gridColumnEnd:_propTypes.string, +gridColumnGap:_propTypes.string, +gridColumnStart:_propTypes.string, +gridRowEnd:_propTypes.string, +gridRowGap:_propTypes.string, +gridRowStart:_propTypes.string, +gridTemplateColumns:_propTypes.string, +gridTemplateRows:_propTypes.string, +gridTemplateAreas:_propTypes.string}; + + +module.exports=LayoutPropTypes; + +/***/ }), +/* 154 */ +/***/ (function(module, exports, __webpack_require__) { + +var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} +var numberOrString=(0,_propTypes.oneOfType)([_propTypes.number,_propTypes.string]); + +var ShadowPropTypes={ +shadowColor:_ColorPropType2.default, +shadowOffset:(0,_propTypes.shape)({ +width:numberOrString, +height:numberOrString}), + +shadowOpacity:_propTypes.number, +shadowRadius:numberOrString, +shadowSpread:numberOrString}; + + +module.exports=ShadowPropTypes; + +/***/ }), +/* 155 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + +var _propTypes=__webpack_require__(3); +var numberOrString=(0,_propTypes.oneOfType)([_propTypes.number,_propTypes.string]); + +var TransformPropTypes={ +transform:(0,_propTypes.arrayOf)( +(0,_propTypes.oneOfType)([ +(0,_propTypes.shape)({perspective:numberOrString}), +(0,_propTypes.shape)({rotate:_propTypes.string}), +(0,_propTypes.shape)({rotateX:_propTypes.string}), +(0,_propTypes.shape)({rotateY:_propTypes.string}), +(0,_propTypes.shape)({rotateZ:_propTypes.string}), +(0,_propTypes.shape)({scale:_propTypes.number}), +(0,_propTypes.shape)({scaleX:_propTypes.number}), +(0,_propTypes.shape)({scaleY:_propTypes.number}), +(0,_propTypes.shape)({skewX:_propTypes.string}), +(0,_propTypes.shape)({skewY:_propTypes.string}), +(0,_propTypes.shape)({translateX:numberOrString}), +(0,_propTypes.shape)({translateY:numberOrString}), +(0,_propTypes.shape)({translateZ:numberOrString}), +(0,_propTypes.shape)({translate3d:_propTypes.string})])), + + +transformOrigin:_propTypes.string}; + + +module.exports=TransformPropTypes; + +/***/ }), +/* 156 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + + + + + +var invariant=__webpack_require__(0); + +var twoArgumentPooler=function twoArgumentPooler(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 standardReleaser=function standardReleaser(instance){ +var Klass=this; +instance.destructor(); +if(Klass.instancePool.length<Klass.poolSize){ +Klass.instancePool.push(instance); +} +}; + +var DEFAULT_POOL_SIZE=10; +var DEFAULT_POOLER=twoArgumentPooler; + + + + + + + + + + +var addPoolingTo=function addPoolingTo(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, +twoArgumentPooler:twoArgumentPooler}; + + +module.exports=PooledClass; + +/***/ }), +/* 157 */ +/***/ (function(module, exports) { + + + + + + + + + +var ReactPropTypesSecret='SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; +module.exports=ReactPropTypesSecret; + +/***/ }), +/* 158 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(22), + _assign = __webpack_require__(6); + +var ReactNoopUpdateQueue = __webpack_require__(163); + +var canDefineProperty = __webpack_require__(96); +var emptyObject = __webpack_require__(38); +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +/** + * Base class helpers for the updating state of a component. + */ +function ReactComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +ReactComponent.prototype.isReactComponent = {}; + +/** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ +ReactComponent.prototype.setState = function (partialState, callback) { + !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? true ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0; + this.updater.enqueueSetState(this, partialState, callback, 'setState'); +}; + +/** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ +ReactComponent.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); +}; + +/** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ +if (true) { + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + var defineDeprecationWarning = function (methodName, info) { + if (canDefineProperty) { + Object.defineProperty(ReactComponent.prototype, methodName, { + get: function () { + true ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0; + return undefined; + } + }); + } + }; + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } +} + +/** + * Base class helpers for the updating state of a component. + */ +function ReactPureComponent(props, context, updater) { + // Duplicated from ReactComponent. + this.props = props; + this.context = context; + this.refs = emptyObject; + // We initialize the default updater but the real one gets injected by the + // renderer. + this.updater = updater || ReactNoopUpdateQueue; +} + +function ComponentDummy() {} +ComponentDummy.prototype = ReactComponent.prototype; +ReactPureComponent.prototype = new ComponentDummy(); +ReactPureComponent.prototype.constructor = ReactPureComponent; +// Avoid an extra prototype jump for these methods. +_assign(ReactPureComponent.prototype, ReactComponent.prototype); +ReactPureComponent.prototype.isPureReactComponent = true; + +module.exports = { + Component: ReactComponent, + PureComponent: ReactPureComponent +}; + +/***/ }), +/* 159 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var ReactDebugCurrentFrame = {}; + +if (true) { + var _require = __webpack_require__(13), + getStackAddendumByID = _require.getStackAddendumByID, + getCurrentStackAddendum = _require.getCurrentStackAddendum; + + var _require2 = __webpack_require__(162), + getStackAddendumByWorkInProgressFiber = _require2.getStackAddendumByWorkInProgressFiber; + + // Component that is being worked on + + + ReactDebugCurrentFrame.current = null; + + // Element that is being cloned or created + ReactDebugCurrentFrame.element = null; + + ReactDebugCurrentFrame.getStackAddendum = function () { + var stack = null; + var current = ReactDebugCurrentFrame.current; + var element = ReactDebugCurrentFrame.element; + if (current !== null) { + if (typeof current === 'number') { + // DebugID from Stack. + var debugID = current; + stack = getStackAddendumByID(debugID); + } else if (typeof current.tag === 'number') { + // This is a Fiber. + // The stack will only be correct if this is a work in progress + // version and we're calling it during reconciliation. + var workInProgress = current; + stack = getStackAddendumByWorkInProgressFiber(workInProgress); + } + } else if (element !== null) { + stack = getCurrentStackAddendum(element); + } + return stack; + }; +} + +module.exports = ReactDebugCurrentFrame; + +/***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +// 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; + +/***/ }), +/* 161 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + +/** + * ReactElementValidator provides a wrapper around a element factory + * which validates the props passed to the element. This is intended to be + * used only in DEV and could be replaced by a static type checker for languages + * that support it. + */ + + + +var ReactCurrentOwner = __webpack_require__(17); +var ReactElement = __webpack_require__(25); + +var checkReactTypeSpec = __webpack_require__(359); + +var canDefineProperty = __webpack_require__(96); +var getComponentName = __webpack_require__(97); +var getIteratorFn = __webpack_require__(98); + +if (true) { + var warning = __webpack_require__(1); + var ReactDebugCurrentFrame = __webpack_require__(159); + + var _require = __webpack_require__(13), + getCurrentStackAddendum = _require.getCurrentStackAddendum; +} + +function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentName(ReactCurrentOwner.current); + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + return ''; +} + +function getSourceInfoErrorAddendum(elementProps) { + if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { + var source = elementProps.__source; + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + return ''; +} + +/** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ +var ownerHasKeyUseWarning = {}; + +function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + if (parentName) { + info = '\n\nCheck the top-level render call using <' + parentName + '>.'; + } + } + return info; +} + +/** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ +function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + element._store.validated = true; + + var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {}); + + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + if (memoizer[currentComponentErrorInfo]) { + return; + } + memoizer[currentComponentErrorInfo] = true; + + // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + var childOwner = ''; + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.'; + } + + true ? warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getCurrentStackAddendum(element)) : void 0; +} + +/** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ +function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + if (Array.isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + if (ReactElement.isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (ReactElement.isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + // Entry iterators provide implicit keys. + if (iteratorFn) { + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + while (!(step = iterator.next()).done) { + if (ReactElement.isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } +} + +/** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ +function validatePropTypes(element) { + var componentClass = element.type; + if (typeof componentClass !== 'function') { + return; + } + var name = componentClass.displayName || componentClass.name; + + // ReactNative `View.propTypes` have been deprecated in favor of `ViewPropTypes`. + // In their place a temporary getter has been added with a deprecated warning message. + // Avoid triggering that warning during validation using the temporary workaround, __propTypesSecretDontUseThesePlease. + // TODO (bvaughn) Revert this particular change any time after April 1 ReactNative RC is tagged. + var propTypes = typeof componentClass.__propTypesSecretDontUseThesePlease === 'object' ? componentClass.__propTypesSecretDontUseThesePlease : componentClass.propTypes; + + if (propTypes) { + checkReactTypeSpec(propTypes, element.props, 'prop', name); + } + if (typeof componentClass.getDefaultProps === 'function') { + true ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0; + } +} + +var ReactElementValidator = { + createElement: function (type, props, children) { + var validType = typeof type === 'string' || typeof type === 'function'; + // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + if (!validType) { + var info = ''; + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in."; + } + + var sourceInfo = getSourceInfoErrorAddendum(props); + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + + info += getCurrentStackAddendum(); + + true ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0; + } + + var element = ReactElement.createElement.apply(this, arguments); + + // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + if (element == null) { + return element; + } + + if (true) { + ReactDebugCurrentFrame.element = element; + } + + // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); + } + } + + validatePropTypes(element); + + if (true) { + ReactDebugCurrentFrame.element = null; + } + + return element; + }, + + createFactory: function (type) { + var validatedFactory = ReactElementValidator.createElement.bind(null, type); + // Legacy hook TODO: Warn if this is accessed + validatedFactory.type = type; + + if (true) { + if (canDefineProperty) { + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + true ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0; + Object.defineProperty(this, 'type', { + value: type + }); + return type; + } + }); + } + } + + return validatedFactory; + }, + + cloneElement: function (element, props, children) { + var newElement = ReactElement.cloneElement.apply(this, arguments); + if (true) { + ReactDebugCurrentFrame.element = newElement; + } + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); + } + validatePropTypes(newElement); + if (true) { + ReactDebugCurrentFrame.element = null; + } + return newElement; + } +}; + +module.exports = ReactElementValidator; + +/***/ }), +/* 162 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2016-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. + * + * + */ + + + +var ReactTypeOfWork = __webpack_require__(357); +var IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent, + FunctionalComponent = ReactTypeOfWork.FunctionalComponent, + ClassComponent = ReactTypeOfWork.ClassComponent, + HostComponent = ReactTypeOfWork.HostComponent; + +var getComponentName = __webpack_require__(97); + +function describeComponentFrame(name, source, ownerName) { + return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); +} + +function describeFiber(fiber) { + switch (fiber.tag) { + case IndeterminateComponent: + case FunctionalComponent: + case ClassComponent: + case HostComponent: + var owner = fiber._debugOwner; + var source = fiber._debugSource; + var name = getComponentName(fiber); + var ownerName = null; + if (owner) { + ownerName = getComponentName(owner); + } + return describeComponentFrame(name, source, ownerName); + default: + return ''; + } +} + +// This function can only be called with a work-in-progress fiber and +// only during begin or complete phase. Do not call it under any other +// circumstances. +function getStackAddendumByWorkInProgressFiber(workInProgress) { + var info = ''; + var node = workInProgress; + do { + info += describeFiber(node); + // Otherwise this return pointer might point to the wrong tree: + node = node['return']; + } while (node); + return info; +} + +module.exports = { + getStackAddendumByWorkInProgressFiber: getStackAddendumByWorkInProgressFiber, + describeComponentFrame: describeComponentFrame +}; + +/***/ }), +/* 163 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + + + +var warning = __webpack_require__(1); + +function warnNoop(publicInstance, callerName) { + if (true) { + var constructor = publicInstance.constructor; + true ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; + } +} + +/** + * This is the abstract API for an update queue. + */ +var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueForceUpdate: function (publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueSetState: function (publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } +}; + +module.exports = ReactNoopUpdateQueue; + +/***/ }), +/* 164 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + +/***/ }), +/* 165 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(22); + +var ReactPropTypesSecret = __webpack_require__(164); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var loggedTypeFailures = {}; + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (true) { + for (var typeSpecName in typeSpecs) { + if (typeSpecs.hasOwnProperty(typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + !(typeof typeSpecs[typeSpecName] === 'function') ? true ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', location, typeSpecName) : _prodInvariant('84', componentName || 'React class', location, typeSpecName) : void 0; + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + true ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error) : void 0; + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + true ? warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '') : void 0; + } + } + } + } +} + +module.exports = checkPropTypes; + +/***/ }), +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { + +var _module=__webpack_require__(336); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var ReactNative={ + +findNodeHandle:_module.findNodeHandle, +render:_module.render, +unmountComponentAtNode:_module.unmountComponentAtNode, + + +createDOMElement:_module.createDOMElement, +NativeModules:_module.NativeModules, +processColor:_module.processColor, + + +Animated:_module.Animated, +AppRegistry:_module.AppRegistry, +AppState:_module.AppState, +AsyncStorage:_module.AsyncStorage, +BackAndroid:_module.BackAndroid, +Clipboard:_module.Clipboard, +Dimensions:_module.Dimensions, +Easing:_module.Easing, +I18nManager:_module.I18nManager, +InteractionManager:_module.InteractionManager, +Linking:_module.Linking, +NetInfo:_module.NetInfo, +PanResponder:_module.PanResponder, +PixelRatio:_module.PixelRatio, +Platform:_module.Platform, +StyleSheet:_module.StyleSheet, +UIManager:_module.UIManager, +Vibration:_module.Vibration, + + +ActivityIndicator:_module.ActivityIndicator, +Button:_module.Button, +Image:_module.Image, +ListView:_module.ListView, +ProgressBar:_module.ProgressBar, +ScrollView:_module.ScrollView, +StatusBar:_module.StatusBar, +Switch:_module.Switch, +Text:_module.Text, +TextInput:_module.TextInput, +Touchable:_module.Touchable, +TouchableHighlight:_module.TouchableHighlight, +TouchableOpacity:_module.TouchableOpacity, +TouchableWithoutFeedback:_module.TouchableWithoutFeedback, +View:_module.View, + + +ColorPropType:_module.ColorPropType, +EdgeInsetsPropType:_module.EdgeInsetsPropType, +PointPropType:_module.PointPropType, +ViewPropTypes:_module.ViewPropTypes}; + + +module.exports=ReactNative; + +/***/ }), +/* 167 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var AnimatedWithChildren=__webpack_require__(18); +var Animated=__webpack_require__(9); +var AnimatedValue=__webpack_require__(23); +var Interpolation=__webpack_require__(36); +var AnimatedInterpolation=__webpack_require__(46);var + + + +AnimatedAddition=function(_AnimatedWithChildren){_inherits(AnimatedAddition,_AnimatedWithChildren); + + + + + + +function AnimatedAddition(a,b){_classCallCheck(this,AnimatedAddition);var _this=_possibleConstructorReturn(this,(AnimatedAddition.__proto__||Object.getPrototypeOf(AnimatedAddition)).call(this)); + +_this._a=typeof a==='number'?new AnimatedValue(a):a; +_this._b=typeof b==='number'?new AnimatedValue(b):b; +_this._listeners={};return _this; +}_createClass(AnimatedAddition,[{key:'__getValue',value:function __getValue() + +{ +return this._a.__getValue()+this._b.__getValue(); +}},{key:'addListener',value:function addListener( + +callback){var _this2=this; +if(!this._aListener&&this._a.addListener){ +this._aListener=this._a.addListener(function(){ +for(var key in _this2._listeners){ +_this2._listeners[key]({value:_this2.__getValue()}); +} +}); +} +if(!this._bListener&&this._b.addListener){ +this._bListener=this._b.addListener(function(){ +for(var key in _this2._listeners){ +_this2._listeners[key]({value:_this2.__getValue()}); +} +}); +} +var id=guid(); +this._listeners[id]=callback; +return id; +}},{key:'removeListener',value:function removeListener( + +id){ +delete this._listeners[id]; +}},{key:'interpolate',value:function interpolate( + +config){ +return new AnimatedInterpolation(this,Interpolation.create(config)); +}},{key:'__attach',value:function __attach() + +{ +this._a.__addChild(this); +this._b.__addChild(this); +}},{key:'__detach',value:function __detach() + +{ +this._a.__removeChild(this); +this._b.__removeChild(this); +}}]);return AnimatedAddition;}(AnimatedWithChildren); + + +module.exports=AnimatedAddition; + +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedWithChildren=__webpack_require__(18); +var AnimatedInterpolation=__webpack_require__(46); +var Interpolation=__webpack_require__(36);var + + + +AnimatedModulo=function(_AnimatedWithChildren){_inherits(AnimatedModulo,_AnimatedWithChildren); + + + + + +function AnimatedModulo(a,modulus){_classCallCheck(this,AnimatedModulo);var _this=_possibleConstructorReturn(this,(AnimatedModulo.__proto__||Object.getPrototypeOf(AnimatedModulo)).call(this)); + +_this._a=a; +_this._modulus=modulus; +_this._listeners={};return _this; +}_createClass(AnimatedModulo,[{key:'__getValue',value:function __getValue() + +{ +return(this._a.__getValue()%this._modulus+this._modulus)%this._modulus; +}},{key:'addListener',value:function addListener( + +callback){var _this2=this; +if(!this._aListener){ +this._aListener=this._a.addListener(function(){ +for(var key in _this2._listeners){ +_this2._listeners[key]({value:_this2.__getValue()}); +} +}); +} +var id=guid(); +this._listeners[id]=callback; +return id; +}},{key:'removeListener',value:function removeListener( + +id){ +delete this._listeners[id]; +}},{key:'interpolate',value:function interpolate( + +config){ +return new AnimatedInterpolation(this,Interpolation.create(config)); +}},{key:'__attach',value:function __attach() + +{ +this._a.__addChild(this); +}},{key:'__detach',value:function __detach() + +{ +this._a.__removeChild(this); +}}]);return AnimatedModulo;}(AnimatedWithChildren); + + +module.exports=AnimatedModulo; + +/***/ }), +/* 169 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var AnimatedWithChildren=__webpack_require__(18); +var Animated=__webpack_require__(9); +var AnimatedValue=__webpack_require__(23); +var AnimatedInterpolation=__webpack_require__(46); +var Interpolation=__webpack_require__(36);var + + + +AnimatedMultiplication=function(_AnimatedWithChildren){_inherits(AnimatedMultiplication,_AnimatedWithChildren); + + + + + + +function AnimatedMultiplication(a,b){_classCallCheck(this,AnimatedMultiplication);var _this=_possibleConstructorReturn(this,(AnimatedMultiplication.__proto__||Object.getPrototypeOf(AnimatedMultiplication)).call(this)); + +_this._a=typeof a==='number'?new AnimatedValue(a):a; +_this._b=typeof b==='number'?new AnimatedValue(b):b; +_this._listeners={};return _this; +}_createClass(AnimatedMultiplication,[{key:'__getValue',value:function __getValue() + +{ +return this._a.__getValue()*this._b.__getValue(); +}},{key:'addListener',value:function addListener( + +callback){var _this2=this; +if(!this._aListener&&this._a.addListener){ +this._aListener=this._a.addListener(function(){ +for(var key in _this2._listeners){ +_this2._listeners[key]({value:_this2.__getValue()}); +} +}); +} +if(!this._bListener&&this._b.addListener){ +this._bListener=this._b.addListener(function(){ +for(var key in _this2._listeners){ +_this2._listeners[key]({value:_this2.__getValue()}); +} +}); +} +var id=guid(); +this._listeners[id]=callback; +return id; +}},{key:'removeListener',value:function removeListener( + +id){ +delete this._listeners[id]; +}},{key:'interpolate',value:function interpolate( + +config){ +return new AnimatedInterpolation(this,Interpolation.create(config)); +}},{key:'__attach',value:function __attach() + +{ +this._a.__addChild(this); +this._b.__addChild(this); +}},{key:'__detach',value:function __detach() + +{ +this._a.__removeChild(this); +this._b.__removeChild(this); +}}]);return AnimatedMultiplication;}(AnimatedWithChildren); + + +module.exports=AnimatedMultiplication; + +/***/ }), +/* 170 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedWithChildren=__webpack_require__(18); +var AnimatedTransform=__webpack_require__(173); +var FlattenStyle=__webpack_require__(102);var + +AnimatedStyle=function(_AnimatedWithChildren){_inherits(AnimatedStyle,_AnimatedWithChildren); + + +function AnimatedStyle(style){_classCallCheck(this,AnimatedStyle);var _this=_possibleConstructorReturn(this,(AnimatedStyle.__proto__||Object.getPrototypeOf(AnimatedStyle)).call(this)); + +style=FlattenStyle.current(style)||{}; +if(style.transform&&!(style.transform instanceof Animated)){ +style=_extends({}, +style,{ +transform:new AnimatedTransform(style.transform)}); + +} +_this._style=style;return _this; +}_createClass(AnimatedStyle,[{key:'__getValue',value:function __getValue() + +{ +var style={}; +for(var key in this._style){ +var value=this._style[key]; +if(value instanceof Animated){ +style[key]=value.__getValue(); +}else{ +style[key]=value; +} +} +return style; +}},{key:'__getAnimatedValue',value:function __getAnimatedValue() + +{ +var style={}; +for(var key in this._style){ +var value=this._style[key]; +if(value instanceof Animated){ +style[key]=value.__getAnimatedValue(); +} +} +return style; +}},{key:'__attach',value:function __attach() + +{ +for(var key in this._style){ +var value=this._style[key]; +if(value instanceof Animated){ +value.__addChild(this); +} +} +}},{key:'__detach',value:function __detach() + +{ +for(var key in this._style){ +var value=this._style[key]; +if(value instanceof Animated){ +value.__removeChild(this); +} +} +}}]);return AnimatedStyle;}(AnimatedWithChildren); + + +module.exports=AnimatedStyle; + +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedWithChildren=__webpack_require__(18);var + +AnimatedTemplate=function(_AnimatedWithChildren){_inherits(AnimatedTemplate,_AnimatedWithChildren); + + + +function AnimatedTemplate(strings,values){_classCallCheck(this,AnimatedTemplate);var _this=_possibleConstructorReturn(this,(AnimatedTemplate.__proto__||Object.getPrototypeOf(AnimatedTemplate)).call(this)); + +_this._strings=strings; +_this._values=values;return _this; +}_createClass(AnimatedTemplate,[{key:'__transformValue',value:function __transformValue( + +value){ +if(value instanceof Animated){ +return value.__getValue(); +}else{ +return value; +} +}},{key:'__getValue',value:function __getValue() + +{ +var value=this._strings[0]; +for(var i=0;i<this._values.length;++i){ +value+=this.__transformValue(this._values[i])+this._strings[1+i]; +} +return value; +}},{key:'__attach',value:function __attach() + +{ +for(var i=0;i<this._values.length;++i){ +if(this._values[i]instanceof Animated){ +this._values[i].__addChild(this); +} +} +}},{key:'__detach',value:function __detach() + +{ +for(var i=0;i<this._values.length;++i){ +if(this._values[i]instanceof Animated){ +this._values[i].__removeChild(this); +} +} +}}]);return AnimatedTemplate;}(AnimatedWithChildren); + + +module.exports=AnimatedTemplate; + +/***/ }), +/* 172 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedValue=__webpack_require__(23);var + + + +AnimatedTracking=function(_Animated){_inherits(AnimatedTracking,_Animated); + + + + + + +function AnimatedTracking( +value, +parent, +animationClass, +animationConfig, +callback) +{_classCallCheck(this,AnimatedTracking);var _this=_possibleConstructorReturn(this,(AnimatedTracking.__proto__||Object.getPrototypeOf(AnimatedTracking)).call(this)); + +_this._value=value; +_this._parent=parent; +_this._animationClass=animationClass; +_this._animationConfig=animationConfig; +_this._callback=callback; +_this.__attach();return _this; +}_createClass(AnimatedTracking,[{key:'__getValue',value:function __getValue() + +{ +return this._parent.__getValue(); +}},{key:'__attach',value:function __attach() + +{ +this._parent.__addChild(this); +}},{key:'__detach',value:function __detach() + +{ +this._parent.__removeChild(this); +}},{key:'update',value:function update() + +{ +this._value.animate(new this._animationClass(_extends({}, +this._animationConfig,{ +toValue:this._animationConfig.toValue.__getValue()})), +this._callback); +}}]);return AnimatedTracking;}(Animated); + + +module.exports=AnimatedTracking; + +/***/ }), +/* 173 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedWithChildren=__webpack_require__(18);var + +AnimatedTransform=function(_AnimatedWithChildren){_inherits(AnimatedTransform,_AnimatedWithChildren); + + +function AnimatedTransform(transforms){_classCallCheck(this,AnimatedTransform);var _this=_possibleConstructorReturn(this,(AnimatedTransform.__proto__||Object.getPrototypeOf(AnimatedTransform)).call(this)); + +_this._transforms=transforms;return _this; +}_createClass(AnimatedTransform,[{key:'__getValue',value:function __getValue() + +{ +return this._transforms.map(function(transform){ +var result={}; +for(var key in transform){ +var value=transform[key]; +if(value instanceof Animated){ +result[key]=value.__getValue(); +}else{ +result[key]=value; +} +} +return result; +}); +}},{key:'__getAnimatedValue',value:function __getAnimatedValue() + +{ +return this._transforms.map(function(transform){ +var result={}; +for(var key in transform){ +var value=transform[key]; +if(value instanceof Animated){ +result[key]=value.__getAnimatedValue(); +}else{ + +result[key]=value; +} +} +return result; +}); +}},{key:'__attach',value:function __attach() + +{var _this2=this; +this._transforms.forEach(function(transform){ +for(var key in transform){ +var value=transform[key]; +if(value instanceof Animated){ +value.__addChild(_this2); +} +} +}); +}},{key:'__detach',value:function __detach() + +{var _this3=this; +this._transforms.forEach(function(transform){ +for(var key in transform){ +var value=transform[key]; +if(value instanceof Animated){ +value.__removeChild(_this3); +} +} +}); +}}]);return AnimatedTransform;}(AnimatedWithChildren); + + +module.exports=AnimatedTransform; + +/***/ }), +/* 174 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animated=__webpack_require__(9); +var AnimatedValue=__webpack_require__(23); +var AnimatedWithChildren=__webpack_require__(18); +var invariant=__webpack_require__(39); +var guid=__webpack_require__(62);var + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +AnimatedValueXY=function(_AnimatedWithChildren){_inherits(AnimatedValueXY,_AnimatedWithChildren); + + + + +function AnimatedValueXY(valueIn){_classCallCheck(this,AnimatedValueXY);var _this=_possibleConstructorReturn(this,(AnimatedValueXY.__proto__||Object.getPrototypeOf(AnimatedValueXY)).call(this)); + +var value=valueIn||{x:0,y:0}; +if(typeof value.x==='number'&&typeof value.y==='number'){ +_this.x=new AnimatedValue(value.x); +_this.y=new AnimatedValue(value.y); +}else{ +invariant( +value.x instanceof AnimatedValue&& +value.y instanceof AnimatedValue, +'AnimatedValueXY must be initalized with an object of numbers or '+ +'AnimatedValues.'); + +_this.x=value.x; +_this.y=value.y; +} +_this._listeners={};return _this; +}_createClass(AnimatedValueXY,[{key:'setValue',value:function setValue( + +value){ +this.x.setValue(value.x); +this.y.setValue(value.y); +}},{key:'setOffset',value:function setOffset( + +offset){ +this.x.setOffset(offset.x); +this.y.setOffset(offset.y); +}},{key:'flattenOffset',value:function flattenOffset() + +{ +this.x.flattenOffset(); +this.y.flattenOffset(); +}},{key:'__getValue',value:function __getValue() + +{ +return{ +x:this.x.__getValue(), +y:this.y.__getValue()}; + +}},{key:'stopAnimation',value:function stopAnimation( + +callback){ +this.x.stopAnimation(); +this.y.stopAnimation(); +callback&&callback(this.__getValue()); +}},{key:'addListener',value:function addListener( + +callback){var _this2=this; +var id=guid(); +var jointCallback=function jointCallback(_ref){var number=_ref.value; +callback(_this2.__getValue()); +}; +this._listeners[id]={ +x:this.x.addListener(jointCallback), +y:this.y.addListener(jointCallback)}; + +return id; +}},{key:'removeListener',value:function removeListener( + +id){ +this.x.removeListener(this._listeners[id].x); +this.y.removeListener(this._listeners[id].y); +delete this._listeners[id]; +}},{key:'getLayout',value:function getLayout() + + + + + + + + +{ +return{ +left:this.x, +top:this.y}; + +}},{key:'getTranslateTransform',value:function getTranslateTransform() + + + + + + + + + + +{ +return[ +{translateX:this.x}, +{translateY:this.y}]; + +}}]);return AnimatedValueXY;}(AnimatedWithChildren); + + +module.exports=AnimatedValueXY; + +/***/ }), +/* 175 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animation=__webpack_require__(35); +var RequestAnimationFrame=__webpack_require__(48); +var CancelAnimationFrame=__webpack_require__(47);var + + + + + + + + +DecayAnimation=function(_Animation){_inherits(DecayAnimation,_Animation); + + + + + + + + +function DecayAnimation( +config) +{_classCallCheck(this,DecayAnimation);var _this=_possibleConstructorReturn(this,(DecayAnimation.__proto__||Object.getPrototypeOf(DecayAnimation)).call(this)); + +_this._deceleration=config.deceleration!==undefined?config.deceleration:0.998; +_this._velocity=config.velocity; +_this.__isInteraction=config.isInteraction!==undefined?config.isInteraction:true;return _this; +}_createClass(DecayAnimation,[{key:'start',value:function start( + + +fromValue, +onUpdate, +onEnd) +{ +this.__active=true; +this._lastValue=fromValue; +this._fromValue=fromValue; +this._onUpdate=onUpdate; +this.__onEnd=onEnd; +this._startTime=Date.now(); +this._animationFrame=RequestAnimationFrame.current(this.onUpdate.bind(this)); +}},{key:'onUpdate',value:function onUpdate() + +{ +var now=Date.now(); + +var value=this._fromValue+ +this._velocity/(1-this._deceleration)*( +1-Math.exp(-(1-this._deceleration)*(now-this._startTime))); + +this._onUpdate(value); + +if(Math.abs(this._lastValue-value)<0.1){ +this.__debouncedOnEnd({finished:true}); +return; +} + +this._lastValue=value; +if(this.__active){ +this._animationFrame=RequestAnimationFrame.current(this.onUpdate.bind(this)); +} +}},{key:'stop',value:function stop() + +{ +this.__active=false; +CancelAnimationFrame.current(this._animationFrame); +this.__debouncedOnEnd({finished:false}); +}}]);return DecayAnimation;}(Animation); + + +module.exports=DecayAnimation; + +/***/ }), +/* 176 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + +function SetPolyfill(){ +this._cache=[]; +} + +SetPolyfill.prototype.add=function(e){ +if(this._cache.indexOf(e)===-1){ +this._cache.push(e); +} +}; + +SetPolyfill.prototype.forEach=function(cb){ +this._cache.forEach(cb); +}; + +module.exports=SetPolyfill; + +/***/ }), +/* 177 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animation=__webpack_require__(35); +var AnimatedValue=__webpack_require__(23); +var RequestAnimationFrame=__webpack_require__(48); +var CancelAnimationFrame=__webpack_require__(47); +var invariant=__webpack_require__(39); +var SpringConfig=__webpack_require__(178); + + + + + + + + + + + + + + + +function withDefault(value,defaultValue){ +if(value===undefined||value===null){ +return defaultValue; +} +return value; +}var + +SpringAnimation=function(_Animation){_inherits(SpringAnimation,_Animation); + + + + + + + + + + + + + + + +function SpringAnimation( +config) +{_classCallCheck(this,SpringAnimation);var _this=_possibleConstructorReturn(this,(SpringAnimation.__proto__||Object.getPrototypeOf(SpringAnimation)).call(this)); + + +_this._overshootClamping=withDefault(config.overshootClamping,false); +_this._restDisplacementThreshold=withDefault(config.restDisplacementThreshold,0.001); +_this._restSpeedThreshold=withDefault(config.restSpeedThreshold,0.001); +_this._initialVelocity=config.velocity; +_this._lastVelocity=withDefault(config.velocity,0); +_this._toValue=config.toValue; +_this.__isInteraction=config.isInteraction!==undefined?config.isInteraction:true; + +var springConfig; +if(config.bounciness!==undefined||config.speed!==undefined){ +invariant( +config.tension===undefined&&config.friction===undefined, +'You can only define bounciness/speed or tension/friction but not both'); + +springConfig=SpringConfig.fromBouncinessAndSpeed( +withDefault(config.bounciness,8), +withDefault(config.speed,12)); + +}else{ +springConfig=SpringConfig.fromOrigamiTensionAndFriction( +withDefault(config.tension,40), +withDefault(config.friction,7)); + +} +_this._tension=springConfig.tension; +_this._friction=springConfig.friction;return _this; +}_createClass(SpringAnimation,[{key:'start',value:function start( + + +fromValue, +onUpdate, +onEnd, +previousAnimation) +{ +this.__active=true; +this._startPosition=fromValue; +this._lastPosition=this._startPosition; + +this._onUpdate=onUpdate; +this.__onEnd=onEnd; +this._lastTime=Date.now(); + +if(previousAnimation instanceof SpringAnimation){ +var internalState=previousAnimation.getInternalState(); +this._lastPosition=internalState.lastPosition; +this._lastVelocity=internalState.lastVelocity; +this._lastTime=internalState.lastTime; +} +if(this._initialVelocity!==undefined&& +this._initialVelocity!==null){ +this._lastVelocity=this._initialVelocity; +} +this.onUpdate(); +}},{key:'getInternalState',value:function getInternalState() + +{ +return{ +lastPosition:this._lastPosition, +lastVelocity:this._lastVelocity, +lastTime:this._lastTime}; + +}},{key:'onUpdate',value:function onUpdate() + +{ +var position=this._lastPosition; +var velocity=this._lastVelocity; + +var tempPosition=this._lastPosition; +var tempVelocity=this._lastVelocity; + + + + + +var MAX_STEPS=64; +var now=Date.now(); +if(now>this._lastTime+MAX_STEPS){ +now=this._lastTime+MAX_STEPS; +} + + + + +var TIMESTEP_MSEC=1; +var numSteps=Math.floor((now-this._lastTime)/TIMESTEP_MSEC); + +for(var i=0;i<numSteps;++i){ + +var step=TIMESTEP_MSEC/1000; + + + +var aVelocity=velocity; +var aAcceleration=this._tension*(this._toValue-tempPosition)-this._friction*tempVelocity; +var tempPosition=position+aVelocity*step/2; +var tempVelocity=velocity+aAcceleration*step/2; + +var bVelocity=tempVelocity; +var bAcceleration=this._tension*(this._toValue-tempPosition)-this._friction*tempVelocity; +tempPosition=position+bVelocity*step/2; +tempVelocity=velocity+bAcceleration*step/2; + +var cVelocity=tempVelocity; +var cAcceleration=this._tension*(this._toValue-tempPosition)-this._friction*tempVelocity; +tempPosition=position+cVelocity*step/2; +tempVelocity=velocity+cAcceleration*step/2; + +var dVelocity=tempVelocity; +var dAcceleration=this._tension*(this._toValue-tempPosition)-this._friction*tempVelocity; +tempPosition=position+cVelocity*step/2; +tempVelocity=velocity+cAcceleration*step/2; + +var dxdt=(aVelocity+2*(bVelocity+cVelocity)+dVelocity)/6; +var dvdt=(aAcceleration+2*(bAcceleration+cAcceleration)+dAcceleration)/6; + +position+=dxdt*step; +velocity+=dvdt*step; +} + +this._lastTime=now; +this._lastPosition=position; +this._lastVelocity=velocity; + +this._onUpdate(position); +if(!this.__active){ +return; +} + + +var isOvershooting=false; +if(this._overshootClamping&&this._tension!==0){ +if(this._startPosition<this._toValue){ +isOvershooting=position>this._toValue; +}else{ +isOvershooting=position<this._toValue; +} +} +var isVelocity=Math.abs(velocity)<=this._restSpeedThreshold; +var isDisplacement=true; +if(this._tension!==0){ +isDisplacement=Math.abs(this._toValue-position)<=this._restDisplacementThreshold; +} + +if(isOvershooting||isVelocity&&isDisplacement){ +if(this._tension!==0){ + +this._onUpdate(this._toValue); +} + +this.__debouncedOnEnd({finished:true}); +return; +} +this._animationFrame=RequestAnimationFrame.current(this.onUpdate.bind(this)); +}},{key:'stop',value:function stop() + +{ +this.__active=false; +CancelAnimationFrame.current(this._animationFrame); +this.__debouncedOnEnd({finished:false}); +}}]);return SpringAnimation;}(Animation); + + +module.exports=SpringAnimation; + +/***/ }), +/* 178 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + + + + + +function tensionFromOrigamiValue(oValue){ +return(oValue-30)*3.62+194; +} + +function frictionFromOrigamiValue(oValue){ +return(oValue-8)*3+25; +} + +function fromOrigamiTensionAndFriction( +tension, +friction) +{ +return{ +tension:tensionFromOrigamiValue(tension), +friction:frictionFromOrigamiValue(friction)}; + +} + +function fromBouncinessAndSpeed( +bounciness, +speed) +{ +function normalize(value,startValue,endValue){ +return(value-startValue)/(endValue-startValue); +} + +function projectNormal(n,start,end){ +return start+n*(end-start); +} + +function linearInterpolation(t,start,end){ +return t*end+(1-t)*start; +} + +function quadraticOutInterpolation(t,start,end){ +return linearInterpolation(2*t-t*t,start,end); +} + +function b3Friction1(x){ +return 0.0007*Math.pow(x,3)- +0.031*Math.pow(x,2)+0.64*x+1.28; +} + +function b3Friction2(x){ +return 0.000044*Math.pow(x,3)- +0.006*Math.pow(x,2)+0.36*x+2; +} + +function b3Friction3(x){ +return 0.00000045*Math.pow(x,3)- +0.000332*Math.pow(x,2)+0.1078*x+5.84; +} + +function b3Nobounce(tension){ +if(tension<=18){ +return b3Friction1(tension); +}else if(tension>18&&tension<=44){ +return b3Friction2(tension); +}else{ +return b3Friction3(tension); +} +} + +var b=normalize(bounciness/1.7,0,20); +b=projectNormal(b,0,0.8); +var s=normalize(speed/1.7,0,20); +var bouncyTension=projectNormal(s,0.5,200); +var bouncyFriction=quadraticOutInterpolation( +b, +b3Nobounce(bouncyTension), +0.01); + + +return{ +tension:tensionFromOrigamiValue(bouncyTension), +friction:frictionFromOrigamiValue(bouncyFriction)}; + +} + +module.exports={ +fromOrigamiTensionAndFriction:fromOrigamiTensionAndFriction, +fromBouncinessAndSpeed:fromBouncinessAndSpeed}; + +/***/ }), +/* 179 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var Animation=__webpack_require__(35); +var AnimatedValue=__webpack_require__(23); +var Easing=__webpack_require__(100); +var RequestAnimationFrame=__webpack_require__(48); +var CancelAnimationFrame=__webpack_require__(47); + + + +var easeInOut=Easing.inOut(Easing.ease);var + + + + + + + + +TimingAnimation=function(_Animation){_inherits(TimingAnimation,_Animation); + + + + + + + + + + +function TimingAnimation( +config) +{_classCallCheck(this,TimingAnimation);var _this=_possibleConstructorReturn(this,(TimingAnimation.__proto__||Object.getPrototypeOf(TimingAnimation)).call(this)); + +_this._toValue=config.toValue; +_this._easing=config.easing!==undefined?config.easing:easeInOut; +_this._duration=config.duration!==undefined?config.duration:500; +_this._delay=config.delay!==undefined?config.delay:0; +_this.__isInteraction=config.isInteraction!==undefined?config.isInteraction:true;return _this; +}_createClass(TimingAnimation,[{key:'start',value:function start( + + +fromValue, +onUpdate, +onEnd) +{var _this2=this; +this.__active=true; +this._fromValue=fromValue; +this._onUpdate=onUpdate; +this.__onEnd=onEnd; + +var start=function start(){ +if(_this2._duration===0){ +_this2._onUpdate(_this2._toValue); +_this2.__debouncedOnEnd({finished:true}); +}else{ +_this2._startTime=Date.now(); +_this2._animationFrame=RequestAnimationFrame.current(_this2.onUpdate.bind(_this2)); +} +}; +if(this._delay){ +this._timeout=setTimeout(start,this._delay); +}else{ +start(); +} +}},{key:'onUpdate',value:function onUpdate() + +{ +var now=Date.now(); +if(now>=this._startTime+this._duration){ +if(this._duration===0){ +this._onUpdate(this._toValue); +}else{ +this._onUpdate( +this._fromValue+this._easing(1)*(this._toValue-this._fromValue)); + +} +this.__debouncedOnEnd({finished:true}); +return; +} + +this._onUpdate( +this._fromValue+ +this._easing((now-this._startTime)/this._duration)*( +this._toValue-this._fromValue)); + +if(this.__active){ +this._animationFrame=RequestAnimationFrame.current(this.onUpdate.bind(this)); +} +}},{key:'stop',value:function stop() + +{ +this.__active=false; +clearTimeout(this._timeout); +CancelAnimationFrame.current(this._animationFrame); +this.__debouncedOnEnd({finished:false}); +}}]);return TimingAnimation;}(Animation); + + +module.exports=TimingAnimation; + +/***/ }), +/* 180 */ +/***/ (function(module, exports) { + + + + + + + + + +var NEWTON_ITERATIONS=4; +var NEWTON_MIN_SLOPE=0.001; +var SUBDIVISION_PRECISION=0.0000001; +var SUBDIVISION_MAX_ITERATIONS=10; + +var kSplineTableSize=11; +var kSampleStepSize=1.0/(kSplineTableSize-1.0); + +var float32ArraySupported=typeof Float32Array==='function'; + +function A(aA1,aA2){return 1.0-3.0*aA2+3.0*aA1;} +function B(aA1,aA2){return 3.0*aA2-6.0*aA1;} +function C(aA1){return 3.0*aA1;} + + +function calcBezier(aT,aA1,aA2){return((A(aA1,aA2)*aT+B(aA1,aA2))*aT+C(aA1))*aT;} + + +function getSlope(aT,aA1,aA2){return 3.0*A(aA1,aA2)*aT*aT+2.0*B(aA1,aA2)*aT+C(aA1);} + +function binarySubdivide(aX,aA,aB,mX1,mX2){ +var currentX,currentT,i=0; +do{ +currentT=aA+(aB-aA)/2.0; +currentX=calcBezier(currentT,mX1,mX2)-aX; +if(currentX>0.0){ +aB=currentT; +}else{ +aA=currentT; +} +}while(Math.abs(currentX)>SUBDIVISION_PRECISION&&++i<SUBDIVISION_MAX_ITERATIONS); +return currentT; +} + +function newtonRaphsonIterate(aX,aGuessT,mX1,mX2){ +for(var i=0;i<NEWTON_ITERATIONS;++i){ +var currentSlope=getSlope(aGuessT,mX1,mX2); +if(currentSlope===0.0){ +return aGuessT; +} +var currentX=calcBezier(aGuessT,mX1,mX2)-aX; +aGuessT-=currentX/currentSlope; +} +return aGuessT; +} + +module.exports=function bezier(mX1,mY1,mX2,mY2){ +if(!(0<=mX1&&mX1<=1&&0<=mX2&&mX2<=1)){ +throw new Error('bezier x values must be in [0, 1] range'); +} + + +var sampleValues=float32ArraySupported?new Float32Array(kSplineTableSize):new Array(kSplineTableSize); +if(mX1!==mY1||mX2!==mY2){ +for(var i=0;i<kSplineTableSize;++i){ +sampleValues[i]=calcBezier(i*kSampleStepSize,mX1,mX2); +} +} + +function getTForX(aX){ +var intervalStart=0.0; +var currentSample=1; +var lastSample=kSplineTableSize-1; + +for(;currentSample!==lastSample&&sampleValues[currentSample]<=aX;++currentSample){ +intervalStart+=kSampleStepSize; +} +--currentSample; + + +var dist=(aX-sampleValues[currentSample])/(sampleValues[currentSample+1]-sampleValues[currentSample]); +var guessForT=intervalStart+dist*kSampleStepSize; + +var initialSlope=getSlope(guessForT,mX1,mX2); +if(initialSlope>=NEWTON_MIN_SLOPE){ +return newtonRaphsonIterate(aX,guessForT,mX1,mX2); +}else if(initialSlope===0.0){ +return guessForT; +}else{ +return binarySubdivide(aX,intervalStart,intervalStart+kSampleStepSize,mX1,mX2); +} +} + +return function BezierEasing(x){ +if(mX1===mY1&&mX2===mY2){ +return x; +} + +if(x===0){ +return 0; +} +if(x===1){ +return 1; +} +return calcBezier(getTForX(x),mY1,mY2); +}; +}; + +/***/ }), +/* 181 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var React=__webpack_require__(5); +var AnimatedProps=__webpack_require__(99); +var ApplyAnimatedValues=__webpack_require__(101); + +function createAnimatedComponent(Component){ +var refName='node';var + +AnimatedComponent=function(_React$Component){_inherits(AnimatedComponent,_React$Component);function AnimatedComponent(){_classCallCheck(this,AnimatedComponent);return _possibleConstructorReturn(this,(AnimatedComponent.__proto__||Object.getPrototypeOf(AnimatedComponent)).apply(this,arguments));}_createClass(AnimatedComponent,[{key:'componentWillUnmount',value:function componentWillUnmount() + + +{ +this._propsAnimated&&this._propsAnimated.__detach(); +}},{key:'setNativeProps',value:function setNativeProps( + +props){ +var didUpdate=ApplyAnimatedValues.current(this.refs[refName],props,this); +if(didUpdate===false){ +this.forceUpdate(); +} +}},{key:'componentWillMount',value:function componentWillMount() + +{ +this.attachProps(this.props); +}},{key:'attachProps',value:function attachProps( + +nextProps){var _this2=this; +var oldPropsAnimated=this._propsAnimated; + + + + + + + +var callback=function callback(){ +var didUpdate=ApplyAnimatedValues.current(_this2.refs[refName],_this2._propsAnimated.__getAnimatedValue(),_this2); +if(didUpdate===false){ +_this2.forceUpdate(); +} +}; + +this._propsAnimated=new AnimatedProps( +nextProps, +callback); + + + + + + + + + + +oldPropsAnimated&&oldPropsAnimated.__detach(); +}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps( + +nextProps){ +this.attachProps(nextProps); +}},{key:'render',value:function render() + +{ +return( +React.createElement(Component,_extends({}, +this._propsAnimated.__getValue(),{ +ref:refName}))); + + +}}]);return AnimatedComponent;}(React.Component); + +AnimatedComponent.propTypes={ +style:function style(props,propName,componentName){ +if(!Component.propTypes){ +return; +} + + + + + + + + + + + + + + +}}; + + +return AnimatedComponent; +} + +module.exports=createAnimatedComponent; + +/***/ }), +/* 182 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + +var invariant=__webpack_require__(39); + +var Animated=__webpack_require__(9); +var AnimatedValue=__webpack_require__(23); +var AnimatedValueXY=__webpack_require__(174); +var AnimatedAddition=__webpack_require__(167); +var AnimatedMultiplication=__webpack_require__(169); +var AnimatedModulo=__webpack_require__(168); +var AnimatedTemplate=__webpack_require__(171); +var AnimatedTracking=__webpack_require__(172); +var isAnimated=__webpack_require__(183); + +var Animation=__webpack_require__(35); +var TimingAnimation=__webpack_require__(179); +var DecayAnimation=__webpack_require__(175); +var SpringAnimation=__webpack_require__(177); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var maybeVectorAnim=function maybeVectorAnim( +value, +config, +anim) +{ +if(value instanceof AnimatedValueXY){ +var configX=_extends({},config); +var configY=_extends({},config); +for(var key in config){var _config$key= +config[key],x=_config$key.x,y=_config$key.y; +if(x!==undefined&&y!==undefined){ +configX[key]=x; +configY[key]=y; +} +} +var aX=anim(value.x,configX); +var aY=anim(value.y,configY); + + +return parallel([aX,aY],{stopTogether:false}); +} +return null; +}; + +var spring=function spring( +value, +config) +{ +return maybeVectorAnim(value,config,spring)||{ +start:function start(callback){ +var singleValue=value; +var singleConfig=config; +singleValue.stopTracking(); +if(config.toValue instanceof Animated){ +singleValue.track(new AnimatedTracking( +singleValue, +config.toValue, +SpringAnimation, +singleConfig, +callback)); + +}else{ +singleValue.animate(new SpringAnimation(singleConfig),callback); +} +}, + +stop:function stop(){ +value.stopAnimation(); +}}; + +}; + +var timing=function timing( +value, +config) +{ +return maybeVectorAnim(value,config,timing)||{ +start:function start(callback){ +var singleValue=value; +var singleConfig=config; +singleValue.stopTracking(); +if(config.toValue instanceof Animated){ +singleValue.track(new AnimatedTracking( +singleValue, +config.toValue, +TimingAnimation, +singleConfig, +callback)); + +}else{ +singleValue.animate(new TimingAnimation(singleConfig),callback); +} +}, + +stop:function stop(){ +value.stopAnimation(); +}}; + +}; + +var decay=function decay( +value, +config) +{ +return maybeVectorAnim(value,config,decay)||{ +start:function start(callback){ +var singleValue=value; +var singleConfig=config; +singleValue.stopTracking(); +singleValue.animate(new DecayAnimation(singleConfig),callback); +}, + +stop:function stop(){ +value.stopAnimation(); +}}; + +}; + +var sequence=function sequence( +animations) +{ +var current=0; +return{ +start:function start(callback){ +var onComplete=function onComplete(result){ +if(!result.finished){ +callback&&callback(result); +return; +} + +current++; + +if(current===animations.length){ +callback&&callback(result); +return; +} + +animations[current].start(onComplete); +}; + +if(animations.length===0){ +callback&&callback({finished:true}); +}else{ +animations[current].start(onComplete); +} +}, + +stop:function stop(){ +if(current<animations.length){ +animations[current].stop(); +} +}}; + +}; + + + + +var parallel=function parallel( +animations, +config) +{ +var doneCount=0; + +var hasEnded={}; +var stopTogether=!(config&&config.stopTogether===false); + +var result={ +start:function start(callback){ +if(doneCount===animations.length){ +callback&&callback({finished:true}); +return; +} + +animations.forEach(function(animation,idx){ +var cb=function cb(endResult){ +hasEnded[idx]=true; +doneCount++; +if(doneCount===animations.length){ +doneCount=0; +callback&&callback(endResult); +return; +} + +if(!endResult.finished&&stopTogether){ +result.stop(); +} +}; + +if(!animation){ +cb({finished:true}); +}else{ +animation.start(cb); +} +}); +}, + +stop:function stop(){ +animations.forEach(function(animation,idx){ +!hasEnded[idx]&&animation.stop(); +hasEnded[idx]=true; +}); +}}; + + +return result; +}; + +var delay=function delay(time){ + +return timing(new AnimatedValue(0),{toValue:0,delay:time,duration:0}); +}; + +var stagger=function stagger( +time, +animations) +{ +return parallel(animations.map(function(animation,i){ +return sequence([ +delay(time*i), +animation]); + +})); +}; + + + + +var event=function event( +argMapping, +config) +{ +return function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];} +var traverse=function traverse(recMapping,recEvt,key){ +if(typeof recEvt==='number'){ +invariant( +recMapping instanceof AnimatedValue, +'Bad mapping of type '+typeof recMapping+' for key '+key+ +', event value must map to AnimatedValue'); + +recMapping.setValue(recEvt); +return; +} +invariant( +typeof recMapping==='object', +'Bad mapping of type '+typeof recMapping+' for key '+key); + +invariant( +typeof recEvt==='object', +'Bad event of type '+typeof recEvt+' for key '+key); + +for(var key in recMapping){ +traverse(recMapping[key],recEvt[key],key); +} +}; +argMapping.forEach(function(mapping,idx){ +traverse(mapping,args[idx],'arg'+idx); +}); +if(config&&config.listener){ +config.listener.apply(null,args); +} +}; +}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +module.exports={ + + + + +Value:AnimatedValue, + + + +ValueXY:AnimatedValueXY, + + + + + +decay:decay, + + + + +timing:timing, + + + + +spring:spring, + + + + + +add:function add(a,b){ +return new AnimatedAddition(a,b); +}, + + + + +multiply:function multiply(a,b){ +return new AnimatedMultiplication(a,b); +}, + + + + + +modulo:function modulo(a,modulus){ +return new AnimatedModulo(a,modulus); +}, + + + + + +template:function template(strings){for(var _len2=arguments.length,values=Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){values[_key2-1]=arguments[_key2];} +return new AnimatedTemplate(strings,values); +}, + + + + +delay:delay, + + + + + +sequence:sequence, + + + + + +parallel:parallel, + + + + +stagger:stagger, + + + + + + + + + + + + + + + + + +event:event, + + + + + +isAnimated:isAnimated, + + + + +createAnimatedComponent:__webpack_require__(181), + +inject:{ +ApplyAnimatedValues:__webpack_require__(101).inject, +InteractionManager:__webpack_require__(103).inject, +FlattenStyle:__webpack_require__(102).inject, +RequestAnimationFrame:__webpack_require__(48).inject, +CancelAnimationFrame:__webpack_require__(47).inject}, + + +__PropsOnlyForTests:__webpack_require__(99)}; + +/***/ }), +/* 183 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var Animated=__webpack_require__(9); + +function isAnimated(obj){ +return obj instanceof Animated; +} + +module.exports=isAnimated; + +/***/ }), +/* 184 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var emptyObject = __webpack_require__(38); +var _invariant = __webpack_require__(0); + +if (true) { + var warning = __webpack_require__(1); +} + +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; +} + +var ReactPropTypeLocationNames; +if (true) { + ReactPropTypeLocationNames = { + prop: 'prop', + context: 'context', + childContext: 'child context', + }; +} else { + ReactPropTypeLocationNames = {}; +} + +function factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) { + /** + * Policies that describe methods in `ReactClassInterface`. + */ + + + var injectedMixins = []; + + /** + * Composite components are higher-level components that compose other composite + * or host components. + * + * To create a new type of `ReactClass`, pass a specification of + * your new class to `React.createClass`. The only requirement of your class + * specification is that you implement a `render` method. + * + * var MyComponent = React.createClass({ + * render: function() { + * return <div>Hello World</div>; + * } + * }); + * + * The class specification supports a specific protocol of methods that have + * special meaning (e.g. `render`). See `ReactClassInterface` for + * more the comprehensive protocol. Any other properties and methods in the + * class specification will be available on the prototype. + * + * @interface ReactClassInterface + * @internal + */ + var ReactClassInterface = { + + /** + * An array of Mixin objects to include when defining your component. + * + * @type {array} + * @optional + */ + mixins: 'DEFINE_MANY', + + /** + * An object containing properties and methods that should be defined on + * the component's constructor instead of its prototype (static methods). + * + * @type {object} + * @optional + */ + statics: 'DEFINE_MANY', + + /** + * Definition of prop types for this component. + * + * @type {object} + * @optional + */ + propTypes: 'DEFINE_MANY', + + /** + * Definition of context types for this component. + * + * @type {object} + * @optional + */ + contextTypes: 'DEFINE_MANY', + + /** + * Definition of context types this component sets for its children. + * + * @type {object} + * @optional + */ + childContextTypes: 'DEFINE_MANY', + + // ==== Definition methods ==== + + /** + * Invoked when the component is mounted. Values in the mapping will be set on + * `this.props` if that prop is not specified (i.e. using an `in` check). + * + * This method is invoked before `getInitialState` and therefore cannot rely + * on `this.state` or use `this.setState`. + * + * @return {object} + * @optional + */ + getDefaultProps: 'DEFINE_MANY_MERGED', + + /** + * Invoked once before the component is mounted. The return value will be used + * as the initial value of `this.state`. + * + * getInitialState: function() { + * return { + * isOn: false, + * fooBaz: new BazFoo() + * } + * } + * + * @return {object} + * @optional + */ + getInitialState: 'DEFINE_MANY_MERGED', + + /** + * @return {object} + * @optional + */ + getChildContext: 'DEFINE_MANY_MERGED', + + /** + * Uses props from `this.props` and state from `this.state` to render the + * structure of the component. + * + * No guarantees are made about when or how often this method is invoked, so + * it must not have side effects. + * + * render: function() { + * var name = this.props.name; + * return <div>Hello, {name}!</div>; + * } + * + * @return {ReactComponent} + * @nosideeffects + * @required + */ + render: 'DEFINE_ONCE', + + // ==== Delegate methods ==== + + /** + * Invoked when the component is initially created and about to be mounted. + * This may have side effects, but any external subscriptions or data created + * by this method must be cleaned up in `componentWillUnmount`. + * + * @optional + */ + componentWillMount: 'DEFINE_MANY', + + /** + * Invoked when the component has been mounted and has a DOM representation. + * However, there is no guarantee that the DOM node is in the document. + * + * Use this as an opportunity to operate on the DOM when the component has + * been mounted (initialized and rendered) for the first time. + * + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidMount: 'DEFINE_MANY', + + /** + * Invoked before the component receives new props. + * + * Use this as an opportunity to react to a prop transition by updating the + * state using `this.setState`. Current props are accessed via `this.props`. + * + * componentWillReceiveProps: function(nextProps, nextContext) { + * this.setState({ + * likesIncreasing: nextProps.likeCount > this.props.likeCount + * }); + * } + * + * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop + * transition may cause a state change, but the opposite is not true. If you + * need it, you are probably looking for `componentWillUpdate`. + * + * @param {object} nextProps + * @optional + */ + componentWillReceiveProps: 'DEFINE_MANY', + + /** + * Invoked while deciding if the component should be updated as a result of + * receiving new props, state and/or context. + * + * Use this as an opportunity to `return false` when you're certain that the + * transition to the new props/state/context will not require a component + * update. + * + * shouldComponentUpdate: function(nextProps, nextState, nextContext) { + * return !equal(nextProps, this.props) || + * !equal(nextState, this.state) || + * !equal(nextContext, this.context); + * } + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @return {boolean} True if the component should update. + * @optional + */ + shouldComponentUpdate: 'DEFINE_ONCE', + + /** + * Invoked when the component is about to update due to a transition from + * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` + * and `nextContext`. + * + * Use this as an opportunity to perform preparation before an update occurs. + * + * NOTE: You **cannot** use `this.setState()` in this method. + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @param {ReactReconcileTransaction} transaction + * @optional + */ + componentWillUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component's DOM representation has been updated. + * + * Use this as an opportunity to operate on the DOM when the component has + * been updated. + * + * @param {object} prevProps + * @param {?object} prevState + * @param {?object} prevContext + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component is about to be removed from its parent and have + * its DOM representation destroyed. + * + * Use this as an opportunity to deallocate any external resources. + * + * NOTE: There is no `componentDidUnmount` since your component will have been + * destroyed by that point. + * + * @optional + */ + componentWillUnmount: 'DEFINE_MANY', + + // ==== Advanced methods ==== + + /** + * Updates the component's currently mounted DOM representation. + * + * By default, this implements React's rendering and reconciliation algorithm. + * Sophisticated clients may wish to override this. + * + * @param {ReactReconcileTransaction} transaction + * @internal + * @overridable + */ + updateComponent: 'OVERRIDE_BASE' + + }; + + /** + * Mapping from class specification keys to special processing functions. + * + * Although these are declared like instance properties in the specification + * when defining classes using `React.createClass`, they are actually static + * and are accessible on the constructor instead of the prototype. Despite + * being static, they must be defined outside of the "statics" key under + * which all other static methods are defined. + */ + var RESERVED_SPEC_KEYS = { + displayName: function (Constructor, displayName) { + Constructor.displayName = displayName; + }, + mixins: function (Constructor, mixins) { + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + mixSpecIntoComponent(Constructor, mixins[i]); + } + } + }, + childContextTypes: function (Constructor, childContextTypes) { + if (true) { + validateTypeDef(Constructor, childContextTypes, 'childContext'); + } + Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes); + }, + contextTypes: function (Constructor, contextTypes) { + if (true) { + validateTypeDef(Constructor, contextTypes, 'context'); + } + Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes); + }, + /** + * Special case getDefaultProps which should move into statics but requires + * automatic merging. + */ + getDefaultProps: function (Constructor, getDefaultProps) { + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); + } else { + Constructor.getDefaultProps = getDefaultProps; + } + }, + propTypes: function (Constructor, propTypes) { + if (true) { + validateTypeDef(Constructor, propTypes, 'prop'); + } + Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); + }, + statics: function (Constructor, statics) { + mixStaticSpecIntoComponent(Constructor, statics); + }, + autobind: function () {} }; + + function validateTypeDef(Constructor, typeDef, location) { + for (var propName in typeDef) { + if (typeDef.hasOwnProperty(propName)) { + // use a warning instead of an _invariant so components + // don't show up in prod but only in __DEV__ + true ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0; + } + } + } + + function validateMethodOverride(isAlreadyDefined, name) { + var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; + + // Disallow overriding of base class methods unless explicitly allowed. + if (ReactClassMixin.hasOwnProperty(name)) { + _invariant(specPolicy === 'OVERRIDE_BASE', 'ReactClassInterface: You are attempting to override ' + '`%s` from your class specification. Ensure that your method names ' + 'do not overlap with React methods.', name); + } + + // Disallow defining methods more than once unless explicitly allowed. + if (isAlreadyDefined) { + _invariant(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED', 'ReactClassInterface: You are attempting to define ' + '`%s` on your component more than once. This conflict may be due ' + 'to a mixin.', name); + } + } + + /** + * Mixin helper which handles policy validation and reserved + * specification keys when building React classes. + */ + function mixSpecIntoComponent(Constructor, spec) { + if (!spec) { + if (true) { + var typeofSpec = typeof spec; + var isMixinValid = typeofSpec === 'object' && spec !== null; + + true ? warning(isMixinValid, '%s: You\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0; + } + + return; + } + + _invariant(typeof spec !== 'function', 'ReactClass: You\'re attempting to ' + 'use a component class or function as a mixin. Instead, just use a ' + 'regular object.'); + _invariant(!isValidElement(spec), 'ReactClass: You\'re attempting to ' + 'use a component as a mixin. Instead, just use a regular object.'); + + var proto = Constructor.prototype; + var autoBindPairs = proto.__reactAutoBindPairs; + + // By handling mixins before any other properties, we ensure the same + // chaining order is applied to methods with DEFINE_MANY policy, whether + // mixins are listed before or after these methods in the spec. + if (spec.hasOwnProperty(MIXINS_KEY)) { + RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); + } + + for (var name in spec) { + if (!spec.hasOwnProperty(name)) { + continue; + } + + if (name === MIXINS_KEY) { + // We have already handled mixins in a special case above. + continue; + } + + var property = spec[name]; + var isAlreadyDefined = proto.hasOwnProperty(name); + validateMethodOverride(isAlreadyDefined, name); + + if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { + RESERVED_SPEC_KEYS[name](Constructor, property); + } else { + // Setup methods on prototype: + // The following member methods should not be automatically bound: + // 1. Expected ReactClass methods (in the "interface"). + // 2. Overridden methods (that were mixed in). + var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); + var isFunction = typeof property === 'function'; + var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; + + if (shouldAutoBind) { + autoBindPairs.push(name, property); + proto[name] = property; + } else { + if (isAlreadyDefined) { + var specPolicy = ReactClassInterface[name]; + + // These cases should already be caught by validateMethodOverride. + _invariant(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY'), 'ReactClass: Unexpected spec policy %s for key %s ' + 'when mixing in component specs.', specPolicy, name); + + // For methods which are defined more than once, call the existing + // methods before calling the new property, merging if appropriate. + if (specPolicy === 'DEFINE_MANY_MERGED') { + proto[name] = createMergedResultFunction(proto[name], property); + } else if (specPolicy === 'DEFINE_MANY') { + proto[name] = createChainedFunction(proto[name], property); + } + } else { + proto[name] = property; + if (true) { + // Add verbose displayName to the function, which helps when looking + // at profiling tools. + if (typeof property === 'function' && spec.displayName) { + proto[name].displayName = spec.displayName + '_' + name; + } + } + } + } + } + } + } + + function mixStaticSpecIntoComponent(Constructor, statics) { + if (!statics) { + return; + } + for (var name in statics) { + var property = statics[name]; + if (!statics.hasOwnProperty(name)) { + continue; + } + + var isReserved = name in RESERVED_SPEC_KEYS; + _invariant(!isReserved, 'ReactClass: You are attempting to define a reserved ' + 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' + 'as an instance property instead; it will still be accessible on the ' + 'constructor.', name); + + var isInherited = name in Constructor; + _invariant(!isInherited, 'ReactClass: You are attempting to define ' + '`%s` on your component more than once. This conflict may be ' + 'due to a mixin.', name); + Constructor[name] = property; + } + } + + /** + * Merge two objects, but throw if both contain the same key. + * + * @param {object} one The first object, which is mutated. + * @param {object} two The second object + * @return {object} one after it has been mutated to contain everything in two. + */ + function mergeIntoWithNoDuplicateKeys(one, two) { + _invariant(one && two && typeof one === 'object' && typeof two === 'object', 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'); + + for (var key in two) { + if (two.hasOwnProperty(key)) { + _invariant(one[key] === undefined, 'mergeIntoWithNoDuplicateKeys(): ' + 'Tried to merge two objects with the same key: `%s`. This conflict ' + 'may be due to a mixin; in particular, this may be caused by two ' + 'getInitialState() or getDefaultProps() methods returning objects ' + 'with clashing keys.', key); + one[key] = two[key]; + } + } + return one; + } + + /** + * Creates a function that invokes two functions and merges their return values. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ + function createMergedResultFunction(one, two) { + return function mergedResult() { + var a = one.apply(this, arguments); + var b = two.apply(this, arguments); + if (a == null) { + return b; + } else if (b == null) { + return a; + } + var c = {}; + mergeIntoWithNoDuplicateKeys(c, a); + mergeIntoWithNoDuplicateKeys(c, b); + return c; + }; + } + + /** + * Creates a function that invokes two functions and ignores their return vales. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ + function createChainedFunction(one, two) { + return function chainedFunction() { + one.apply(this, arguments); + two.apply(this, arguments); + }; + } + + /** + * Binds a method to the component. + * + * @param {object} component Component whose method is going to be bound. + * @param {function} method Method to be bound. + * @return {function} The bound method. + */ + function bindAutoBindMethod(component, method) { + var boundMethod = method.bind(component); + if (true) { + boundMethod.__reactBoundContext = component; + boundMethod.__reactBoundMethod = method; + boundMethod.__reactBoundArguments = null; + var componentName = component.constructor.displayName; + var _bind = boundMethod.bind; + boundMethod.bind = function (newThis) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + // User is trying to bind() an autobound method; we effectively will + // ignore the value of "this" that the user is trying to use, so + // let's warn. + if (newThis !== component && newThis !== null) { + true ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0; + } else if (!args.length) { + true ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0; + return boundMethod; + } + var reboundMethod = _bind.apply(boundMethod, arguments); + reboundMethod.__reactBoundContext = component; + reboundMethod.__reactBoundMethod = method; + reboundMethod.__reactBoundArguments = args; + return reboundMethod; + }; + } + return boundMethod; + } + + /** + * Binds all auto-bound methods in a component. + * + * @param {object} component Component whose method is going to be bound. + */ + function bindAutoBindMethods(component) { + var pairs = component.__reactAutoBindPairs; + for (var i = 0; i < pairs.length; i += 2) { + var autoBindKey = pairs[i]; + var method = pairs[i + 1]; + component[autoBindKey] = bindAutoBindMethod(component, method); + } + } + + var IsMountedMixin = { + componentDidMount: function () { + this.__isMounted = true; + }, + componentWillUnmount: function () { + this.__isMounted = false; + } + }; + + /** + * Add more to the ReactClass base class. These are all legacy features and + * therefore not already part of the modern ReactComponent. + */ + var ReactClassMixin = { + + /** + * TODO: This will be deprecated because state should always keep a consistent + * type signature and the only use case for this, is to avoid that. + */ + replaceState: function (newState, callback) { + this.updater.enqueueReplaceState(this, newState, callback); + }, + + /** + * Checks whether or not this composite component is mounted. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function () { + if (true) { + true ? warning(this.__didWarnIsMounted, '%s: isMounted is deprecated. Instead, make sure to clean up ' + 'subscriptions and pending requests in componentWillUnmount to ' + 'prevent memory leaks.', this.constructor && this.constructor.displayName || this.name || 'Component') : void 0; + this.__didWarnIsMounted = true; + } + return !!this.__isMounted; + } + }; + + var ReactClassComponent = function () {}; + _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); + + /** + * Creates a composite component class given a class specification. + * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass + * + * @param {object} spec Class specification (which must define `render`). + * @return {function} Component constructor function. + * @public + */ + function createClass(spec) { + // 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. + + if (true) { + true ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0; + } + + // Wire up auto-binding + if (this.__reactAutoBindPairs.length) { + bindAutoBindMethods(this); + } + + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + + this.state = null; + + // ReactClasses doesn't have constructors. Instead, they use the + // getInitialState and componentWillMount methods for initialization. + + var initialState = this.getInitialState ? this.getInitialState() : null; + if (true) { + // We allow auto-mocks to proceed as if they're returning null. + if (initialState === undefined && this.getInitialState._isMockFunction) { + // This is probably bad practice. Consider warning here and + // deprecating this convenience. + initialState = null; + } + } + _invariant(typeof initialState === 'object' && !Array.isArray(initialState), '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent'); + + this.state = initialState; + }); + Constructor.prototype = new ReactClassComponent(); + Constructor.prototype.constructor = Constructor; + Constructor.prototype.__reactAutoBindPairs = []; + + injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); + + mixSpecIntoComponent(Constructor, IsMountedMixin); + mixSpecIntoComponent(Constructor, spec); + + // Initialize the defaultProps property after all mixins have been merged. + if (Constructor.getDefaultProps) { + Constructor.defaultProps = Constructor.getDefaultProps(); + } + + if (true) { + // This is a tag to indicate that the use of these method names is ok, + // since it's used with createClass. If it's not, then it's likely a + // mistake so we'll warn you to use the static property, property + // initializer or constructor respectively. + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps.isReactClassApproved = {}; + } + if (Constructor.prototype.getInitialState) { + Constructor.prototype.getInitialState.isReactClassApproved = {}; + } + } + + _invariant(Constructor.prototype.render, 'createClass(...): Class specification must implement a `render` method.'); + + if (true) { + true ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0; + true ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0; + } + + // Reduce time spent doing lookups by setting these on the prototype. + for (var methodName in ReactClassInterface) { + if (!Constructor.prototype[methodName]) { + Constructor.prototype[methodName] = null; + } + } + + return Constructor; + } + + return createClass; +} + +module.exports = factory; + + +/***/ }), +/* 185 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = hyphenateProperty; + +var _hyphenateStyleName = __webpack_require__(110); + +var _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function hyphenateProperty(property) { + return (0, _hyphenateStyleName2.default)(property); +} +module.exports = exports['default']; + +/***/ }), +/* 186 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var isObj = __webpack_require__(218); +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Sources cannot be null or undefined'); + } + + return Object(val); +} + +function assignKey(to, from, key) { + var val = from[key]; + + if (val === undefined || val === null) { + return; + } + + if (hasOwnProperty.call(to, key)) { + if (to[key] === undefined || to[key] === null) { + throw new TypeError('Cannot convert undefined or null to object (' + key + ')'); + } + } + + if (!hasOwnProperty.call(to, key) || !isObj(val)) { + to[key] = val; + } else { + to[key] = assign(Object(to[key]), from[key]); + } +} + +function assign(to, from) { + if (to === from) { + return to; + } + + from = Object(from); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + assignKey(to, from, key); + } + } + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(from); + + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + assignKey(to, from, symbols[i]); + } + } + } + + return to; +} + +module.exports = function deepAssign(target) { + target = toObject(target); + + for (var s = 1; s < arguments.length; s++) { + assign(target, arguments[s]); + } + + return target; +}; + + +/***/ }), +/* 187 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + */ + +var TouchEventUtils = { + /** + * Utility function for common case of extracting out the primary touch from a + * touch event. + * - `touchEnd` events usually do not have the `touches` property. + * http://stackoverflow.com/questions/3666929/ + * mobile-sarai-touchend-event-not-firing-when-last-touch-is-removed + * + * @param {Event} nativeEvent Native event that may or may not be a touch. + * @return {TouchesObject?} an object with pageX and pageY or null. + */ + extractSingleTouch: function extractSingleTouch(nativeEvent) { + var touches = nativeEvent.touches; + var changedTouches = nativeEvent.changedTouches; + var hasTouches = touches && touches.length > 0; + var hasChangedTouches = changedTouches && changedTouches.length > 0; + + return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent; + } +}; + +module.exports = TouchEventUtils; + +/***/ }), +/* 188 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +var _hyphenPattern = /-(.)/g; + +/** + * Camelcases a hyphenated string, for example: + * + * > camelize('background-color') + * < "backgroundColor" + * + * @param {string} string + * @return {string} + */ +function camelize(string) { + return string.replace(_hyphenPattern, function (_, character) { + return character.toUpperCase(); + }); +} + +module.exports = camelize; + +/***/ }), +/* 189 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * + */ + +var isTextNode = __webpack_require__(197); + +/*eslint-disable no-bitwise */ + +/** + * Checks if a given DOM node contains or is another DOM node. + */ +function containsNode(outerNode, innerNode) { + if (!outerNode || !innerNode) { + return false; + } else if (outerNode === innerNode) { + return true; + } else if (isTextNode(outerNode)) { + return false; + } else if (isTextNode(innerNode)) { + return containsNode(outerNode, innerNode.parentNode); + } else if ('contains' in outerNode) { + return outerNode.contains(innerNode); + } else if (outerNode.compareDocumentPosition) { + return !!(outerNode.compareDocumentPosition(innerNode) & 16); + } else { + return false; + } +} + +module.exports = containsNode; + +/***/ }), +/* 190 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +var invariant = __webpack_require__(0); + +/** + * Convert array-like objects to arrays. + * + * This API assumes the caller knows the contents of the data type. For less + * well defined inputs use createArrayFromMixed. + * + * @param {object|function|filelist} obj + * @return {array} + */ +function toArray(obj) { + var length = obj.length; + + // Some browsers builtin objects can report typeof 'function' (e.g. NodeList + // in old versions of Safari). + !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? true ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0; + + !(typeof length === 'number') ? true ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0; + + !(length === 0 || length - 1 in obj) ? true ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0; + + !(typeof obj.callee !== 'function') ? true ? invariant(false, 'toArray: Object can\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; + + // Old IE doesn't give collections access to hasOwnProperty. Assume inputs + // without method will throw during the slice call and skip straight to the + // fallback. + if (obj.hasOwnProperty) { + try { + return Array.prototype.slice.call(obj); + } catch (e) { + // IE < 9 does not support Array#slice on collections objects + } + } + + // Fall back to copying key by key. This assumes all keys have a value, + // so will not preserve sparsely populated inputs. + var ret = Array(length); + for (var ii = 0; ii < length; ii++) { + ret[ii] = obj[ii]; + } + return ret; +} + +/** + * Perform a heuristic test to determine if an object is "array-like". + * + * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?" + * Joshu replied: "Mu." + * + * This function determines if its argument has "array nature": it returns + * true if the argument is an actual array, an `arguments' object, or an + * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()). + * + * It will return false for other array-like objects like Filelist. + * + * @param {*} obj + * @return {boolean} + */ +function hasArrayNature(obj) { + return ( + // not null/false + !!obj && ( + // arrays are objects, NodeLists are functions in Safari + typeof obj == 'object' || typeof obj == 'function') && + // quacks like an array + 'length' in obj && + // not window + !('setInterval' in obj) && + // no DOM node should be considered an array-like + // a 'select' element has 'length' and 'item' properties on IE8 + typeof obj.nodeType != 'number' && ( + // a real array + Array.isArray(obj) || + // arguments + 'callee' in obj || + // HTMLCollection/NodeList + 'item' in obj) + ); +} + +/** + * Ensure that the argument is an array by wrapping it in an array if it is not. + * Creates a copy of the argument if it is already an array. + * + * This is mostly useful idiomatically: + * + * var createArrayFromMixed = require('createArrayFromMixed'); + * + * function takesOneOrMoreThings(things) { + * things = createArrayFromMixed(things); + * ... + * } + * + * This allows you to treat `things' as an array, but accept scalars in the API. + * + * If you need to convert an array-like object, like `arguments`, into an array + * use toArray instead. + * + * @param {*} obj + * @return {array} + */ +function createArrayFromMixed(obj) { + if (!hasArrayNature(obj)) { + return [obj]; + } else if (Array.isArray(obj)) { + return obj.slice(); + } else { + return toArray(obj); + } +} + +module.exports = createArrayFromMixed; + +/***/ }), +/* 191 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +/*eslint-disable fb-www/unsafe-html*/ + +var ExecutionEnvironment = __webpack_require__(4); + +var createArrayFromMixed = __webpack_require__(190); +var getMarkupWrap = __webpack_require__(192); +var invariant = __webpack_require__(0); + +/** + * Dummy container used to render all markup. + */ +var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null; + +/** + * Pattern used by `getNodeName`. + */ +var nodeNamePattern = /^\s*<(\w+)/; + +/** + * Extracts the `nodeName` of the first element in a string of markup. + * + * @param {string} markup String of markup. + * @return {?string} Node name of the supplied markup. + */ +function getNodeName(markup) { + var nodeNameMatch = markup.match(nodeNamePattern); + return nodeNameMatch && nodeNameMatch[1].toLowerCase(); +} + +/** + * Creates an array containing the nodes rendered from the supplied markup. The + * optionally supplied `handleScript` function will be invoked once for each + * <script> element that is rendered. If no `handleScript` function is supplied, + * an exception is thrown if any <script> elements are rendered. + * + * @param {string} markup A string of valid HTML markup. + * @param {?function} handleScript Invoked once for each rendered <script>. + * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes. + */ +function createNodesFromMarkup(markup, handleScript) { + var node = dummyNode; + !!!dummyNode ? true ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0; + var nodeName = getNodeName(markup); + + var wrap = nodeName && getMarkupWrap(nodeName); + if (wrap) { + node.innerHTML = wrap[1] + markup + wrap[2]; + + var wrapDepth = wrap[0]; + while (wrapDepth--) { + node = node.lastChild; + } + } else { + node.innerHTML = markup; + } + + var scripts = node.getElementsByTagName('script'); + if (scripts.length) { + !handleScript ? true ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0; + createArrayFromMixed(scripts).forEach(handleScript); + } + + var nodes = Array.from(node.childNodes); + while (node.lastChild) { + node.removeChild(node.lastChild); + } + return nodes; +} + +module.exports = createNodesFromMarkup; + +/***/ }), +/* 192 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + */ + +/*eslint-disable fb-www/unsafe-html */ + +var ExecutionEnvironment = __webpack_require__(4); + +var invariant = __webpack_require__(0); + +/** + * Dummy container used to detect which wraps are necessary. + */ +var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null; + +/** + * Some browsers cannot use `innerHTML` to render certain elements standalone, + * so we wrap them, render the wrapped nodes, then extract the desired node. + * + * In IE8, certain elements cannot render alone, so wrap all elements ('*'). + */ + +var shouldWrap = {}; + +var selectWrap = [1, '<select multiple="true">', '</select>']; +var tableWrap = [1, '<table>', '</table>']; +var trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>']; + +var svgWrap = [1, '<svg xmlns="http://www.w3.org/2000/svg">', '</svg>']; + +var markupWrap = { + '*': [1, '?<div>', '</div>'], + + 'area': [1, '<map>', '</map>'], + 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'], + 'legend': [1, '<fieldset>', '</fieldset>'], + 'param': [1, '<object>', '</object>'], + 'tr': [2, '<table><tbody>', '</tbody></table>'], + + 'optgroup': selectWrap, + 'option': selectWrap, + + 'caption': tableWrap, + 'colgroup': tableWrap, + 'tbody': tableWrap, + 'tfoot': tableWrap, + 'thead': tableWrap, + + 'td': trWrap, + 'th': trWrap +}; + +// Initialize the SVG elements since we know they'll always need to be wrapped +// consistently. If they are created inside a <div> they will be initialized in +// the wrong namespace (and will not display). +var svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan']; +svgElements.forEach(function (nodeName) { + markupWrap[nodeName] = svgWrap; + shouldWrap[nodeName] = true; +}); + +/** + * Gets the markup wrap configuration for the supplied `nodeName`. + * + * NOTE: This lazily detects which wraps are necessary for the current browser. + * + * @param {string} nodeName Lowercase `nodeName`. + * @return {?array} Markup wrap configuration, if applicable. + */ +function getMarkupWrap(nodeName) { + !!!dummyNode ? true ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0; + if (!markupWrap.hasOwnProperty(nodeName)) { + nodeName = '*'; + } + if (!shouldWrap.hasOwnProperty(nodeName)) { + if (nodeName === '*') { + dummyNode.innerHTML = '<link />'; + } else { + dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>'; + } + shouldWrap[nodeName] = !dummyNode.firstChild; + } + return shouldWrap[nodeName] ? markupWrap[nodeName] : null; +} + +module.exports = getMarkupWrap; + +/***/ }), +/* 193 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + + + +/** + * Gets the scroll position of the supplied element or window. + * + * The return values are unbounded, unlike `getScrollPosition`. This means they + * may be negative or exceed the element boundaries (which is possible using + * inertial scrolling). + * + * @param {DOMWindow|DOMElement} scrollable + * @return {object} Map with `x` and `y` keys. + */ + +function getUnboundedScrollPosition(scrollable) { + if (scrollable.Window && scrollable instanceof scrollable.Window) { + return { + x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft, + y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop + }; + } + return { + x: scrollable.scrollLeft, + y: scrollable.scrollTop + }; +} + +module.exports = getUnboundedScrollPosition; + +/***/ }), +/* 194 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +var _uppercasePattern = /([A-Z])/g; + +/** + * Hyphenates a camelcased string, for example: + * + * > hyphenate('backgroundColor') + * < "background-color" + * + * For CSS style names, use `hyphenateStyleName` instead which works properly + * with all vendor prefixes, including `ms`. + * + * @param {string} string + * @return {string} + */ +function hyphenate(string) { + return string.replace(_uppercasePattern, '-$1').toLowerCase(); +} + +module.exports = hyphenate; + +/***/ }), +/* 195 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + + + +var hyphenate = __webpack_require__(194); + +var msPattern = /^ms-/; + +/** + * Hyphenates a camelcased CSS property name, for example: + * + * > hyphenateStyleName('backgroundColor') + * < "background-color" + * > hyphenateStyleName('MozTransition') + * < "-moz-transition" + * > hyphenateStyleName('msTransition') + * < "-ms-transition" + * + * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix + * is converted to `-ms-`. + * + * @param {string} string + * @return {string} + */ +function hyphenateStyleName(string) { + return hyphenate(string).replace(msPattern, '-ms-'); +} + +module.exports = hyphenateStyleName; + +/***/ }), +/* 196 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +/** + * @param {*} object The object to check. + * @return {boolean} Whether or not the object is a DOM node. + */ +function isNode(object) { + var doc = object ? object.ownerDocument || object : document; + var defaultView = doc.defaultView || window; + return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string')); +} + +module.exports = isNode; + +/***/ }), +/* 197 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +var isNode = __webpack_require__(196); + +/** + * @param {*} object The object to check. + * @return {boolean} Whether or not the object is a DOM text node. + */ +function isTextNode(object) { + return isNode(object) && object.nodeType == 3; +} + +module.exports = isTextNode; + +/***/ }), +/* 198 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * + * @typechecks static-only + */ + + + +/** + * Memoizes the return value of a function that accepts one string argument. + */ + +function memoizeStringOnly(callback) { + var cache = {}; + return function (string) { + if (!cache.hasOwnProperty(string)) { + cache[string] = callback.call(this, string); + } + return cache[string]; + }; +} + +module.exports = memoizeStringOnly; + +/***/ }), +/* 199 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + +/** + * 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. + * + */ + +var nativeRequestAnimationFrame = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || global.oRequestAnimationFrame || global.msRequestAnimationFrame; + +module.exports = nativeRequestAnimationFrame; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34))) + +/***/ }), +/* 200 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + + + +var ExecutionEnvironment = __webpack_require__(4); + +var performance; + +if (ExecutionEnvironment.canUseDOM) { + performance = window.performance || window.msPerformance || window.webkitPerformance; +} + +module.exports = performance || {}; + +/***/ }), +/* 201 */ +/***/ (function(module, exports, __webpack_require__) { + +"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. + * + * @typechecks + */ + +var performance = __webpack_require__(200); + +var performanceNow; + +/** + * Detect if we can use `window.performance.now()` and gracefully fallback to + * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now + * because of Facebook's testing infrastructure. + */ +if (performance.now) { + performanceNow = function performanceNow() { + return performance.now(); + }; +} else { + performanceNow = function performanceNow() { + return Date.now(); + }; +} + +module.exports = performanceNow; + +/***/ }), +/* 202 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createPrefixer; + +var _prefixProperty = __webpack_require__(216); + +var _prefixProperty2 = _interopRequireDefault(_prefixProperty); + +var _prefixValue = __webpack_require__(217); + +var _prefixValue2 = _interopRequireDefault(_prefixValue); + +var _addNewValuesOnly = __webpack_require__(214); + +var _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly); + +var _isObject = __webpack_require__(215); + +var _isObject2 = _interopRequireDefault(_isObject); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function createPrefixer(_ref) { + var prefixMap = _ref.prefixMap, + plugins = _ref.plugins; + + function prefixAll(style) { + for (var property in style) { + var value = style[property]; + + // handle nested objects + if ((0, _isObject2.default)(value)) { + style[property] = prefixAll(value); + // handle array values + } else if (Array.isArray(value)) { + var combinedValue = []; + + for (var i = 0, len = value.length; i < len; ++i) { + var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap); + (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]); + } + + // only modify the value if it was touched + // by any plugin to prevent unnecessary mutations + if (combinedValue.length > 0) { + style[property] = combinedValue; + } + } else { + var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap); + + // only modify the value if it was touched + // by any plugin to prevent unnecessary mutations + if (_processedValue) { + style[property] = _processedValue; + } + + (0, _prefixProperty2.default)(prefixMap, property, style); + } + } + + return style; + } + + return prefixAll; +} +module.exports = exports['default']; + +/***/ }), +/* 203 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = crossFade; + +var _isPrefixedValue = __webpack_require__(37); + +var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// http://caniuse.com/#search=cross-fade +var prefixes = ['-webkit-', '']; +function crossFade(property, value) { + if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('cross-fade(') > -1) { + return prefixes.map(function (prefix) { + return value.replace(/cross-fade\(/g, prefix + 'cross-fade('); + }); + } +} +module.exports = exports['default']; + +/***/ }), +/* 204 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cursor; +var prefixes = ['-webkit-', '-moz-', '']; + +var values = { + 'zoom-in': true, + 'zoom-out': true, + grab: true, + grabbing: true +}; + +function cursor(property, value) { + if (property === 'cursor' && values.hasOwnProperty(value)) { + return prefixes.map(function (prefix) { + return prefix + value; + }); + } +} +module.exports = exports['default']; + +/***/ }), +/* 205 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = filter; + +var _isPrefixedValue = __webpack_require__(37); + +var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// http://caniuse.com/#feat=css-filter-function +var prefixes = ['-webkit-', '']; +function filter(property, value) { + if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('filter(') > -1) { + return prefixes.map(function (prefix) { + return value.replace(/filter\(/g, prefix + 'filter('); + }); + } +} +module.exports = exports['default']; + +/***/ }), +/* 206 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = flex; +var values = { + flex: true, + 'inline-flex': true +}; + +function flex(property, value) { + if (property === 'display' && values.hasOwnProperty(value)) { + return ['-webkit-box', '-moz-box', '-ms-' + value + 'box', '-webkit-' + value, value]; + } +} +module.exports = exports['default']; + +/***/ }), +/* 207 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = flexboxOld; +var alternativeValues = { + 'space-around': 'justify', + 'space-between': 'justify', + 'flex-start': 'start', + 'flex-end': 'end', + 'wrap-reverse': 'multiple', + wrap: 'multiple' +}; + +var alternativeProps = { + alignItems: 'WebkitBoxAlign', + justifyContent: 'WebkitBoxPack', + flexWrap: 'WebkitBoxLines' +}; + +function flexboxOld(property, value, style) { + if (property === 'flexDirection' && typeof value === 'string') { + if (value.indexOf('column') > -1) { + style.WebkitBoxOrient = 'vertical'; + } else { + style.WebkitBoxOrient = 'horizontal'; + } + if (value.indexOf('reverse') > -1) { + style.WebkitBoxDirection = 'reverse'; + } else { + style.WebkitBoxDirection = 'normal'; + } + } + if (alternativeProps.hasOwnProperty(property)) { + style[alternativeProps[property]] = alternativeValues[value] || value; + } +} +module.exports = exports['default']; + +/***/ }), +/* 208 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = gradient; + +var _isPrefixedValue = __webpack_require__(37); + +var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var prefixes = ['-webkit-', '-moz-', '']; + +var values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/; + +function gradient(property, value) { + if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && values.test(value)) { + return prefixes.map(function (prefix) { + return prefix + value; + }); + } +} +module.exports = exports['default']; + +/***/ }), +/* 209 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = imageSet; + +var _isPrefixedValue = __webpack_require__(37); + +var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// http://caniuse.com/#feat=css-image-set +var prefixes = ['-webkit-', '']; +function imageSet(property, value) { + if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('image-set(') > -1) { + return prefixes.map(function (prefix) { + return value.replace(/image-set\(/g, prefix + 'image-set('); + }); + } +} +module.exports = exports['default']; + +/***/ }), +/* 210 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = position; +function position(property, value) { + if (property === 'position' && value === 'sticky') { + return ['-webkit-sticky', 'sticky']; + } +} +module.exports = exports['default']; + +/***/ }), +/* 211 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = sizing; +var prefixes = ['-webkit-', '-moz-', '']; + +var properties = { + maxHeight: true, + maxWidth: true, + width: true, + height: true, + columnWidth: true, + minWidth: true, + minHeight: true +}; +var values = { + 'min-content': true, + 'max-content': true, + 'fill-available': true, + 'fit-content': true, + 'contain-floats': true +}; + +function sizing(property, value) { + if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) { + return prefixes.map(function (prefix) { + return prefix + value; + }); + } +} +module.exports = exports['default']; + +/***/ }), +/* 212 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = transition; + +var _hyphenateProperty = __webpack_require__(185); + +var _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty); + +var _isPrefixedValue = __webpack_require__(37); + +var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue); + +var _capitalizeString = __webpack_require__(112); + +var _capitalizeString2 = _interopRequireDefault(_capitalizeString); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var properties = { + transition: true, + transitionProperty: true, + WebkitTransition: true, + WebkitTransitionProperty: true, + MozTransition: true, + MozTransitionProperty: true +}; + + +var prefixMapping = { + Webkit: '-webkit-', + Moz: '-moz-', + ms: '-ms-' +}; + +function prefixValue(value, propertyPrefixMap) { + if ((0, _isPrefixedValue2.default)(value)) { + return value; + } + + // only split multi values, not cubic beziers + var multipleValues = value.split(/,(?![^()]*(?:\([^()]*\))?\))/g); + + for (var i = 0, len = multipleValues.length; i < len; ++i) { + var singleValue = multipleValues[i]; + var values = [singleValue]; + for (var property in propertyPrefixMap) { + var dashCaseProperty = (0, _hyphenateProperty2.default)(property); + + if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') { + var prefixes = propertyPrefixMap[property]; + for (var j = 0, pLen = prefixes.length; j < pLen; ++j) { + // join all prefixes and create a new value + values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty)); + } + } + } + + multipleValues[i] = values.join(','); + } + + return multipleValues.join(','); +} + +function transition(property, value, style, propertyPrefixMap) { + // also check for already prefixed transitions + if (typeof value === 'string' && properties.hasOwnProperty(property)) { + var outputValue = prefixValue(value, propertyPrefixMap); + // if the property is already prefixed + var webkitOutput = outputValue.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function (val) { + return !/-moz-|-ms-/.test(val); + }).join(','); + + if (property.indexOf('Webkit') > -1) { + return webkitOutput; + } + + var mozOutput = outputValue.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function (val) { + return !/-webkit-|-ms-/.test(val); + }).join(','); + + if (property.indexOf('Moz') > -1) { + return mozOutput; + } + + style['Webkit' + (0, _capitalizeString2.default)(property)] = webkitOutput; + style['Moz' + (0, _capitalizeString2.default)(property)] = mozOutput; + return outputValue; + } +} +module.exports = exports['default']; + +/***/ }), +/* 213 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var w = ["Webkit"]; +var m = ["Moz"]; +var ms = ["ms"]; +var wm = ["Webkit", "Moz"]; +var wms = ["Webkit", "ms"]; +var wmms = ["Webkit", "Moz", "ms"]; + +exports.default = { + plugins: [], + prefixMap: { "appearance": wm, "userSelect": wmms, "textEmphasisPosition": w, "textEmphasis": w, "textEmphasisStyle": w, "textEmphasisColor": w, "boxDecorationBreak": w, "clipPath": w, "maskImage": w, "maskMode": w, "maskRepeat": w, "maskPosition": w, "maskClip": w, "maskOrigin": w, "maskSize": w, "maskComposite": w, "mask": w, "maskBorderSource": w, "maskBorderMode": w, "maskBorderSlice": w, "maskBorderWidth": w, "maskBorderOutset": w, "maskBorderRepeat": w, "maskBorder": w, "maskType": w, "textDecorationStyle": w, "textDecorationSkip": w, "textDecorationLine": w, "textDecorationColor": w, "filter": w, "fontFeatureSettings": w, "breakAfter": wmms, "breakBefore": wmms, "breakInside": wmms, "columnCount": wm, "columnFill": wm, "columnGap": wm, "columnRule": wm, "columnRuleColor": wm, "columnRuleStyle": wm, "columnRuleWidth": wm, "columns": wm, "columnSpan": wm, "columnWidth": wm, "flex": w, "flexBasis": w, "flexDirection": w, "flexGrow": w, "flexFlow": w, "flexShrink": w, "flexWrap": w, "alignContent": w, "alignItems": w, "alignSelf": w, "justifyContent": w, "order": w, "transform": w, "transformOrigin": w, "transformOriginX": w, "transformOriginY": w, "backfaceVisibility": w, "perspective": w, "perspectiveOrigin": w, "transformStyle": w, "transformOriginZ": w, "animation": w, "animationDelay": w, "animationDirection": w, "animationFillMode": w, "animationDuration": w, "animationIterationCount": w, "animationName": w, "animationPlayState": w, "animationTimingFunction": w, "backdropFilter": w, "fontKerning": w, "scrollSnapType": wms, "scrollSnapPointsX": wms, "scrollSnapPointsY": wms, "scrollSnapDestination": wms, "scrollSnapCoordinate": wms, "shapeImageThreshold": w, "shapeImageMargin": w, "shapeImageOutside": w, "hyphens": wmms, "flowInto": wms, "flowFrom": wms, "regionFragment": wms, "textAlignLast": m, "tabSize": m, "wrapFlow": ms, "wrapThrough": ms, "wrapMargin": ms, "gridTemplateColumns": ms, "gridTemplateRows": ms, "gridTemplateAreas": ms, "gridTemplate": ms, "gridAutoColumns": ms, "gridAutoRows": ms, "gridAutoFlow": ms, "grid": ms, "gridRowStart": ms, "gridColumnStart": ms, "gridRowEnd": ms, "gridRow": ms, "gridColumn": ms, "gridColumnEnd": ms, "gridColumnGap": ms, "gridRowGap": ms, "gridArea": ms, "gridGap": ms, "textSizeAdjust": wms, "borderImage": w, "borderImageOutset": w, "borderImageRepeat": w, "borderImageSlice": w, "borderImageSource": w, "borderImageWidth": w, "transitionDelay": w, "transitionDuration": w, "transitionProperty": w, "transitionTimingFunction": w } +}; +module.exports = exports["default"]; + +/***/ }), +/* 214 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = addNewValuesOnly; +function addIfNew(list, value) { + if (list.indexOf(value) === -1) { + list.push(value); + } +} + +function addNewValuesOnly(list, values) { + if (Array.isArray(values)) { + for (var i = 0, len = values.length; i < len; ++i) { + addIfNew(list, values[i]); + } + } else { + addIfNew(list, values); + } +} +module.exports = exports["default"]; + +/***/ }), +/* 215 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isObject; +function isObject(value) { + return value instanceof Object && !Array.isArray(value); +} +module.exports = exports["default"]; + +/***/ }), +/* 216 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = prefixProperty; + +var _capitalizeString = __webpack_require__(112); + +var _capitalizeString2 = _interopRequireDefault(_capitalizeString); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function prefixProperty(prefixProperties, property, style) { + if (prefixProperties.hasOwnProperty(property)) { + var requiredPrefixes = prefixProperties[property]; + for (var i = 0, len = requiredPrefixes.length; i < len; ++i) { + style[requiredPrefixes[i] + (0, _capitalizeString2.default)(property)] = style[property]; + } + } +} +module.exports = exports['default']; + +/***/ }), +/* 217 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = prefixValue; +function prefixValue(plugins, property, value, style, metaData) { + for (var i = 0, len = plugins.length; i < len; ++i) { + var processedValue = plugins[i](property, value, style, metaData); + + // we can stop processing if a value is returned + // as all plugin criteria are unique + if (processedValue) { + return processedValue; + } + } +} +module.exports = exports["default"]; + +/***/ }), +/* 218 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = function (x) { + var type = typeof x; + return x !== null && (type === 'object' || type === 'function'); +}; + + +/***/ }), +/* 219 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + */ + + + +if (true) { + var invariant = __webpack_require__(0); + var warning = __webpack_require__(1); + var ReactPropTypesSecret = __webpack_require__(114); + var loggedTypeFailures = {}; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (true) { + for (var typeSpecName in typeSpecs) { + if (typeSpecs.hasOwnProperty(typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName); + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); + } + } + } + } +} + +module.exports = checkPropTypes; + + +/***/ }), +/* 220 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + */ + + + +// React 15.5 references this module, and assumes PropTypes are still callable in production. +// Therefore we re-export development-only version with all the PropTypes checks here. +// However if one is migrating to the `prop-types` npm library, they will go through the +// `index.js` entry point, and it will branch depending on the environment. +var factory = __webpack_require__(113); +module.exports = function(isValidElement) { + // It is still allowed in 15.5. + var throwOnDirectAccess = false; + return factory(isValidElement, throwOnDirectAccess); +}; + + +/***/ }), +/* 221 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +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; + +/***/ }), +/* 222 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactDOMComponentTree = __webpack_require__(7); + +var focusNode = __webpack_require__(107); + +var AutoFocusUtils = { + focusDOMComponent: function () { + focusNode(ReactDOMComponentTree.getNodeFromInstance(this)); + } +}; + +module.exports = AutoFocusUtils; + +/***/ }), +/* 223 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var EventPropagators = __webpack_require__(28); +var ExecutionEnvironment = __webpack_require__(4); +var FallbackCompositionState = __webpack_require__(229); +var SyntheticCompositionEvent = __webpack_require__(274); +var SyntheticInputEvent = __webpack_require__(277); + +var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space +var START_KEYCODE = 229; + +var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window; + +var documentMode = null; +if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) { + documentMode = document.documentMode; +} + +// Webkit offers a very useful `textInput` event that can be used to +// directly represent `beforeInput`. The IE `textinput` event is not as +// useful, so we don't use it. +var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto(); + +// In IE9+, we have access to composition events, but the data supplied +// by the native compositionend event may be incorrect. Japanese ideographic +// spaces, for instance (\u3000) are not recorded correctly. +var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11); + +/** + * Opera <= 12 includes TextEvent in window, but does not fire + * text input events. Rely on keypress instead. + */ +function isPresto() { + var opera = window.opera; + return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12; +} + +var SPACEBAR_CODE = 32; +var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); + +// Events and their corresponding property names. +var eventTypes = { + beforeInput: { + phasedRegistrationNames: { + bubbled: 'onBeforeInput', + captured: 'onBeforeInputCapture' + }, + dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste'] + }, + compositionEnd: { + phasedRegistrationNames: { + bubbled: 'onCompositionEnd', + captured: 'onCompositionEndCapture' + }, + dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] + }, + compositionStart: { + phasedRegistrationNames: { + bubbled: 'onCompositionStart', + captured: 'onCompositionStartCapture' + }, + dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] + }, + compositionUpdate: { + phasedRegistrationNames: { + bubbled: 'onCompositionUpdate', + captured: 'onCompositionUpdateCapture' + }, + dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] + } +}; + +// Track whether we've ever handled a keypress on the space key. +var hasSpaceKeypress = false; + +/** + * Return whether a native keypress event is assumed to be a command. + * This is required because Firefox fires `keypress` events for key commands + * (cut, copy, select-all, etc.) even though no character is inserted. + */ +function isKeypressCommand(nativeEvent) { + return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && + // ctrlKey && altKey is equivalent to AltGr, and is not a command. + !(nativeEvent.ctrlKey && nativeEvent.altKey); +} + +/** + * Translate native top level events into event types. + * + * @param {string} topLevelType + * @return {object} + */ +function getCompositionEventType(topLevelType) { + switch (topLevelType) { + case 'topCompositionStart': + return eventTypes.compositionStart; + case 'topCompositionEnd': + return eventTypes.compositionEnd; + case 'topCompositionUpdate': + return eventTypes.compositionUpdate; + } +} + +/** + * Does our fallback best-guess model think this event signifies that + * composition has begun? + * + * @param {string} topLevelType + * @param {object} nativeEvent + * @return {boolean} + */ +function isFallbackCompositionStart(topLevelType, nativeEvent) { + return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE; +} + +/** + * Does our fallback mode think that this event is the end of composition? + * + * @param {string} topLevelType + * @param {object} nativeEvent + * @return {boolean} + */ +function isFallbackCompositionEnd(topLevelType, nativeEvent) { + switch (topLevelType) { + case 'topKeyUp': + // Command keys insert or clear IME input. + return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; + 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 'topKeyPress': + case 'topMouseDown': + case 'topBlur': + // Events are not possible without cancelling IME. + return true; + default: + return false; + } +} + +/** + * Google Input Tools provides composition data via a CustomEvent, + * with the `data` property populated in the `detail` object. If this + * is available on the event object, use it. If not, this is a plain + * composition event and we have nothing special to extract. + * + * @param {object} nativeEvent + * @return {?string} + */ +function getDataFromCustomEvent(nativeEvent) { + var detail = nativeEvent.detail; + if (typeof detail === 'object' && 'data' in detail) { + return detail.data; + } + return null; +} + +// Track the current IME composition fallback object, if any. +var currentComposition = null; + +/** + * @return {?object} A SyntheticCompositionEvent. + */ +function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var eventType; + var fallbackData; + + if (canUseCompositionEvent) { + eventType = getCompositionEventType(topLevelType); + } else if (!currentComposition) { + if (isFallbackCompositionStart(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionStart; + } + } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionEnd; + } + + if (!eventType) { + return null; + } + + if (useFallbackCompositionData) { + // The current composition is stored statically and must not be + // overwritten while composition continues. + if (!currentComposition && eventType === eventTypes.compositionStart) { + currentComposition = FallbackCompositionState.getPooled(nativeEventTarget); + } else if (eventType === eventTypes.compositionEnd) { + if (currentComposition) { + fallbackData = currentComposition.getData(); + } + } + } + + var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget); + + if (fallbackData) { + // Inject data generated from fallback path into the synthetic event. + // This matches the property of native CompositionEventInterface. + event.data = fallbackData; + } else { + var customData = getDataFromCustomEvent(nativeEvent); + if (customData !== null) { + event.data = customData; + } + } + + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; +} + +/** + * @param {string} topLevelType Record from `EventConstants`. + * @param {object} nativeEvent Native browser event. + * @return {?string} The string corresponding to this `beforeInput` event. + */ +function getNativeBeforeInputChars(topLevelType, nativeEvent) { + switch (topLevelType) { + case 'topCompositionEnd': + return getDataFromCustomEvent(nativeEvent); + 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. + * In Webkit, preventing default on a spacebar `textInput` event + * cancels character insertion, but it *also* causes the browser + * to fall back to its default spacebar behavior of scrolling the + * page. + * + * Tracking at: + * https://code.google.com/p/chromium/issues/detail?id=355103 + * + * To avoid this issue, use the keypress event as if no `textInput` + * event is available. + */ + var which = nativeEvent.which; + if (which !== SPACEBAR_CODE) { + return null; + } + + hasSpaceKeypress = true; + return SPACEBAR_CHAR; + + case 'topTextInput': + // Record the characters to be added to the DOM. + var chars = nativeEvent.data; + + // If it's a spacebar character, assume that we have already handled + // it at the keypress level and bail immediately. Android Chrome + // doesn't give us keycodes, so we need to blacklist it. + if (chars === SPACEBAR_CHAR && hasSpaceKeypress) { + return null; + } + + return chars; + + default: + // For other native event types, do nothing. + return null; + } +} + +/** + * For browsers that do not provide the `textInput` event, extract the + * appropriate string to use for SyntheticInputEvent. + * + * @param {string} topLevelType Record from `EventConstants`. + * @param {object} nativeEvent Native browser event. + * @return {?string} The fallback string for this `beforeInput` event. + */ +function getFallbackBeforeInputChars(topLevelType, nativeEvent) { + // If we are currently composing (IME) and using a fallback to do so, + // try to extract the composed characters from the fallback object. + // If composition event is available, we extract a string only at + // compositionevent, otherwise extract it at fallback events. + if (currentComposition) { + if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) { + var chars = currentComposition.getData(); + FallbackCompositionState.release(currentComposition); + currentComposition = null; + return chars; + } + return null; + } + + switch (topLevelType) { + 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 'topKeyPress': + /** + * As of v27, Firefox may fire keypress events even when no character + * will be inserted. A few possibilities: + * + * - `which` is `0`. Arrow keys, Esc key, etc. + * + * - `which` is the pressed key code, but no char is available. + * Ex: 'AltGr + d` in Polish. There is no modified character for + * this key combination and no character is inserted into the + * document, but FF fires the keypress for char code `100` anyway. + * No `input` event will occur. + * + * - `which` is the pressed key code, but a command combination is + * being used. Ex: `Cmd+C`. No character is inserted, and no + * `input` event will occur. + */ + if (nativeEvent.which && !isKeypressCommand(nativeEvent)) { + return String.fromCharCode(nativeEvent.which); + } + return null; + case 'topCompositionEnd': + return useFallbackCompositionData ? null : nativeEvent.data; + default: + return null; + } +} + +/** + * Extract a SyntheticInputEvent for `beforeInput`, based on either native + * `textInput` or fallback behavior. + * + * @return {?object} A SyntheticInputEvent. + */ +function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var chars; + + if (canUseTextInputEvent) { + chars = getNativeBeforeInputChars(topLevelType, nativeEvent); + } else { + chars = getFallbackBeforeInputChars(topLevelType, nativeEvent); + } + + // If no characters are being inserted, no BeforeInput event should + // be fired. + if (!chars) { + return null; + } + + var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget); + + event.data = chars; + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; +} + +/** + * Create an `onBeforeInput` event to match + * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents. + * + * This event plugin is based on the native `textInput` event + * available in Chrome, Safari, Opera, and IE. This event fires after + * `onKeyPress` and `onCompositionEnd`, but before `onInput`. + * + * `beforeInput` is spec'd but not implemented in any browsers, and + * the `input` event does not provide any useful information about what has + * actually been added, contrary to the spec. Thus, `textInput` is the best + * available event to identify the characters that have actually been inserted + * into the target node. + * + * This plugin is also responsible for emitting `composition` events, thus + * allowing us to share composition fallback code for both `beforeInput` and + * `composition` event types. + */ +var BeforeInputEventPlugin = { + + eventTypes: eventTypes, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)]; + } +}; + +module.exports = BeforeInputEventPlugin; + +/***/ }), +/* 224 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var CSSProperty = __webpack_require__(115); +var ExecutionEnvironment = __webpack_require__(4); +var ReactInstrumentation = __webpack_require__(11); + +var camelizeStyleName = __webpack_require__(106); +var dangerousStyleValue = __webpack_require__(285); +var hyphenateStyleName = __webpack_require__(195); +var memoizeStringOnly = __webpack_require__(198); +var warning = __webpack_require__(1); + +var processStyleName = memoizeStringOnly(function (styleName) { + return hyphenateStyleName(styleName); +}); + +var hasShorthandPropertyBug = false; +var styleFloatAccessor = 'cssFloat'; +if (ExecutionEnvironment.canUseDOM) { + var tempStyle = document.createElement('div').style; + try { + // IE8 throws "Invalid argument." if resetting shorthand style properties. + tempStyle.font = ''; + } catch (e) { + hasShorthandPropertyBug = true; + } + // IE8 only supports accessing cssFloat (standard) as styleFloat + if (document.documentElement.style.cssFloat === undefined) { + styleFloatAccessor = 'styleFloat'; + } +} + +if (true) { + // 'msTransform' is correct, but the other prefixes should be capitalized + var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; + + // style values shouldn't contain a semicolon + var badStyleValueWithSemicolonPattern = /;\s*$/; + + var warnedStyleNames = {}; + var warnedStyleValues = {}; + var warnedForNaNValue = false; + + var warnHyphenatedStyleName = function (name, owner) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + true ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0; + }; + + var warnBadVendoredStyleName = function (name, owner) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + true ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0; + }; + + var warnStyleValueWithSemicolon = function (name, value, owner) { + if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) { + return; + } + + warnedStyleValues[value] = true; + true ? warning(false, 'Style property values shouldn\'t contain a semicolon.%s ' + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0; + }; + + var warnStyleValueIsNaN = function (name, value, owner) { + if (warnedForNaNValue) { + return; + } + + warnedForNaNValue = true; + true ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0; + }; + + var checkRenderMessage = function (owner) { + if (owner) { + var name = owner.getName(); + if (name) { + return ' Check the render method of `' + name + '`.'; + } + } + return ''; + }; + + /** + * @param {string} name + * @param {*} value + * @param {ReactDOMComponent} component + */ + var warnValidStyle = function (name, value, component) { + var owner; + if (component) { + owner = component._currentElement._owner; + } + if (name.indexOf('-') > -1) { + warnHyphenatedStyleName(name, owner); + } else if (badVendoredStyleNamePattern.test(name)) { + warnBadVendoredStyleName(name, owner); + } else if (badStyleValueWithSemicolonPattern.test(value)) { + warnStyleValueWithSemicolon(name, value, owner); + } + + if (typeof value === 'number' && isNaN(value)) { + warnStyleValueIsNaN(name, value, owner); + } + }; +} + +/** + * Operations for dealing with CSS properties. + */ +var CSSPropertyOperations = { + + /** + * Serializes a mapping of style properties for use as inline styles: + * + * > createMarkupForStyles({width: '200px', height: 0}) + * "width:200px;height:0;" + * + * Undefined values are ignored so that declarative programming is easier. + * The result should be HTML-escaped before insertion into the DOM. + * + * @param {object} styles + * @param {ReactDOMComponent} component + * @return {?string} + */ + createMarkupForStyles: function (styles, component) { + var serialized = ''; + for (var styleName in styles) { + if (!styles.hasOwnProperty(styleName)) { + continue; + } + var styleValue = styles[styleName]; + if (true) { + warnValidStyle(styleName, styleValue, component); + } + if (styleValue != null) { + serialized += processStyleName(styleName) + ':'; + serialized += dangerousStyleValue(styleName, styleValue, component) + ';'; + } + } + return serialized || null; + }, + + /** + * Sets the value for multiple styles on a node. If a value is specified as + * '' (empty string), the corresponding style property will be unset. + * + * @param {DOMElement} node + * @param {object} styles + * @param {ReactDOMComponent} component + */ + setValueForStyles: function (node, styles, component) { + if (true) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: component._debugID, + type: 'update styles', + payload: styles + }); + } + + var style = node.style; + for (var styleName in styles) { + if (!styles.hasOwnProperty(styleName)) { + continue; + } + if (true) { + warnValidStyle(styleName, styles[styleName], component); + } + var styleValue = dangerousStyleValue(styleName, styles[styleName], component); + if (styleName === 'float' || styleName === 'cssFloat') { + styleName = styleFloatAccessor; + } + if (styleValue) { + style[styleName] = styleValue; + } else { + var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName]; + if (expansion) { + // Shorthand property that IE8 won't like unsetting, so unset each + // component to placate it + for (var individualStyleName in expansion) { + style[individualStyleName] = ''; + } + } else { + style[styleName] = ''; + } + } + } + } + +}; + +module.exports = CSSPropertyOperations; + +/***/ }), +/* 225 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var EventPluginHub = __webpack_require__(27); +var EventPropagators = __webpack_require__(28); +var ExecutionEnvironment = __webpack_require__(4); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactUpdates = __webpack_require__(14); +var SyntheticEvent = __webpack_require__(15); + +var getEventTarget = __webpack_require__(77); +var isEventSupported = __webpack_require__(78); +var isTextInputElement = __webpack_require__(134); + +var eventTypes = { + change: { + phasedRegistrationNames: { + bubbled: 'onChange', + captured: 'onChangeCapture' + }, + dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange'] + } +}; + +/** + * For IE shims + */ +var activeElement = null; +var activeElementInst = null; +var activeElementValue = null; +var activeElementValueProp = null; + +/** + * SECTION: handle `change` event + */ +function shouldUseChangeEvent(elem) { + var nodeName = elem.nodeName && elem.nodeName.toLowerCase(); + return nodeName === 'select' || nodeName === 'input' && elem.type === 'file'; +} + +var doesChangeEventBubble = false; +if (ExecutionEnvironment.canUseDOM) { + // See `handleChange` comment below + doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8); +} + +function manualDispatchChangeEvent(nativeEvent) { + var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent)); + EventPropagators.accumulateTwoPhaseDispatches(event); + + // If change and propertychange bubbled, we'd just bind to it like all the + // other events and have it go through ReactBrowserEventEmitter. Since it + // doesn't, we manually listen for the events and so we have to enqueue and + // process the abstract event manually. + // + // Batching is necessary here in order to ensure that all event handlers run + // before the next rerender (including event handlers attached to ancestor + // elements instead of directly on the input). Without this, controlled + // components don't work properly in conjunction with event bubbling because + // the component is rerendered and the value reverted before all the event + // handlers can run. See https://github.com/facebook/react/issues/708. + ReactUpdates.batchedUpdates(runEventInBatch, event); +} + +function runEventInBatch(event) { + EventPluginHub.enqueueEvents(event); + EventPluginHub.processEventQueue(false); +} + +function startWatchingForChangeEventIE8(target, targetInst) { + activeElement = target; + activeElementInst = targetInst; + activeElement.attachEvent('onchange', manualDispatchChangeEvent); +} + +function stopWatchingForChangeEventIE8() { + if (!activeElement) { + return; + } + activeElement.detachEvent('onchange', manualDispatchChangeEvent); + activeElement = null; + activeElementInst = null; +} + +function getTargetInstForChangeEvent(topLevelType, targetInst) { + if (topLevelType === 'topChange') { + return targetInst; + } +} +function handleEventsForChangeEventIE8(topLevelType, target, targetInst) { + 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 === 'topBlur') { + stopWatchingForChangeEventIE8(); + } +} + +/** + * SECTION: handle `input` event + */ +var isInputEventSupported = false; +if (ExecutionEnvironment.canUseDOM) { + // IE9 claims to support the input event but fails to trigger it when + // deleting text, so we ignore its input events. + // IE10+ fire input events to often, such when a placeholder + // changes or when an input with a placeholder is focused. + isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11); +} + +/** + * (For IE <=11) Replacement getter/setter for the `value` property that gets + * set on the active element. + */ +var newValueProp = { + get: function () { + return activeElementValueProp.get.call(this); + }, + set: function (val) { + // Cast to a string so we can do equality checks. + activeElementValue = '' + val; + activeElementValueProp.set.call(this, val); + } +}; + +/** + * (For IE <=11) Starts tracking propertychange events on the passed-in element + * and override the value property so that we can distinguish user events from + * value changes in JS. + */ +function startWatchingForValueChange(target, targetInst) { + activeElement = target; + activeElementInst = targetInst; + activeElementValue = target.value; + activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value'); + + // Not guarded in a canDefineProperty check: IE8 supports defineProperty only + // on DOM elements + Object.defineProperty(activeElement, 'value', newValueProp); + if (activeElement.attachEvent) { + activeElement.attachEvent('onpropertychange', handlePropertyChange); + } else { + activeElement.addEventListener('propertychange', handlePropertyChange, false); + } +} + +/** + * (For IE <=11) Removes the event listeners from the currently-tracked element, + * if any exists. + */ +function stopWatchingForValueChange() { + if (!activeElement) { + return; + } + + // delete restores the original property definition + delete activeElement.value; + + if (activeElement.detachEvent) { + activeElement.detachEvent('onpropertychange', handlePropertyChange); + } else { + activeElement.removeEventListener('propertychange', handlePropertyChange, false); + } + + activeElement = null; + activeElementInst = null; + activeElementValue = null; + activeElementValueProp = null; +} + +/** + * (For IE <=11) Handles a propertychange event, sending a `change` event if + * the value of the active element has changed. + */ +function handlePropertyChange(nativeEvent) { + if (nativeEvent.propertyName !== 'value') { + return; + } + var value = nativeEvent.srcElement.value; + if (value === activeElementValue) { + return; + } + activeElementValue = value; + + manualDispatchChangeEvent(nativeEvent); +} + +/** + * If a `change` event should be fired, returns the target's ID. + */ +function getTargetInstForInputEvent(topLevelType, targetInst) { + 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; + } +} + +function handleEventsForInputEventIE(topLevelType, target, targetInst) { + 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' + // In IE9-11, propertychange fires for most input events but is buggy and + // doesn't fire when text is deleted, but conveniently, selectionchange + // appears to fire in all of the remaining cases so we catch those and + // forward the event if the value has changed + // In either case, we don't want to call the event handler if the value + // is changed from JS so we redefine a setter for `.value` that updates + // our activeElementValue variable, allowing us to ignore those changes + // + // stopWatching() should be a noop here but we call it just in case we + // missed a blur event somehow. + stopWatchingForValueChange(); + startWatchingForValueChange(target, targetInst); + } else if (topLevelType === 'topBlur') { + stopWatchingForValueChange(); + } +} + +// For IE8 and IE9. +function getTargetInstForInputEventIE(topLevelType, targetInst) { + 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. + // + // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire + // propertychange on the first input event after setting `value` from a + // script and fires only keydown, keypress, keyup. Catching keyup usually + // gets it and catching keydown lets us fire an event for the first + // keystroke if user does a key repeat (it'll be a little delayed: right + // before the second keystroke). Other input methods (e.g., paste) seem to + // fire selectionchange normally. + if (activeElement && activeElement.value !== activeElementValue) { + activeElementValue = activeElement.value; + return activeElementInst; + } + } +} + +/** + * SECTION: handle `click` event + */ +function shouldUseClickEvent(elem) { + // Use the `click` event to detect changes to checkbox and radio inputs. + // This approach works across all browsers, whereas `change` does not fire + // until `blur` in IE8. + return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio'); +} + +function getTargetInstForClickEvent(topLevelType, targetInst) { + if (topLevelType === 'topClick') { + return targetInst; + } +} + +function handleControlledInputBlur(inst, node) { + // TODO: In IE, inst is occasionally null. Why? + if (inst == null) { + return; + } + + // Fiber and ReactDOM keep wrapper state in separate places + var state = inst._wrapperState || node._wrapperState; + + if (!state || !state.controlled || node.type !== 'number') { + return; + } + + // If controlled, assign the value attribute to the current value on blur + var value = '' + node.value; + if (node.getAttribute('value') !== value) { + node.setAttribute('value', value); + } +} + +/** + * This plugin creates an `onChange` event that normalizes change events + * across form elements. This event fires at a time when it's possible to + * change the element's value without seeing a flicker. + * + * Supported elements are: + * - input (see `isTextInputElement`) + * - textarea + * - select + */ +var ChangeEventPlugin = { + + eventTypes: eventTypes, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window; + + var getTargetInstFunc, handleEventFunc; + if (shouldUseChangeEvent(targetNode)) { + if (doesChangeEventBubble) { + getTargetInstFunc = getTargetInstForChangeEvent; + } else { + handleEventFunc = handleEventsForChangeEventIE8; + } + } else if (isTextInputElement(targetNode)) { + if (isInputEventSupported) { + getTargetInstFunc = getTargetInstForInputEvent; + } else { + getTargetInstFunc = getTargetInstForInputEventIE; + handleEventFunc = handleEventsForInputEventIE; + } + } else if (shouldUseClickEvent(targetNode)) { + getTargetInstFunc = getTargetInstForClickEvent; + } + + if (getTargetInstFunc) { + var inst = getTargetInstFunc(topLevelType, targetInst); + if (inst) { + var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget); + event.type = 'change'; + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; + } + } + + if (handleEventFunc) { + handleEventFunc(topLevelType, targetNode, targetInst); + } + + // When blurring, set the value attribute for number inputs + if (topLevelType === 'topBlur') { + handleControlledInputBlur(targetInst, targetNode); + } + } + +}; + +module.exports = ChangeEventPlugin; + +/***/ }), +/* 226 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var DOMLazyTree = __webpack_require__(26); +var ExecutionEnvironment = __webpack_require__(4); + +var createNodesFromMarkup = __webpack_require__(191); +var emptyFunction = __webpack_require__(10); +var invariant = __webpack_require__(0); + +var Danger = { + + /** + * Replaces a node with a string of markup at its current position within its + * parent. The markup must render into a single root node. + * + * @param {DOMElement} oldChild Child node to replace. + * @param {string} markup Markup to render in place of the child node. + * @internal + */ + dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) { + !ExecutionEnvironment.canUseDOM ? true ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0; + !markup ? true ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0; + !(oldChild.nodeName !== 'HTML') ? true ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0; + + if (typeof markup === 'string') { + var newChild = createNodesFromMarkup(markup, emptyFunction)[0]; + oldChild.parentNode.replaceChild(newChild, oldChild); + } else { + DOMLazyTree.replaceChildWithTree(oldChild, markup); + } + } + +}; + +module.exports = Danger; + +/***/ }), +/* 227 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * Module that is injectable into `EventPluginHub`, that specifies a + * deterministic ordering of `EventPlugin`s. A convenient way to reason about + * plugins, without having to package every one of them. This is better than + * having plugins be ordered in the same order that they are injected because + * that ordering would be influenced by the packaging order. + * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that + * preventing default on events is convenient in `SimpleEventPlugin` handlers. + */ + +var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin']; + +module.exports = DefaultEventPluginOrder; + +/***/ }), +/* 228 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var EventPropagators = __webpack_require__(28); +var ReactDOMComponentTree = __webpack_require__(7); +var SyntheticMouseEvent = __webpack_require__(54); + +var eventTypes = { + mouseEnter: { + registrationName: 'onMouseEnter', + dependencies: ['topMouseOut', 'topMouseOver'] + }, + mouseLeave: { + registrationName: 'onMouseLeave', + dependencies: ['topMouseOut', 'topMouseOver'] + } +}; + +var EnterLeaveEventPlugin = { + + eventTypes: eventTypes, + + /** + * For almost every interaction we care about, there will be both a top-level + * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that + * we do not extract duplicate events. However, moving the mouse into the + * browser from outside will not fire a `mouseout` event. In this case, we use + * the `mouseover` top-level event. + */ + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { + return null; + } + if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') { + // Must not be a mouse in or mouse out - ignoring. + return null; + } + + var win; + if (nativeEventTarget.window === nativeEventTarget) { + // `nativeEventTarget` is probably a window object. + win = nativeEventTarget; + } else { + // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. + var doc = nativeEventTarget.ownerDocument; + if (doc) { + win = doc.defaultView || doc.parentWindow; + } else { + win = window; + } + } + + var from; + var to; + if (topLevelType === 'topMouseOut') { + from = targetInst; + var related = nativeEvent.relatedTarget || nativeEvent.toElement; + to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null; + } else { + // Moving to a node from outside the window. + from = null; + to = targetInst; + } + + if (from === to) { + // Nothing pertains to our managed components. + return null; + } + + var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from); + var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to); + + var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget); + leave.type = 'mouseleave'; + leave.target = fromNode; + leave.relatedTarget = toNode; + + var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget); + enter.type = 'mouseenter'; + enter.target = toNode; + enter.relatedTarget = fromNode; + + EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to); + + return [leave, enter]; + } + +}; + +module.exports = EnterLeaveEventPlugin; + +/***/ }), +/* 229 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var PooledClass = __webpack_require__(24); + +var getTextContentAccessor = __webpack_require__(132); + +/** + * This helper class stores information about text content of a target node, + * allowing comparison of content before and after a given event. + * + * Identify the node where selection currently begins, then observe + * both its text content and its current position in the DOM. Since the + * browser may natively replace the target node during composition, we can + * use its position to find its replacement. + * + * @param {DOMEventTarget} root + */ +function FallbackCompositionState(root) { + this._root = root; + this._startText = this.getText(); + this._fallbackText = null; +} + +_assign(FallbackCompositionState.prototype, { + destructor: function () { + this._root = null; + this._startText = null; + this._fallbackText = null; + }, + + /** + * Get current text of input. + * + * @return {string} + */ + getText: function () { + if ('value' in this._root) { + return this._root.value; + } + return this._root[getTextContentAccessor()]; + }, + + /** + * Determine the differing substring between the initially stored + * text content and the current content. + * + * @return {string} + */ + getData: function () { + if (this._fallbackText) { + return this._fallbackText; + } + + var start; + var startValue = this._startText; + var startLength = startValue.length; + var end; + var endValue = this.getText(); + var endLength = endValue.length; + + for (start = 0; start < startLength; start++) { + if (startValue[start] !== endValue[start]) { + break; + } + } + + var minEnd = startLength - start; + for (end = 1; end <= minEnd; end++) { + if (startValue[startLength - end] !== endValue[endLength - end]) { + break; + } + } + + var sliceTail = end > 1 ? 1 - end : undefined; + this._fallbackText = endValue.slice(start, sliceTail); + return this._fallbackText; + } +}); + +PooledClass.addPoolingTo(FallbackCompositionState); + +module.exports = FallbackCompositionState; + +/***/ }), +/* 230 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMProperty = __webpack_require__(20); + +var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY; +var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE; +var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE; +var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE; +var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE; + +var HTMLDOMPropertyConfig = { + isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')), + Properties: { + /** + * Standard Properties + */ + accept: 0, + acceptCharset: 0, + accessKey: 0, + action: 0, + allowFullScreen: HAS_BOOLEAN_VALUE, + allowTransparency: 0, + alt: 0, + // specifies target context for links with `preload` type + as: 0, + async: HAS_BOOLEAN_VALUE, + autoComplete: 0, + // autoFocus is polyfilled/normalized by AutoFocusUtils + // autoFocus: HAS_BOOLEAN_VALUE, + autoPlay: HAS_BOOLEAN_VALUE, + capture: HAS_BOOLEAN_VALUE, + cellPadding: 0, + cellSpacing: 0, + charSet: 0, + challenge: 0, + checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + cite: 0, + classID: 0, + className: 0, + cols: HAS_POSITIVE_NUMERIC_VALUE, + colSpan: 0, + content: 0, + contentEditable: 0, + contextMenu: 0, + controls: HAS_BOOLEAN_VALUE, + coords: 0, + crossOrigin: 0, + data: 0, // For `<object />` acts as `src`. + dateTime: 0, + 'default': HAS_BOOLEAN_VALUE, + defer: HAS_BOOLEAN_VALUE, + dir: 0, + disabled: HAS_BOOLEAN_VALUE, + download: HAS_OVERLOADED_BOOLEAN_VALUE, + draggable: 0, + encType: 0, + form: 0, + formAction: 0, + formEncType: 0, + formMethod: 0, + formNoValidate: HAS_BOOLEAN_VALUE, + formTarget: 0, + frameBorder: 0, + headers: 0, + height: 0, + hidden: HAS_BOOLEAN_VALUE, + high: 0, + href: 0, + hrefLang: 0, + htmlFor: 0, + httpEquiv: 0, + icon: 0, + id: 0, + inputMode: 0, + integrity: 0, + is: 0, + keyParams: 0, + keyType: 0, + kind: 0, + label: 0, + lang: 0, + list: 0, + loop: HAS_BOOLEAN_VALUE, + low: 0, + manifest: 0, + marginHeight: 0, + marginWidth: 0, + max: 0, + maxLength: 0, + media: 0, + mediaGroup: 0, + method: 0, + min: 0, + minLength: 0, + // Caution; `option.selected` is not updated if `select.multiple` is + // disabled with `removeAttribute`. + multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + name: 0, + nonce: 0, + noValidate: HAS_BOOLEAN_VALUE, + open: HAS_BOOLEAN_VALUE, + optimum: 0, + pattern: 0, + placeholder: 0, + playsInline: HAS_BOOLEAN_VALUE, + poster: 0, + preload: 0, + profile: 0, + radioGroup: 0, + readOnly: HAS_BOOLEAN_VALUE, + referrerPolicy: 0, + rel: 0, + required: HAS_BOOLEAN_VALUE, + reversed: HAS_BOOLEAN_VALUE, + role: 0, + rows: HAS_POSITIVE_NUMERIC_VALUE, + rowSpan: HAS_NUMERIC_VALUE, + sandbox: 0, + scope: 0, + scoped: HAS_BOOLEAN_VALUE, + scrolling: 0, + seamless: HAS_BOOLEAN_VALUE, + selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + shape: 0, + size: HAS_POSITIVE_NUMERIC_VALUE, + sizes: 0, + span: HAS_POSITIVE_NUMERIC_VALUE, + spellCheck: 0, + src: 0, + srcDoc: 0, + srcLang: 0, + srcSet: 0, + start: HAS_NUMERIC_VALUE, + step: 0, + style: 0, + summary: 0, + tabIndex: 0, + target: 0, + title: 0, + // Setting .type throws on non-<input> tags + type: 0, + useMap: 0, + value: 0, + width: 0, + wmode: 0, + wrap: 0, + + /** + * RDFa Properties + */ + about: 0, + datatype: 0, + inlist: 0, + prefix: 0, + // property is also supported for OpenGraph in meta tags. + property: 0, + resource: 0, + 'typeof': 0, + vocab: 0, + + /** + * Non-standard Properties + */ + // autoCapitalize and autoCorrect are supported in Mobile Safari for + // keyboard hints. + autoCapitalize: 0, + autoCorrect: 0, + // autoSave allows WebKit/Blink to persist values of input fields on page reloads + autoSave: 0, + // color is for Safari mask-icon link + color: 0, + // itemProp, itemScope, itemType are for + // Microdata support. See http://schema.org/docs/gs.html + itemProp: 0, + itemScope: HAS_BOOLEAN_VALUE, + itemType: 0, + // itemID and itemRef are for Microdata support as well but + // only specified in the WHATWG spec document. See + // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api + itemID: 0, + itemRef: 0, + // results show looking glass icon and recent searches on input + // search fields in WebKit/Blink + results: 0, + // IE-only attribute that specifies security restrictions on an iframe + // as an alternative to the sandbox attribute on IE<10 + security: 0, + // IE-only attribute that controls focus behavior + unselectable: 0 + }, + DOMAttributeNames: { + acceptCharset: 'accept-charset', + className: 'class', + htmlFor: 'for', + httpEquiv: 'http-equiv' + }, + DOMPropertyNames: {}, + DOMMutationMethods: { + value: function (node, value) { + if (value == null) { + return node.removeAttribute('value'); + } + + // Number inputs get special treatment due to some edge cases in + // Chrome. Let everything else assign the value attribute as normal. + // https://github.com/facebook/react/issues/7253#issuecomment-236074326 + if (node.type !== 'number' || node.hasAttribute('value') === false) { + node.setAttribute('value', '' + value); + } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) { + // Don't assign an attribute if validation reports bad + // input. Chrome will clear the value. Additionally, don't + // operate on inputs that have focus, otherwise Chrome might + // strip off trailing decimal places and cause the user's + // cursor position to jump to the beginning of the input. + // + // In ReactDOMInput, we have an onBlur event that will trigger + // this function again when focus is lost. + node.setAttribute('value', '' + value); + } + } + } +}; + +module.exports = HTMLDOMPropertyConfig; + +/***/ }), +/* 231 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * 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. + * + */ + + + +var ReactReconciler = __webpack_require__(29); + +var instantiateReactComponent = __webpack_require__(133); +var KeyEscapeUtils = __webpack_require__(69); +var shouldUpdateReactComponent = __webpack_require__(79); +var traverseAllChildren = __webpack_require__(136); +var warning = __webpack_require__(1); + +var ReactComponentTreeHook; + +if (typeof process !== 'undefined' && process.env && "development" === 'test') { + // Temporary hack. + // Inline requires don't work well with Jest: + // https://github.com/facebook/react/issues/7240 + // Remove the inline requires when we don't need them anymore: + // https://github.com/facebook/react/pull/7178 + ReactComponentTreeHook = __webpack_require__(13); +} + +function instantiateChild(childInstances, child, name, selfDebugID) { + // We found a component instance. + var keyUnique = childInstances[name] === undefined; + if (true) { + if (!ReactComponentTreeHook) { + ReactComponentTreeHook = __webpack_require__(13); + } + if (!keyUnique) { + true ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0; + } + } + if (child != null && keyUnique) { + childInstances[name] = instantiateReactComponent(child, true); + } +} + +/** + * ReactChildReconciler provides helpers for initializing or updating a set of + * children. Its output is suitable for passing it onto ReactMultiChild which + * does diffed reordering and insertion. + */ +var ReactChildReconciler = { + /** + * Generates a "mount image" for each of the supplied children. In the case + * of `ReactDOMComponent`, a mount image is a string of markup. + * + * @param {?object} nestedChildNodes Nested child maps. + * @return {?object} A set of child instances. + * @internal + */ + instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots + ) { + if (nestedChildNodes == null) { + return null; + } + var childInstances = {}; + + if (true) { + traverseAllChildren(nestedChildNodes, function (childInsts, child, name) { + return instantiateChild(childInsts, child, name, selfDebugID); + }, childInstances); + } else { + traverseAllChildren(nestedChildNodes, instantiateChild, childInstances); + } + return childInstances; + }, + + /** + * Updates the rendered children and returns a new set of children. + * + * @param {?object} prevChildren Previously initialized set of children. + * @param {?object} nextChildren Flat child element maps. + * @param {ReactReconcileTransaction} transaction + * @param {object} context + * @return {?object} A new set of child instances. + * @internal + */ + updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots + ) { + // We currently don't have a way to track moves here but if we use iterators + // instead of for..in we can zip the iterators and check if an item has + // moved. + // TODO: If nothing has changed, return the prevChildren object so that we + // can quickly bailout if nothing has changed. + if (!nextChildren && !prevChildren) { + return; + } + var name; + var prevChild; + for (name in nextChildren) { + if (!nextChildren.hasOwnProperty(name)) { + continue; + } + prevChild = prevChildren && prevChildren[name]; + var prevElement = prevChild && prevChild._currentElement; + var nextElement = nextChildren[name]; + if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) { + ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context); + nextChildren[name] = prevChild; + } else { + if (prevChild) { + removedNodes[name] = ReactReconciler.getHostNode(prevChild); + ReactReconciler.unmountComponent(prevChild, false); + } + // The child must be instantiated before it's mounted. + var nextChildInstance = instantiateReactComponent(nextElement, true); + nextChildren[name] = nextChildInstance; + // Creating mount image now ensures refs are resolved in right order + // (see https://github.com/facebook/react/pull/7101 for explanation). + var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID); + mountImages.push(nextChildMountImage); + } + } + // Unmount children that are no longer present. + for (name in prevChildren) { + if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) { + prevChild = prevChildren[name]; + removedNodes[name] = ReactReconciler.getHostNode(prevChild); + ReactReconciler.unmountComponent(prevChild, false); + } + } + }, + + /** + * Unmounts all rendered children. This should be used to clean up children + * when this component is unmounted. + * + * @param {?object} renderedChildren Previously initialized set of children. + * @internal + */ + unmountChildren: function (renderedChildren, safely) { + for (var name in renderedChildren) { + if (renderedChildren.hasOwnProperty(name)) { + var renderedChild = renderedChildren[name]; + ReactReconciler.unmountComponent(renderedChild, safely); + } + } + } + +}; + +module.exports = ReactChildReconciler; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(66))) + +/***/ }), +/* 232 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMChildrenOperations = __webpack_require__(67); +var ReactDOMIDOperations = __webpack_require__(239); + +/** + * Abstracts away all functionality of the reconciler that requires knowledge of + * the browser context. TODO: These callers should be refactored to avoid the + * need for this injection. + */ +var ReactComponentBrowserEnvironment = { + + processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates, + + replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup + +}; + +module.exports = ReactComponentBrowserEnvironment; + +/***/ }), +/* 233 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2), + _assign = __webpack_require__(6); + +var React = __webpack_require__(33); +var ReactComponentEnvironment = __webpack_require__(71); +var ReactCurrentOwner = __webpack_require__(17); +var ReactErrorUtils = __webpack_require__(72); +var ReactInstanceMap = __webpack_require__(41); +var ReactInstrumentation = __webpack_require__(11); +var ReactNodeTypes = __webpack_require__(125); +var ReactReconciler = __webpack_require__(29); + +if (true) { + var checkReactTypeSpec = __webpack_require__(284); +} + +var emptyObject = __webpack_require__(38); +var invariant = __webpack_require__(0); +var shallowEqual = __webpack_require__(65); +var shouldUpdateReactComponent = __webpack_require__(79); +var warning = __webpack_require__(1); + +var CompositeTypes = { + ImpureClass: 0, + PureClass: 1, + StatelessFunctional: 2 +}; + +function StatelessComponent(Component) {} +StatelessComponent.prototype.render = function () { + var Component = ReactInstanceMap.get(this)._currentElement.type; + var element = Component(this.props, this.context, this.updater); + warnIfInvalidElement(Component, element); + return element; +}; + +function warnIfInvalidElement(Component, element) { + if (true) { + true ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0; + true ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0; + } +} + +function shouldConstruct(Component) { + return !!(Component.prototype && Component.prototype.isReactComponent); +} + +function isPureComponent(Component) { + return !!(Component.prototype && Component.prototype.isPureReactComponent); +} + +// Separated into a function to contain deoptimizations caused by try/finally. +function measureLifeCyclePerf(fn, debugID, timerType) { + if (debugID === 0) { + // Top-level wrappers (see ReactMount) and empty components (see + // ReactDOMEmptyComponent) are invisible to hooks and devtools. + // Both are implementation details that should go away in the future. + return fn(); + } + + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType); + try { + return fn(); + } finally { + ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType); + } +} + +/** + * ------------------ The Life-Cycle of a Composite Component ------------------ + * + * - constructor: Initialization of state. The instance is now retained. + * - componentWillMount + * - render + * - [children's constructors] + * - [children's componentWillMount and render] + * - [children's componentDidMount] + * - componentDidMount + * + * Update Phases: + * - componentWillReceiveProps (only called if parent updated) + * - shouldComponentUpdate + * - componentWillUpdate + * - render + * - [children's constructors or receive props phases] + * - componentDidUpdate + * + * - componentWillUnmount + * - [children's componentWillUnmount] + * - [children destroyed] + * - (destroyed): The instance is now blank, released by React and ready for GC. + * + * ----------------------------------------------------------------------------- + */ + +/** + * An incrementing ID assigned to each component when it is mounted. This is + * used to enforce the order in which `ReactUpdates` updates dirty components. + * + * @private + */ +var nextMountID = 1; + +/** + * @lends {ReactCompositeComponent.prototype} + */ +var ReactCompositeComponent = { + + /** + * Base constructor for all composite component. + * + * @param {ReactElement} element + * @final + * @internal + */ + construct: function (element) { + this._currentElement = element; + this._rootNodeID = 0; + this._compositeType = null; + this._instance = null; + this._hostParent = null; + this._hostContainerInfo = null; + + // See ReactUpdateQueue + this._updateBatchNumber = null; + this._pendingElement = null; + this._pendingStateQueue = null; + this._pendingReplaceState = false; + this._pendingForceUpdate = false; + + this._renderedNodeType = null; + this._renderedComponent = null; + this._context = null; + this._mountOrder = 0; + this._topLevelWrapper = null; + + // See ReactUpdates and ReactUpdateQueue. + this._pendingCallbacks = null; + + // ComponentWillUnmount shall only be called once + this._calledComponentWillUnmount = false; + + if (true) { + this._warnedAboutRefsInRender = false; + } + }, + + /** + * Initializes the component, renders markup, and registers event listeners. + * + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @param {?object} hostParent + * @param {?object} hostContainerInfo + * @param {?object} context + * @return {?string} Rendered markup to be inserted into the DOM. + * @final + * @internal + */ + mountComponent: function (transaction, hostParent, hostContainerInfo, context) { + var _this = this; + + this._context = context; + this._mountOrder = nextMountID++; + this._hostParent = hostParent; + this._hostContainerInfo = hostContainerInfo; + + var publicProps = this._currentElement.props; + var publicContext = this._processContext(context); + + var Component = this._currentElement.type; + + var updateQueue = transaction.getUpdateQueue(); + + // Initialize the public class + var doConstruct = shouldConstruct(Component); + var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue); + var renderedElement; + + // Support functional components + if (!doConstruct && (inst == null || inst.render == null)) { + renderedElement = inst; + warnIfInvalidElement(Component, renderedElement); + !(inst === null || inst === false || React.isValidElement(inst)) ? true ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0; + inst = new StatelessComponent(Component); + this._compositeType = CompositeTypes.StatelessFunctional; + } else { + if (isPureComponent(Component)) { + this._compositeType = CompositeTypes.PureClass; + } else { + this._compositeType = CompositeTypes.ImpureClass; + } + } + + if (true) { + // This will throw later in _renderValidatedComponent, but add an early + // warning now to help debugging + if (inst.render == null) { + true ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0; + } + + var propsMutated = inst.props !== publicProps; + var componentName = Component.displayName || Component.name || 'Component'; + + true ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\'s constructor was passed.', componentName, componentName) : void 0; + } + + // These should be set up in the constructor, but as a convenience for + // simpler class abstractions, we set them up after the fact. + inst.props = publicProps; + inst.context = publicContext; + inst.refs = emptyObject; + inst.updater = updateQueue; + + this._instance = inst; + + // Store a reference from the instance back to the internal representation + ReactInstanceMap.set(inst, this); + + if (true) { + // Since plain JS classes are defined without any special initialization + // logic, we can not catch common errors early. Therefore, we have to + // catch them here, at initialization time, instead. + true ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0; + true ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0; + true ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0; + true ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0; + true ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0; + true ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0; + true ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0; + } + + var initialState = inst.state; + if (initialState === undefined) { + inst.state = initialState = null; + } + !(typeof initialState === 'object' && !Array.isArray(initialState)) ? true ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0; + + this._pendingStateQueue = null; + this._pendingReplaceState = false; + this._pendingForceUpdate = false; + + var markup; + if (inst.unstable_handleError) { + markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context); + } else { + markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); + } + + if (inst.componentDidMount) { + if (true) { + transaction.getReactMountReady().enqueue(function () { + measureLifeCyclePerf(function () { + return inst.componentDidMount(); + }, _this._debugID, 'componentDidMount'); + }); + } else { + transaction.getReactMountReady().enqueue(inst.componentDidMount, inst); + } + } + + return markup; + }, + + _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) { + if (true) { + ReactCurrentOwner.current = this; + try { + return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue); + } finally { + ReactCurrentOwner.current = null; + } + } else { + return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue); + } + }, + + _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) { + var Component = this._currentElement.type; + + if (doConstruct) { + if (true) { + return measureLifeCyclePerf(function () { + return new Component(publicProps, publicContext, updateQueue); + }, this._debugID, 'ctor'); + } else { + return new Component(publicProps, publicContext, updateQueue); + } + } + + // This can still be an instance in case of factory components + // but we'll count this as time spent rendering as the more common case. + if (true) { + return measureLifeCyclePerf(function () { + return Component(publicProps, publicContext, updateQueue); + }, this._debugID, 'render'); + } else { + return Component(publicProps, publicContext, updateQueue); + } + }, + + performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) { + var markup; + var checkpoint = transaction.checkpoint(); + try { + markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); + } catch (e) { + // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint + transaction.rollback(checkpoint); + this._instance.unstable_handleError(e); + if (this._pendingStateQueue) { + this._instance.state = this._processPendingState(this._instance.props, this._instance.context); + } + checkpoint = transaction.checkpoint(); + + this._renderedComponent.unmountComponent(true); + transaction.rollback(checkpoint); + + // Try again - we've informed the component about the error, so they can render an error message this time. + // If this throws again, the error will bubble up (and can be caught by a higher error boundary). + markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); + } + return markup; + }, + + performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) { + var inst = this._instance; + + var debugID = 0; + if (true) { + debugID = this._debugID; + } + + if (inst.componentWillMount) { + if (true) { + measureLifeCyclePerf(function () { + return inst.componentWillMount(); + }, debugID, 'componentWillMount'); + } else { + inst.componentWillMount(); + } + // When mounting, calls to `setState` by `componentWillMount` will set + // `this._pendingStateQueue` without triggering a re-render. + if (this._pendingStateQueue) { + inst.state = this._processPendingState(inst.props, inst.context); + } + } + + // If not a stateless component, we now render + if (renderedElement === undefined) { + renderedElement = this._renderValidatedComponent(); + } + + var nodeType = ReactNodeTypes.getType(renderedElement); + this._renderedNodeType = nodeType; + var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */ + ); + this._renderedComponent = child; + + var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID); + + if (true) { + if (debugID !== 0) { + var childDebugIDs = child._debugID !== 0 ? [child._debugID] : []; + ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs); + } + } + + return markup; + }, + + getHostNode: function () { + return ReactReconciler.getHostNode(this._renderedComponent); + }, + + /** + * Releases any resources allocated by `mountComponent`. + * + * @final + * @internal + */ + unmountComponent: function (safely) { + if (!this._renderedComponent) { + return; + } + + var inst = this._instance; + + if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) { + inst._calledComponentWillUnmount = true; + + if (safely) { + var name = this.getName() + '.componentWillUnmount()'; + ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst)); + } else { + if (true) { + measureLifeCyclePerf(function () { + return inst.componentWillUnmount(); + }, this._debugID, 'componentWillUnmount'); + } else { + inst.componentWillUnmount(); + } + } + } + + if (this._renderedComponent) { + ReactReconciler.unmountComponent(this._renderedComponent, safely); + this._renderedNodeType = null; + this._renderedComponent = null; + this._instance = null; + } + + // Reset pending fields + // Even if this component is scheduled for another update in ReactUpdates, + // it would still be ignored because these fields are reset. + this._pendingStateQueue = null; + this._pendingReplaceState = false; + this._pendingForceUpdate = false; + this._pendingCallbacks = null; + this._pendingElement = null; + + // These fields do not really need to be reset since this object is no + // longer accessible. + this._context = null; + this._rootNodeID = 0; + this._topLevelWrapper = null; + + // Delete the reference from the instance to this internal representation + // which allow the internals to be properly cleaned up even if the user + // leaks a reference to the public instance. + ReactInstanceMap.remove(inst); + + // Some existing components rely on inst.props even after they've been + // destroyed (in event handlers). + // TODO: inst.props = null; + // TODO: inst.state = null; + // TODO: inst.context = null; + }, + + /** + * Filters the context object to only contain keys specified in + * `contextTypes` + * + * @param {object} context + * @return {?object} + * @private + */ + _maskContext: function (context) { + var Component = this._currentElement.type; + var contextTypes = Component.contextTypes; + if (!contextTypes) { + return emptyObject; + } + var maskedContext = {}; + for (var contextName in contextTypes) { + maskedContext[contextName] = context[contextName]; + } + return maskedContext; + }, + + /** + * Filters the context object to only contain keys specified in + * `contextTypes`, and asserts that they are valid. + * + * @param {object} context + * @return {?object} + * @private + */ + _processContext: function (context) { + var maskedContext = this._maskContext(context); + if (true) { + var Component = this._currentElement.type; + if (Component.contextTypes) { + this._checkContextTypes(Component.contextTypes, maskedContext, 'context'); + } + } + return maskedContext; + }, + + /** + * @param {object} currentContext + * @return {object} + * @private + */ + _processChildContext: function (currentContext) { + var Component = this._currentElement.type; + var inst = this._instance; + var childContext; + + if (inst.getChildContext) { + if (true) { + ReactInstrumentation.debugTool.onBeginProcessingChildContext(); + try { + childContext = inst.getChildContext(); + } finally { + ReactInstrumentation.debugTool.onEndProcessingChildContext(); + } + } else { + childContext = inst.getChildContext(); + } + } + + if (childContext) { + !(typeof Component.childContextTypes === 'object') ? true ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0; + if (true) { + this._checkContextTypes(Component.childContextTypes, childContext, 'child context'); + } + for (var name in childContext) { + !(name in Component.childContextTypes) ? true ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0; + } + return _assign({}, currentContext, childContext); + } + return currentContext; + }, + + /** + * Assert that the context types are valid + * + * @param {object} typeSpecs Map of context field to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @private + */ + _checkContextTypes: function (typeSpecs, values, location) { + if (true) { + checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID); + } + }, + + receiveComponent: function (nextElement, transaction, nextContext) { + var prevElement = this._currentElement; + var prevContext = this._context; + + this._pendingElement = null; + + this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext); + }, + + /** + * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate` + * is set, update the component. + * + * @param {ReactReconcileTransaction} transaction + * @internal + */ + performUpdateIfNecessary: function (transaction) { + if (this._pendingElement != null) { + ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context); + } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) { + this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context); + } else { + this._updateBatchNumber = null; + } + }, + + /** + * Perform an update to a mounted component. The componentWillReceiveProps and + * shouldComponentUpdate methods are called, then (assuming the update isn't + * skipped) the remaining update lifecycle methods are called and the DOM + * representation is updated. + * + * By default, this implements React's rendering and reconciliation algorithm. + * Sophisticated clients may wish to override this. + * + * @param {ReactReconcileTransaction} transaction + * @param {ReactElement} prevParentElement + * @param {ReactElement} nextParentElement + * @internal + * @overridable + */ + updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) { + var inst = this._instance; + !(inst != null) ? true ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0; + + var willReceive = false; + var nextContext; + + // Determine if the context has changed or not + if (this._context === nextUnmaskedContext) { + nextContext = inst.context; + } else { + nextContext = this._processContext(nextUnmaskedContext); + willReceive = true; + } + + var prevProps = prevParentElement.props; + var nextProps = nextParentElement.props; + + // Not a simple state update but a props update + if (prevParentElement !== nextParentElement) { + willReceive = true; + } + + // An update here will schedule an update but immediately set + // _pendingStateQueue which will ensure that any state updates gets + // immediately reconciled instead of waiting for the next batch. + if (willReceive && inst.componentWillReceiveProps) { + if (true) { + measureLifeCyclePerf(function () { + return inst.componentWillReceiveProps(nextProps, nextContext); + }, this._debugID, 'componentWillReceiveProps'); + } else { + inst.componentWillReceiveProps(nextProps, nextContext); + } + } + + var nextState = this._processPendingState(nextProps, nextContext); + var shouldUpdate = true; + + if (!this._pendingForceUpdate) { + if (inst.shouldComponentUpdate) { + if (true) { + shouldUpdate = measureLifeCyclePerf(function () { + return inst.shouldComponentUpdate(nextProps, nextState, nextContext); + }, this._debugID, 'shouldComponentUpdate'); + } else { + shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext); + } + } else { + if (this._compositeType === CompositeTypes.PureClass) { + shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState); + } + } + } + + if (true) { + true ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0; + } + + this._updateBatchNumber = null; + if (shouldUpdate) { + this._pendingForceUpdate = false; + // Will set `this.props`, `this.state` and `this.context`. + this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext); + } else { + // If it's determined that a component should not update, we still want + // to set props and state but we shortcut the rest of the update. + this._currentElement = nextParentElement; + this._context = nextUnmaskedContext; + inst.props = nextProps; + inst.state = nextState; + inst.context = nextContext; + } + }, + + _processPendingState: function (props, context) { + var inst = this._instance; + var queue = this._pendingStateQueue; + var replace = this._pendingReplaceState; + this._pendingReplaceState = false; + this._pendingStateQueue = null; + + if (!queue) { + return inst.state; + } + + if (replace && queue.length === 1) { + return queue[0]; + } + + var nextState = _assign({}, replace ? queue[0] : inst.state); + for (var i = replace ? 1 : 0; i < queue.length; i++) { + var partial = queue[i]; + _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial); + } + + return nextState; + }, + + /** + * Merges new props and state, notifies delegate methods of update and + * performs update. + * + * @param {ReactElement} nextElement Next element + * @param {object} nextProps Next public object to set as properties. + * @param {?object} nextState Next object to set as state. + * @param {?object} nextContext Next public object to set as context. + * @param {ReactReconcileTransaction} transaction + * @param {?object} unmaskedContext + * @private + */ + _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) { + var _this2 = this; + + var inst = this._instance; + + var hasComponentDidUpdate = Boolean(inst.componentDidUpdate); + var prevProps; + var prevState; + var prevContext; + if (hasComponentDidUpdate) { + prevProps = inst.props; + prevState = inst.state; + prevContext = inst.context; + } + + if (inst.componentWillUpdate) { + if (true) { + measureLifeCyclePerf(function () { + return inst.componentWillUpdate(nextProps, nextState, nextContext); + }, this._debugID, 'componentWillUpdate'); + } else { + inst.componentWillUpdate(nextProps, nextState, nextContext); + } + } + + this._currentElement = nextElement; + this._context = unmaskedContext; + inst.props = nextProps; + inst.state = nextState; + inst.context = nextContext; + + this._updateRenderedComponent(transaction, unmaskedContext); + + if (hasComponentDidUpdate) { + if (true) { + transaction.getReactMountReady().enqueue(function () { + measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate'); + }); + } else { + transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst); + } + } + }, + + /** + * Call the component's `render` method and update the DOM accordingly. + * + * @param {ReactReconcileTransaction} transaction + * @internal + */ + _updateRenderedComponent: function (transaction, context) { + var prevComponentInstance = this._renderedComponent; + var prevRenderedElement = prevComponentInstance._currentElement; + var nextRenderedElement = this._renderValidatedComponent(); + + var debugID = 0; + if (true) { + debugID = this._debugID; + } + + if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) { + ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context)); + } else { + var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance); + ReactReconciler.unmountComponent(prevComponentInstance, false); + + var nodeType = ReactNodeTypes.getType(nextRenderedElement); + this._renderedNodeType = nodeType; + var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */ + ); + this._renderedComponent = child; + + var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID); + + if (true) { + if (debugID !== 0) { + var childDebugIDs = child._debugID !== 0 ? [child._debugID] : []; + ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs); + } + } + + this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance); + } + }, + + /** + * Overridden in shallow rendering. + * + * @protected + */ + _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) { + ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance); + }, + + /** + * @protected + */ + _renderValidatedComponentWithoutOwnerOrContext: function () { + var inst = this._instance; + var renderedElement; + + if (true) { + renderedElement = measureLifeCyclePerf(function () { + return inst.render(); + }, this._debugID, 'render'); + } else { + renderedElement = inst.render(); + } + + if (true) { + // We allow auto-mocks to proceed as if they're returning null. + if (renderedElement === undefined && inst.render._isMockFunction) { + // This is probably bad practice. Consider warning here and + // deprecating this convenience. + renderedElement = null; + } + } + + return renderedElement; + }, + + /** + * @private + */ + _renderValidatedComponent: function () { + var renderedElement; + if (true) { + ReactCurrentOwner.current = this; + try { + renderedElement = this._renderValidatedComponentWithoutOwnerOrContext(); + } finally { + ReactCurrentOwner.current = null; + } + } else { + renderedElement = this._renderValidatedComponentWithoutOwnerOrContext(); + } + !( + // TODO: An `isValidNode` function would probably be more appropriate + renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? true ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0; + + return renderedElement; + }, + + /** + * Lazily allocates the refs object and stores `component` as `ref`. + * + * @param {string} ref Reference name. + * @param {component} component Component to store as `ref`. + * @final + * @private + */ + attachRef: function (ref, component) { + var inst = this.getPublicInstance(); + !(inst != null) ? true ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0; + var publicComponentInstance = component.getPublicInstance(); + if (true) { + var componentName = component && component.getName ? component.getName() : 'a component'; + true ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref "%s" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0; + } + var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs; + refs[ref] = publicComponentInstance; + }, + + /** + * Detaches a reference name. + * + * @param {string} ref Name to dereference. + * @final + * @private + */ + detachRef: function (ref) { + var refs = this.getPublicInstance().refs; + delete refs[ref]; + }, + + /** + * Get a text description of the component that can be used to identify it + * in error messages. + * @return {string} The name or null. + * @internal + */ + getName: function () { + var type = this._currentElement.type; + var constructor = this._instance && this._instance.constructor; + return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null; + }, + + /** + * Get the publicly accessible representation of this component - i.e. what + * is exposed by refs and returned by render. Can be null for stateless + * components. + * + * @return {ReactComponent} the public component instance. + * @internal + */ + getPublicInstance: function () { + var inst = this._instance; + if (this._compositeType === CompositeTypes.StatelessFunctional) { + return null; + } + return inst; + }, + + // Stub + _instantiateReactComponent: null + +}; + +module.exports = ReactCompositeComponent; + +/***/ }), +/* 234 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + +/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/ + + + +var ReactDOMComponentTree = __webpack_require__(7); +var ReactDefaultInjection = __webpack_require__(251); +var ReactMount = __webpack_require__(124); +var ReactReconciler = __webpack_require__(29); +var ReactUpdates = __webpack_require__(14); +var ReactVersion = __webpack_require__(266); + +var findDOMNode = __webpack_require__(286); +var getHostComponentFromComposite = __webpack_require__(131); +var renderSubtreeIntoContainer = __webpack_require__(293); +var warning = __webpack_require__(1); + +ReactDefaultInjection.inject(); + +var ReactDOM = { + findDOMNode: findDOMNode, + render: ReactMount.render, + unmountComponentAtNode: ReactMount.unmountComponentAtNode, + version: ReactVersion, + + /* eslint-disable camelcase */ + unstable_batchedUpdates: ReactUpdates.batchedUpdates, + unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer +}; + +// Inject the runtime into a devtools global hook regardless of browser. +// Allows for debugging when the hook is injected on the page. +if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') { + __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ + ComponentTree: { + getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode, + getNodeFromInstance: function (inst) { + // inst is an internal instance (but could be a composite) + if (inst._renderedComponent) { + inst = getHostComponentFromComposite(inst); + } + if (inst) { + return ReactDOMComponentTree.getNodeFromInstance(inst); + } else { + return null; + } + } + }, + Mount: ReactMount, + Reconciler: ReactReconciler + }); +} + +if (true) { + var ExecutionEnvironment = __webpack_require__(4); + if (ExecutionEnvironment.canUseDOM && window.top === window.self) { + + // First check if devtools is not installed + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') { + // If we're in Chrome or Firefox, provide a download link if not installed. + if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) { + // Firefox does not have the issue with devtools loaded over file:// + var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1; + console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools'); + } + } + + var testFunc = function testFn() {}; + true ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0; + + // If we're in IE8, check to see if we are in compatibility mode and provide + // information on preventing compatibility mode + var ieCompatibilityMode = document.documentMode && document.documentMode < 8; + + true ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv="X-UA-Compatible" content="IE=edge" />') : void 0; + + 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.trim]; + + for (var i = 0; i < expectedFeatures.length; i++) { + if (!expectedFeatures[i]) { + true ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0; + break; + } + } + } +} + +if (true) { + var ReactInstrumentation = __webpack_require__(11); + var ReactDOMUnknownPropertyHook = __webpack_require__(248); + var ReactDOMNullInputValuePropHook = __webpack_require__(242); + var ReactDOMInvalidARIAHook = __webpack_require__(241); + + ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook); + ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook); + ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook); +} + +module.exports = ReactDOM; + +/***/ }), +/* 235 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + +/* global hasOwnProperty:true */ + + + +var _prodInvariant = __webpack_require__(2), + _assign = __webpack_require__(6); + +var AutoFocusUtils = __webpack_require__(222); +var CSSPropertyOperations = __webpack_require__(224); +var DOMLazyTree = __webpack_require__(26); +var DOMNamespaces = __webpack_require__(68); +var DOMProperty = __webpack_require__(20); +var DOMPropertyOperations = __webpack_require__(117); +var EventPluginHub = __webpack_require__(27); +var EventPluginRegistry = __webpack_require__(52); +var ReactBrowserEventEmitter = __webpack_require__(53); +var ReactDOMComponentFlags = __webpack_require__(118); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactDOMInput = __webpack_require__(240); +var ReactDOMOption = __webpack_require__(243); +var ReactDOMSelect = __webpack_require__(119); +var ReactDOMTextarea = __webpack_require__(246); +var ReactInstrumentation = __webpack_require__(11); +var ReactMultiChild = __webpack_require__(259); +var ReactServerRenderingTransaction = __webpack_require__(264); + +var emptyFunction = __webpack_require__(10); +var escapeTextContentForBrowser = __webpack_require__(56); +var invariant = __webpack_require__(0); +var isEventSupported = __webpack_require__(78); +var shallowEqual = __webpack_require__(65); +var validateDOMNesting = __webpack_require__(80); +var warning = __webpack_require__(1); + +var Flags = ReactDOMComponentFlags; +var deleteListener = EventPluginHub.deleteListener; +var getNode = ReactDOMComponentTree.getNodeFromInstance; +var listenTo = ReactBrowserEventEmitter.listenTo; +var registrationNameModules = EventPluginRegistry.registrationNameModules; + +// For quickly matching children type, to test if can be treated as content. +var CONTENT_TYPES = { 'string': true, 'number': true }; + +var STYLE = 'style'; +var HTML = '__html'; +var RESERVED_PROPS = { + children: null, + dangerouslySetInnerHTML: null, + suppressContentEditableWarning: null +}; + +// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE). +var DOC_FRAGMENT_TYPE = 11; + +function getDeclarationErrorAddendum(internalInstance) { + if (internalInstance) { + var owner = internalInstance._currentElement._owner || null; + if (owner) { + var name = owner.getName(); + if (name) { + return ' This DOM node was rendered by `' + name + '`.'; + } + } + } + return ''; +} + +function friendlyStringify(obj) { + if (typeof obj === 'object') { + if (Array.isArray(obj)) { + return '[' + obj.map(friendlyStringify).join(', ') + ']'; + } else { + var pairs = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key); + pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key])); + } + } + return '{' + pairs.join(', ') + '}'; + } + } else if (typeof obj === 'string') { + return JSON.stringify(obj); + } else if (typeof obj === 'function') { + return '[function object]'; + } + // Differs from JSON.stringify in that undefined because undefined and that + // inf and nan don't become null + return String(obj); +} + +var styleMutationWarning = {}; + +function checkAndWarnForMutatedStyle(style1, style2, component) { + if (style1 == null || style2 == null) { + return; + } + if (shallowEqual(style1, style2)) { + return; + } + + var componentName = component._tag; + var owner = component._currentElement._owner; + var ownerName; + if (owner) { + ownerName = owner.getName(); + } + + var hash = ownerName + '|' + componentName; + + if (styleMutationWarning.hasOwnProperty(hash)) { + return; + } + + styleMutationWarning[hash] = true; + + true ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0; +} + +/** + * @param {object} component + * @param {?object} props + */ +function assertValidProps(component, props) { + if (!props) { + return; + } + // Note the use of `==` which checks for null or undefined. + if (voidElementTags[component._tag]) { + !(props.children == null && props.dangerouslySetInnerHTML == null) ? true ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0; + } + if (props.dangerouslySetInnerHTML != null) { + !(props.children == null) ? true ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0; + !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? true ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0; + } + if (true) { + true ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0; + true ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0; + true ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0; + } + !(props.style == null || typeof props.style === 'object') ? true ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \'em\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0; +} + +function enqueuePutListener(inst, registrationName, listener, transaction) { + if (transaction instanceof ReactServerRenderingTransaction) { + return; + } + if (true) { + // IE8 has no API for event capturing and the `onScroll` event doesn't + // bubble. + true ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\'t support the `onScroll` event') : void 0; + } + var containerInfo = inst._hostContainerInfo; + var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE; + var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument; + listenTo(registrationName, doc); + transaction.getReactMountReady().enqueue(putListener, { + inst: inst, + registrationName: registrationName, + listener: listener + }); +} + +function putListener() { + var listenerToPut = this; + EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener); +} + +function inputPostMount() { + var inst = this; + ReactDOMInput.postMountWrapper(inst); +} + +function textareaPostMount() { + var inst = this; + ReactDOMTextarea.postMountWrapper(inst); +} + +function optionPostMount() { + var inst = this; + ReactDOMOption.postMountWrapper(inst); +} + +var setAndValidateContentChildDev = emptyFunction; +if (true) { + setAndValidateContentChildDev = function (content) { + var hasExistingContent = this._contentDebugID != null; + var debugID = this._debugID; + // This ID represents the inlined child that has no backing instance: + var contentDebugID = -debugID; + + if (content == null) { + if (hasExistingContent) { + ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID); + } + this._contentDebugID = null; + return; + } + + validateDOMNesting(null, String(content), this, this._ancestorInfo); + this._contentDebugID = contentDebugID; + if (hasExistingContent) { + ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content); + ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID); + } else { + ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID); + ReactInstrumentation.debugTool.onMountComponent(contentDebugID); + ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]); + } + }; +} + +// There are so many media events, it makes sense to just +// maintain a list rather than create a `trapBubbledEvent` for each +var mediaEvents = { + topAbort: 'abort', + topCanPlay: 'canplay', + topCanPlayThrough: 'canplaythrough', + topDurationChange: 'durationchange', + topEmptied: 'emptied', + topEncrypted: 'encrypted', + topEnded: 'ended', + topError: 'error', + topLoadedData: 'loadeddata', + topLoadedMetadata: 'loadedmetadata', + topLoadStart: 'loadstart', + topPause: 'pause', + topPlay: 'play', + topPlaying: 'playing', + topProgress: 'progress', + topRateChange: 'ratechange', + topSeeked: 'seeked', + topSeeking: 'seeking', + topStalled: 'stalled', + topSuspend: 'suspend', + topTimeUpdate: 'timeupdate', + topVolumeChange: 'volumechange', + topWaiting: 'waiting' +}; + +function trapBubbledEventsLocal() { + var inst = this; + // If a component renders to null or if another component fatals and causes + // the state of the tree to be corrupted, `node` here can be null. + !inst._rootNodeID ? true ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0; + var node = getNode(inst); + !node ? true ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0; + + switch (inst._tag) { + case 'iframe': + case 'object': + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; + break; + case 'video': + case 'audio': + + inst._wrapperState.listeners = []; + // Create listener for each media event + for (var event in mediaEvents) { + if (mediaEvents.hasOwnProperty(event)) { + inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node)); + } + } + break; + case 'source': + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)]; + break; + case 'img': + inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; + break; + case 'form': + 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('topInvalid', 'invalid', node)]; + break; + } +} + +function postUpdateSelectWrapper() { + ReactDOMSelect.postUpdateWrapper(this); +} + +// For HTML, certain tags should omit their close tag. We keep a whitelist for +// those special-case tags. + +var omittedCloseTags = { + 'area': true, + 'base': true, + 'br': true, + 'col': true, + 'embed': true, + 'hr': true, + 'img': true, + 'input': true, + 'keygen': true, + 'link': true, + 'meta': true, + 'param': true, + 'source': true, + 'track': true, + 'wbr': true +}; + +var newlineEatingTags = { + 'listing': true, + 'pre': true, + 'textarea': true +}; + +// For HTML, certain tags cannot have children. This has the same purpose as +// `omittedCloseTags` except that `menuitem` should still have its closing tag. + +var voidElementTags = _assign({ + 'menuitem': true +}, omittedCloseTags); + +// We accept any tag to be rendered but since this gets injected into arbitrary +// HTML, we want to make sure that it's a safe tag. +// http://www.w3.org/TR/REC-xml/#NT-Name + +var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset +var validatedTagCache = {}; +var hasOwnProperty = {}.hasOwnProperty; + +function validateDangerousTag(tag) { + if (!hasOwnProperty.call(validatedTagCache, tag)) { + !VALID_TAG_REGEX.test(tag) ? true ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0; + validatedTagCache[tag] = true; + } +} + +function isCustomComponent(tagName, props) { + return tagName.indexOf('-') >= 0 || props.is != null; +} + +var globalIdCounter = 1; + +/** + * Creates a new React class that is idempotent and capable of containing other + * React components. It accepts event listeners and DOM properties that are + * valid according to `DOMProperty`. + * + * - Event listeners: `onClick`, `onMouseDown`, etc. + * - DOM properties: `className`, `name`, `title`, etc. + * + * The `style` property functions differently from the DOM API. It accepts an + * object mapping of style properties to values. + * + * @constructor ReactDOMComponent + * @extends ReactMultiChild + */ +function ReactDOMComponent(element) { + var tag = element.type; + validateDangerousTag(tag); + this._currentElement = element; + this._tag = tag.toLowerCase(); + this._namespaceURI = null; + this._renderedChildren = null; + this._previousStyle = null; + this._previousStyleCopy = null; + this._hostNode = null; + this._hostParent = null; + this._rootNodeID = 0; + this._domID = 0; + this._hostContainerInfo = null; + this._wrapperState = null; + this._topLevelWrapper = null; + this._flags = 0; + if (true) { + this._ancestorInfo = null; + setAndValidateContentChildDev.call(this, null); + } +} + +ReactDOMComponent.displayName = 'ReactDOMComponent'; + +ReactDOMComponent.Mixin = { + + /** + * Generates root tag markup then recurses. This method has side effects and + * is not idempotent. + * + * @internal + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @param {?ReactDOMComponent} the parent component instance + * @param {?object} info about the host container + * @param {object} context + * @return {string} The computed markup. + */ + mountComponent: function (transaction, hostParent, hostContainerInfo, context) { + this._rootNodeID = globalIdCounter++; + this._domID = hostContainerInfo._idCounter++; + this._hostParent = hostParent; + this._hostContainerInfo = hostContainerInfo; + + var props = this._currentElement.props; + + switch (this._tag) { + case 'audio': + case 'form': + case 'iframe': + case 'img': + case 'link': + case 'object': + case 'source': + case 'video': + this._wrapperState = { + listeners: null + }; + transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); + break; + case 'input': + ReactDOMInput.mountWrapper(this, props, hostParent); + props = ReactDOMInput.getHostProps(this, props); + transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); + break; + case 'option': + ReactDOMOption.mountWrapper(this, props, hostParent); + props = ReactDOMOption.getHostProps(this, props); + break; + case 'select': + ReactDOMSelect.mountWrapper(this, props, hostParent); + props = ReactDOMSelect.getHostProps(this, props); + transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); + break; + case 'textarea': + ReactDOMTextarea.mountWrapper(this, props, hostParent); + props = ReactDOMTextarea.getHostProps(this, props); + transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); + break; + } + + assertValidProps(this, props); + + // We create tags in the namespace of their parent container, except HTML + // tags get no namespace. + var namespaceURI; + var parentTag; + if (hostParent != null) { + namespaceURI = hostParent._namespaceURI; + parentTag = hostParent._tag; + } else if (hostContainerInfo._tag) { + namespaceURI = hostContainerInfo._namespaceURI; + parentTag = hostContainerInfo._tag; + } + if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') { + namespaceURI = DOMNamespaces.html; + } + if (namespaceURI === DOMNamespaces.html) { + if (this._tag === 'svg') { + namespaceURI = DOMNamespaces.svg; + } else if (this._tag === 'math') { + namespaceURI = DOMNamespaces.mathml; + } + } + this._namespaceURI = namespaceURI; + + if (true) { + var parentInfo; + if (hostParent != null) { + parentInfo = hostParent._ancestorInfo; + } else if (hostContainerInfo._tag) { + parentInfo = hostContainerInfo._ancestorInfo; + } + if (parentInfo) { + // parentInfo should always be present except for the top-level + // component when server rendering + validateDOMNesting(this._tag, null, this, parentInfo); + } + this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this); + } + + var mountImage; + if (transaction.useCreateElement) { + var ownerDocument = hostContainerInfo._ownerDocument; + var el; + if (namespaceURI === DOMNamespaces.html) { + if (this._tag === 'script') { + // Create the script via .innerHTML so its "parser-inserted" flag is + // set to true and it does not execute + var div = ownerDocument.createElement('div'); + var type = this._currentElement.type; + div.innerHTML = '<' + type + '></' + type + '>'; + el = div.removeChild(div.firstChild); + } else if (props.is) { + el = ownerDocument.createElement(this._currentElement.type, props.is); + } else { + // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug. + // See discussion in https://github.com/facebook/react/pull/6896 + // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240 + el = ownerDocument.createElement(this._currentElement.type); + } + } else { + el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type); + } + ReactDOMComponentTree.precacheNode(this, el); + this._flags |= Flags.hasCachedChildNodes; + if (!this._hostParent) { + DOMPropertyOperations.setAttributeForRoot(el); + } + this._updateDOMProperties(null, props, transaction); + var lazyTree = DOMLazyTree(el); + this._createInitialChildren(transaction, props, context, lazyTree); + mountImage = lazyTree; + } else { + var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props); + var tagContent = this._createContentMarkup(transaction, props, context); + if (!tagContent && omittedCloseTags[this._tag]) { + mountImage = tagOpen + '/>'; + } else { + mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>'; + } + } + + switch (this._tag) { + case 'input': + transaction.getReactMountReady().enqueue(inputPostMount, this); + if (props.autoFocus) { + transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); + } + break; + case 'textarea': + transaction.getReactMountReady().enqueue(textareaPostMount, this); + if (props.autoFocus) { + transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); + } + break; + case 'select': + if (props.autoFocus) { + transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); + } + break; + case 'button': + if (props.autoFocus) { + transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); + } + break; + case 'option': + transaction.getReactMountReady().enqueue(optionPostMount, this); + break; + } + + return mountImage; + }, + + /** + * Creates markup for the open tag and all attributes. + * + * This method has side effects because events get registered. + * + * Iterating over object properties is faster than iterating over arrays. + * @see http://jsperf.com/obj-vs-arr-iteration + * + * @private + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @param {object} props + * @return {string} Markup of opening tag. + */ + _createOpenTagMarkupAndPutListeners: function (transaction, props) { + var ret = '<' + this._currentElement.type; + + for (var propKey in props) { + if (!props.hasOwnProperty(propKey)) { + continue; + } + var propValue = props[propKey]; + if (propValue == null) { + continue; + } + if (registrationNameModules.hasOwnProperty(propKey)) { + if (propValue) { + enqueuePutListener(this, propKey, propValue, transaction); + } + } else { + if (propKey === STYLE) { + if (propValue) { + if (true) { + // See `_updateDOMProperties`. style block + this._previousStyle = propValue; + } + propValue = this._previousStyleCopy = _assign({}, props.style); + } + propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this); + } + var markup = null; + if (this._tag != null && isCustomComponent(this._tag, props)) { + if (!RESERVED_PROPS.hasOwnProperty(propKey)) { + markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue); + } + } else { + markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue); + } + if (markup) { + ret += ' ' + markup; + } + } + } + + // For static pages, no need to put React ID and checksum. Saves lots of + // bytes. + if (transaction.renderToStaticMarkup) { + return ret; + } + + if (!this._hostParent) { + ret += ' ' + DOMPropertyOperations.createMarkupForRoot(); + } + ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID); + return ret; + }, + + /** + * Creates markup for the content between the tags. + * + * @private + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @param {object} props + * @param {object} context + * @return {string} Content markup. + */ + _createContentMarkup: function (transaction, props, context) { + var ret = ''; + + // Intentional use of != to avoid catching zero/false. + var innerHTML = props.dangerouslySetInnerHTML; + if (innerHTML != null) { + if (innerHTML.__html != null) { + ret = innerHTML.__html; + } + } else { + var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null; + var childrenToUse = contentToUse != null ? null : props.children; + if (contentToUse != null) { + // TODO: Validate that text is allowed as a child of this node + ret = escapeTextContentForBrowser(contentToUse); + if (true) { + setAndValidateContentChildDev.call(this, contentToUse); + } + } else if (childrenToUse != null) { + var mountImages = this.mountChildren(childrenToUse, transaction, context); + ret = mountImages.join(''); + } + } + if (newlineEatingTags[this._tag] && ret.charAt(0) === '\n') { + // text/html ignores the first character in these tags if it's a newline + // Prefer to break application/xml over text/html (for now) by adding + // a newline specifically to get eaten by the parser. (Alternately for + // textareas, replacing "^\n" with "\r\n" doesn't get eaten, and the first + // \r is normalized out by HTMLTextAreaElement#value.) + // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre> + // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions> + // See: <http://www.w3.org/TR/html5/syntax.html#newlines> + // See: Parsing of "textarea" "listing" and "pre" elements + // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody> + return '\n' + ret; + } else { + return ret; + } + }, + + _createInitialChildren: function (transaction, props, context, lazyTree) { + // Intentional use of != to avoid catching zero/false. + var innerHTML = props.dangerouslySetInnerHTML; + if (innerHTML != null) { + if (innerHTML.__html != null) { + DOMLazyTree.queueHTML(lazyTree, innerHTML.__html); + } + } else { + var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null; + var childrenToUse = contentToUse != null ? null : props.children; + // TODO: Validate that text is allowed as a child of this node + if (contentToUse != null) { + // Avoid setting textContent when the text is empty. In IE11 setting + // textContent on a text area will cause the placeholder to not + // show within the textarea until it has been focused and blurred again. + // https://github.com/facebook/react/issues/6731#issuecomment-254874553 + if (contentToUse !== '') { + if (true) { + setAndValidateContentChildDev.call(this, contentToUse); + } + DOMLazyTree.queueText(lazyTree, contentToUse); + } + } else if (childrenToUse != null) { + var mountImages = this.mountChildren(childrenToUse, transaction, context); + for (var i = 0; i < mountImages.length; i++) { + DOMLazyTree.queueChild(lazyTree, mountImages[i]); + } + } + } + }, + + /** + * Receives a next element and updates the component. + * + * @internal + * @param {ReactElement} nextElement + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @param {object} context + */ + receiveComponent: function (nextElement, transaction, context) { + var prevElement = this._currentElement; + this._currentElement = nextElement; + this.updateComponent(transaction, prevElement, nextElement, context); + }, + + /** + * Updates a DOM component after it has already been allocated and + * attached to the DOM. Reconciles the root DOM node, then recurses. + * + * @param {ReactReconcileTransaction} transaction + * @param {ReactElement} prevElement + * @param {ReactElement} nextElement + * @internal + * @overridable + */ + updateComponent: function (transaction, prevElement, nextElement, context) { + var lastProps = prevElement.props; + var nextProps = this._currentElement.props; + + switch (this._tag) { + case 'input': + lastProps = ReactDOMInput.getHostProps(this, lastProps); + nextProps = ReactDOMInput.getHostProps(this, nextProps); + break; + case 'option': + lastProps = ReactDOMOption.getHostProps(this, lastProps); + nextProps = ReactDOMOption.getHostProps(this, nextProps); + break; + case 'select': + lastProps = ReactDOMSelect.getHostProps(this, lastProps); + nextProps = ReactDOMSelect.getHostProps(this, nextProps); + break; + case 'textarea': + lastProps = ReactDOMTextarea.getHostProps(this, lastProps); + nextProps = ReactDOMTextarea.getHostProps(this, nextProps); + break; + } + + assertValidProps(this, nextProps); + this._updateDOMProperties(lastProps, nextProps, transaction); + this._updateDOMChildren(lastProps, nextProps, transaction, context); + + switch (this._tag) { + case 'input': + // Update the wrapper around inputs *after* updating props. This has to + // happen after `_updateDOMProperties`. Otherwise HTML5 input validations + // raise warnings and prevent the new value from being assigned. + ReactDOMInput.updateWrapper(this); + break; + case 'textarea': + ReactDOMTextarea.updateWrapper(this); + break; + case 'select': + // <select> value update needs to occur after <option> children + // reconciliation + transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this); + break; + } + }, + + /** + * Reconciles the properties by detecting differences in property values and + * updating the DOM as necessary. This function is probably the single most + * critical path for performance optimization. + * + * TODO: Benchmark whether checking for changed values in memory actually + * improves performance (especially statically positioned elements). + * TODO: Benchmark the effects of putting this at the top since 99% of props + * do not change for a given reconciliation. + * TODO: Benchmark areas that can be improved with caching. + * + * @private + * @param {object} lastProps + * @param {object} nextProps + * @param {?DOMElement} node + */ + _updateDOMProperties: function (lastProps, nextProps, transaction) { + var propKey; + var styleName; + var styleUpdates; + for (propKey in lastProps) { + if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) { + continue; + } + if (propKey === STYLE) { + var lastStyle = this._previousStyleCopy; + for (styleName in lastStyle) { + if (lastStyle.hasOwnProperty(styleName)) { + styleUpdates = styleUpdates || {}; + styleUpdates[styleName] = ''; + } + } + this._previousStyleCopy = null; + } else if (registrationNameModules.hasOwnProperty(propKey)) { + if (lastProps[propKey]) { + // Only call deleteListener if there was a listener previously or + // else willDeleteListener gets called when there wasn't actually a + // listener (e.g., onClick={null}) + deleteListener(this, propKey); + } + } else if (isCustomComponent(this._tag, lastProps)) { + if (!RESERVED_PROPS.hasOwnProperty(propKey)) { + DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey); + } + } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) { + DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey); + } + } + for (propKey in nextProps) { + var nextProp = nextProps[propKey]; + var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined; + if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) { + continue; + } + if (propKey === STYLE) { + if (nextProp) { + if (true) { + checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this); + this._previousStyle = nextProp; + } + nextProp = this._previousStyleCopy = _assign({}, nextProp); + } else { + this._previousStyleCopy = null; + } + if (lastProp) { + // Unset styles on `lastProp` but not on `nextProp`. + for (styleName in lastProp) { + if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) { + styleUpdates = styleUpdates || {}; + styleUpdates[styleName] = ''; + } + } + // Update styles that changed since `lastProp`. + for (styleName in nextProp) { + if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) { + styleUpdates = styleUpdates || {}; + styleUpdates[styleName] = nextProp[styleName]; + } + } + } else { + // Relies on `updateStylesByID` not mutating `styleUpdates`. + styleUpdates = nextProp; + } + } else if (registrationNameModules.hasOwnProperty(propKey)) { + if (nextProp) { + enqueuePutListener(this, propKey, nextProp, transaction); + } else if (lastProp) { + deleteListener(this, propKey); + } + } else if (isCustomComponent(this._tag, nextProps)) { + if (!RESERVED_PROPS.hasOwnProperty(propKey)) { + DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp); + } + } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) { + var node = getNode(this); + // If we're updating to null or undefined, we should remove the property + // from the DOM node instead of inadvertently setting to a string. This + // brings us in line with the same behavior we have on initial render. + if (nextProp != null) { + DOMPropertyOperations.setValueForProperty(node, propKey, nextProp); + } else { + DOMPropertyOperations.deleteValueForProperty(node, propKey); + } + } + } + if (styleUpdates) { + CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this); + } + }, + + /** + * Reconciles the children with the various properties that affect the + * children content. + * + * @param {object} lastProps + * @param {object} nextProps + * @param {ReactReconcileTransaction} transaction + * @param {object} context + */ + _updateDOMChildren: function (lastProps, nextProps, transaction, context) { + var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null; + var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null; + + var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html; + var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html; + + // Note the use of `!=` which checks for null or undefined. + var lastChildren = lastContent != null ? null : lastProps.children; + var nextChildren = nextContent != null ? null : nextProps.children; + + // If we're switching from children to content/html or vice versa, remove + // the old content + var lastHasContentOrHtml = lastContent != null || lastHtml != null; + var nextHasContentOrHtml = nextContent != null || nextHtml != null; + if (lastChildren != null && nextChildren == null) { + this.updateChildren(null, transaction, context); + } else if (lastHasContentOrHtml && !nextHasContentOrHtml) { + this.updateTextContent(''); + if (true) { + ReactInstrumentation.debugTool.onSetChildren(this._debugID, []); + } + } + + if (nextContent != null) { + if (lastContent !== nextContent) { + this.updateTextContent('' + nextContent); + if (true) { + setAndValidateContentChildDev.call(this, nextContent); + } + } + } else if (nextHtml != null) { + if (lastHtml !== nextHtml) { + this.updateMarkup('' + nextHtml); + } + if (true) { + ReactInstrumentation.debugTool.onSetChildren(this._debugID, []); + } + } else if (nextChildren != null) { + if (true) { + setAndValidateContentChildDev.call(this, null); + } + + this.updateChildren(nextChildren, transaction, context); + } + }, + + getHostNode: function () { + return getNode(this); + }, + + /** + * Destroys all event registrations for this instance. Does not remove from + * the DOM. That must be done by the parent. + * + * @internal + */ + unmountComponent: function (safely) { + switch (this._tag) { + case 'audio': + case 'form': + case 'iframe': + case 'img': + case 'link': + case 'object': + case 'source': + case 'video': + var listeners = this._wrapperState.listeners; + if (listeners) { + for (var i = 0; i < listeners.length; i++) { + listeners[i].remove(); + } + } + break; + case 'html': + case 'head': + case 'body': + /** + * Components like <html> <head> and <body> can't be removed or added + * easily in a cross-browser way, however it's valuable to be able to + * take advantage of React's reconciliation for styling and <title> + * management. So we just document it and throw in dangerous cases. + */ + true ? true ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0; + break; + } + + this.unmountChildren(safely); + ReactDOMComponentTree.uncacheNode(this); + EventPluginHub.deleteAllListeners(this); + this._rootNodeID = 0; + this._domID = 0; + this._wrapperState = null; + + if (true) { + setAndValidateContentChildDev.call(this, null); + } + }, + + getPublicInstance: function () { + return getNode(this); + } + +}; + +_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin); + +module.exports = ReactDOMComponent; + +/***/ }), +/* 236 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var validateDOMNesting = __webpack_require__(80); + +var DOC_NODE_TYPE = 9; + +function ReactDOMContainerInfo(topLevelWrapper, node) { + var info = { + _topLevelWrapper: topLevelWrapper, + _idCounter: 1, + _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null, + _node: node, + _tag: node ? node.nodeName.toLowerCase() : null, + _namespaceURI: node ? node.namespaceURI : null + }; + if (true) { + info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null; + } + return info; +} + +module.exports = ReactDOMContainerInfo; + +/***/ }), +/* 237 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var DOMLazyTree = __webpack_require__(26); +var ReactDOMComponentTree = __webpack_require__(7); + +var ReactDOMEmptyComponent = function (instantiate) { + // ReactCompositeComponent uses this: + this._currentElement = null; + // ReactDOMComponentTree uses these: + this._hostNode = null; + this._hostParent = null; + this._hostContainerInfo = null; + this._domID = 0; +}; +_assign(ReactDOMEmptyComponent.prototype, { + mountComponent: function (transaction, hostParent, hostContainerInfo, context) { + var domID = hostContainerInfo._idCounter++; + this._domID = domID; + this._hostParent = hostParent; + this._hostContainerInfo = hostContainerInfo; + + var nodeValue = ' react-empty: ' + this._domID + ' '; + if (transaction.useCreateElement) { + var ownerDocument = hostContainerInfo._ownerDocument; + var node = ownerDocument.createComment(nodeValue); + ReactDOMComponentTree.precacheNode(this, node); + return DOMLazyTree(node); + } else { + if (transaction.renderToStaticMarkup) { + // Normally we'd insert a comment node, but since this is a situation + // where React won't take over (static pages), we can simply return + // nothing. + return ''; + } + return '<!--' + nodeValue + '-->'; + } + }, + receiveComponent: function () {}, + getHostNode: function () { + return ReactDOMComponentTree.getNodeFromInstance(this); + }, + unmountComponent: function () { + ReactDOMComponentTree.uncacheNode(this); + } +}); + +module.exports = ReactDOMEmptyComponent; + +/***/ }), +/* 238 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactDOMFeatureFlags = { + useCreateElement: true, + useFiber: false +}; + +module.exports = ReactDOMFeatureFlags; + +/***/ }), +/* 239 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMChildrenOperations = __webpack_require__(67); +var ReactDOMComponentTree = __webpack_require__(7); + +/** + * Operations used to process updates to DOM nodes. + */ +var ReactDOMIDOperations = { + + /** + * Updates a component's children by processing a series of updates. + * + * @param {array<object>} updates List of update configurations. + * @internal + */ + dangerouslyProcessChildrenUpdates: function (parentInst, updates) { + var node = ReactDOMComponentTree.getNodeFromInstance(parentInst); + DOMChildrenOperations.processUpdates(node, updates); + } +}; + +module.exports = ReactDOMIDOperations; + +/***/ }), +/* 240 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2), + _assign = __webpack_require__(6); + +var DOMPropertyOperations = __webpack_require__(117); +var LinkedValueUtils = __webpack_require__(70); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactUpdates = __webpack_require__(14); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var didWarnValueLink = false; +var didWarnCheckedLink = false; +var didWarnValueDefaultValue = false; +var didWarnCheckedDefaultChecked = false; +var didWarnControlledToUncontrolled = false; +var didWarnUncontrolledToControlled = false; + +function forceUpdateIfMounted() { + if (this._rootNodeID) { + // DOM component is still mounted; update + ReactDOMInput.updateWrapper(this); + } +} + +function isControlled(props) { + var usesChecked = props.type === 'checkbox' || props.type === 'radio'; + return usesChecked ? props.checked != null : props.value != null; +} + +/** + * Implements an <input> host component that allows setting these optional + * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. + * + * If `checked` or `value` are not supplied (or null/undefined), user actions + * that affect the checked state or value will trigger updates to the element. + * + * If they are supplied (and not null/undefined), the rendered element will not + * trigger updates to the element. Instead, the props must change in order for + * the rendered element to be updated. + * + * The rendered element will be initialized as unchecked (or `defaultChecked`) + * with an empty value (or `defaultValue`). + * + * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html + */ +var ReactDOMInput = { + getHostProps: function (inst, props) { + var value = LinkedValueUtils.getValue(props); + var checked = LinkedValueUtils.getChecked(props); + + var hostProps = _assign({ + // Make sure we set .type before any other properties (setting .value + // before .type means .value is lost in IE11 and below) + type: undefined, + // Make sure we set .step before .value (setting .value before .step + // means .value is rounded on mount, based upon step precision) + step: undefined, + // Make sure we set .min & .max before .value (to ensure proper order + // in corner cases such as min or max deriving from value, e.g. Issue #7170) + min: undefined, + max: undefined + }, props, { + defaultChecked: undefined, + defaultValue: undefined, + value: value != null ? value : inst._wrapperState.initialValue, + checked: checked != null ? checked : inst._wrapperState.initialChecked, + onChange: inst._wrapperState.onChange + }); + + return hostProps; + }, + + mountWrapper: function (inst, props) { + if (true) { + LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner); + + var owner = inst._currentElement._owner; + + if (props.valueLink !== undefined && !didWarnValueLink) { + true ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0; + didWarnValueLink = true; + } + if (props.checkedLink !== undefined && !didWarnCheckedLink) { + true ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0; + didWarnCheckedLink = true; + } + if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) { + true ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; + didWarnCheckedDefaultChecked = true; + } + if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { + true ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; + didWarnValueDefaultValue = true; + } + } + + var defaultValue = props.defaultValue; + inst._wrapperState = { + initialChecked: props.checked != null ? props.checked : props.defaultChecked, + initialValue: props.value != null ? props.value : defaultValue, + listeners: null, + onChange: _handleChange.bind(inst), + controlled: isControlled(props) + }; + }, + + updateWrapper: function (inst) { + var props = inst._currentElement.props; + + if (true) { + var controlled = isControlled(props); + var owner = inst._currentElement._owner; + + if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) { + true ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; + didWarnUncontrolledToControlled = true; + } + if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) { + true ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; + didWarnControlledToUncontrolled = true; + } + } + + // TODO: Shouldn't this be getChecked(props)? + var checked = props.checked; + if (checked != null) { + DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false); + } + + var node = ReactDOMComponentTree.getNodeFromInstance(inst); + var value = LinkedValueUtils.getValue(props); + if (value != null) { + if (value === 0 && node.value === '') { + node.value = '0'; + // Note: IE9 reports a number inputs as 'text', so check props instead. + } else if (props.type === 'number') { + // Simulate `input.valueAsNumber`. IE9 does not support it + var valueAsNumber = parseFloat(node.value, 10) || 0; + + // eslint-disable-next-line + if (value != valueAsNumber) { + // Cast `value` to a string to ensure the value is set correctly. While + // browsers typically do this as necessary, jsdom doesn't. + node.value = '' + value; + } + // eslint-disable-next-line + } else if (value != node.value) { + // Cast `value` to a string to ensure the value is set correctly. While + // browsers typically do this as necessary, jsdom doesn't. + node.value = '' + value; + } + } else { + if (props.value == null && props.defaultValue != null) { + // In Chrome, assigning defaultValue to certain input types triggers input validation. + // For number inputs, the display value loses trailing decimal points. For email inputs, + // Chrome raises "The specified value <x> is not a valid email address". + // + // Here we check to see if the defaultValue has actually changed, avoiding these problems + // when the user is inputting text + // + // https://github.com/facebook/react/issues/7253 + if (node.defaultValue !== '' + props.defaultValue) { + node.defaultValue = '' + props.defaultValue; + } + } + if (props.checked == null && props.defaultChecked != null) { + node.defaultChecked = !!props.defaultChecked; + } + } + }, + + postMountWrapper: function (inst) { + var props = inst._currentElement.props; + + // This is in postMount because we need access to the DOM node, which is not + // available until after the component has mounted. + var node = ReactDOMComponentTree.getNodeFromInstance(inst); + + // Detach value from defaultValue. We won't do anything if we're working on + // submit or reset inputs as those values & defaultValues are linked. They + // are not resetable nodes so this operation doesn't matter and actually + // removes browser-default values (eg "Submit Query") when no value is + // provided. + + switch (props.type) { + case 'submit': + case 'reset': + break; + case 'color': + case 'date': + case 'datetime': + case 'datetime-local': + case 'month': + case 'time': + case 'week': + // This fixes the no-show issue on iOS Safari and Android Chrome: + // https://github.com/facebook/react/issues/7233 + node.value = ''; + node.value = node.defaultValue; + break; + default: + node.value = node.value; + break; + } + + // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug + // this is needed to work around a chrome bug where setting defaultChecked + // will sometimes influence the value of checked (even after detachment). + // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 + // We need to temporarily unset name to avoid disrupting radio button groups. + var name = node.name; + if (name !== '') { + node.name = ''; + } + node.defaultChecked = !node.defaultChecked; + node.defaultChecked = !node.defaultChecked; + if (name !== '') { + node.name = name; + } + } +}; + +function _handleChange(event) { + var props = this._currentElement.props; + + var returnValue = LinkedValueUtils.executeOnChange(props, event); + + // Here we use asap to wait until all updates have propagated, which + // is important when using controlled components within layers: + // https://github.com/facebook/react/issues/1698 + ReactUpdates.asap(forceUpdateIfMounted, this); + + var name = props.name; + if (props.type === 'radio' && name != null) { + var rootNode = ReactDOMComponentTree.getNodeFromInstance(this); + var queryRoot = rootNode; + + while (queryRoot.parentNode) { + queryRoot = queryRoot.parentNode; + } + + // If `rootNode.form` was non-null, then we could try `form.elements`, + // but that sometimes behaves strangely in IE8. We could also try using + // `form.getElementsByName`, but that will only return direct children + // and won't include inputs that use the HTML5 `form=` attribute. Since + // the input might not even be in a form, let's just use the global + // `querySelectorAll` to ensure we don't miss anything. + var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]'); + + for (var i = 0; i < group.length; i++) { + var otherNode = group[i]; + if (otherNode === rootNode || otherNode.form !== rootNode.form) { + continue; + } + // This will throw if radio buttons rendered by different copies of React + // and the same name are rendered into the same form (same as #1939). + // That's probably okay; we don't support it just as we don't support + // mixing React radio buttons with non-React ones. + var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode); + !otherInstance ? true ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0; + // If this is a controlled radio button group, forcing the input that + // was previously checked to update will cause it to be come re-checked + // as appropriate. + ReactUpdates.asap(forceUpdateIfMounted, otherInstance); + } + } + + return returnValue; +} + +module.exports = ReactDOMInput; + +/***/ }), +/* 241 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMProperty = __webpack_require__(20); +var ReactComponentTreeHook = __webpack_require__(13); + +var warning = __webpack_require__(1); + +var warnedProperties = {}; +var rARIA = new RegExp('^(aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); + +function validateProperty(tagName, name, debugID) { + if (warnedProperties.hasOwnProperty(name) && warnedProperties[name]) { + return true; + } + + if (rARIA.test(name)) { + var lowerCasedName = name.toLowerCase(); + var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; + + // If this is an aria-* attribute, but is not listed in the known DOM + // DOM properties, then it is an invalid aria-* attribute. + if (standardName == null) { + warnedProperties[name] = true; + return false; + } + // aria-* attributes should be lowercase; suggest the lowercase version. + if (name !== standardName) { + true ? warning(false, 'Unknown ARIA attribute %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + warnedProperties[name] = true; + return true; + } + } + + return true; +} + +function warnInvalidARIAProps(debugID, element) { + var invalidProps = []; + + for (var key in element.props) { + var isValid = validateProperty(element.type, key, debugID); + if (!isValid) { + invalidProps.push(key); + } + } + + var unknownPropString = invalidProps.map(function (prop) { + return '`' + prop + '`'; + }).join(', '); + + if (invalidProps.length === 1) { + true ? warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + } else if (invalidProps.length > 1) { + true ? warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + } +} + +function handleElement(debugID, element) { + if (element == null || typeof element.type !== 'string') { + return; + } + if (element.type.indexOf('-') >= 0 || element.props.is) { + return; + } + + warnInvalidARIAProps(debugID, element); +} + +var ReactDOMInvalidARIAHook = { + onBeforeMountComponent: function (debugID, element) { + if (true) { + handleElement(debugID, element); + } + }, + onBeforeUpdateComponent: function (debugID, element) { + if (true) { + handleElement(debugID, element); + } + } +}; + +module.exports = ReactDOMInvalidARIAHook; + +/***/ }), +/* 242 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactComponentTreeHook = __webpack_require__(13); + +var warning = __webpack_require__(1); + +var didWarnValueNull = false; + +function handleElement(debugID, element) { + if (element == null) { + return; + } + if (element.type !== 'input' && element.type !== 'textarea' && element.type !== 'select') { + return; + } + if (element.props != null && element.props.value === null && !didWarnValueNull) { + true ? warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + + didWarnValueNull = true; + } +} + +var ReactDOMNullInputValuePropHook = { + onBeforeMountComponent: function (debugID, element) { + handleElement(debugID, element); + }, + onBeforeUpdateComponent: function (debugID, element) { + handleElement(debugID, element); + } +}; + +module.exports = ReactDOMNullInputValuePropHook; + +/***/ }), +/* 243 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var React = __webpack_require__(33); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactDOMSelect = __webpack_require__(119); + +var warning = __webpack_require__(1); +var didWarnInvalidOptionChildren = false; + +function flattenChildren(children) { + var content = ''; + + // Flatten children and warn if they aren't strings or numbers; + // invalid types are ignored. + React.Children.forEach(children, function (child) { + if (child == null) { + return; + } + if (typeof child === 'string' || typeof child === 'number') { + content += child; + } else if (!didWarnInvalidOptionChildren) { + didWarnInvalidOptionChildren = true; + true ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0; + } + }); + + return content; +} + +/** + * Implements an <option> host component that warns when `selected` is set. + */ +var ReactDOMOption = { + mountWrapper: function (inst, props, hostParent) { + // TODO (yungsters): Remove support for `selected` in <option>. + if (true) { + true ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0; + } + + // Look up whether this option is 'selected' + var selectValue = null; + if (hostParent != null) { + var selectParent = hostParent; + + if (selectParent._tag === 'optgroup') { + selectParent = selectParent._hostParent; + } + + if (selectParent != null && selectParent._tag === 'select') { + selectValue = ReactDOMSelect.getSelectValueContext(selectParent); + } + } + + // If the value is null (e.g., no specified value or after initial mount) + // or missing (e.g., for <datalist>), we don't change props.selected + var selected = null; + if (selectValue != null) { + var value; + if (props.value != null) { + value = props.value + ''; + } else { + value = flattenChildren(props.children); + } + selected = false; + if (Array.isArray(selectValue)) { + // multiple + for (var i = 0; i < selectValue.length; i++) { + if ('' + selectValue[i] === value) { + selected = true; + break; + } + } + } else { + selected = '' + selectValue === value; + } + } + + inst._wrapperState = { selected: selected }; + }, + + postMountWrapper: function (inst) { + // value="" should make a value attribute (#6219) + var props = inst._currentElement.props; + if (props.value != null) { + var node = ReactDOMComponentTree.getNodeFromInstance(inst); + node.setAttribute('value', props.value); + } + }, + + getHostProps: function (inst, props) { + var hostProps = _assign({ selected: undefined, children: undefined }, props); + + // Read state only from initial mount because <select> updates value + // manually; we need the initial state only for server rendering + if (inst._wrapperState.selected != null) { + hostProps.selected = inst._wrapperState.selected; + } + + var content = flattenChildren(props.children); + + if (content) { + hostProps.children = content; + } + + return hostProps; + } + +}; + +module.exports = ReactDOMOption; + +/***/ }), +/* 244 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ExecutionEnvironment = __webpack_require__(4); + +var getNodeForCharacterOffset = __webpack_require__(290); +var getTextContentAccessor = __webpack_require__(132); + +/** + * While `isCollapsed` is available on the Selection object and `collapsed` + * is available on the Range object, IE11 sometimes gets them wrong. + * If the anchor/focus nodes and offsets are the same, the range is collapsed. + */ +function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) { + return anchorNode === focusNode && anchorOffset === focusOffset; +} + +/** + * Get the appropriate anchor and focus node/offset pairs for IE. + * + * The catch here is that IE's selection API doesn't provide information + * about whether the selection is forward or backward, so we have to + * behave as though it's always forward. + * + * IE text differs from modern selection in that it behaves as though + * block elements end with a new line. This means character offsets will + * differ between the two APIs. + * + * @param {DOMElement} node + * @return {object} + */ +function getIEOffsets(node) { + var selection = document.selection; + var selectedRange = selection.createRange(); + var selectedLength = selectedRange.text.length; + + // Duplicate selection so we can move range without breaking user selection. + var fromStart = selectedRange.duplicate(); + fromStart.moveToElementText(node); + fromStart.setEndPoint('EndToStart', selectedRange); + + var startOffset = fromStart.text.length; + var endOffset = startOffset + selectedLength; + + return { + start: startOffset, + end: endOffset + }; +} + +/** + * @param {DOMElement} node + * @return {?object} + */ +function getModernOffsets(node) { + var selection = window.getSelection && window.getSelection(); + + if (!selection || selection.rangeCount === 0) { + return null; + } + + var anchorNode = selection.anchorNode; + var anchorOffset = selection.anchorOffset; + var focusNode = selection.focusNode; + var focusOffset = selection.focusOffset; + + var currentRange = selection.getRangeAt(0); + + // In Firefox, range.startContainer and range.endContainer can be "anonymous + // divs", e.g. the up/down buttons on an <input type="number">. Anonymous + // divs do not seem to expose properties, triggering a "Permission denied + // error" if any of its properties are accessed. The only seemingly possible + // way to avoid erroring is to access a property that typically works for + // non-anonymous divs and catch any error that may otherwise arise. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=208427 + try { + /* eslint-disable no-unused-expressions */ + currentRange.startContainer.nodeType; + currentRange.endContainer.nodeType; + /* eslint-enable no-unused-expressions */ + } catch (e) { + return null; + } + + // If the node and offset values are the same, the selection is collapsed. + // `Selection.isCollapsed` is available natively, but IE sometimes gets + // this value wrong. + var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset); + + var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length; + + var tempRange = currentRange.cloneRange(); + tempRange.selectNodeContents(node); + tempRange.setEnd(currentRange.startContainer, currentRange.startOffset); + + var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset); + + var start = isTempRangeCollapsed ? 0 : tempRange.toString().length; + var end = start + rangeLength; + + // Detect whether the selection is backward. + var detectionRange = document.createRange(); + detectionRange.setStart(anchorNode, anchorOffset); + detectionRange.setEnd(focusNode, focusOffset); + var isBackward = detectionRange.collapsed; + + return { + start: isBackward ? end : start, + end: isBackward ? start : end + }; +} + +/** + * @param {DOMElement|DOMTextNode} node + * @param {object} offsets + */ +function setIEOffsets(node, offsets) { + var range = document.selection.createRange().duplicate(); + var start, end; + + if (offsets.end === undefined) { + start = offsets.start; + end = start; + } else if (offsets.start > offsets.end) { + start = offsets.end; + end = offsets.start; + } else { + start = offsets.start; + end = offsets.end; + } + + range.moveToElementText(node); + range.moveStart('character', start); + range.setEndPoint('EndToStart', range); + range.moveEnd('character', end - start); + range.select(); +} + +/** + * In modern non-IE browsers, we can support both forward and backward + * selections. + * + * Note: IE10+ supports the Selection object, but it does not support + * the `extend` method, which means that even in modern IE, it's not possible + * to programmatically create a backward selection. Thus, for all IE + * versions, we use the old IE API to create our selections. + * + * @param {DOMElement|DOMTextNode} node + * @param {object} offsets + */ +function setModernOffsets(node, offsets) { + if (!window.getSelection) { + return; + } + + var selection = window.getSelection(); + var length = node[getTextContentAccessor()].length; + var start = Math.min(offsets.start, length); + var end = offsets.end === undefined ? start : Math.min(offsets.end, length); + + // IE 11 uses modern selection, but doesn't support the extend method. + // Flip backward selections, so we can set with a single range. + if (!selection.extend && start > end) { + var temp = end; + end = start; + start = temp; + } + + var startMarker = getNodeForCharacterOffset(node, start); + var endMarker = getNodeForCharacterOffset(node, end); + + if (startMarker && endMarker) { + var range = document.createRange(); + range.setStart(startMarker.node, startMarker.offset); + selection.removeAllRanges(); + + if (start > end) { + selection.addRange(range); + selection.extend(endMarker.node, endMarker.offset); + } else { + range.setEnd(endMarker.node, endMarker.offset); + selection.addRange(range); + } + } +} + +var useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window); + +var ReactDOMSelection = { + /** + * @param {DOMElement} node + */ + getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets, + + /** + * @param {DOMElement|DOMTextNode} node + * @param {object} offsets + */ + setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets +}; + +module.exports = ReactDOMSelection; + +/***/ }), +/* 245 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2), + _assign = __webpack_require__(6); + +var DOMChildrenOperations = __webpack_require__(67); +var DOMLazyTree = __webpack_require__(26); +var ReactDOMComponentTree = __webpack_require__(7); + +var escapeTextContentForBrowser = __webpack_require__(56); +var invariant = __webpack_require__(0); +var validateDOMNesting = __webpack_require__(80); + +/** + * Text nodes violate a couple assumptions that React makes about components: + * + * - When mounting text into the DOM, adjacent text nodes are merged. + * - Text nodes cannot be assigned a React root ID. + * + * This component is used to wrap strings between comment nodes so that they + * can undergo the same reconciliation that is applied to elements. + * + * TODO: Investigate representing React components in the DOM with text nodes. + * + * @class ReactDOMTextComponent + * @extends ReactComponent + * @internal + */ +var ReactDOMTextComponent = function (text) { + // TODO: This is really a ReactText (ReactNode), not a ReactElement + this._currentElement = text; + this._stringText = '' + text; + // ReactDOMComponentTree uses these: + this._hostNode = null; + this._hostParent = null; + + // Properties + this._domID = 0; + this._mountIndex = 0; + this._closingComment = null; + this._commentNodes = null; +}; + +_assign(ReactDOMTextComponent.prototype, { + + /** + * Creates the markup for this text node. This node is not intended to have + * any features besides containing text content. + * + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @return {string} Markup for this text node. + * @internal + */ + mountComponent: function (transaction, hostParent, hostContainerInfo, context) { + if (true) { + var parentInfo; + if (hostParent != null) { + parentInfo = hostParent._ancestorInfo; + } else if (hostContainerInfo != null) { + parentInfo = hostContainerInfo._ancestorInfo; + } + if (parentInfo) { + // parentInfo should always be present except for the top-level + // component when server rendering + validateDOMNesting(null, this._stringText, this, parentInfo); + } + } + + var domID = hostContainerInfo._idCounter++; + var openingValue = ' react-text: ' + domID + ' '; + var closingValue = ' /react-text '; + this._domID = domID; + this._hostParent = hostParent; + if (transaction.useCreateElement) { + var ownerDocument = hostContainerInfo._ownerDocument; + var openingComment = ownerDocument.createComment(openingValue); + var closingComment = ownerDocument.createComment(closingValue); + var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment()); + DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment)); + if (this._stringText) { + DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText))); + } + DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment)); + ReactDOMComponentTree.precacheNode(this, openingComment); + this._closingComment = closingComment; + return lazyTree; + } else { + var escapedText = escapeTextContentForBrowser(this._stringText); + + if (transaction.renderToStaticMarkup) { + // Normally we'd wrap this between comment nodes for the reasons stated + // above, but since this is a situation where React won't take over + // (static pages), we can simply return the text as it is. + return escapedText; + } + + return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->'; + } + }, + + /** + * Updates this component by updating the text content. + * + * @param {ReactText} nextText The next text content + * @param {ReactReconcileTransaction} transaction + * @internal + */ + receiveComponent: function (nextText, transaction) { + if (nextText !== this._currentElement) { + this._currentElement = nextText; + var nextStringText = '' + nextText; + if (nextStringText !== this._stringText) { + // TODO: Save this as pending props and use performUpdateIfNecessary + // and/or updateComponent to do the actual update for consistency with + // other component types? + this._stringText = nextStringText; + var commentNodes = this.getHostNode(); + DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText); + } + } + }, + + getHostNode: function () { + var hostNode = this._commentNodes; + if (hostNode) { + return hostNode; + } + if (!this._closingComment) { + var openingComment = ReactDOMComponentTree.getNodeFromInstance(this); + var node = openingComment.nextSibling; + while (true) { + !(node != null) ? true ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0; + if (node.nodeType === 8 && node.nodeValue === ' /react-text ') { + this._closingComment = node; + break; + } + node = node.nextSibling; + } + } + hostNode = [this._hostNode, this._closingComment]; + this._commentNodes = hostNode; + return hostNode; + }, + + unmountComponent: function () { + this._closingComment = null; + this._commentNodes = null; + ReactDOMComponentTree.uncacheNode(this); + } + +}); + +module.exports = ReactDOMTextComponent; + +/***/ }), +/* 246 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2), + _assign = __webpack_require__(6); + +var LinkedValueUtils = __webpack_require__(70); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactUpdates = __webpack_require__(14); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var didWarnValueLink = false; +var didWarnValDefaultVal = false; + +function forceUpdateIfMounted() { + if (this._rootNodeID) { + // DOM component is still mounted; update + ReactDOMTextarea.updateWrapper(this); + } +} + +/** + * Implements a <textarea> host component that allows setting `value`, and + * `defaultValue`. This differs from the traditional DOM API because value is + * usually set as PCDATA children. + * + * If `value` is not supplied (or null/undefined), user actions that affect the + * value will trigger updates to the element. + * + * If `value` is supplied (and not null/undefined), the rendered element will + * not trigger updates to the element. Instead, the `value` prop must change in + * order for the rendered element to be updated. + * + * The rendered element will be initialized with an empty value, the prop + * `defaultValue` if specified, or the children content (deprecated). + */ +var ReactDOMTextarea = { + getHostProps: function (inst, props) { + !(props.dangerouslySetInnerHTML == null) ? true ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0; + + // Always set children to the same thing. In IE9, the selection range will + // get reset if `textContent` is mutated. We could add a check in setTextContent + // to only set the value if/when the value differs from the node value (which would + // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution. + // The value can be a boolean or object so that's why it's forced to be a string. + var hostProps = _assign({}, props, { + value: undefined, + defaultValue: undefined, + children: '' + inst._wrapperState.initialValue, + onChange: inst._wrapperState.onChange + }); + + return hostProps; + }, + + mountWrapper: function (inst, props) { + if (true) { + LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner); + if (props.valueLink !== undefined && !didWarnValueLink) { + true ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0; + didWarnValueLink = true; + } + if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) { + true ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0; + didWarnValDefaultVal = true; + } + } + + var value = LinkedValueUtils.getValue(props); + var initialValue = value; + + // Only bother fetching default value if we're going to use it + if (value == null) { + var defaultValue = props.defaultValue; + // TODO (yungsters): Remove support for children content in <textarea>. + var children = props.children; + if (children != null) { + if (true) { + true ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0; + } + !(defaultValue == null) ? true ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0; + if (Array.isArray(children)) { + !(children.length <= 1) ? true ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0; + children = children[0]; + } + + defaultValue = '' + children; + } + if (defaultValue == null) { + defaultValue = ''; + } + initialValue = defaultValue; + } + + inst._wrapperState = { + initialValue: '' + initialValue, + listeners: null, + onChange: _handleChange.bind(inst) + }; + }, + + updateWrapper: function (inst) { + var props = inst._currentElement.props; + + var node = ReactDOMComponentTree.getNodeFromInstance(inst); + var value = LinkedValueUtils.getValue(props); + if (value != null) { + // Cast `value` to a string to ensure the value is set correctly. While + // browsers typically do this as necessary, jsdom doesn't. + var newValue = '' + value; + + // To avoid side effects (such as losing text selection), only set value if changed + if (newValue !== node.value) { + node.value = newValue; + } + if (props.defaultValue == null) { + node.defaultValue = newValue; + } + } + if (props.defaultValue != null) { + node.defaultValue = props.defaultValue; + } + }, + + postMountWrapper: function (inst) { + // This is in postMount because we need access to the DOM node, which is not + // available until after the component has mounted. + var node = ReactDOMComponentTree.getNodeFromInstance(inst); + var textContent = node.textContent; + + // Only set node.value if textContent is equal to the expected + // initial value. In IE10/IE11 there is a bug where the placeholder attribute + // will populate textContent as well. + // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/ + if (textContent === inst._wrapperState.initialValue) { + node.value = textContent; + } + } +}; + +function _handleChange(event) { + var props = this._currentElement.props; + var returnValue = LinkedValueUtils.executeOnChange(props, event); + ReactUpdates.asap(forceUpdateIfMounted, this); + return returnValue; +} + +module.exports = ReactDOMTextarea; + +/***/ }), +/* 247 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +/** + * Return the lowest common ancestor of A and B, or null if they are in + * different trees. + */ +function getLowestCommonAncestor(instA, instB) { + !('_hostNode' in instA) ? true ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; + !('_hostNode' in instB) ? true ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; + + var depthA = 0; + for (var tempA = instA; tempA; tempA = tempA._hostParent) { + depthA++; + } + var depthB = 0; + for (var tempB = instB; tempB; tempB = tempB._hostParent) { + depthB++; + } + + // If A is deeper, crawl up. + while (depthA - depthB > 0) { + instA = instA._hostParent; + depthA--; + } + + // If B is deeper, crawl up. + while (depthB - depthA > 0) { + instB = instB._hostParent; + depthB--; + } + + // Walk in lockstep until we find a match. + var depth = depthA; + while (depth--) { + if (instA === instB) { + return instA; + } + instA = instA._hostParent; + instB = instB._hostParent; + } + return null; +} + +/** + * Return if A is an ancestor of B. + */ +function isAncestor(instA, instB) { + !('_hostNode' in instA) ? true ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0; + !('_hostNode' in instB) ? true ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0; + + while (instB) { + if (instB === instA) { + return true; + } + instB = instB._hostParent; + } + return false; +} + +/** + * Return the parent instance of the passed-in instance. + */ +function getParentInstance(inst) { + !('_hostNode' in inst) ? true ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0; + + return inst._hostParent; +} + +/** + * Simulates the traversal of a two-phase, capture/bubble event dispatch. + */ +function traverseTwoPhase(inst, fn, arg) { + var path = []; + while (inst) { + path.push(inst); + inst = inst._hostParent; + } + var i; + for (i = path.length; i-- > 0;) { + fn(path[i], 'captured', arg); + } + for (i = 0; i < path.length; i++) { + fn(path[i], 'bubbled', arg); + } +} + +/** + * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that + * should would receive a `mouseEnter` or `mouseLeave` event. + * + * Does not invoke the callback on the nearest common ancestor because nothing + * "entered" or "left" that element. + */ +function traverseEnterLeave(from, to, fn, argFrom, argTo) { + var common = from && to ? getLowestCommonAncestor(from, to) : null; + var pathFrom = []; + while (from && from !== common) { + pathFrom.push(from); + from = from._hostParent; + } + var pathTo = []; + while (to && to !== common) { + pathTo.push(to); + to = to._hostParent; + } + var i; + for (i = 0; i < pathFrom.length; i++) { + fn(pathFrom[i], 'bubbled', argFrom); + } + for (i = pathTo.length; i-- > 0;) { + fn(pathTo[i], 'captured', argTo); + } +} + +module.exports = { + isAncestor: isAncestor, + getLowestCommonAncestor: getLowestCommonAncestor, + getParentInstance: getParentInstance, + traverseTwoPhase: traverseTwoPhase, + traverseEnterLeave: traverseEnterLeave +}; + +/***/ }), +/* 248 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMProperty = __webpack_require__(20); +var EventPluginRegistry = __webpack_require__(52); +var ReactComponentTreeHook = __webpack_require__(13); + +var warning = __webpack_require__(1); + +if (true) { + var reactProps = { + children: true, + dangerouslySetInnerHTML: true, + key: true, + ref: true, + + autoFocus: true, + defaultValue: true, + valueLink: true, + defaultChecked: true, + checkedLink: true, + innerHTML: true, + suppressContentEditableWarning: true, + onFocusIn: true, + onFocusOut: true + }; + var warnedProperties = {}; + + var validateProperty = function (tagName, name, debugID) { + if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) { + return true; + } + if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) { + return true; + } + if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) { + return true; + } + warnedProperties[name] = true; + var lowerCasedName = name.toLowerCase(); + + // data-* attributes should be lowercase; suggest the lowercase version + var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; + + var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null; + + if (standardName != null) { + true ? warning(false, 'Unknown DOM property %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + return true; + } else if (registrationName != null) { + true ? warning(false, 'Unknown event handler property %s. Did you mean `%s`?%s', name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + return true; + } else { + // We were unable to guess which prop the user intended. + // It is likely that the user was just blindly spreading/forwarding props + // Components should be careful to only render valid props/attributes. + // Warning will be invoked in warnUnknownProperties to allow grouping. + return false; + } + }; +} + +var warnUnknownProperties = function (debugID, element) { + var unknownProps = []; + for (var key in element.props) { + var isValid = validateProperty(element.type, key, debugID); + if (!isValid) { + unknownProps.push(key); + } + } + + var unknownPropString = unknownProps.map(function (prop) { + return '`' + prop + '`'; + }).join(', '); + + if (unknownProps.length === 1) { + true ? warning(false, 'Unknown prop %s on <%s> tag. Remove this prop from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + } else if (unknownProps.length > 1) { + true ? warning(false, 'Unknown props %s on <%s> tag. Remove these props from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; + } +}; + +function handleElement(debugID, element) { + if (element == null || typeof element.type !== 'string') { + return; + } + if (element.type.indexOf('-') >= 0 || element.props.is) { + return; + } + warnUnknownProperties(debugID, element); +} + +var ReactDOMUnknownPropertyHook = { + onBeforeMountComponent: function (debugID, element) { + handleElement(debugID, element); + }, + onBeforeUpdateComponent: function (debugID, element) { + handleElement(debugID, element); + } +}; + +module.exports = ReactDOMUnknownPropertyHook; + +/***/ }), +/* 249 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2016-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. + * + * + */ + + + +var ReactInvalidSetStateWarningHook = __webpack_require__(257); +var ReactHostOperationHistoryHook = __webpack_require__(255); +var ReactComponentTreeHook = __webpack_require__(13); +var ExecutionEnvironment = __webpack_require__(4); + +var performanceNow = __webpack_require__(201); +var warning = __webpack_require__(1); + +var hooks = []; +var didHookThrowForEvent = {}; + +function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) { + try { + fn.call(context, arg1, arg2, arg3, arg4, arg5); + } catch (e) { + true ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\n' + e.stack) : void 0; + didHookThrowForEvent[event] = true; + } +} + +function emitEvent(event, arg1, arg2, arg3, arg4, arg5) { + for (var i = 0; i < hooks.length; i++) { + var hook = hooks[i]; + var fn = hook[event]; + if (fn) { + callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5); + } + } +} + +var isProfiling = false; +var flushHistory = []; +var lifeCycleTimerStack = []; +var currentFlushNesting = 0; +var currentFlushMeasurements = []; +var currentFlushStartTime = 0; +var currentTimerDebugID = null; +var currentTimerStartTime = 0; +var currentTimerNestedFlushDuration = 0; +var currentTimerType = null; + +var lifeCycleTimerHasWarned = false; + +function clearHistory() { + ReactComponentTreeHook.purgeUnmountedComponents(); + ReactHostOperationHistoryHook.clearHistory(); +} + +function getTreeSnapshot(registeredIDs) { + return registeredIDs.reduce(function (tree, id) { + var ownerID = ReactComponentTreeHook.getOwnerID(id); + var parentID = ReactComponentTreeHook.getParentID(id); + tree[id] = { + displayName: ReactComponentTreeHook.getDisplayName(id), + text: ReactComponentTreeHook.getText(id), + updateCount: ReactComponentTreeHook.getUpdateCount(id), + childIDs: ReactComponentTreeHook.getChildIDs(id), + // Text nodes don't have owners but this is close enough. + ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0, + parentID: parentID + }; + return tree; + }, {}); +} + +function resetMeasurements() { + var previousStartTime = currentFlushStartTime; + var previousMeasurements = currentFlushMeasurements; + var previousOperations = ReactHostOperationHistoryHook.getHistory(); + + if (currentFlushNesting === 0) { + currentFlushStartTime = 0; + currentFlushMeasurements = []; + clearHistory(); + return; + } + + if (previousMeasurements.length || previousOperations.length) { + var registeredIDs = ReactComponentTreeHook.getRegisteredIDs(); + flushHistory.push({ + duration: performanceNow() - previousStartTime, + measurements: previousMeasurements || [], + operations: previousOperations || [], + treeSnapshot: getTreeSnapshot(registeredIDs) + }); + } + + clearHistory(); + currentFlushStartTime = performanceNow(); + currentFlushMeasurements = []; +} + +function checkDebugID(debugID) { + var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (allowRoot && debugID === 0) { + return; + } + if (!debugID) { + true ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0; + } +} + +function beginLifeCycleTimer(debugID, timerType) { + if (currentFlushNesting === 0) { + return; + } + if (currentTimerType && !lifeCycleTimerHasWarned) { + true ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0; + lifeCycleTimerHasWarned = true; + } + currentTimerStartTime = performanceNow(); + currentTimerNestedFlushDuration = 0; + currentTimerDebugID = debugID; + currentTimerType = timerType; +} + +function endLifeCycleTimer(debugID, timerType) { + if (currentFlushNesting === 0) { + return; + } + if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) { + true ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0; + lifeCycleTimerHasWarned = true; + } + if (isProfiling) { + currentFlushMeasurements.push({ + timerType: timerType, + instanceID: debugID, + duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration + }); + } + currentTimerStartTime = 0; + currentTimerNestedFlushDuration = 0; + currentTimerDebugID = null; + currentTimerType = null; +} + +function pauseCurrentLifeCycleTimer() { + var currentTimer = { + startTime: currentTimerStartTime, + nestedFlushStartTime: performanceNow(), + debugID: currentTimerDebugID, + timerType: currentTimerType + }; + lifeCycleTimerStack.push(currentTimer); + currentTimerStartTime = 0; + currentTimerNestedFlushDuration = 0; + currentTimerDebugID = null; + currentTimerType = null; +} + +function resumeCurrentLifeCycleTimer() { + var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(), + startTime = _lifeCycleTimerStack$.startTime, + nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime, + debugID = _lifeCycleTimerStack$.debugID, + timerType = _lifeCycleTimerStack$.timerType; + + var nestedFlushDuration = performanceNow() - nestedFlushStartTime; + currentTimerStartTime = startTime; + currentTimerNestedFlushDuration += nestedFlushDuration; + currentTimerDebugID = debugID; + currentTimerType = timerType; +} + +var lastMarkTimeStamp = 0; +var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function'; + +function shouldMark(debugID) { + if (!isProfiling || !canUsePerformanceMeasure) { + return false; + } + var element = ReactComponentTreeHook.getElement(debugID); + if (element == null || typeof element !== 'object') { + return false; + } + var isHostElement = typeof element.type === 'string'; + if (isHostElement) { + return false; + } + return true; +} + +function markBegin(debugID, markType) { + if (!shouldMark(debugID)) { + return; + } + + var markName = debugID + '::' + markType; + lastMarkTimeStamp = performanceNow(); + performance.mark(markName); +} + +function markEnd(debugID, markType) { + if (!shouldMark(debugID)) { + return; + } + + var markName = debugID + '::' + markType; + var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown'; + + // Chrome has an issue of dropping markers recorded too fast: + // https://bugs.chromium.org/p/chromium/issues/detail?id=640652 + // To work around this, we will not report very small measurements. + // I determined the magic number by tweaking it back and forth. + // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe. + // When the bug is fixed, we can `measure()` unconditionally if we want to. + var timeStamp = performanceNow(); + if (timeStamp - lastMarkTimeStamp > 0.1) { + var measurementName = displayName + ' [' + markType + ']'; + performance.measure(measurementName, markName); + } + + performance.clearMarks(markName); + performance.clearMeasures(measurementName); +} + +var ReactDebugTool = { + addHook: function (hook) { + hooks.push(hook); + }, + removeHook: function (hook) { + for (var i = 0; i < hooks.length; i++) { + if (hooks[i] === hook) { + hooks.splice(i, 1); + i--; + } + } + }, + isProfiling: function () { + return isProfiling; + }, + beginProfiling: function () { + if (isProfiling) { + return; + } + + isProfiling = true; + flushHistory.length = 0; + resetMeasurements(); + ReactDebugTool.addHook(ReactHostOperationHistoryHook); + }, + endProfiling: function () { + if (!isProfiling) { + return; + } + + isProfiling = false; + resetMeasurements(); + ReactDebugTool.removeHook(ReactHostOperationHistoryHook); + }, + getFlushHistory: function () { + return flushHistory; + }, + onBeginFlush: function () { + currentFlushNesting++; + resetMeasurements(); + pauseCurrentLifeCycleTimer(); + emitEvent('onBeginFlush'); + }, + onEndFlush: function () { + resetMeasurements(); + currentFlushNesting--; + resumeCurrentLifeCycleTimer(); + emitEvent('onEndFlush'); + }, + onBeginLifeCycleTimer: function (debugID, timerType) { + checkDebugID(debugID); + emitEvent('onBeginLifeCycleTimer', debugID, timerType); + markBegin(debugID, timerType); + beginLifeCycleTimer(debugID, timerType); + }, + onEndLifeCycleTimer: function (debugID, timerType) { + checkDebugID(debugID); + endLifeCycleTimer(debugID, timerType); + markEnd(debugID, timerType); + emitEvent('onEndLifeCycleTimer', debugID, timerType); + }, + onBeginProcessingChildContext: function () { + emitEvent('onBeginProcessingChildContext'); + }, + onEndProcessingChildContext: function () { + emitEvent('onEndProcessingChildContext'); + }, + onHostOperation: function (operation) { + checkDebugID(operation.instanceID); + emitEvent('onHostOperation', operation); + }, + onSetState: function () { + emitEvent('onSetState'); + }, + onSetChildren: function (debugID, childDebugIDs) { + checkDebugID(debugID); + childDebugIDs.forEach(checkDebugID); + emitEvent('onSetChildren', debugID, childDebugIDs); + }, + onBeforeMountComponent: function (debugID, element, parentDebugID) { + checkDebugID(debugID); + checkDebugID(parentDebugID, true); + emitEvent('onBeforeMountComponent', debugID, element, parentDebugID); + markBegin(debugID, 'mount'); + }, + onMountComponent: function (debugID) { + checkDebugID(debugID); + markEnd(debugID, 'mount'); + emitEvent('onMountComponent', debugID); + }, + onBeforeUpdateComponent: function (debugID, element) { + checkDebugID(debugID); + emitEvent('onBeforeUpdateComponent', debugID, element); + markBegin(debugID, 'update'); + }, + onUpdateComponent: function (debugID) { + checkDebugID(debugID); + markEnd(debugID, 'update'); + emitEvent('onUpdateComponent', debugID); + }, + onBeforeUnmountComponent: function (debugID) { + checkDebugID(debugID); + emitEvent('onBeforeUnmountComponent', debugID); + markBegin(debugID, 'unmount'); + }, + onUnmountComponent: function (debugID) { + checkDebugID(debugID); + markEnd(debugID, 'unmount'); + emitEvent('onUnmountComponent', debugID); + }, + onTestEvent: function () { + emitEvent('onTestEvent'); + } +}; + +// TODO remove these when RN/www gets updated +ReactDebugTool.addDevtool = ReactDebugTool.addHook; +ReactDebugTool.removeDevtool = ReactDebugTool.removeHook; + +ReactDebugTool.addHook(ReactInvalidSetStateWarningHook); +ReactDebugTool.addHook(ReactComponentTreeHook); +var url = ExecutionEnvironment.canUseDOM && window.location.href || ''; +if (/[?&]react_perf\b/.test(url)) { + ReactDebugTool.beginProfiling(); +} + +module.exports = ReactDebugTool; + +/***/ }), +/* 250 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var ReactUpdates = __webpack_require__(14); +var Transaction = __webpack_require__(55); + +var emptyFunction = __webpack_require__(10); + +var RESET_BATCHED_UPDATES = { + initialize: emptyFunction, + close: function () { + ReactDefaultBatchingStrategy.isBatchingUpdates = false; + } +}; + +var FLUSH_BATCHED_UPDATES = { + initialize: emptyFunction, + close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates) +}; + +var TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES]; + +function ReactDefaultBatchingStrategyTransaction() { + this.reinitializeTransaction(); +} + +_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, { + getTransactionWrappers: function () { + return TRANSACTION_WRAPPERS; + } +}); + +var transaction = new ReactDefaultBatchingStrategyTransaction(); + +var ReactDefaultBatchingStrategy = { + isBatchingUpdates: false, + + /** + * Call the provided function in a context within which calls to `setState` + * and friends are batched such that components aren't updated unnecessarily. + */ + batchedUpdates: function (callback, a, b, c, d, e) { + var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates; + + ReactDefaultBatchingStrategy.isBatchingUpdates = true; + + // The code is written this way to avoid extra allocations + if (alreadyBatchingUpdates) { + return callback(a, b, c, d, e); + } else { + return transaction.perform(callback, null, a, b, c, d, e); + } + } +}; + +module.exports = ReactDefaultBatchingStrategy; + +/***/ }), +/* 251 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ARIADOMPropertyConfig = __webpack_require__(221); +var BeforeInputEventPlugin = __webpack_require__(223); +var ChangeEventPlugin = __webpack_require__(225); +var DefaultEventPluginOrder = __webpack_require__(227); +var EnterLeaveEventPlugin = __webpack_require__(228); +var HTMLDOMPropertyConfig = __webpack_require__(230); +var ReactComponentBrowserEnvironment = __webpack_require__(232); +var ReactDOMComponent = __webpack_require__(235); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactDOMEmptyComponent = __webpack_require__(237); +var ReactDOMTreeTraversal = __webpack_require__(247); +var ReactDOMTextComponent = __webpack_require__(245); +var ReactDefaultBatchingStrategy = __webpack_require__(250); +var ReactEventListener = __webpack_require__(254); +var ReactInjection = __webpack_require__(256); +var ReactReconcileTransaction = __webpack_require__(262); +var SVGDOMPropertyConfig = __webpack_require__(269); +var SelectEventPlugin = __webpack_require__(270); +var SimpleEventPlugin = __webpack_require__(271); + +var alreadyInjected = false; + +function inject() { + if (alreadyInjected) { + // TODO: This is currently true because these injections are shared between + // the client and the server package. They should be built independently + // and not share any injection state. Then this problem will be solved. + return; + } + alreadyInjected = true; + + ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener); + + /** + * Inject modules for resolving DOM hierarchy and plugin ordering. + */ + ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder); + ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree); + ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal); + + /** + * Some important event plugins included by default (without having to require + * them). + */ + ReactInjection.EventPluginHub.injectEventPluginsByName({ + SimpleEventPlugin: SimpleEventPlugin, + EnterLeaveEventPlugin: EnterLeaveEventPlugin, + ChangeEventPlugin: ChangeEventPlugin, + SelectEventPlugin: SelectEventPlugin, + BeforeInputEventPlugin: BeforeInputEventPlugin + }); + + ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent); + + ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent); + + ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig); + ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig); + ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig); + + ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) { + return new ReactDOMEmptyComponent(instantiate); + }); + + ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction); + ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy); + + ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment); +} + +module.exports = { + inject: inject +}; + +/***/ }), +/* 252 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +// 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; + +/***/ }), +/* 253 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var EventPluginHub = __webpack_require__(27); + +function runEventQueueInBatch(events) { + EventPluginHub.enqueueEvents(events); + EventPluginHub.processEventQueue(false); +} + +var ReactEventEmitterMixin = { + + /** + * Streams a fired top-level event to `EventPluginHub` where plugins have the + * opportunity to create `ReactEvent`s to be dispatched. + */ + handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); + runEventQueueInBatch(events); + } +}; + +module.exports = ReactEventEmitterMixin; + +/***/ }), +/* 254 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var EventListener = __webpack_require__(105); +var ExecutionEnvironment = __webpack_require__(4); +var PooledClass = __webpack_require__(24); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactUpdates = __webpack_require__(14); + +var getEventTarget = __webpack_require__(77); +var getUnboundedScrollPosition = __webpack_require__(193); + +/** + * Find the deepest React component completely containing the root of the + * passed-in instance (for use when entire React trees are nested within each + * other). If React trees are not nested, returns null. + */ +function findParent(inst) { + // TODO: It may be a good idea to cache this to prevent unnecessary DOM + // traversal, but caching is difficult to do correctly without using a + // mutation observer to listen for all DOM changes. + while (inst._hostParent) { + inst = inst._hostParent; + } + var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst); + var container = rootNode.parentNode; + return ReactDOMComponentTree.getClosestInstanceFromNode(container); +} + +// Used to store ancestor hierarchy in top level callback +function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) { + this.topLevelType = topLevelType; + this.nativeEvent = nativeEvent; + this.ancestors = []; +} +_assign(TopLevelCallbackBookKeeping.prototype, { + destructor: function () { + this.topLevelType = null; + this.nativeEvent = null; + this.ancestors.length = 0; + } +}); +PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler); + +function handleTopLevelImpl(bookKeeping) { + var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent); + var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget); + + // Loop through the hierarchy, in case there's any nested components. + // It's important that we build the array of ancestors before calling any + // event handlers, because event handlers can modify the DOM, leading to + // inconsistencies with ReactMount's node cache. See #1105. + var ancestor = targetInst; + do { + bookKeeping.ancestors.push(ancestor); + ancestor = ancestor && findParent(ancestor); + } while (ancestor); + + for (var i = 0; i < bookKeeping.ancestors.length; i++) { + targetInst = bookKeeping.ancestors[i]; + ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent)); + } +} + +function scrollValueMonitor(cb) { + var scrollPosition = getUnboundedScrollPosition(window); + cb(scrollPosition); +} + +var ReactEventListener = { + _enabled: true, + _handleTopLevel: null, + + WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null, + + setHandleTopLevel: function (handleTopLevel) { + ReactEventListener._handleTopLevel = handleTopLevel; + }, + + setEnabled: function (enabled) { + ReactEventListener._enabled = !!enabled; + }, + + isEnabled: function () { + return ReactEventListener._enabled; + }, + + /** + * Traps top-level events by using event bubbling. + * + * @param {string} topLevelType Record from `EventConstants`. + * @param {string} handlerBaseName Event name (e.g. "click"). + * @param {object} element Element on which to attach listener. + * @return {?object} An object with a remove function which will forcefully + * remove the listener. + * @internal + */ + trapBubbledEvent: function (topLevelType, handlerBaseName, element) { + if (!element) { + return null; + } + return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType)); + }, + + /** + * Traps a top-level event by using event capturing. + * + * @param {string} topLevelType Record from `EventConstants`. + * @param {string} handlerBaseName Event name (e.g. "click"). + * @param {object} element Element on which to attach listener. + * @return {?object} An object with a remove function which will forcefully + * remove the listener. + * @internal + */ + trapCapturedEvent: function (topLevelType, handlerBaseName, element) { + if (!element) { + return null; + } + return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType)); + }, + + monitorScrollValue: function (refresh) { + var callback = scrollValueMonitor.bind(null, refresh); + EventListener.listen(window, 'scroll', callback); + }, + + dispatchEvent: function (topLevelType, nativeEvent) { + if (!ReactEventListener._enabled) { + return; + } + + var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent); + try { + // Event queue being processed in the same cycle allows + // `preventDefault`. + ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping); + } finally { + TopLevelCallbackBookKeeping.release(bookKeeping); + } + } +}; + +module.exports = ReactEventListener; + +/***/ }), +/* 255 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2016-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. + * + * + */ + + + +var history = []; + +var ReactHostOperationHistoryHook = { + onHostOperation: function (operation) { + history.push(operation); + }, + clearHistory: function () { + if (ReactHostOperationHistoryHook._preventClearing) { + // Should only be used for tests. + return; + } + + history = []; + }, + getHistory: function () { + return history; + } +}; + +module.exports = ReactHostOperationHistoryHook; + +/***/ }), +/* 256 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var DOMProperty = __webpack_require__(20); +var EventPluginHub = __webpack_require__(27); +var EventPluginUtils = __webpack_require__(40); +var ReactComponentEnvironment = __webpack_require__(71); +var ReactEmptyComponent = __webpack_require__(120); +var ReactBrowserEventEmitter = __webpack_require__(53); +var ReactHostComponent = __webpack_require__(122); +var ReactUpdates = __webpack_require__(14); + +var ReactInjection = { + Component: ReactComponentEnvironment.injection, + DOMProperty: DOMProperty.injection, + EmptyComponent: ReactEmptyComponent.injection, + EventPluginHub: EventPluginHub.injection, + EventPluginUtils: EventPluginUtils.injection, + EventEmitter: ReactBrowserEventEmitter.injection, + HostComponent: ReactHostComponent.injection, + Updates: ReactUpdates.injection +}; + +module.exports = ReactInjection; + +/***/ }), +/* 257 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2016-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. + * + * + */ + + + +var warning = __webpack_require__(1); + +if (true) { + var processingChildContext = false; + + var warnInvalidSetState = function () { + true ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0; + }; +} + +var ReactInvalidSetStateWarningHook = { + onBeginProcessingChildContext: function () { + processingChildContext = true; + }, + onEndProcessingChildContext: function () { + processingChildContext = false; + }, + onSetState: function () { + warnInvalidSetState(); + } +}; + +module.exports = ReactInvalidSetStateWarningHook; + +/***/ }), +/* 258 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var adler32 = __webpack_require__(283); + +var TAG_END = /\/?>/; +var COMMENT_START = /^<\!\-\-/; + +var ReactMarkupChecksum = { + CHECKSUM_ATTR_NAME: 'data-react-checksum', + + /** + * @param {string} markup Markup string + * @return {string} Markup string with checksum attribute attached + */ + addChecksumToMarkup: function (markup) { + var checksum = adler32(markup); + + // Add checksum (handle both parent tags, comments and self-closing tags) + if (COMMENT_START.test(markup)) { + return markup; + } else { + return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&'); + } + }, + + /** + * @param {string} markup to use + * @param {DOMElement} element root React element + * @returns {boolean} whether or not the markup is the same + */ + canReuseMarkup: function (markup, element) { + var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); + existingChecksum = existingChecksum && parseInt(existingChecksum, 10); + var markupChecksum = adler32(markup); + return markupChecksum === existingChecksum; + } +}; + +module.exports = ReactMarkupChecksum; + +/***/ }), +/* 259 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var ReactComponentEnvironment = __webpack_require__(71); +var ReactInstanceMap = __webpack_require__(41); +var ReactInstrumentation = __webpack_require__(11); + +var ReactCurrentOwner = __webpack_require__(17); +var ReactReconciler = __webpack_require__(29); +var ReactChildReconciler = __webpack_require__(231); + +var emptyFunction = __webpack_require__(10); +var flattenChildren = __webpack_require__(287); +var invariant = __webpack_require__(0); + +/** + * Make an update for markup to be rendered and inserted at a supplied index. + * + * @param {string} markup Markup that renders into an element. + * @param {number} toIndex Destination index. + * @private + */ +function makeInsertMarkup(markup, afterNode, toIndex) { + // NOTE: Null values reduce hidden classes. + return { + type: 'INSERT_MARKUP', + content: markup, + fromIndex: null, + fromNode: null, + toIndex: toIndex, + afterNode: afterNode + }; +} + +/** + * Make an update for moving an existing element to another index. + * + * @param {number} fromIndex Source index of the existing element. + * @param {number} toIndex Destination index of the element. + * @private + */ +function makeMove(child, afterNode, toIndex) { + // NOTE: Null values reduce hidden classes. + return { + type: 'MOVE_EXISTING', + content: null, + fromIndex: child._mountIndex, + fromNode: ReactReconciler.getHostNode(child), + toIndex: toIndex, + afterNode: afterNode + }; +} + +/** + * Make an update for removing an element at an index. + * + * @param {number} fromIndex Index of the element to remove. + * @private + */ +function makeRemove(child, node) { + // NOTE: Null values reduce hidden classes. + return { + type: 'REMOVE_NODE', + content: null, + fromIndex: child._mountIndex, + fromNode: node, + toIndex: null, + afterNode: null + }; +} + +/** + * Make an update for setting the markup of a node. + * + * @param {string} markup Markup that renders into an element. + * @private + */ +function makeSetMarkup(markup) { + // NOTE: Null values reduce hidden classes. + return { + type: 'SET_MARKUP', + content: markup, + fromIndex: null, + fromNode: null, + toIndex: null, + afterNode: null + }; +} + +/** + * Make an update for setting the text content. + * + * @param {string} textContent Text content to set. + * @private + */ +function makeTextContent(textContent) { + // NOTE: Null values reduce hidden classes. + return { + type: 'TEXT_CONTENT', + content: textContent, + fromIndex: null, + fromNode: null, + toIndex: null, + afterNode: null + }; +} + +/** + * Push an update, if any, onto the queue. Creates a new queue if none is + * passed and always returns the queue. Mutative. + */ +function enqueue(queue, update) { + if (update) { + queue = queue || []; + queue.push(update); + } + return queue; +} + +/** + * Processes any enqueued updates. + * + * @private + */ +function processQueue(inst, updateQueue) { + ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue); +} + +var setChildrenForInstrumentation = emptyFunction; +if (true) { + var getDebugID = function (inst) { + if (!inst._debugID) { + // Check for ART-like instances. TODO: This is silly/gross. + var internal; + if (internal = ReactInstanceMap.get(inst)) { + inst = internal; + } + } + return inst._debugID; + }; + setChildrenForInstrumentation = function (children) { + var debugID = getDebugID(this); + // TODO: React Native empty components are also multichild. + // This means they still get into this method but don't have _debugID. + if (debugID !== 0) { + ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) { + return children[key]._debugID; + }) : []); + } + }; +} + +/** + * ReactMultiChild are capable of reconciling multiple children. + * + * @class ReactMultiChild + * @internal + */ +var ReactMultiChild = { + + /** + * Provides common functionality for components that must reconcile multiple + * children. This is used by `ReactDOMComponent` to mount, update, and + * unmount child components. + * + * @lends {ReactMultiChild.prototype} + */ + Mixin: { + + _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) { + if (true) { + var selfDebugID = getDebugID(this); + if (this._currentElement) { + try { + ReactCurrentOwner.current = this._currentElement._owner; + return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID); + } finally { + ReactCurrentOwner.current = null; + } + } + } + return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context); + }, + + _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) { + var nextChildren; + var selfDebugID = 0; + if (true) { + selfDebugID = getDebugID(this); + if (this._currentElement) { + try { + ReactCurrentOwner.current = this._currentElement._owner; + nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID); + } finally { + ReactCurrentOwner.current = null; + } + ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID); + return nextChildren; + } + } + nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID); + ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID); + return nextChildren; + }, + + /** + * Generates a "mount image" for each of the supplied children. In the case + * of `ReactDOMComponent`, a mount image is a string of markup. + * + * @param {?object} nestedChildren Nested child maps. + * @return {array} An array of mounted representations. + * @internal + */ + mountChildren: function (nestedChildren, transaction, context) { + var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context); + this._renderedChildren = children; + + var mountImages = []; + var index = 0; + for (var name in children) { + if (children.hasOwnProperty(name)) { + var child = children[name]; + var selfDebugID = 0; + if (true) { + selfDebugID = getDebugID(this); + } + var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID); + child._mountIndex = index++; + mountImages.push(mountImage); + } + } + + if (true) { + setChildrenForInstrumentation.call(this, children); + } + + return mountImages; + }, + + /** + * Replaces any rendered children with a text content string. + * + * @param {string} nextContent String of content. + * @internal + */ + updateTextContent: function (nextContent) { + var prevChildren = this._renderedChildren; + // Remove any rendered children. + ReactChildReconciler.unmountChildren(prevChildren, false); + for (var name in prevChildren) { + if (prevChildren.hasOwnProperty(name)) { + true ? true ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0; + } + } + // Set new text content. + var updates = [makeTextContent(nextContent)]; + processQueue(this, updates); + }, + + /** + * Replaces any rendered children with a markup string. + * + * @param {string} nextMarkup String of markup. + * @internal + */ + updateMarkup: function (nextMarkup) { + var prevChildren = this._renderedChildren; + // Remove any rendered children. + ReactChildReconciler.unmountChildren(prevChildren, false); + for (var name in prevChildren) { + if (prevChildren.hasOwnProperty(name)) { + true ? true ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0; + } + } + var updates = [makeSetMarkup(nextMarkup)]; + processQueue(this, updates); + }, + + /** + * Updates the rendered children with new children. + * + * @param {?object} nextNestedChildrenElements Nested child element maps. + * @param {ReactReconcileTransaction} transaction + * @internal + */ + updateChildren: function (nextNestedChildrenElements, transaction, context) { + // Hook used by React ART + this._updateChildren(nextNestedChildrenElements, transaction, context); + }, + + /** + * @param {?object} nextNestedChildrenElements Nested child element maps. + * @param {ReactReconcileTransaction} transaction + * @final + * @protected + */ + _updateChildren: function (nextNestedChildrenElements, transaction, context) { + var prevChildren = this._renderedChildren; + var removedNodes = {}; + var mountImages = []; + var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context); + if (!nextChildren && !prevChildren) { + return; + } + var updates = null; + var name; + // `nextIndex` will increment for each child in `nextChildren`, but + // `lastIndex` will be the last index visited in `prevChildren`. + var nextIndex = 0; + var lastIndex = 0; + // `nextMountIndex` will increment for each newly mounted child. + var nextMountIndex = 0; + var lastPlacedNode = null; + for (name in nextChildren) { + if (!nextChildren.hasOwnProperty(name)) { + continue; + } + var prevChild = prevChildren && prevChildren[name]; + var nextChild = nextChildren[name]; + if (prevChild === nextChild) { + updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex)); + lastIndex = Math.max(prevChild._mountIndex, lastIndex); + prevChild._mountIndex = nextIndex; + } else { + if (prevChild) { + // Update `lastIndex` before `_mountIndex` gets unset by unmounting. + lastIndex = Math.max(prevChild._mountIndex, lastIndex); + // The `removedNodes` loop below will actually remove the child. + } + // The child must be instantiated before it's mounted. + updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context)); + nextMountIndex++; + } + nextIndex++; + lastPlacedNode = ReactReconciler.getHostNode(nextChild); + } + // Remove children that are no longer present. + for (name in removedNodes) { + if (removedNodes.hasOwnProperty(name)) { + updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name])); + } + } + if (updates) { + processQueue(this, updates); + } + this._renderedChildren = nextChildren; + + if (true) { + setChildrenForInstrumentation.call(this, nextChildren); + } + }, + + /** + * Unmounts all rendered children. This should be used to clean up children + * when this component is unmounted. It does not actually perform any + * backend operations. + * + * @internal + */ + unmountChildren: function (safely) { + var renderedChildren = this._renderedChildren; + ReactChildReconciler.unmountChildren(renderedChildren, safely); + this._renderedChildren = null; + }, + + /** + * Moves a child component to the supplied index. + * + * @param {ReactComponent} child Component to move. + * @param {number} toIndex Destination index of the element. + * @param {number} lastIndex Last index visited of the siblings of `child`. + * @protected + */ + moveChild: function (child, afterNode, toIndex, lastIndex) { + // If the index of `child` is less than `lastIndex`, then it needs to + // be moved. Otherwise, we do not need to move it because a child will be + // inserted or moved before `child`. + if (child._mountIndex < lastIndex) { + return makeMove(child, afterNode, toIndex); + } + }, + + /** + * Creates a child component. + * + * @param {ReactComponent} child Component to create. + * @param {string} mountImage Markup to insert. + * @protected + */ + createChild: function (child, afterNode, mountImage) { + return makeInsertMarkup(mountImage, afterNode, child._mountIndex); + }, + + /** + * Removes a child component. + * + * @param {ReactComponent} child Child to remove. + * @protected + */ + removeChild: function (child, node) { + return makeRemove(child, node); + }, + + /** + * Mounts a child with the supplied name. + * + * NOTE: This is part of `updateChildren` and is here for readability. + * + * @param {ReactComponent} child Component to mount. + * @param {string} name Name of the child. + * @param {number} index Index at which to insert the child. + * @param {ReactReconcileTransaction} transaction + * @private + */ + _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) { + child._mountIndex = index; + return this.createChild(child, afterNode, mountImage); + }, + + /** + * Unmounts a rendered child. + * + * NOTE: This is part of `updateChildren` and is here for readability. + * + * @param {ReactComponent} child Component to unmount. + * @private + */ + _unmountChild: function (child, node) { + var update = this.removeChild(child, node); + child._mountIndex = null; + return update; + } + + } + +}; + +module.exports = ReactMultiChild; + +/***/ }), +/* 260 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +/** + * @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. + * + * All components are capable of //being// referenced by owner components, but + * only ReactOwner components are capable of //referencing// owned components. + * The named reference is known as a "ref". + * + * Refs are available when mounted and updated during reconciliation. + * + * var MyComponent = React.createClass({ + * render: function() { + * return ( + * <div onClick={this.handleClick}> + * <CustomComponent ref="custom" /> + * </div> + * ); + * }, + * handleClick: function() { + * this.refs.custom.handleClick(); + * }, + * componentDidMount: function() { + * this.refs.custom.initialize(); + * } + * }); + * + * Refs should rarely be used. When refs are used, they should only be done to + * control data that is not handled by React's data flow. + * + * @class ReactOwner + */ +var ReactOwner = { + /** + * Adds a component by ref to an owner component. + * + * @param {ReactComponent} component Component to reference. + * @param {string} ref Name by which to refer to the component. + * @param {ReactOwner} owner Component on which to record the ref. + * @final + * @internal + */ + addComponentAsRefTo: function (component, ref, owner) { + !isValidOwner(owner) ? true ? 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); + }, + + /** + * Removes a component by ref from an owner component. + * + * @param {ReactComponent} component Component to dereference. + * @param {string} ref Name of the ref to remove. + * @param {ReactOwner} owner Component on which the ref is recorded. + * @final + * @internal + */ + removeComponentAsRefFrom: function (component, ref, owner) { + !isValidOwner(owner) ? true ? 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. + if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) { + owner.detachRef(ref); + } + } + +}; + +module.exports = ReactOwner; + +/***/ }), +/* 261 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var ReactPropTypeLocationNames = {}; + +if (true) { + ReactPropTypeLocationNames = { + prop: 'prop', + context: 'context', + childContext: 'child context' + }; +} + +module.exports = ReactPropTypeLocationNames; + +/***/ }), +/* 262 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var CallbackQueue = __webpack_require__(116); +var PooledClass = __webpack_require__(24); +var ReactBrowserEventEmitter = __webpack_require__(53); +var ReactInputSelection = __webpack_require__(123); +var ReactInstrumentation = __webpack_require__(11); +var Transaction = __webpack_require__(55); +var ReactUpdateQueue = __webpack_require__(73); + +/** + * Ensures that, when possible, the selection range (currently selected text + * input) is not disturbed by performing the transaction. + */ +var SELECTION_RESTORATION = { + /** + * @return {Selection} Selection information. + */ + initialize: ReactInputSelection.getSelectionInformation, + /** + * @param {Selection} sel Selection information returned from `initialize`. + */ + close: ReactInputSelection.restoreSelection +}; + +/** + * Suppresses events (blur/focus) that could be inadvertently dispatched due to + * high level DOM manipulations (like temporarily removing a text input from the + * DOM). + */ +var EVENT_SUPPRESSION = { + /** + * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before + * the reconciliation. + */ + initialize: function () { + var currentlyEnabled = ReactBrowserEventEmitter.isEnabled(); + ReactBrowserEventEmitter.setEnabled(false); + return currentlyEnabled; + }, + + /** + * @param {boolean} previouslyEnabled Enabled status of + * `ReactBrowserEventEmitter` before the reconciliation occurred. `close` + * restores the previous value. + */ + close: function (previouslyEnabled) { + ReactBrowserEventEmitter.setEnabled(previouslyEnabled); + } +}; + +/** + * Provides a queue for collecting `componentDidMount` and + * `componentDidUpdate` callbacks during the transaction. + */ +var ON_DOM_READY_QUEUEING = { + /** + * Initializes the internal `onDOMReady` queue. + */ + initialize: function () { + this.reactMountReady.reset(); + }, + + /** + * After DOM is flushed, invoke all registered `onDOMReady` callbacks. + */ + close: function () { + this.reactMountReady.notifyAll(); + } +}; + +/** + * Executed within the scope of the `Transaction` instance. Consider these as + * being member methods, but with an implied ordering while being isolated from + * each other. + */ +var TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING]; + +if (true) { + TRANSACTION_WRAPPERS.push({ + initialize: ReactInstrumentation.debugTool.onBeginFlush, + close: ReactInstrumentation.debugTool.onEndFlush + }); +} + +/** + * Currently: + * - The order that these are listed in the transaction is critical: + * - Suppresses events. + * - Restores selection range. + * + * Future: + * - Restore document/overflow scroll positions that were unintentionally + * modified via DOM insertions above the top viewport boundary. + * - Implement/integrate with customized constraint based layout system and keep + * track of which dimensions must be remeasured. + * + * @class ReactReconcileTransaction + */ +function ReactReconcileTransaction(useCreateElement) { + this.reinitializeTransaction(); + // Only server-side rendering really needs this option (see + // `ReactServerRendering`), but server-side uses + // `ReactServerRenderingTransaction` instead. This option is here so that it's + // accessible and defaults to false when `ReactDOMComponent` and + // `ReactDOMTextComponent` checks it in `mountComponent`.` + this.renderToStaticMarkup = false; + this.reactMountReady = CallbackQueue.getPooled(null); + this.useCreateElement = useCreateElement; +} + +var Mixin = { + /** + * @see Transaction + * @abstract + * @final + * @return {array<object>} List of operation wrap procedures. + * TODO: convert to array<TransactionWrapper> + */ + getTransactionWrappers: function () { + return TRANSACTION_WRAPPERS; + }, + + /** + * @return {object} The queue to collect `onDOMReady` callbacks with. + */ + getReactMountReady: function () { + return this.reactMountReady; + }, + + /** + * @return {object} The queue to collect React async events. + */ + getUpdateQueue: function () { + return ReactUpdateQueue; + }, + + /** + * Save current transaction state -- if the return value from this method is + * passed to `rollback`, the transaction will be reset to that state. + */ + checkpoint: function () { + // reactMountReady is the our only stateful wrapper + return this.reactMountReady.checkpoint(); + }, + + rollback: function (checkpoint) { + this.reactMountReady.rollback(checkpoint); + }, + + /** + * `PooledClass` looks for this, and will invoke this before allowing this + * instance to be reused. + */ + destructor: function () { + CallbackQueue.release(this.reactMountReady); + this.reactMountReady = null; + } +}; + +_assign(ReactReconcileTransaction.prototype, Transaction, Mixin); + +PooledClass.addPoolingTo(ReactReconcileTransaction); + +module.exports = ReactReconcileTransaction; + +/***/ }), +/* 263 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var ReactOwner = __webpack_require__(260); + +var ReactRef = {}; + +function attachRef(ref, component, owner) { + if (typeof ref === 'function') { + ref(component.getPublicInstance()); + } else { + // Legacy ref + ReactOwner.addComponentAsRefTo(component, ref, owner); + } +} + +function detachRef(ref, component, owner) { + if (typeof ref === 'function') { + ref(null); + } else { + // Legacy ref + ReactOwner.removeComponentAsRefFrom(component, ref, owner); + } +} + +ReactRef.attachRefs = function (instance, element) { + if (element === null || typeof element !== 'object') { + return; + } + var ref = element.ref; + if (ref != null) { + attachRef(ref, instance, element._owner); + } +}; + +ReactRef.shouldUpdateRefs = function (prevElement, nextElement) { + // If either the owner or a `ref` has changed, make sure the newest owner + // has stored a reference to `this`, and the previous owner (if different) + // has forgotten the reference to `this`. We use the element instead + // of the public this.props because the post processing cannot determine + // a ref. The ref conceptually lives on the element. + + // TODO: Should this even be possible? The owner cannot change because + // it's forbidden by shouldUpdateReactComponent. The ref can change + // if you swap the keys of but not the refs. Reconsider where this check + // is made. It probably belongs where the key checking and + // instantiateReactComponent is done. + + var prevRef = null; + var prevOwner = null; + if (prevElement !== null && typeof prevElement === 'object') { + prevRef = prevElement.ref; + prevOwner = 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 || typeof element !== 'object') { + return; + } + var ref = element.ref; + if (ref != null) { + detachRef(ref, instance, element._owner); + } +}; + +module.exports = ReactRef; + +/***/ }), +/* 264 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6); + +var PooledClass = __webpack_require__(24); +var Transaction = __webpack_require__(55); +var ReactInstrumentation = __webpack_require__(11); +var ReactServerUpdateQueue = __webpack_require__(265); + +/** + * Executed within the scope of the `Transaction` instance. Consider these as + * being member methods, but with an implied ordering while being isolated from + * each other. + */ +var TRANSACTION_WRAPPERS = []; + +if (true) { + TRANSACTION_WRAPPERS.push({ + initialize: ReactInstrumentation.debugTool.onBeginFlush, + close: ReactInstrumentation.debugTool.onEndFlush + }); +} + +var noopCallbackQueue = { + enqueue: function () {} +}; + +/** + * @class ReactServerRenderingTransaction + * @param {boolean} renderToStaticMarkup + */ +function ReactServerRenderingTransaction(renderToStaticMarkup) { + this.reinitializeTransaction(); + this.renderToStaticMarkup = renderToStaticMarkup; + this.useCreateElement = false; + this.updateQueue = new ReactServerUpdateQueue(this); +} + +var Mixin = { + /** + * @see Transaction + * @abstract + * @final + * @return {array} Empty list of operation wrap procedures. + */ + getTransactionWrappers: function () { + return TRANSACTION_WRAPPERS; + }, + + /** + * @return {object} The queue to collect `onDOMReady` callbacks with. + */ + getReactMountReady: function () { + return noopCallbackQueue; + }, + + /** + * @return {object} The queue to collect React async events. + */ + getUpdateQueue: function () { + return this.updateQueue; + }, + + /** + * `PooledClass` looks for this, and will invoke this before allowing this + * instance to be reused. + */ + destructor: function () {}, + + checkpoint: function () {}, + + rollback: function () {} +}; + +_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin); + +PooledClass.addPoolingTo(ReactServerRenderingTransaction); + +module.exports = ReactServerRenderingTransaction; + +/***/ }), +/* 265 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var ReactUpdateQueue = __webpack_require__(73); + +var warning = __webpack_require__(1); + +function warnNoop(publicInstance, callerName) { + if (true) { + var constructor = publicInstance.constructor; + true ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; + } +} + +/** + * This is the update queue used for server rendering. + * It delegates to ReactUpdateQueue while server rendering is in progress and + * switches to ReactNoopUpdateQueue after the transaction has completed. + * @class ReactServerUpdateQueue + * @param {Transaction} transaction + */ + +var ReactServerUpdateQueue = function () { + function ReactServerUpdateQueue(transaction) { + _classCallCheck(this, ReactServerUpdateQueue); + + this.transaction = transaction; + } + + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + + + ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) { + return false; + }; + + /** + * Enqueue a callback that will be executed after all the pending updates + * have processed. + * + * @param {ReactClass} publicInstance The instance to use as `this` context. + * @param {?function} callback Called after state is updated. + * @internal + */ + + + ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) { + if (this.transaction.isInTransaction()) { + ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName); + } + }; + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @internal + */ + + + ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) { + if (this.transaction.isInTransaction()) { + ReactUpdateQueue.enqueueForceUpdate(publicInstance); + } else { + warnNoop(publicInstance, 'forceUpdate'); + } + }; + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object|function} completeState Next state. + * @internal + */ + + + ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) { + if (this.transaction.isInTransaction()) { + ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState); + } else { + warnNoop(publicInstance, 'replaceState'); + } + }; + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object|function} partialState Next partial state to be merged with state. + * @internal + */ + + + ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) { + if (this.transaction.isInTransaction()) { + ReactUpdateQueue.enqueueSetState(publicInstance, partialState); + } else { + warnNoop(publicInstance, 'setState'); + } + }; + + return ReactServerUpdateQueue; +}(); + +module.exports = ReactServerUpdateQueue; + +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +module.exports = '15.5.4'; + +/***/ }), +/* 267 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var EventPluginUtils = __webpack_require__(40); +var EventPropagators = __webpack_require__(28); +var ResponderSyntheticEvent = __webpack_require__(268); +var ResponderTouchHistoryStore = __webpack_require__(127); + +var accumulate = __webpack_require__(282); + +var isStartish = EventPluginUtils.isStartish; +var isMoveish = EventPluginUtils.isMoveish; +var isEndish = EventPluginUtils.isEndish; +var executeDirectDispatch = EventPluginUtils.executeDirectDispatch; +var hasDispatches = EventPluginUtils.hasDispatches; +var executeDispatchesInOrderStopAtTrue = EventPluginUtils.executeDispatchesInOrderStopAtTrue; + +/** + * Instance of element that should respond to touch/move types of interactions, + * as indicated explicitly by relevant callbacks. + */ +var responderInst = null; + +/** + * Count of current touches. A textInput should become responder iff the + * selection changes while there is a touch on the screen. + */ +var trackedTouchCount = 0; + +/** + * Last reported number of active touches. + */ +var previousActiveTouches = 0; + +var changeResponder = function (nextResponderInst, blockHostResponder) { + var oldResponderInst = responderInst; + responderInst = nextResponderInst; + if (ResponderEventPlugin.GlobalResponderHandler !== null) { + ResponderEventPlugin.GlobalResponderHandler.onChange(oldResponderInst, nextResponderInst, blockHostResponder); + } +}; + +var eventTypes = { + /** + * On a `touchStart`/`mouseDown`, is it desired that this element become the + * responder? + */ + startShouldSetResponder: { + phasedRegistrationNames: { + bubbled: 'onStartShouldSetResponder', + captured: 'onStartShouldSetResponderCapture' + } + }, + + /** + * On a `scroll`, is it desired that this element become the responder? This + * is usually not needed, but should be used to retroactively infer that a + * `touchStart` had occurred during momentum scroll. During a momentum scroll, + * a touch start will be immediately followed by a scroll event if the view is + * currently scrolling. + * + * TODO: This shouldn't bubble. + */ + scrollShouldSetResponder: { + phasedRegistrationNames: { + bubbled: 'onScrollShouldSetResponder', + captured: 'onScrollShouldSetResponderCapture' + } + }, + + /** + * On text selection change, should this element become the responder? This + * is needed for text inputs or other views with native selection, so the + * JS view can claim the responder. + * + * TODO: This shouldn't bubble. + */ + selectionChangeShouldSetResponder: { + phasedRegistrationNames: { + bubbled: 'onSelectionChangeShouldSetResponder', + captured: 'onSelectionChangeShouldSetResponderCapture' + } + }, + + /** + * On a `touchMove`/`mouseMove`, is it desired that this element become the + * responder? + */ + moveShouldSetResponder: { + phasedRegistrationNames: { + bubbled: 'onMoveShouldSetResponder', + captured: 'onMoveShouldSetResponderCapture' + } + }, + + /** + * Direct responder events dispatched directly to responder. Do not bubble. + */ + responderStart: { registrationName: 'onResponderStart' }, + responderMove: { registrationName: 'onResponderMove' }, + responderEnd: { registrationName: 'onResponderEnd' }, + responderRelease: { registrationName: 'onResponderRelease' }, + responderTerminationRequest: { + registrationName: 'onResponderTerminationRequest' + }, + responderGrant: { registrationName: 'onResponderGrant' }, + responderReject: { registrationName: 'onResponderReject' }, + responderTerminate: { registrationName: 'onResponderTerminate' } +}; + +/** + * + * Responder System: + * ---------------- + * + * - A global, solitary "interaction lock" on a view. + * - If a node becomes the responder, it should convey visual feedback + * immediately to indicate so, either by highlighting or moving accordingly. + * - To be the responder means, that touches are exclusively important to that + * responder view, and no other view. + * - While touches are still occurring, the responder lock can be transferred to + * a new view, but only to increasingly "higher" views (meaning ancestors of + * the current responder). + * + * Responder being granted: + * ------------------------ + * + * - Touch starts, moves, and scrolls can cause an ID to become the responder. + * - We capture/bubble `startShouldSetResponder`/`moveShouldSetResponder` to + * the "appropriate place". + * - If nothing is currently the responder, the "appropriate place" is the + * initiating event's `targetID`. + * - If something *is* already the responder, the "appropriate place" is the + * first common ancestor of the event target and the current `responderInst`. + * - Some negotiation happens: See the timing diagram below. + * - Scrolled views automatically become responder. The reasoning is that a + * platform scroll view that isn't built on top of the responder system has + * began scrolling, and the active responder must now be notified that the + * interaction is no longer locked to it - the system has taken over. + * + * - Responder being released: + * As soon as no more touches that *started* inside of descendants of the + * *current* responderInst, an `onResponderRelease` event is dispatched to the + * current responder, and the responder lock is released. + * + * TODO: + * - on "end", a callback hook for `onResponderEndShouldRemainResponder` that + * determines if the responder lock should remain. + * - If a view shouldn't "remain" the responder, any active touches should by + * default be considered "dead" and do not influence future negotiations or + * bubble paths. It should be as if those touches do not exist. + * -- For multitouch: Usually a translate-z will choose to "remain" responder + * after one out of many touches ended. For translate-y, usually the view + * doesn't wish to "remain" responder after one of many touches end. + * - Consider building this on top of a `stopPropagation` model similar to + * `W3C` events. + * - Ensure that `onResponderTerminate` is called on touch cancels, whether or + * not `onResponderTerminationRequest` returns `true` or `false`. + * + */ + +/* Negotiation Performed + +-----------------------+ + / \ +Process low level events to + Current Responder + wantsResponderID +determine who to perform negot-| (if any exists at all) | +iation/transition | Otherwise just pass through| +-------------------------------+----------------------------+------------------+ +Bubble to find first ID | | +to return true:wantsResponderID| | + | | + +-------------+ | | + | onTouchStart| | | + +------+------+ none | | + | return| | ++-----------v-------------+true| +------------------------+ | +|onStartShouldSetResponder|----->|onResponderStart (cur) |<-----------+ ++-----------+-------------+ | +------------------------+ | | + | | | +--------+-------+ + | returned true for| false:REJECT +-------->|onResponderReject + | wantsResponderID | | | +----------------+ + | (now attempt | +------------------+-----+ | + | handoff) | | onResponder | | + +------------------->| TerminationRequest| | + | +------------------+-----+ | + | | | +----------------+ + | true:GRANT +-------->|onResponderGrant| + | | +--------+-------+ + | +------------------------+ | | + | | onResponderTerminate |<-----------+ + | +------------------+-----+ | + | | | +----------------+ + | +-------->|onResponderStart| + | | +----------------+ +Bubble to find first ID | | +to return true:wantsResponderID| | + | | + +-------------+ | | + | onTouchMove | | | + +------+------+ none | | + | return| | ++-----------v-------------+true| +------------------------+ | +|onMoveShouldSetResponder |----->|onResponderMove (cur) |<-----------+ ++-----------+-------------+ | +------------------------+ | | + | | | +--------+-------+ + | returned true for| false:REJECT +-------->|onResponderRejec| + | wantsResponderID | | | +----------------+ + | (now attempt | +------------------+-----+ | + | handoff) | | onResponder | | + +------------------->| TerminationRequest| | + | +------------------+-----+ | + | | | +----------------+ + | true:GRANT +-------->|onResponderGrant| + | | +--------+-------+ + | +------------------------+ | | + | | onResponderTerminate |<-----------+ + | +------------------+-----+ | + | | | +----------------+ + | +-------->|onResponderMove | + | | +----------------+ + | | + | | + Some active touch started| | + inside current responder | +------------------------+ | + +------------------------->| onResponderEnd | | + | | +------------------------+ | + +---+---------+ | | + | onTouchEnd | | | + +---+---------+ | | + | | +------------------------+ | + +------------------------->| onResponderEnd | | + No active touches started| +-----------+------------+ | + inside current responder | | | + | v | + | +------------------------+ | + | | onResponderRelease | | + | +------------------------+ | + | | + + + */ + +/** + * A note about event ordering in the `EventPluginHub`. + * + * Suppose plugins are injected in the following order: + * + * `[R, S, C]` + * + * To help illustrate the example, assume `S` is `SimpleEventPlugin` (for + * `onClick` etc) and `R` is `ResponderEventPlugin`. + * + * "Deferred-Dispatched Events": + * + * - The current event plugin system will traverse the list of injected plugins, + * in order, and extract events by collecting the plugin's return value of + * `extractEvents()`. + * - These events that are returned from `extractEvents` are "deferred + * dispatched events". + * - When returned from `extractEvents`, deferred-dispatched events contain an + * "accumulation" of deferred dispatches. + * - These deferred dispatches are accumulated/collected before they are + * returned, but processed at a later time by the `EventPluginHub` (hence the + * name deferred). + * + * In the process of returning their deferred-dispatched events, event plugins + * themselves can dispatch events on-demand without returning them from + * `extractEvents`. Plugins might want to do this, so that they can use event + * dispatching as a tool that helps them decide which events should be extracted + * in the first place. + * + * "On-Demand-Dispatched Events": + * + * - On-demand-dispatched events are not returned from `extractEvents`. + * - On-demand-dispatched events are dispatched during the process of returning + * the deferred-dispatched events. + * - They should not have side effects. + * - They should be avoided, and/or eventually be replaced with another + * abstraction that allows event plugins to perform multiple "rounds" of event + * extraction. + * + * Therefore, the sequence of event dispatches becomes: + * + * - `R`s on-demand events (if any) (dispatched by `R` on-demand) + * - `S`s on-demand events (if any) (dispatched by `S` on-demand) + * - `C`s on-demand events (if any) (dispatched by `C` on-demand) + * - `R`s extracted events (if any) (dispatched by `EventPluginHub`) + * - `S`s extracted events (if any) (dispatched by `EventPluginHub`) + * - `C`s extracted events (if any) (dispatched by `EventPluginHub`) + * + * In the case of `ResponderEventPlugin`: If the `startShouldSetResponder` + * on-demand dispatch returns `true` (and some other details are satisfied) the + * `onResponderGrant` deferred dispatched event is returned from + * `extractEvents`. The sequence of dispatch executions in this case + * will appear as follows: + * + * - `startShouldSetResponder` (`ResponderEventPlugin` dispatches on-demand) + * - `touchStartCapture` (`EventPluginHub` dispatches as usual) + * - `touchStart` (`EventPluginHub` dispatches as usual) + * - `responderGrant/Reject` (`EventPluginHub` dispatches as usual) + */ + +function setResponderAndExtractTransfer(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var shouldSetEventType = isStartish(topLevelType) ? eventTypes.startShouldSetResponder : isMoveish(topLevelType) ? eventTypes.moveShouldSetResponder : topLevelType === 'topSelectionChange' ? eventTypes.selectionChangeShouldSetResponder : eventTypes.scrollShouldSetResponder; + + // TODO: stop one short of the current responder. + var bubbleShouldSetFrom = !responderInst ? targetInst : EventPluginUtils.getLowestCommonAncestor(responderInst, targetInst); + + // When capturing/bubbling the "shouldSet" event, we want to skip the target + // (deepest ID) if it happens to be the current responder. The reasoning: + // It's strange to get an `onMoveShouldSetResponder` when you're *already* + // the responder. + var skipOverBubbleShouldSetFrom = bubbleShouldSetFrom === responderInst; + var shouldSetEvent = ResponderSyntheticEvent.getPooled(shouldSetEventType, bubbleShouldSetFrom, nativeEvent, nativeEventTarget); + shouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + if (skipOverBubbleShouldSetFrom) { + EventPropagators.accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent); + } else { + EventPropagators.accumulateTwoPhaseDispatches(shouldSetEvent); + } + var wantsResponderInst = executeDispatchesInOrderStopAtTrue(shouldSetEvent); + if (!shouldSetEvent.isPersistent()) { + shouldSetEvent.constructor.release(shouldSetEvent); + } + + if (!wantsResponderInst || wantsResponderInst === responderInst) { + return null; + } + var extracted; + var grantEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderGrant, wantsResponderInst, nativeEvent, nativeEventTarget); + grantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + + EventPropagators.accumulateDirectDispatches(grantEvent); + var blockHostResponder = executeDirectDispatch(grantEvent) === true; + if (responderInst) { + + var terminationRequestEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminationRequest, responderInst, nativeEvent, nativeEventTarget); + terminationRequestEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + EventPropagators.accumulateDirectDispatches(terminationRequestEvent); + var shouldSwitch = !hasDispatches(terminationRequestEvent) || executeDirectDispatch(terminationRequestEvent); + if (!terminationRequestEvent.isPersistent()) { + terminationRequestEvent.constructor.release(terminationRequestEvent); + } + + if (shouldSwitch) { + var terminateEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminate, responderInst, nativeEvent, nativeEventTarget); + terminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + EventPropagators.accumulateDirectDispatches(terminateEvent); + extracted = accumulate(extracted, [grantEvent, terminateEvent]); + changeResponder(wantsResponderInst, blockHostResponder); + } else { + var rejectEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderReject, wantsResponderInst, nativeEvent, nativeEventTarget); + rejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + EventPropagators.accumulateDirectDispatches(rejectEvent); + extracted = accumulate(extracted, rejectEvent); + } + } else { + extracted = accumulate(extracted, grantEvent); + changeResponder(wantsResponderInst, blockHostResponder); + } + return extracted; +} + +/** + * A transfer is a negotiation between a currently set responder and the next + * element to claim responder status. Any start event could trigger a transfer + * of responderInst. Any move event could trigger a transfer. + * + * @param {string} topLevelType Record from `EventConstants`. + * @return {boolean} True if a transfer of responder could possibly occur. + */ +function canTriggerTransfer(topLevelType, topLevelInst, nativeEvent) { + return topLevelInst && ( + // responderIgnoreScroll: We are trying to migrate away from specifically + // tracking native scroll events here and responderIgnoreScroll indicates we + // will send topTouchCancel to handle canceling touch events instead + topLevelType === 'topScroll' && !nativeEvent.responderIgnoreScroll || trackedTouchCount > 0 && topLevelType === 'topSelectionChange' || isStartish(topLevelType) || isMoveish(topLevelType)); +} + +/** + * Returns whether or not this touch end event makes it such that there are no + * longer any touches that started inside of the current `responderInst`. + * + * @param {NativeEvent} nativeEvent Native touch end event. + * @return {boolean} Whether or not this touch end event ends the responder. + */ +function noResponderTouches(nativeEvent) { + var touches = nativeEvent.touches; + if (!touches || touches.length === 0) { + return true; + } + for (var i = 0; i < touches.length; i++) { + var activeTouch = touches[i]; + var target = activeTouch.target; + if (target !== null && target !== undefined && target !== 0) { + // Is the original touch location inside of the current responder? + var targetInst = EventPluginUtils.getInstanceFromNode(target); + if (EventPluginUtils.isAncestor(responderInst, targetInst)) { + return false; + } + } + } + return true; +} + +var ResponderEventPlugin = { + + /* For unit testing only */ + _getResponderID: function () { + return responderInst ? responderInst._rootNodeID : null; + }, + + eventTypes: eventTypes, + + /** + * We must be resilient to `targetInst` being `null` on `touchMove` or + * `touchEnd`. On certain platforms, this means that a native scroll has + * assumed control and the original touch targets are destroyed. + */ + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + if (isStartish(topLevelType)) { + trackedTouchCount += 1; + } else if (isEndish(topLevelType)) { + if (trackedTouchCount >= 0) { + trackedTouchCount -= 1; + } else { + console.error('Ended a touch event which was not counted in `trackedTouchCount`.'); + return null; + } + } + + ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent); + + var extracted = canTriggerTransfer(topLevelType, targetInst, nativeEvent) ? setResponderAndExtractTransfer(topLevelType, targetInst, nativeEvent, nativeEventTarget) : null; + // Responder may or may not have transferred on a new touch start/move. + // Regardless, whoever is the responder after any potential transfer, we + // direct all touch start/move/ends to them in the form of + // `onResponderMove/Start/End`. These will be called for *every* additional + // finger that move/start/end, dispatched directly to whoever is the + // current responder at that moment, until the responder is "released". + // + // These multiple individual change touch events are are always bookended + // by `onResponderGrant`, and one of + // (`onResponderRelease/onResponderTerminate`). + var isResponderTouchStart = responderInst && isStartish(topLevelType); + var isResponderTouchMove = responderInst && isMoveish(topLevelType); + var isResponderTouchEnd = responderInst && isEndish(topLevelType); + var incrementalTouch = isResponderTouchStart ? eventTypes.responderStart : isResponderTouchMove ? eventTypes.responderMove : isResponderTouchEnd ? eventTypes.responderEnd : null; + + if (incrementalTouch) { + var gesture = ResponderSyntheticEvent.getPooled(incrementalTouch, responderInst, nativeEvent, nativeEventTarget); + gesture.touchHistory = ResponderTouchHistoryStore.touchHistory; + EventPropagators.accumulateDirectDispatches(gesture); + extracted = accumulate(extracted, gesture); + } + + var isResponderTerminate = responderInst && topLevelType === 'topTouchCancel'; + var isResponderRelease = responderInst && !isResponderTerminate && isEndish(topLevelType) && noResponderTouches(nativeEvent); + var finalTouch = isResponderTerminate ? eventTypes.responderTerminate : isResponderRelease ? eventTypes.responderRelease : null; + if (finalTouch) { + var finalEvent = ResponderSyntheticEvent.getPooled(finalTouch, responderInst, nativeEvent, nativeEventTarget); + finalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; + EventPropagators.accumulateDirectDispatches(finalEvent); + extracted = accumulate(extracted, finalEvent); + changeResponder(null); + } + + var numberActiveTouches = ResponderTouchHistoryStore.touchHistory.numberActiveTouches; + if (ResponderEventPlugin.GlobalInteractionHandler && numberActiveTouches !== previousActiveTouches) { + ResponderEventPlugin.GlobalInteractionHandler.onChange(numberActiveTouches); + } + previousActiveTouches = numberActiveTouches; + + return extracted; + }, + + GlobalResponderHandler: null, + GlobalInteractionHandler: null, + + injection: { + /** + * @param {{onChange: (ReactID, ReactID) => void} GlobalResponderHandler + * Object that handles any change in responder. Use this to inject + * integration with an existing touch handling system etc. + */ + injectGlobalResponderHandler: function (GlobalResponderHandler) { + ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler; + }, + + /** + * @param {{onChange: (numberActiveTouches) => void} GlobalInteractionHandler + * Object that handles any change in the number of active touches. + */ + injectGlobalInteractionHandler: function (GlobalInteractionHandler) { + ResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler; + } + } +}; + +module.exports = ResponderEventPlugin; + +/***/ }), +/* 268 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticEvent = __webpack_require__(15); + +/** + * `touchHistory` isn't actually on the native event, but putting it in the + * interface will ensure that it is cleaned up when pooled/destroyed. The + * `ResponderEventPlugin` will populate it appropriately. + */ +var ResponderEventInterface = { + touchHistory: function (nativeEvent) { + return null; // Actually doesn't even look at the native event. + } +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native event. + * @extends {SyntheticEvent} + */ +function ResponderSyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticEvent.augmentClass(ResponderSyntheticEvent, ResponderEventInterface); + +module.exports = ResponderSyntheticEvent; + +/***/ }), +/* 269 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var NS = { + xlink: 'http://www.w3.org/1999/xlink', + xml: 'http://www.w3.org/XML/1998/namespace' +}; + +// We use attributes for everything SVG so let's avoid some duplication and run +// code instead. +// The following are all specified in the HTML config already so we exclude here. +// - class (as className) +// - color +// - height +// - id +// - lang +// - max +// - media +// - method +// - min +// - name +// - style +// - target +// - type +// - width +var ATTRS = { + accentHeight: 'accent-height', + accumulate: 0, + additive: 0, + alignmentBaseline: 'alignment-baseline', + allowReorder: 'allowReorder', + alphabetic: 0, + amplitude: 0, + arabicForm: 'arabic-form', + ascent: 0, + attributeName: 'attributeName', + attributeType: 'attributeType', + autoReverse: 'autoReverse', + azimuth: 0, + baseFrequency: 'baseFrequency', + baseProfile: 'baseProfile', + baselineShift: 'baseline-shift', + bbox: 0, + begin: 0, + bias: 0, + by: 0, + calcMode: 'calcMode', + capHeight: 'cap-height', + clip: 0, + clipPath: 'clip-path', + clipRule: 'clip-rule', + clipPathUnits: 'clipPathUnits', + colorInterpolation: 'color-interpolation', + colorInterpolationFilters: 'color-interpolation-filters', + colorProfile: 'color-profile', + colorRendering: 'color-rendering', + contentScriptType: 'contentScriptType', + contentStyleType: 'contentStyleType', + cursor: 0, + cx: 0, + cy: 0, + d: 0, + decelerate: 0, + descent: 0, + diffuseConstant: 'diffuseConstant', + direction: 0, + display: 0, + divisor: 0, + dominantBaseline: 'dominant-baseline', + dur: 0, + dx: 0, + dy: 0, + edgeMode: 'edgeMode', + elevation: 0, + enableBackground: 'enable-background', + end: 0, + exponent: 0, + externalResourcesRequired: 'externalResourcesRequired', + fill: 0, + fillOpacity: 'fill-opacity', + fillRule: 'fill-rule', + filter: 0, + filterRes: 'filterRes', + filterUnits: 'filterUnits', + floodColor: 'flood-color', + floodOpacity: 'flood-opacity', + focusable: 0, + fontFamily: 'font-family', + fontSize: 'font-size', + fontSizeAdjust: 'font-size-adjust', + fontStretch: 'font-stretch', + fontStyle: 'font-style', + fontVariant: 'font-variant', + fontWeight: 'font-weight', + format: 0, + from: 0, + fx: 0, + fy: 0, + g1: 0, + g2: 0, + glyphName: 'glyph-name', + glyphOrientationHorizontal: 'glyph-orientation-horizontal', + glyphOrientationVertical: 'glyph-orientation-vertical', + glyphRef: 'glyphRef', + gradientTransform: 'gradientTransform', + gradientUnits: 'gradientUnits', + hanging: 0, + horizAdvX: 'horiz-adv-x', + horizOriginX: 'horiz-origin-x', + ideographic: 0, + imageRendering: 'image-rendering', + 'in': 0, + in2: 0, + intercept: 0, + k: 0, + k1: 0, + k2: 0, + k3: 0, + k4: 0, + kernelMatrix: 'kernelMatrix', + kernelUnitLength: 'kernelUnitLength', + kerning: 0, + keyPoints: 'keyPoints', + keySplines: 'keySplines', + keyTimes: 'keyTimes', + lengthAdjust: 'lengthAdjust', + letterSpacing: 'letter-spacing', + lightingColor: 'lighting-color', + limitingConeAngle: 'limitingConeAngle', + local: 0, + markerEnd: 'marker-end', + markerMid: 'marker-mid', + markerStart: 'marker-start', + markerHeight: 'markerHeight', + markerUnits: 'markerUnits', + markerWidth: 'markerWidth', + mask: 0, + maskContentUnits: 'maskContentUnits', + maskUnits: 'maskUnits', + mathematical: 0, + mode: 0, + numOctaves: 'numOctaves', + offset: 0, + opacity: 0, + operator: 0, + order: 0, + orient: 0, + orientation: 0, + origin: 0, + overflow: 0, + overlinePosition: 'overline-position', + overlineThickness: 'overline-thickness', + paintOrder: 'paint-order', + panose1: 'panose-1', + pathLength: 'pathLength', + patternContentUnits: 'patternContentUnits', + patternTransform: 'patternTransform', + patternUnits: 'patternUnits', + pointerEvents: 'pointer-events', + points: 0, + pointsAtX: 'pointsAtX', + pointsAtY: 'pointsAtY', + pointsAtZ: 'pointsAtZ', + preserveAlpha: 'preserveAlpha', + preserveAspectRatio: 'preserveAspectRatio', + primitiveUnits: 'primitiveUnits', + r: 0, + radius: 0, + refX: 'refX', + refY: 'refY', + renderingIntent: 'rendering-intent', + repeatCount: 'repeatCount', + repeatDur: 'repeatDur', + requiredExtensions: 'requiredExtensions', + requiredFeatures: 'requiredFeatures', + restart: 0, + result: 0, + rotate: 0, + rx: 0, + ry: 0, + scale: 0, + seed: 0, + shapeRendering: 'shape-rendering', + slope: 0, + spacing: 0, + specularConstant: 'specularConstant', + specularExponent: 'specularExponent', + speed: 0, + spreadMethod: 'spreadMethod', + startOffset: 'startOffset', + stdDeviation: 'stdDeviation', + stemh: 0, + stemv: 0, + stitchTiles: 'stitchTiles', + stopColor: 'stop-color', + stopOpacity: 'stop-opacity', + strikethroughPosition: 'strikethrough-position', + strikethroughThickness: 'strikethrough-thickness', + string: 0, + stroke: 0, + strokeDasharray: 'stroke-dasharray', + strokeDashoffset: 'stroke-dashoffset', + strokeLinecap: 'stroke-linecap', + strokeLinejoin: 'stroke-linejoin', + strokeMiterlimit: 'stroke-miterlimit', + strokeOpacity: 'stroke-opacity', + strokeWidth: 'stroke-width', + surfaceScale: 'surfaceScale', + systemLanguage: 'systemLanguage', + tableValues: 'tableValues', + targetX: 'targetX', + targetY: 'targetY', + textAnchor: 'text-anchor', + textDecoration: 'text-decoration', + textRendering: 'text-rendering', + textLength: 'textLength', + to: 0, + transform: 0, + u1: 0, + u2: 0, + underlinePosition: 'underline-position', + underlineThickness: 'underline-thickness', + unicode: 0, + unicodeBidi: 'unicode-bidi', + unicodeRange: 'unicode-range', + unitsPerEm: 'units-per-em', + vAlphabetic: 'v-alphabetic', + vHanging: 'v-hanging', + vIdeographic: 'v-ideographic', + vMathematical: 'v-mathematical', + values: 0, + vectorEffect: 'vector-effect', + version: 0, + vertAdvY: 'vert-adv-y', + vertOriginX: 'vert-origin-x', + vertOriginY: 'vert-origin-y', + viewBox: 'viewBox', + viewTarget: 'viewTarget', + visibility: 0, + widths: 0, + wordSpacing: 'word-spacing', + writingMode: 'writing-mode', + x: 0, + xHeight: 'x-height', + x1: 0, + x2: 0, + xChannelSelector: 'xChannelSelector', + xlinkActuate: 'xlink:actuate', + xlinkArcrole: 'xlink:arcrole', + xlinkHref: 'xlink:href', + xlinkRole: 'xlink:role', + xlinkShow: 'xlink:show', + xlinkTitle: 'xlink:title', + xlinkType: 'xlink:type', + xmlBase: 'xml:base', + xmlns: 0, + xmlnsXlink: 'xmlns:xlink', + xmlLang: 'xml:lang', + xmlSpace: 'xml:space', + y: 0, + y1: 0, + y2: 0, + yChannelSelector: 'yChannelSelector', + z: 0, + zoomAndPan: 'zoomAndPan' +}; + +var SVGDOMPropertyConfig = { + Properties: {}, + DOMAttributeNamespaces: { + xlinkActuate: NS.xlink, + xlinkArcrole: NS.xlink, + xlinkHref: NS.xlink, + xlinkRole: NS.xlink, + xlinkShow: NS.xlink, + xlinkTitle: NS.xlink, + xlinkType: NS.xlink, + xmlBase: NS.xml, + xmlLang: NS.xml, + xmlSpace: NS.xml + }, + DOMAttributeNames: {} +}; + +Object.keys(ATTRS).forEach(function (key) { + SVGDOMPropertyConfig.Properties[key] = 0; + if (ATTRS[key]) { + SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key]; + } +}); + +module.exports = SVGDOMPropertyConfig; + +/***/ }), +/* 270 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var EventPropagators = __webpack_require__(28); +var ExecutionEnvironment = __webpack_require__(4); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactInputSelection = __webpack_require__(123); +var SyntheticEvent = __webpack_require__(15); + +var getActiveElement = __webpack_require__(108); +var isTextInputElement = __webpack_require__(134); +var shallowEqual = __webpack_require__(65); + +var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11; + +var eventTypes = { + select: { + phasedRegistrationNames: { + bubbled: 'onSelect', + captured: 'onSelectCapture' + }, + dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange'] + } +}; + +var activeElement = null; +var activeElementInst = null; +var lastSelection = null; +var mouseDown = false; + +// Track whether a listener exists for this plugin. If none exist, we do +// not extract events. See #3639. +var hasListener = false; + +/** + * Get an object which is a unique representation of the current selection. + * + * The return value will not be consistent across nodes or browsers, but + * two identical selections on the same node will return identical objects. + * + * @param {DOMElement} node + * @return {object} + */ +function getSelection(node) { + if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) { + return { + start: node.selectionStart, + end: node.selectionEnd + }; + } else if (window.getSelection) { + var selection = window.getSelection(); + return { + anchorNode: selection.anchorNode, + anchorOffset: selection.anchorOffset, + focusNode: selection.focusNode, + focusOffset: selection.focusOffset + }; + } else if (document.selection) { + var range = document.selection.createRange(); + return { + parentElement: range.parentElement(), + text: range.text, + top: range.boundingTop, + left: range.boundingLeft + }; + } +} + +/** + * Poll selection to see whether it's changed. + * + * @param {object} nativeEvent + * @return {?SyntheticEvent} + */ +function constructSelectEvent(nativeEvent, nativeEventTarget) { + // Ensure we have the right element, and that the user is not dragging a + // selection (this matches native `select` event behavior). In HTML5, select + // fires only on input and textarea thus if there's no focused element we + // won't dispatch. + if (mouseDown || activeElement == null || activeElement !== getActiveElement()) { + return null; + } + + // Only fire when selection has actually changed. + var currentSelection = getSelection(activeElement); + if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) { + lastSelection = currentSelection; + + var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget); + + syntheticEvent.type = 'select'; + syntheticEvent.target = activeElement; + + EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent); + + return syntheticEvent; + } + + return null; +} + +/** + * This plugin creates an `onSelect` event that normalizes select events + * across form elements. + * + * Supported elements are: + * - input (see `isTextInputElement`) + * - textarea + * - contentEditable + * + * This differs from native browser implementations in the following ways: + * - Fires on contentEditable fields as well as inputs. + * - Fires for collapsed selection. + * - Fires after user input. + */ +var SelectEventPlugin = { + + eventTypes: eventTypes, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + if (!hasListener) { + return null; + } + + var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window; + + switch (topLevelType) { + // Track the input node that has focus. + case 'topFocus': + if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') { + activeElement = targetNode; + activeElementInst = targetInst; + lastSelection = null; + } + break; + case 'topBlur': + activeElement = null; + activeElementInst = null; + lastSelection = null; + break; + + // Don't fire the event while the user is dragging. This matches the + // semantics of the native select event. + case 'topMouseDown': + mouseDown = true; + break; + case 'topContextMenu': + case 'topMouseUp': + mouseDown = false; + return constructSelectEvent(nativeEvent, nativeEventTarget); + + // Chrome and IE fire non-standard event when selection is changed (and + // sometimes when it hasn't). IE's event fires out of order with respect + // to key and input events on deletion, so we discard it. + // + // Firefox doesn't support selectionchange, so check selection status + // after each key entry. The selection changes after keydown and before + // keyup, but we check on keydown as well in the case of holding down a + // key, when multiple keydown events are fired but only one keyup is. + // This is also our approach for IE handling, for the reason above. + case 'topSelectionChange': + if (skipSelectionChangeEvent) { + break; + } + // falls through + case 'topKeyDown': + case 'topKeyUp': + return constructSelectEvent(nativeEvent, nativeEventTarget); + } + + return null; + }, + + didPutListener: function (inst, registrationName, listener) { + if (registrationName === 'onSelect') { + hasListener = true; + } + } +}; + +module.exports = SelectEventPlugin; + +/***/ }), +/* 271 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var EventListener = __webpack_require__(105); +var EventPropagators = __webpack_require__(28); +var ReactDOMComponentTree = __webpack_require__(7); +var SyntheticAnimationEvent = __webpack_require__(272); +var SyntheticClipboardEvent = __webpack_require__(273); +var SyntheticEvent = __webpack_require__(15); +var SyntheticFocusEvent = __webpack_require__(276); +var SyntheticKeyboardEvent = __webpack_require__(278); +var SyntheticMouseEvent = __webpack_require__(54); +var SyntheticDragEvent = __webpack_require__(275); +var SyntheticTouchEvent = __webpack_require__(279); +var SyntheticTransitionEvent = __webpack_require__(280); +var SyntheticUIEvent = __webpack_require__(42); +var SyntheticWheelEvent = __webpack_require__(281); + +var emptyFunction = __webpack_require__(10); +var getEventCharCode = __webpack_require__(75); +var invariant = __webpack_require__(0); + +/** + * Turns + * ['abort', ...] + * into + * eventTypes = { + * 'abort': { + * phasedRegistrationNames: { + * bubbled: 'onAbort', + * captured: 'onAbortCapture', + * }, + * dependencies: ['topAbort'], + * }, + * ... + * }; + * topLevelEventsToDispatchConfig = { + * 'topAbort': { sameConfig } + * }; + */ +var eventTypes = {}; +var topLevelEventsToDispatchConfig = {}; +['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) { + var capitalizedEvent = event[0].toUpperCase() + event.slice(1); + var onEvent = 'on' + capitalizedEvent; + var topEvent = 'top' + capitalizedEvent; + + var type = { + phasedRegistrationNames: { + bubbled: onEvent, + captured: onEvent + 'Capture' + }, + dependencies: [topEvent] + }; + eventTypes[event] = type; + topLevelEventsToDispatchConfig[topEvent] = type; +}); + +var onClickListeners = {}; + +function getDictionaryKey(inst) { + // Prevents V8 performance issue: + // https://github.com/facebook/react/pull/7232 + return '.' + inst._rootNodeID; +} + +function isInteractive(tag) { + return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; +} + +var SimpleEventPlugin = { + + eventTypes: eventTypes, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType]; + if (!dispatchConfig) { + return null; + } + var EventConstructor; + switch (topLevelType) { + case 'topAbort': + case 'topCanPlay': + case 'topCanPlayThrough': + case 'topDurationChange': + case 'topEmptied': + case 'topEncrypted': + case 'topEnded': + case 'topError': + case 'topInput': + case 'topInvalid': + case 'topLoad': + case 'topLoadedData': + case 'topLoadedMetadata': + case 'topLoadStart': + case 'topPause': + case 'topPlay': + case 'topPlaying': + case 'topProgress': + case 'topRateChange': + case 'topReset': + case 'topSeeked': + case 'topSeeking': + case 'topStalled': + case 'topSubmit': + case 'topSuspend': + case 'topTimeUpdate': + case 'topVolumeChange': + case 'topWaiting': + // HTML Events + // @see http://www.w3.org/TR/html5/index.html#events-0 + EventConstructor = SyntheticEvent; + break; + case 'topKeyPress': + // Firefox creates a keypress event for function keys too. This removes + // the unwanted keypress events. Enter is however both printable and + // non-printable. One would expect Tab to be as well (but it isn't). + if (getEventCharCode(nativeEvent) === 0) { + return null; + } + /* falls through */ + case 'topKeyDown': + case 'topKeyUp': + EventConstructor = SyntheticKeyboardEvent; + break; + case 'topBlur': + case 'topFocus': + EventConstructor = SyntheticFocusEvent; + break; + case 'topClick': + // Firefox creates a click event on right mouse clicks. This removes the + // unwanted click events. + if (nativeEvent.button === 2) { + return null; + } + /* falls through */ + case 'topDoubleClick': + case 'topMouseDown': + case 'topMouseMove': + case 'topMouseUp': + // TODO: Disabled elements should not respond to mouse events + /* falls through */ + case 'topMouseOut': + case 'topMouseOver': + case 'topContextMenu': + EventConstructor = SyntheticMouseEvent; + break; + case 'topDrag': + case 'topDragEnd': + case 'topDragEnter': + case 'topDragExit': + case 'topDragLeave': + case 'topDragOver': + case 'topDragStart': + case 'topDrop': + EventConstructor = SyntheticDragEvent; + break; + case 'topTouchCancel': + case 'topTouchEnd': + case 'topTouchMove': + case 'topTouchStart': + EventConstructor = SyntheticTouchEvent; + break; + case 'topAnimationEnd': + case 'topAnimationIteration': + case 'topAnimationStart': + EventConstructor = SyntheticAnimationEvent; + break; + case 'topTransitionEnd': + EventConstructor = SyntheticTransitionEvent; + break; + case 'topScroll': + EventConstructor = SyntheticUIEvent; + break; + case 'topWheel': + EventConstructor = SyntheticWheelEvent; + break; + case 'topCopy': + case 'topCut': + case 'topPaste': + EventConstructor = SyntheticClipboardEvent; + break; + } + !EventConstructor ? true ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0; + var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget); + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; + }, + + didPutListener: function (inst, registrationName, listener) { + // Mobile Safari does not fire properly bubble click events on + // non-interactive elements, which means delegated click listeners do not + // fire. The workaround for this bug involves attaching an empty click + // listener on the target node. + // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html + if (registrationName === 'onClick' && !isInteractive(inst._tag)) { + var key = getDictionaryKey(inst); + var node = ReactDOMComponentTree.getNodeFromInstance(inst); + if (!onClickListeners[key]) { + onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction); + } + } + }, + + willDeleteListener: function (inst, registrationName) { + if (registrationName === 'onClick' && !isInteractive(inst._tag)) { + var key = getDictionaryKey(inst); + onClickListeners[key].remove(); + delete onClickListeners[key]; + } + } + +}; + +module.exports = SimpleEventPlugin; + +/***/ }), +/* 272 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticEvent = __webpack_require__(15); + +/** + * @interface Event + * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface + * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent + */ +var AnimationEventInterface = { + animationName: null, + elapsedTime: null, + pseudoElement: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticEvent} + */ +function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface); + +module.exports = SyntheticAnimationEvent; + +/***/ }), +/* 273 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticEvent = __webpack_require__(15); + +/** + * @interface Event + * @see http://www.w3.org/TR/clipboard-apis/ + */ +var ClipboardEventInterface = { + clipboardData: function (event) { + return 'clipboardData' in event ? event.clipboardData : window.clipboardData; + } +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface); + +module.exports = SyntheticClipboardEvent; + +/***/ }), +/* 274 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticEvent = __webpack_require__(15); + +/** + * @interface Event + * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents + */ +var CompositionEventInterface = { + data: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface); + +module.exports = SyntheticCompositionEvent; + +/***/ }), +/* 275 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticMouseEvent = __webpack_require__(54); + +/** + * @interface DragEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var DragEventInterface = { + dataTransfer: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface); + +module.exports = SyntheticDragEvent; + +/***/ }), +/* 276 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticUIEvent = __webpack_require__(42); + +/** + * @interface FocusEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var FocusEventInterface = { + relatedTarget: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface); + +module.exports = SyntheticFocusEvent; + +/***/ }), +/* 277 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticEvent = __webpack_require__(15); + +/** + * @interface Event + * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105 + * /#events-inputevents + */ +var InputEventInterface = { + data: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface); + +module.exports = SyntheticInputEvent; + +/***/ }), +/* 278 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticUIEvent = __webpack_require__(42); + +var getEventCharCode = __webpack_require__(75); +var getEventKey = __webpack_require__(288); +var getEventModifierState = __webpack_require__(76); + +/** + * @interface KeyboardEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var KeyboardEventInterface = { + key: getEventKey, + location: null, + ctrlKey: null, + shiftKey: null, + altKey: null, + metaKey: null, + repeat: null, + locale: null, + getModifierState: getEventModifierState, + // Legacy Interface + charCode: function (event) { + // `charCode` is the result of a KeyPress event and represents the value of + // the actual printable character. + + // KeyPress is deprecated, but its replacement is not yet final and not + // implemented in any major browser. Only KeyPress has charCode. + if (event.type === 'keypress') { + return getEventCharCode(event); + } + return 0; + }, + keyCode: function (event) { + // `keyCode` is the result of a KeyDown/Up event and represents the value of + // physical keyboard key. + + // The actual meaning of the value depends on the users' keyboard layout + // which cannot be detected. Assuming that it is a US keyboard layout + // provides a surprisingly accurate mapping for US and European users. + // Due to this, it is left to the user to implement at this time. + if (event.type === 'keydown' || event.type === 'keyup') { + return event.keyCode; + } + return 0; + }, + which: function (event) { + // `which` is an alias for either `keyCode` or `charCode` depending on the + // type of the event. + if (event.type === 'keypress') { + return getEventCharCode(event); + } + if (event.type === 'keydown' || event.type === 'keyup') { + return event.keyCode; + } + return 0; + } +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface); + +module.exports = SyntheticKeyboardEvent; + +/***/ }), +/* 279 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticUIEvent = __webpack_require__(42); + +var getEventModifierState = __webpack_require__(76); + +/** + * @interface TouchEvent + * @see http://www.w3.org/TR/touch-events/ + */ +var TouchEventInterface = { + touches: null, + targetTouches: null, + changedTouches: null, + altKey: null, + metaKey: null, + ctrlKey: null, + shiftKey: null, + getModifierState: getEventModifierState +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ +function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface); + +module.exports = SyntheticTouchEvent; + +/***/ }), +/* 280 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticEvent = __webpack_require__(15); + +/** + * @interface Event + * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events- + * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent + */ +var TransitionEventInterface = { + propertyName: null, + elapsedTime: null, + pseudoElement: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticEvent} + */ +function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface); + +module.exports = SyntheticTransitionEvent; + +/***/ }), +/* 281 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var SyntheticMouseEvent = __webpack_require__(54); + +/** + * @interface WheelEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var WheelEventInterface = { + deltaX: function (event) { + return 'deltaX' in event ? event.deltaX : + // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive). + 'wheelDeltaX' in event ? -event.wheelDeltaX : 0; + }, + deltaY: function (event) { + return 'deltaY' in event ? event.deltaY : + // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive). + 'wheelDeltaY' in event ? -event.wheelDeltaY : + // Fallback to `wheelDelta` for IE<9 and normalize (down is positive). + 'wheelDelta' in event ? -event.wheelDelta : 0; + }, + deltaZ: null, + + // Browsers without "deltaMode" is reporting in raw wheel delta where one + // notch on the scroll is always +/- 120, roughly equivalent to pixels. + // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or + // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size. + deltaMode: null +}; + +/** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticMouseEvent} + */ +function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); +} + +SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface); + +module.exports = SyntheticWheelEvent; + +/***/ }), +/* 282 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var invariant = __webpack_require__(0); + +/** + * Accumulates items that must not be null or undefined. + * + * This is used to conserve memory by avoiding array allocations. + * + * @return {*|array<*>} An accumulation of items. + */ +function accumulate(current, next) { + !(next != null) ? true ? invariant(false, 'accumulate(...): Accumulated items must be not be null or undefined.') : _prodInvariant('29') : void 0; + + if (current == null) { + return next; + } + + // Both are not empty. Warning: Never call x.concat(y) when you are not + // certain that x is an Array (x could be a string with concat method). + if (Array.isArray(current)) { + return current.concat(next); + } + + if (Array.isArray(next)) { + return [current].concat(next); + } + + return [current, next]; +} + +module.exports = accumulate; + +/***/ }), +/* 283 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var MOD = 65521; + +// adler32 is not cryptographically strong, and is only used to sanity check that +// markup generated on the server matches the markup generated on the client. +// This implementation (a modified version of the SheetJS version) has been optimized +// for our use case, at the expense of conforming to the adler32 specification +// for non-ascii inputs. +function adler32(data) { + var a = 1; + var b = 0; + var i = 0; + var l = data.length; + var m = l & ~0x3; + while (i < m) { + var n = Math.min(i + 4096, m); + for (; i < n; i += 4) { + b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3)); + } + a %= MOD; + b %= MOD; + } + for (; i < l; i++) { + b += a += data.charCodeAt(i); + } + a %= MOD; + b %= MOD; + return a | b << 16; +} + +module.exports = adler32; + +/***/ }), +/* 284 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var ReactPropTypeLocationNames = __webpack_require__(261); +var ReactPropTypesSecret = __webpack_require__(126); + +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var ReactComponentTreeHook; + +if (typeof process !== 'undefined' && process.env && "development" === 'test') { + // Temporary hack. + // Inline requires don't work well with Jest: + // https://github.com/facebook/react/issues/7240 + // Remove the inline requires when we don't need them anymore: + // https://github.com/facebook/react/pull/7178 + ReactComponentTreeHook = __webpack_require__(13); +} + +var loggedTypeFailures = {}; + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?object} element The React element that is being type-checked + * @param {?number} debugID The React component instance that is being type-checked + * @private + */ +function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) { + for (var typeSpecName in typeSpecs) { + if (typeSpecs.hasOwnProperty(typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + !(typeof typeSpecs[typeSpecName] === 'function') ? true ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0; + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + true ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0; + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var componentStackInfo = ''; + + if (true) { + if (!ReactComponentTreeHook) { + ReactComponentTreeHook = __webpack_require__(13); + } + if (debugID !== null) { + componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID); + } else if (element !== null) { + componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element); + } + } + + true ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0; + } + } + } +} + +module.exports = checkReactTypeSpec; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(66))) + +/***/ }), +/* 285 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var CSSProperty = __webpack_require__(115); +var warning = __webpack_require__(1); + +var isUnitlessNumber = CSSProperty.isUnitlessNumber; +var styleWarnings = {}; + +/** + * Convert a value into the proper css writable value. The style name `name` + * should be logical (no hyphens), as specified + * in `CSSProperty.isUnitlessNumber`. + * + * @param {string} name CSS property name such as `topMargin`. + * @param {*} value CSS property value such as `10px`. + * @param {ReactDOMComponent} component + * @return {string} Normalized style value with dimensions applied. + */ +function dangerousStyleValue(name, value, component) { + // Note that we've removed escapeTextForBrowser() calls here since the + // whole string will be escaped when the attribute is injected into + // the markup. If you provide unsafe user data here they can inject + // arbitrary CSS which may be problematic (I couldn't repro this): + // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet + // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/ + // This is not an XSS hole but instead a potential CSS injection issue + // which has lead to a greater discussion about how we're going to + // trust URLs moving forward. See #2115901 + + var isEmpty = value == null || typeof value === 'boolean' || value === ''; + if (isEmpty) { + return ''; + } + + var isNonNumeric = isNaN(value); + if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) { + return '' + value; // cast to string + } + + if (typeof value === 'string') { + if (true) { + // Allow '0' to pass through without warning. 0 is already special and + // doesn't require units, so we don't need to warn about it. + if (component && value !== '0') { + var owner = component._currentElement._owner; + var ownerName = owner ? owner.getName() : null; + if (ownerName && !styleWarnings[ownerName]) { + styleWarnings[ownerName] = {}; + } + var warned = false; + if (ownerName) { + var warnings = styleWarnings[ownerName]; + warned = warnings[name]; + if (!warned) { + warnings[name] = true; + } + } + if (!warned) { + true ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0; + } + } + } + value = value.trim(); + } + return value + 'px'; +} + +module.exports = dangerousStyleValue; + +/***/ }), +/* 286 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(2); + +var ReactCurrentOwner = __webpack_require__(17); +var ReactDOMComponentTree = __webpack_require__(7); +var ReactInstanceMap = __webpack_require__(41); + +var getHostComponentFromComposite = __webpack_require__(131); +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +/** + * Returns the DOM node rendered by this element. + * + * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode + * + * @param {ReactComponent|DOMElement} componentOrElement + * @return {?DOMElement} The root node of this element. + */ +function findDOMNode(componentOrElement) { + if (true) { + var owner = ReactCurrentOwner.current; + if (owner !== null) { + true ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0; + owner._warnedAboutRefsInRender = true; + } + } + if (componentOrElement == null) { + return null; + } + if (componentOrElement.nodeType === 1) { + return componentOrElement; + } + + var inst = ReactInstanceMap.get(componentOrElement); + if (inst) { + inst = getHostComponentFromComposite(inst); + return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null; + } + + if (typeof componentOrElement.render === 'function') { + true ? true ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0; + } else { + true ? true ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0; + } +} + +module.exports = findDOMNode; + +/***/ }), +/* 287 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * 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. + * + * + */ + + + +var KeyEscapeUtils = __webpack_require__(69); +var traverseAllChildren = __webpack_require__(136); +var warning = __webpack_require__(1); + +var ReactComponentTreeHook; + +if (typeof process !== 'undefined' && process.env && "development" === 'test') { + // Temporary hack. + // Inline requires don't work well with Jest: + // https://github.com/facebook/react/issues/7240 + // Remove the inline requires when we don't need them anymore: + // https://github.com/facebook/react/pull/7178 + ReactComponentTreeHook = __webpack_require__(13); +} + +/** + * @param {function} traverseContext Context passed through traversal. + * @param {?ReactComponent} child React child component. + * @param {!string} name String name of key path to child. + * @param {number=} selfDebugID Optional debugID of the current internal instance. + */ +function flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) { + // We found a component instance. + if (traverseContext && typeof traverseContext === 'object') { + var result = traverseContext; + var keyUnique = result[name] === undefined; + if (true) { + if (!ReactComponentTreeHook) { + ReactComponentTreeHook = __webpack_require__(13); + } + if (!keyUnique) { + true ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0; + } + } + if (keyUnique && child != null) { + result[name] = child; + } + } +} + +/** + * Flattens children that are typically specified as `props.children`. Any null + * children will not be included in the resulting object. + * @return {!object} flattened children keyed by name. + */ +function flattenChildren(children, selfDebugID) { + if (children == null) { + return children; + } + var result = {}; + + if (true) { + traverseAllChildren(children, function (traverseContext, child, name) { + return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID); + }, result); + } else { + traverseAllChildren(children, flattenSingleChildIntoContext, result); + } + return result; +} + +module.exports = flattenChildren; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(66))) + +/***/ }), +/* 288 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var getEventCharCode = __webpack_require__(75); + +/** + * Normalization of deprecated HTML5 `key` values + * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names + */ +var normalizeKey = { + 'Esc': 'Escape', + 'Spacebar': ' ', + 'Left': 'ArrowLeft', + 'Up': 'ArrowUp', + 'Right': 'ArrowRight', + 'Down': 'ArrowDown', + 'Del': 'Delete', + 'Win': 'OS', + 'Menu': 'ContextMenu', + 'Apps': 'ContextMenu', + 'Scroll': 'ScrollLock', + 'MozPrintableKey': 'Unidentified' +}; + +/** + * Translation from legacy `keyCode` to HTML5 `key` + * Only special keys supported, all others depend on keyboard layout or browser + * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names + */ +var translateToKey = { + 8: 'Backspace', + 9: 'Tab', + 12: 'Clear', + 13: 'Enter', + 16: 'Shift', + 17: 'Control', + 18: 'Alt', + 19: 'Pause', + 20: 'CapsLock', + 27: 'Escape', + 32: ' ', + 33: 'PageUp', + 34: 'PageDown', + 35: 'End', + 36: 'Home', + 37: 'ArrowLeft', + 38: 'ArrowUp', + 39: 'ArrowRight', + 40: 'ArrowDown', + 45: 'Insert', + 46: 'Delete', + 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6', + 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12', + 144: 'NumLock', + 145: 'ScrollLock', + 224: 'Meta' +}; + +/** + * @param {object} nativeEvent Native browser event. + * @return {string} Normalized `key` property. + */ +function getEventKey(nativeEvent) { + if (nativeEvent.key) { + // Normalize inconsistent values reported by browsers due to + // implementations of a working draft specification. + + // FireFox implements `key` but returns `MozPrintableKey` for all + // printable characters (normalized to `Unidentified`), ignore it. + var key = normalizeKey[nativeEvent.key] || nativeEvent.key; + if (key !== 'Unidentified') { + return key; + } + } + + // Browser does not implement `key`, polyfill as much of it as we can. + if (nativeEvent.type === 'keypress') { + var charCode = getEventCharCode(nativeEvent); + + // The enter-key is technically both printable and non-printable and can + // thus be captured by `keypress`, no other non-printable key should. + return charCode === 13 ? 'Enter' : String.fromCharCode(charCode); + } + if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') { + // While user keyboard layout determines the actual meaning of each + // `keyCode` value, almost all function keys have a universal value. + return translateToKey[nativeEvent.keyCode] || 'Unidentified'; + } + return ''; +} + +module.exports = getEventKey; + +/***/ }), +/* 289 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +/* global Symbol */ + +var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; +var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + +/** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ +function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } +} + +module.exports = getIteratorFn; + +/***/ }), +/* 290 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +/** + * Given any node return the first leaf node without children. + * + * @param {DOMElement|DOMTextNode} node + * @return {DOMElement|DOMTextNode} + */ + +function getLeafNode(node) { + while (node && node.firstChild) { + node = node.firstChild; + } + return node; +} + +/** + * Get the next sibling within a container. This will walk up the + * DOM if a node's siblings have been exhausted. + * + * @param {DOMElement|DOMTextNode} node + * @return {?DOMElement|DOMTextNode} + */ +function getSiblingNode(node) { + while (node) { + if (node.nextSibling) { + return node.nextSibling; + } + node = node.parentNode; + } +} + +/** + * Get object describing the nodes which contain characters at offset. + * + * @param {DOMElement|DOMTextNode} root + * @param {number} offset + * @return {?object} + */ +function getNodeForCharacterOffset(root, offset) { + var node = getLeafNode(root); + var nodeStart = 0; + var nodeEnd = 0; + + while (node) { + if (node.nodeType === 3) { + nodeEnd = nodeStart + node.textContent.length; + + if (nodeStart <= offset && nodeEnd >= offset) { + return { + node: node, + offset: offset - nodeStart + }; + } + + nodeStart = nodeEnd; + } + + node = getLeafNode(getSiblingNode(node)); + } +} + +module.exports = getNodeForCharacterOffset; + +/***/ }), +/* 291 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ExecutionEnvironment = __webpack_require__(4); + +/** + * Generate a mapping of standard vendor prefixes using the defined style property and event name. + * + * @param {string} styleProp + * @param {string} eventName + * @returns {object} + */ +function makePrefixMap(styleProp, eventName) { + var prefixes = {}; + + prefixes[styleProp.toLowerCase()] = eventName.toLowerCase(); + prefixes['Webkit' + styleProp] = 'webkit' + eventName; + prefixes['Moz' + styleProp] = 'moz' + eventName; + prefixes['ms' + styleProp] = 'MS' + eventName; + prefixes['O' + styleProp] = 'o' + eventName.toLowerCase(); + + return prefixes; +} + +/** + * A list of event names to a configurable list of vendor prefixes. + */ +var vendorPrefixes = { + animationend: makePrefixMap('Animation', 'AnimationEnd'), + animationiteration: makePrefixMap('Animation', 'AnimationIteration'), + animationstart: makePrefixMap('Animation', 'AnimationStart'), + transitionend: makePrefixMap('Transition', 'TransitionEnd') +}; + +/** + * Event names that have already been detected and prefixed (if applicable). + */ +var prefixedEventNames = {}; + +/** + * Element to check for prefixes on. + */ +var style = {}; + +/** + * Bootstrap if a DOM exists. + */ +if (ExecutionEnvironment.canUseDOM) { + style = document.createElement('div').style; + + // On some platforms, in particular some releases of Android 4.x, + // the un-prefixed "animation" and "transition" properties are defined on the + // style object but the events that fire will still be prefixed, so we need + // to check if the un-prefixed events are usable, and if not remove them from the map. + if (!('AnimationEvent' in window)) { + delete vendorPrefixes.animationend.animation; + delete vendorPrefixes.animationiteration.animation; + delete vendorPrefixes.animationstart.animation; + } + + // Same as above + if (!('TransitionEvent' in window)) { + delete vendorPrefixes.transitionend.transition; + } +} + +/** + * Attempts to determine the correct vendor prefixed event name. + * + * @param {string} eventName + * @returns {string} + */ +function getVendorPrefixedEventName(eventName) { + if (prefixedEventNames[eventName]) { + return prefixedEventNames[eventName]; + } else if (!vendorPrefixes[eventName]) { + return eventName; + } + + var prefixMap = vendorPrefixes[eventName]; + + for (var styleProp in prefixMap) { + if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) { + return prefixedEventNames[eventName] = prefixMap[styleProp]; + } + } + + return ''; +} + +module.exports = getVendorPrefixedEventName; + +/***/ }), +/* 292 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var escapeTextContentForBrowser = __webpack_require__(56); + +/** + * Escapes attribute value to prevent scripting attacks. + * + * @param {*} value Value to escape. + * @return {string} An escaped string. + */ +function quoteAttributeValueForBrowser(value) { + return '"' + escapeTextContentForBrowser(value) + '"'; +} + +module.exports = quoteAttributeValueForBrowser; + +/***/ }), +/* 293 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactMount = __webpack_require__(124); + +module.exports = ReactMount.renderSubtreeIntoContainer; + +/***/ }), +/* 294 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _animated=__webpack_require__(182);var _animated2=_interopRequireDefault(_animated); +var _Image=__webpack_require__(141);var _Image2=_interopRequireDefault(_Image); +var _ScrollView=__webpack_require__(58);var _ScrollView2=_interopRequireDefault(_ScrollView); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _Text=__webpack_require__(85);var _Text2=_interopRequireDefault(_Text); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +_animated2.default.inject.FlattenStyle(_StyleSheet2.default.flatten); + +module.exports=_extends({},_animated2.default,{ + +Image:_animated2.default.createAnimatedComponent(_Image2.default), +ScrollView:_animated2.default.createAnimatedComponent(_ScrollView2.default), +Text:_animated2.default.createAnimatedComponent(_Text2.default), +View:_animated2.default.createAnimatedComponent(_View2.default)}); + +/***/ }), +/* 295 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View); +var _propTypes=__webpack_require__(3); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var + +ReactNativeApp=function(_Component){_inherits(ReactNativeApp,_Component);function ReactNativeApp(){_classCallCheck(this,ReactNativeApp);return _possibleConstructorReturn(this,(ReactNativeApp.__proto__||Object.getPrototypeOf(ReactNativeApp)).apply(this,arguments));}_createClass(ReactNativeApp,[{key:'render',value:function render() + + + + + + +{var _props= +this.props,initialProps=_props.initialProps,RootComponent=_props.rootComponent,rootTag=_props.rootTag; + +return( +_react2.default.createElement(_View2.default,{style:styles.appContainer}, +_react2.default.createElement(RootComponent,_extends({},initialProps,{rootTag:rootTag})))); + + +}}]);return ReactNativeApp;}(_react.Component); true?ReactNativeApp.propTypes={initialProps:_propTypes.object,rootComponent:_propTypes.any.isRequired,rootTag:_propTypes.any}:void 0; + + +var styles=_StyleSheet2.default.create({ + + + +appContainer:{ +position:'absolute', +left:0, +top:0, +right:0, +bottom:0}}); + + + +module.exports=ReactNativeApp; + +/***/ }), +/* 296 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + + + + + +var _react=__webpack_require__(5); +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant); +var _reactDom=__webpack_require__(51); +var _renderApplication=__webpack_require__(297);var _renderApplication2=_interopRequireDefault(_renderApplication);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var emptyObject={}; +var runnables={};var + + + + + + + + + + + + +AppRegistry=function(){function AppRegistry(){_classCallCheck(this,AppRegistry);}_createClass(AppRegistry,null,[{key:'getAppKeys',value:function getAppKeys() +{ +return Object.keys(runnables); +}},{key:'getApplication',value:function getApplication( + +appKey,appParameters){ +(0,_invariant2.default)( +runnables[appKey]&&runnables[appKey].getApplication, +'Application '+appKey+' has not been registered. '+ +'This is either due to an import error during initialization or failure to call AppRegistry.registerComponent.'); + + +return runnables[appKey].getApplication(appParameters); +}},{key:'registerComponent',value:function registerComponent( + +appKey,getComponentFunc){ +runnables[appKey]={ +getApplication:function getApplication(){var _ref=arguments.length>0&&arguments[0]!==undefined?arguments[0]:emptyObject,initialProps=_ref.initialProps;return( +(0,_renderApplication.getApplication)(getComponentFunc(),initialProps));}, +run:function run(_ref2){var _ref2$initialProps=_ref2.initialProps,initialProps=_ref2$initialProps===undefined?emptyObject:_ref2$initialProps,rootTag=_ref2.rootTag;return( +(0,_renderApplication2.default)(getComponentFunc(),initialProps,rootTag));}}; + +return appKey; +}},{key:'registerConfig',value:function registerConfig( + +config){ +config.forEach(function(_ref3){var appKey=_ref3.appKey,component=_ref3.component,run=_ref3.run; +if(run){ +AppRegistry.registerRunnable(appKey,run); +}else{ +(0,_invariant2.default)(component,'No component provider passed in'); +AppRegistry.registerComponent(appKey,component); +} +}); +}},{key:'registerRunnable',value:function registerRunnable( + + +appKey,run){ +runnables[appKey]={run:run}; +return appKey; +}},{key:'runApplication',value:function runApplication( + +appKey,appParameters){ +var isDevelopment="development"!=='production'; +var params=_extends({},appParameters); +params.rootTag='#'+params.rootTag.id; + +console.log( +'Running application "'+appKey+'" with appParams: '+JSON.stringify(params)+'. '+('development-level warnings are '+( +isDevelopment?'ON':'OFF')+', ')+('performance optimizations are '+( +isDevelopment?'OFF':'ON'))); + + +(0,_invariant2.default)( +runnables[appKey]&&runnables[appKey].run, +'Application "'+appKey+'" has not been registered. '+ +'This is either due to an import error during initialization or failure to call AppRegistry.registerComponent.'); + + +runnables[appKey].run(appParameters); +}},{key:'unmountApplicationComponentAtRootTag',value:function unmountApplicationComponentAtRootTag( + +rootTag){ +(0,_reactDom.unmountComponentAtNode)(rootTag); +}}]);return AppRegistry;}(); + + +module.exports=AppRegistry; + +/***/ }), +/* 297 */ +/***/ (function(module, exports, __webpack_require__) { + +Object.defineProperty(exports,"__esModule",{value:true});exports.default= + + + + + + + + + + + + + +renderApplication;exports. + + + + + + + + + + + + +getApplication=getApplication;var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant);var _reactDom=__webpack_require__(51);var _ReactNativeApp=__webpack_require__(295);var _ReactNativeApp2=_interopRequireDefault(_ReactNativeApp);var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet);var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function renderApplication(RootComponent,initialProps,rootTag){(0,_invariant2.default)(rootTag,'Expect to have a valid rootTag, instead got ',rootTag);var component=_react2.default.createElement(_ReactNativeApp2.default,{initialProps:initialProps,rootComponent:RootComponent,rootTag:rootTag});(0,_reactDom.render)(component,rootTag);}function getApplication(RootComponent,initialProps){ +var element=_react2.default.createElement(_ReactNativeApp2.default,{initialProps:initialProps,rootComponent:RootComponent}); +var stylesheet=_StyleSheet2.default.renderToString(); +return{element:element,stylesheet:stylesheet}; +} + +/***/ }), +/* 298 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _ExecutionEnvironment=__webpack_require__(4);var _ExecutionEnvironment2=_interopRequireDefault(_ExecutionEnvironment); +var _arrayFindIndex=__webpack_require__(104);var _arrayFindIndex2=_interopRequireDefault(_arrayFindIndex); +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var EVENT_TYPES=['change']; +var VISIBILITY_CHANGE_EVENT='visibilitychange'; + +var AppStates={ +BACKGROUND:'background', +ACTIVE:'active'}; + + +var listeners=[];var + +AppState=function(){function AppState(){_classCallCheck(this,AppState);}_createClass(AppState,null,[{key:'addEventListener',value:function addEventListener( + + + + + + + + + + + + + + + + + +type,handler){ +if(AppState.isAvailable){ +(0,_invariant2.default)( +EVENT_TYPES.indexOf(type)!==-1, +'Trying to subscribe to unknown event: "%s"', +type); + +var callback=function callback(){return handler(AppState.currentState);}; +listeners.push([handler,callback]); +document.addEventListener(VISIBILITY_CHANGE_EVENT,callback,false); +} +}},{key:'removeEventListener',value:function removeEventListener( + +type,handler){ +if(AppState.isAvailable){ +(0,_invariant2.default)( +EVENT_TYPES.indexOf(type)!==-1, +'Trying to remove listener for unknown event: "%s"', +type); + +var listenerIndex=(0,_arrayFindIndex2.default)(listeners,function(pair){return pair[0]===handler;}); +(0,_invariant2.default)( +listenerIndex!==-1, +'Trying to remove AppState listener for unregistered handler'); + +var callback=listeners[listenerIndex][1]; +document.removeEventListener(VISIBILITY_CHANGE_EVENT,callback,false); +listeners.splice(listenerIndex,1); +} +}},{key:'currentState',get:function get(){if(!AppState.isAvailable){return AppState.ACTIVE;}switch(document.visibilityState){case'hidden':case'prerender':case'unloaded':return AppStates.BACKGROUND;default:return AppStates.ACTIVE;}}}]);return AppState;}();AppState.isAvailable=_ExecutionEnvironment2.default.canUseDOM&&document.visibilityState; + + +module.exports=AppState; + +/***/ }), +/* 299 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + + +var _deepAssign=__webpack_require__(186);var _deepAssign2=_interopRequireDefault(_deepAssign);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var mergeLocalStorageItem=function mergeLocalStorageItem(key,value){ +var oldValue=window.localStorage.getItem(key); +var oldObject=JSON.parse(oldValue); +var newObject=JSON.parse(value); +var nextValue=JSON.stringify((0,_deepAssign2.default)({},oldObject,newObject)); +window.localStorage.setItem(key,nextValue); +}; + +var createPromise=function createPromise(getValue,callback){ +return new Promise(function(resolve,reject){ +try{ +var value=getValue(); +if(callback){ +callback(null,value); +} +resolve(value); +}catch(err){ +if(callback){ +callback(err); +} +reject(err); +} +}); +}; + +var createPromiseAll=function createPromiseAll(promises,callback,processResult){ +return Promise.all(promises).then( +function(result){ +var value=processResult?processResult(result):null; +callback&&callback(null,value); +return Promise.resolve(value); +}, +function(errors){ +callback&&callback(errors); +return Promise.reject(errors); +}); + +};var + +AsyncStorage=function(){function AsyncStorage(){_classCallCheck(this,AsyncStorage);}_createClass(AsyncStorage,null,[{key:'clear',value:function clear( + + + +callback){ +return createPromise(function(){ +window.localStorage.clear(); +},callback); +}},{key:'getAllKeys',value:function getAllKeys( + + + + +callback){ +return createPromise(function(){ +var numberOfKeys=window.localStorage.length; +var keys=[]; +for(var i=0;i<numberOfKeys;i+=1){ +var key=window.localStorage.key(i); +keys.push(key); +} +return keys; +},callback); +}},{key:'getItem',value:function getItem( + + + + +key,callback){ +return createPromise(function(){ +return window.localStorage.getItem(key); +},callback); +}},{key:'multiGet',value:function multiGet( + + + + + + + +keys,callback){ +var promises=keys.map(function(key){return AsyncStorage.getItem(key);}); +var processResult=function processResult(result){return result.map(function(value,i){return[keys[i],value];});}; +return createPromiseAll(promises,callback,processResult); +}},{key:'setItem',value:function setItem( + + + + +key,value,callback){ +return createPromise(function(){ +window.localStorage.setItem(key,value); +},callback); +}},{key:'multiSet',value:function multiSet( + + + + + +keyValuePairs,callback){ +var promises=keyValuePairs.map(function(item){return AsyncStorage.setItem(item[0],item[1]);}); +return createPromiseAll(promises,callback); +}},{key:'mergeItem',value:function mergeItem( + + + + +key,value,callback){ +return createPromise(function(){ +mergeLocalStorageItem(key,value); +},callback); +}},{key:'multiMerge',value:function multiMerge( + + + + + + + +keyValuePairs,callback){ +var promises=keyValuePairs.map(function(item){return AsyncStorage.mergeItem(item[0],item[1]);}); +return createPromiseAll(promises,callback); +}},{key:'removeItem',value:function removeItem( + + + + +key,callback){ +return createPromise(function(){ +return window.localStorage.removeItem(key); +},callback); +}},{key:'multiRemove',value:function multiRemove( + + + + +keys,callback){ +var promises=keys.map(function(key){return AsyncStorage.removeItem(key);}); +return createPromiseAll(promises,callback); +}}]);return AsyncStorage;}(); + + +module.exports=AsyncStorage; + +/***/ }), +/* 300 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + + +function emptyFunction(){} + +var BackAndroid={ +exitApp:emptyFunction, +addEventListener:function addEventListener(){ +return{ +remove:emptyFunction}; + +}, +removeEventListener:emptyFunction}; + + +module.exports=BackAndroid; + +/***/ }), +/* 301 */ +/***/ (function(module, exports) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var + +Clipboard=function(){function Clipboard(){_classCallCheck(this,Clipboard);}_createClass(Clipboard,null,[{key:'isSupported',value:function isSupported() +{ +return( +typeof document.queryCommandSupported==='function'&&document.queryCommandSupported('copy')); + +}},{key:'getString',value:function getString() + +{ +return Promise.resolve(''); +}},{key:'setString',value:function setString( + +text){ +var success=false; + + +var node=document.createElement('span'); +node.textContent=text; +node.style.position='absolute'; +node.style.opacity='0'; +document.body.appendChild(node); + + +var selection=window.getSelection(); +selection.removeAllRanges(); +var range=document.createRange(); +range.selectNodeContents(node); +selection.addRange(range); + + +try{ +document.execCommand('copy'); +success=true; +}catch(e){} + + +selection.removeAllRanges(); +document.body.removeChild(node); + +return success; +}}]);return Clipboard;}(); + + +module.exports=Clipboard; + +/***/ }), +/* 302 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var InteractionManager={ +Events:{ +interactionStart:'interactionStart', +interactionComplete:'interactionComplete'}, + + + + + +runAfterInteractions:function runAfterInteractions(callback){ +(0,_invariant2.default)(typeof callback==='function','Must specify a function to schedule.'); +callback(); +}, + + + + +createInteractionHandle:function createInteractionHandle(){ +return 1; +}, + + + + +clearInteractionHandle:function clearInteractionHandle(handle){ +(0,_invariant2.default)(!!handle,'Must provide a handle to clear.'); +}, + +addListener:function addListener(){}}; + + +module.exports=InteractionManager; + +/***/ }), +/* 303 */ +/***/ (function(module, exports) { + +var Linking={ +addEventListener:function addEventListener(){}, +removeEventListener:function removeEventListener(){}, +canOpenURL:function canOpenURL(){ +return Promise.resolve(true); +}, +getInitialURL:function getInitialURL(){ +return Promise.resolve(''); +}, +openURL:function openURL(url){ +try{ +iframeOpen(url); +return Promise.resolve(); +}catch(e){ +return Promise.reject(e); +} +}}; + + + + + + + + + + + + +var iframeOpen=function iframeOpen(url){ +var noOpener=url.indexOf('mailto:')!==0; +var iframe=document.createElement('iframe'); +iframe.style.display='none'; +document.body.appendChild(iframe); + +var iframeDoc=iframe.contentDocument||iframe.contentWindow.document; +var script=iframeDoc.createElement('script'); +script.text='\n window.parent = null; window.top = null; window.frameElement = null;\n var child = window.open("'+ + +url+'"); '+(noOpener&&'child.opener = null')+';\n '; + +iframeDoc.body.appendChild(script); +document.body.removeChild(iframe); +}; + +module.exports=Linking; + +/***/ }), +/* 304 */ +/***/ (function(module, exports, __webpack_require__) { + +var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[typeof Symbol==='function'?Symbol.iterator:'@@iterator'](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"])_i["return"]();}finally{if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if((typeof Symbol==='function'?Symbol.iterator:'@@iterator')in Object(arr)){return sliceIterator(arr,i);}else{throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}(); + + + + + + + +var _ExecutionEnvironment=__webpack_require__(4);var _ExecutionEnvironment2=_interopRequireDefault(_ExecutionEnvironment); +var _arrayFindIndex=__webpack_require__(104);var _arrayFindIndex2=_interopRequireDefault(_arrayFindIndex); +var _invariant=__webpack_require__(0);var _invariant2=_interopRequireDefault(_invariant);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var connection= +_ExecutionEnvironment2.default.canUseDOM&&( +window.navigator.connection|| +window.navigator.mozConnection|| +window.navigator.webkitConnection); + +var eventTypes=['change']; + +var connectionListeners=[]; + + + + + +var NetInfo={ +addEventListener:function addEventListener(type,handler){ +(0,_invariant2.default)(eventTypes.indexOf(type)!==-1,'Trying to subscribe to unknown event: "%s"',type); +if(!connection){ +console.error( +'Network Connection API is not supported. Not listening for connection type changes.'); + +return{ +remove:function remove(){}}; + +} + +connection.addEventListener(type,handler); +return{ +remove:function remove(){return NetInfo.removeEventListener(type,handler);}}; + +}, + +removeEventListener:function removeEventListener(type,handler){ +(0,_invariant2.default)(eventTypes.indexOf(type)!==-1,'Trying to subscribe to unknown event: "%s"',type); +if(!connection){ +return; +} +connection.removeEventListener(type,handler); +}, + +fetch:function fetch(){ +return new Promise(function(resolve,reject){ +try{ +resolve(connection.type); +}catch(err){ +resolve('unknown'); +} +}); +}, + +isConnected:{ +addEventListener:function addEventListener(type,handler){ +(0,_invariant2.default)( +eventTypes.indexOf(type)!==-1, +'Trying to subscribe to unknown event: "%s"', +type); + +var onlineCallback=function onlineCallback(){return handler(true);}; +var offlineCallback=function offlineCallback(){return handler(false);}; +connectionListeners.push([handler,onlineCallback,offlineCallback]); + +window.addEventListener('online',onlineCallback,false); +window.addEventListener('offline',offlineCallback,false); + +return{ +remove:function remove(){return NetInfo.isConnected.removeEventListener(type,handler);}}; + +}, + +removeEventListener:function removeEventListener(type,handler){ +(0,_invariant2.default)( +eventTypes.indexOf(type)!==-1, +'Trying to subscribe to unknown event: "%s"', +type); + + +var listenerIndex=(0,_arrayFindIndex2.default)(connectionListeners,function(pair){return pair[0]===handler;}); +(0,_invariant2.default)( +listenerIndex!==-1, +'Trying to remove NetInfo connection listener for unregistered handler');var _connectionListeners$=_slicedToArray( + +connectionListeners[listenerIndex],3),onlineCallback=_connectionListeners$[1],offlineCallback=_connectionListeners$[2]; + +window.removeEventListener('online',onlineCallback,false); +window.removeEventListener('offline',offlineCallback,false); + +connectionListeners.splice(listenerIndex,1); +}, + +fetch:function fetch(){ +return new Promise(function(resolve,reject){ +try{ +resolve(window.navigator.onLine); +}catch(err){ +resolve(true); +} +}); +}}}; + + + +module.exports=NetInfo; + +/***/ }), +/* 305 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + +var TouchHistoryMath=__webpack_require__(349); + +var currentCentroidXOfTouchesChangedAfter=TouchHistoryMath.currentCentroidXOfTouchesChangedAfter; +var currentCentroidYOfTouchesChangedAfter=TouchHistoryMath.currentCentroidYOfTouchesChangedAfter; +var previousCentroidXOfTouchesChangedAfter= +TouchHistoryMath.previousCentroidXOfTouchesChangedAfter; +var previousCentroidYOfTouchesChangedAfter= +TouchHistoryMath.previousCentroidYOfTouchesChangedAfter; +var currentCentroidX=TouchHistoryMath.currentCentroidX; +var currentCentroidY=TouchHistoryMath.currentCentroidY; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var PanResponder={ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +_initializeGestureState:function _initializeGestureState(gestureState){ +gestureState.moveX=0; +gestureState.moveY=0; +gestureState.x0=0; +gestureState.y0=0; +gestureState.dx=0; +gestureState.dy=0; +gestureState.vx=0; +gestureState.vy=0; +gestureState.numberActiveTouches=0; + +gestureState._accountsForMovesUpTo=0; +}, + + + + + + + + + + + + + + + + + + + + + + + + + +_updateGestureStateOnMove:function _updateGestureStateOnMove(gestureState,touchHistory){ +gestureState.numberActiveTouches=touchHistory.numberActiveTouches; +gestureState.moveX=currentCentroidXOfTouchesChangedAfter( +touchHistory, +gestureState._accountsForMovesUpTo); + +gestureState.moveY=currentCentroidYOfTouchesChangedAfter( +touchHistory, +gestureState._accountsForMovesUpTo); + +var movedAfter=gestureState._accountsForMovesUpTo; +var prevX=previousCentroidXOfTouchesChangedAfter(touchHistory,movedAfter); +var x=currentCentroidXOfTouchesChangedAfter(touchHistory,movedAfter); +var prevY=previousCentroidYOfTouchesChangedAfter(touchHistory,movedAfter); +var y=currentCentroidYOfTouchesChangedAfter(touchHistory,movedAfter); +var nextDX=gestureState.dx+(x-prevX); +var nextDY=gestureState.dy+(y-prevY); + + +var dt=touchHistory.mostRecentTimeStamp-gestureState._accountsForMovesUpTo; +gestureState.vx=(nextDX-gestureState.dx)/dt; +gestureState.vy=(nextDY-gestureState.dy)/dt; + +gestureState.dx=nextDX; +gestureState.dy=nextDY; +gestureState._accountsForMovesUpTo=touchHistory.mostRecentTimeStamp; +}, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +create:function create(config){ +var gestureState={ + +stateID:Math.random()}; + +PanResponder._initializeGestureState(gestureState); +var panHandlers={ +onStartShouldSetResponder:function onStartShouldSetResponder(e){ +return config.onStartShouldSetPanResponder===undefined? +false: +config.onStartShouldSetPanResponder(e,gestureState); +}, +onMoveShouldSetResponder:function onMoveShouldSetResponder(e){ +return config.onMoveShouldSetPanResponder===undefined? +false: +config.onMoveShouldSetPanResponder(e,gestureState); +}, +onStartShouldSetResponderCapture:function onStartShouldSetResponderCapture(e){ + + +if(e.nativeEvent.touches){ +if(e.nativeEvent.touches.length===1){ +PanResponder._initializeGestureState(gestureState); +} +}else if( +e.nativeEvent.originalEvent&&e.nativeEvent.originalEvent.type==='mousedown') +{ +PanResponder._initializeGestureState(gestureState); +} +gestureState.numberActiveTouches=e.touchHistory.numberActiveTouches; +return config.onStartShouldSetPanResponderCapture!==undefined? +config.onStartShouldSetPanResponderCapture(e,gestureState): +false; +}, + +onMoveShouldSetResponderCapture:function onMoveShouldSetResponderCapture(e){ +var touchHistory=e.touchHistory; + + + +if(gestureState._accountsForMovesUpTo===touchHistory.mostRecentTimeStamp){ +return false; +} +PanResponder._updateGestureStateOnMove(gestureState,touchHistory); +return config.onMoveShouldSetPanResponderCapture? +config.onMoveShouldSetPanResponderCapture(e,gestureState): +false; +}, + +onResponderGrant:function onResponderGrant(e){ +gestureState.x0=currentCentroidX(e.touchHistory); +gestureState.y0=currentCentroidY(e.touchHistory); +gestureState.dx=0; +gestureState.dy=0; +config.onPanResponderGrant&&config.onPanResponderGrant(e,gestureState); + +return config.onShouldBlockNativeResponder===undefined? +true: +config.onShouldBlockNativeResponder(); +}, + +onResponderReject:function onResponderReject(e){ +config.onPanResponderReject&&config.onPanResponderReject(e,gestureState); +}, + +onResponderRelease:function onResponderRelease(e){ +config.onPanResponderRelease&&config.onPanResponderRelease(e,gestureState); +PanResponder._initializeGestureState(gestureState); +}, + +onResponderStart:function onResponderStart(e){ +var touchHistory=e.touchHistory; +gestureState.numberActiveTouches=touchHistory.numberActiveTouches; +config.onPanResponderStart&&config.onPanResponderStart(e,gestureState); +}, + +onResponderMove:function onResponderMove(e){ +var touchHistory=e.touchHistory; + + +if(gestureState._accountsForMovesUpTo===touchHistory.mostRecentTimeStamp){ +return; +} + + +PanResponder._updateGestureStateOnMove(gestureState,touchHistory); +config.onPanResponderMove&&config.onPanResponderMove(e,gestureState); +}, + +onResponderEnd:function onResponderEnd(e){ +var touchHistory=e.touchHistory; +gestureState.numberActiveTouches=touchHistory.numberActiveTouches; +config.onPanResponderEnd&&config.onPanResponderEnd(e,gestureState); +}, + +onResponderTerminate:function onResponderTerminate(e){ +config.onPanResponderTerminate&&config.onPanResponderTerminate(e,gestureState); +PanResponder._initializeGestureState(gestureState); +}, + +onResponderTerminationRequest:function onResponderTerminationRequest(e){ +return config.onPanResponderTerminationRequest===undefined? +true: +config.onPanResponderTerminationRequest(e,gestureState); +}}; + +return{panHandlers:panHandlers}; +}}; + + +module.exports=PanResponder; + +/***/ }), +/* 306 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + + + + + +var _Dimensions=__webpack_require__(81);var _Dimensions2=_interopRequireDefault(_Dimensions);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var + + + + +PixelRatio=function(){function PixelRatio(){_classCallCheck(this,PixelRatio);}_createClass(PixelRatio,null,[{key:'get',value:function get() + + + +{ +return _Dimensions2.default.get('window').scale; +}},{key:'getFontScale',value:function getFontScale() + + + + +{ +return _Dimensions2.default.get('window').fontScale||PixelRatio.get(); +}},{key:'getPixelSizeForLayoutSize',value:function getPixelSizeForLayoutSize( + + + + + +layoutSize){ +return Math.round(layoutSize*PixelRatio.get()); +}},{key:'roundToNearestPixel',value:function roundToNearestPixel( + + + + + + + +layoutSize){ +var ratio=PixelRatio.get(); +return Math.round(layoutSize*ratio)/ratio; +}}]);return PixelRatio;}(); + + +module.exports=PixelRatio; + +/***/ }), +/* 307 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _ExecutionEnvironment=__webpack_require__(4); +var _generateCss2=__webpack_require__(312);var _generateCss3=_interopRequireDefault(_generateCss2); +var _hash=__webpack_require__(313);var _hash2=_interopRequireDefault(_hash); +var _requestAnimationFrame=__webpack_require__(64);var _requestAnimationFrame2=_interopRequireDefault(_requestAnimationFrame); +var _staticCss=__webpack_require__(319);var _staticCss2=_interopRequireDefault(_staticCss);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;} + +var emptyObject={}; +var STYLE_ELEMENT_ID='react-native-stylesheet'; + +var createClassName=function createClassName(prop,value){ +var hashed=(0,_hash2.default)(prop+value); +return true?'rn-'+prop+'-'+hashed:'rn-'+hashed; +}; + +var createCssRule=function createCssRule(className,prop,value){ +var css=(0,_generateCss3.default)(_defineProperty({},prop,value)); +var selector='.'+className; +return selector+'{'+css+'}'; +}; + +var pointerEvents={ +auto:createClassName('pointerEvents','auto'), +boxNone:createClassName('pointerEvents','box-none'), +boxOnly:createClassName('pointerEvents','box-only'), +none:createClassName('pointerEvents','none')}; + + +var pointerEventsCss= +'.'+pointerEvents.auto+'{pointer-events:auto;}\n'+('.'+ +pointerEvents.boxNone+'{pointer-events:none;}\n')+('.'+ +pointerEvents.boxNone+' *{pointer-events:auto;}\n')+('.'+ +pointerEvents.boxOnly+'{pointer-events:auto;}\n')+('.'+ +pointerEvents.boxOnly+' *{pointer-events:none;}\n')+('.'+ +pointerEvents.none+'{pointer-events:none;}');var + +StyleManager=function(){ +function StyleManager(){var _byClassName;_classCallCheck(this,StyleManager); + + +var pointerEventsPropName='pointerEvents'; +this.cache={ +byClassName:(_byClassName={},_defineProperty(_byClassName, +pointerEvents.auto,{prop:pointerEventsPropName,value:'auto'}),_defineProperty(_byClassName, +pointerEvents.boxNone,{ +prop:pointerEventsPropName, +value:'box-none'}),_defineProperty(_byClassName, + +pointerEvents.boxOnly,{ +prop:pointerEventsPropName, +value:'box-only'}),_defineProperty(_byClassName, + +pointerEvents.none,{prop:pointerEventsPropName,value:'none'}),_byClassName), + +byProp:{ +pointerEvents:{ +auto:pointerEvents.auto, +'box-none':pointerEvents.boxNone, +'box-only':pointerEvents.boxOnly, +none:pointerEvents.none}}}; + + + + + +if(_ExecutionEnvironment.canUseDOM){ +var prerenderedStyleSheet=document.getElementById(STYLE_ELEMENT_ID); +if(prerenderedStyleSheet){ +this.mainSheet=prerenderedStyleSheet; +}else{ +document.head.insertAdjacentHTML('afterbegin',this.getStyleSheetHtml()); +this.mainSheet=document.getElementById(STYLE_ELEMENT_ID); +} +} +}_createClass(StyleManager,[{key:'getClassName',value:function getClassName( + +prop,value){ +var cache=this.cache.byProp; +return cache[prop]&&cache[prop].hasOwnProperty(value)&&cache[prop][value]; +}},{key:'getDeclaration',value:function getDeclaration( + +className){ +var cache=this.cache.byClassName; +return cache[className]||emptyObject; +}},{key:'getStyleSheetHtml',value:function getStyleSheetHtml() + +{var _this=this; +var cache=this.cache.byProp; + +var mainSheetTextContext=Object.keys(cache). +reduce(function(rules,prop){ +if(prop!=='pointerEvents'){ +Object.keys(cache[prop]).forEach(function(value){ +var className=_this.getClassName(prop,value); +rules.push(createCssRule(className,prop,value)); +}); +} +return rules; +},[]). +join('\n'); + +var staticSheet='<style id="react-native-stylesheet-static">\n'+_staticCss2.default+'\n'+pointerEventsCss+'\n</style>'; +var mainSheet='<style id="'+STYLE_ELEMENT_ID+'">\n'+mainSheetTextContext+'\n</style>'; +return staticSheet+'\n'+mainSheet; +}},{key:'setDeclaration',value:function setDeclaration( + +prop,value){var _this2=this; +var className=this.getClassName(prop,value); +if(!className){ +className=createClassName(prop,value); +this._addToCache(className,prop,value); +if(_ExecutionEnvironment.canUseDOM){ +(0,_requestAnimationFrame2.default)(function(){ +var sheet=_this2.mainSheet.sheet; + +if(_this2.mainSheet.textContent.indexOf(className)===-1){ +var rule=createCssRule(className,prop,value); +sheet.insertRule(rule,sheet.cssRules.length); +} +}); +} +} +return className; +}},{key:'_addToCache',value:function _addToCache( + +className,prop,value){ +var cache=this.cache; +if(!cache.byProp[prop]){ +cache.byProp[prop]={}; +} +cache.byProp[prop][value]=className; +cache.byClassName[className]={prop:prop,value:value}; +}}]);return StyleManager;}(); + + +module.exports=StyleManager; + +/***/ }), +/* 308 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + +var _createReactDOMStyle=__webpack_require__(310);var _createReactDOMStyle2=_interopRequireDefault(_createReactDOMStyle); +var _flattenArray=__webpack_require__(343);var _flattenArray2=_interopRequireDefault(_flattenArray); +var _flattenStyle=__webpack_require__(138);var _flattenStyle2=_interopRequireDefault(_flattenStyle); +var _I18nManager=__webpack_require__(82);var _I18nManager2=_interopRequireDefault(_I18nManager); +var _mapKeyValue=__webpack_require__(147);var _mapKeyValue2=_interopRequireDefault(_mapKeyValue); +var _prefixInlineStyles=__webpack_require__(315);var _prefixInlineStyles2=_interopRequireDefault(_prefixInlineStyles); +var _ReactNativePropRegistry=__webpack_require__(145);var _ReactNativePropRegistry2=_interopRequireDefault(_ReactNativePropRegistry); +var _StyleManager=__webpack_require__(307);var _StyleManager2=_interopRequireDefault(_StyleManager);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}} + +var vendorPrefixPattern=/^(webkit|moz|ms)/; + +var createCacheKey=function createCacheKey(id){ +var prefix=_I18nManager2.default.isRTL?'rtl':'ltr'; +return prefix+'-'+id; +}; + +var classListToString=function classListToString(list){return list.join(' ').trim();};var + +StyleRegistry=function(){ +function StyleRegistry(){_classCallCheck(this,StyleRegistry); +this.cache={}; +this.styleManager=new _StyleManager2.default(); +}_createClass(StyleRegistry,[{key:'getStyleSheetHtml',value:function getStyleSheetHtml() + +{ +return this.styleManager.getStyleSheetHtml(); +}},{key:'register',value:function register( + + + + +flatStyle){var _this=this; +var id=_ReactNativePropRegistry2.default.register(flatStyle); +var key=createCacheKey(id); +var style=(0,_createReactDOMStyle2.default)(flatStyle); +var classList=(0,_mapKeyValue2.default)(style,function(prop,value){ +if(value!=null){ +return _this.styleManager.setDeclaration(prop,value); +} +}); +var className=classList.join(' ').trim(); +this.cache[key]={classList:classList,className:className}; +return id; +}},{key:'resolve',value:function resolve( + + + + +reactNativeStyle){ +if(!reactNativeStyle){ +return undefined; +} + + +if(typeof reactNativeStyle==='number'){ +var _key=createCacheKey(reactNativeStyle); +return this._resolveStyleIfNeeded(_key,reactNativeStyle); +} + + +if(!Array.isArray(reactNativeStyle)){ +return this._resolveStyle(reactNativeStyle); +} + + + + +var flatArray=(0,_flattenArray2.default)(reactNativeStyle); +var isArrayOfNumbers=true; +for(var i=0;i<flatArray.length;i++){ +if(typeof flatArray[i]!=='number'){ +isArrayOfNumbers=false; +break; +} +} +var key=isArrayOfNumbers?createCacheKey(flatArray.join('-')):null; +return this._resolveStyleIfNeeded(key,flatArray); +}},{key:'resolveStateful',value:function resolveStateful( + + + + + + + + +rnStyleNext,_ref){var _this2=this;var domClassList=_ref.classList,domStyle=_ref.style;var _domClassList$reduce= + + +domClassList.reduce( +function(styleProps,className){var _styleManager$getDecl= +_this2.styleManager.getDeclaration(className),prop=_styleManager$getDecl.prop,value=_styleManager$getDecl.value; +if(prop){ +styleProps.style[prop]=value; +}else{ +styleProps.classList.push(className); +} +return styleProps; +}, +{classList:[],style:{}}),rnClassList=_domClassList$reduce.classList,rnStyle=_domClassList$reduce.style; + + + + +var rdomStyle=Object.keys(domStyle).reduce(function(acc,styleName){ +var value=domStyle[styleName]; +if(value!==''){ +var reactStyleName=vendorPrefixPattern.test(styleName)? +styleName.charAt(0).toUpperCase()+styleName.slice(1): +styleName; +acc[reactStyleName]=value; +} +return acc; +},{});var _resolve= + + +this.resolve([ +rnStyle, +rnStyleNext]),rdomClassListNext=_resolve.classList,rdomStyleNext=_resolve.style; + + +var style=_extends({},rdomStyle); +rdomClassListNext.forEach(function(className){var _styleManager$getDecl2= +_this2.styleManager.getDeclaration(className),prop=_styleManager$getDecl2.prop; +if(style[prop]){ +style[prop]=''; +} +}); + +_extends(style,rdomStyleNext); + +var className=classListToString(rdomClassListNext.concat(rnClassList)); + +return{className:className,style:style}; +}},{key:'_resolveStyle',value:function _resolveStyle( + + + + +reactNativeStyle){var _this3=this; +var domStyle=(0,_createReactDOMStyle2.default)((0,_flattenStyle2.default)(reactNativeStyle)); + +var props=Object.keys(domStyle).reduce( +function(props,styleProp){ +var value=domStyle[styleProp]; +if(value!=null){ +var className=_this3.styleManager.getClassName(styleProp,value); +if(className){ +props.classList.push(className); +}else{ +if(!props.style){ +props.style={}; +} + +props.style[styleProp]=value; +} +} +return props; +}, +{classList:[]}); + + +props.className=classListToString(props.classList); +if(props.style){ +props.style=(0,_prefixInlineStyles2.default)(props.style); +} +return props; +}},{key:'_resolveStyleIfNeeded',value:function _resolveStyleIfNeeded( + + + + +key,style){ +if(key){ +if(!this.cache[key]){ + +this.cache[key]=this._resolveStyle(style); +} +return this.cache[key]; +} +return this._resolveStyle(style); +}}]);return StyleRegistry;}(); + + +module.exports=StyleRegistry; + +/***/ }), +/* 309 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + + + + + + +var _ImageStylePropTypes=__webpack_require__(140);var _ImageStylePropTypes2=_interopRequireDefault(_ImageStylePropTypes); +var _ReactPropTypeLocationNames=__webpack_require__(94);var _ReactPropTypeLocationNames2=_interopRequireDefault(_ReactPropTypeLocationNames); +var _ReactPropTypesSecret=__webpack_require__(157);var _ReactPropTypesSecret2=_interopRequireDefault(_ReactPropTypesSecret); +var _TextInputStylePropTypes=__webpack_require__(143);var _TextInputStylePropTypes2=_interopRequireDefault(_TextInputStylePropTypes); +var _TextStylePropTypes=__webpack_require__(84);var _TextStylePropTypes2=_interopRequireDefault(_TextStylePropTypes); +var _ViewStylePropTypes=__webpack_require__(44);var _ViewStylePropTypes2=_interopRequireDefault(_ViewStylePropTypes); +var _warning=__webpack_require__(1);var _warning2=_interopRequireDefault(_warning); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var + +StyleSheetValidation=function(){function StyleSheetValidation(){_classCallCheck(this,StyleSheetValidation);}_createClass(StyleSheetValidation,null,[{key:'validateStyleProp',value:function validateStyleProp( +prop,style,caller){ +if(true){ +if(allStylePropTypes[prop]===undefined){ +var message1='"'+prop+'" is not a valid style property.'; +var message2= +'\nValid style props: '+ +JSON.stringify(Object.keys(allStylePropTypes).sort(),null,' '); +styleError(message1,style,caller,message2); +}else{ +var error=allStylePropTypes[prop]( +style, +prop, +caller, +_ReactPropTypeLocationNames2.default.prop, +null,_ReactPropTypesSecret2.default); + + +if(error){ +styleError(error.message,style,caller); +} +} +} +}},{key:'validateStyle',value:function validateStyle( + +name,styles){ +if(true){ +for(var prop in styles[name]){ +StyleSheetValidation.validateStyleProp(prop,styles[name],'StyleSheet '+name); +} +} +}},{key:'addValidStylePropTypes',value:function addValidStylePropTypes( + +stylePropTypes){ +for(var key in stylePropTypes){ +allStylePropTypes[key]=stylePropTypes[key]; +} +}}]);return StyleSheetValidation;}(); + + +var styleError=function styleError(message1,style,caller,message2){ +(0,_warning2.default)( +false, +message1+ +'\n'+( +caller||'<<unknown>>')+ +': '+ +JSON.stringify(style,null,' ')+( +message2||'')); + +}; + +var allStylePropTypes={}; + +StyleSheetValidation.addValidStylePropTypes(_ImageStylePropTypes2.default); +StyleSheetValidation.addValidStylePropTypes(_TextStylePropTypes2.default); +StyleSheetValidation.addValidStylePropTypes(_TextInputStylePropTypes2.default); +StyleSheetValidation.addValidStylePropTypes(_ViewStylePropTypes2.default); +StyleSheetValidation.addValidStylePropTypes({ +appearance:_propTypes.string, +clear:_propTypes.string, +cursor:_propTypes.string, +float:(0,_propTypes.oneOf)(['left','none','right']), +font:_propTypes.string, +listStyle:_propTypes.string, +pointerEvents:_propTypes.string}); + + +module.exports=StyleSheetValidation; + +/***/ }), +/* 310 */ +/***/ (function(module, exports, __webpack_require__) { + +var _expandStyle=__webpack_require__(311);var _expandStyle2=_interopRequireDefault(_expandStyle); +var _i18nStyle=__webpack_require__(314);var _i18nStyle2=_interopRequireDefault(_i18nStyle);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var createReactDOMStyle=function createReactDOMStyle(flattenedReactNativeStyle){return( +(0,_expandStyle2.default)((0,_i18nStyle2.default)(flattenedReactNativeStyle)));}; + +module.exports=createReactDOMStyle; + +/***/ }), +/* 311 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + + + + + +var _normalizeValue=__webpack_require__(43);var _normalizeValue2=_interopRequireDefault(_normalizeValue); +var _processColor=__webpack_require__(61);var _processColor2=_interopRequireDefault(_processColor); +var _resolveBoxShadow=__webpack_require__(316);var _resolveBoxShadow2=_interopRequireDefault(_resolveBoxShadow); +var _resolveTextShadow=__webpack_require__(317);var _resolveTextShadow2=_interopRequireDefault(_resolveTextShadow); +var _resolveTransform=__webpack_require__(318);var _resolveTransform2=_interopRequireDefault(_resolveTransform);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var emptyObject={}; +var styleShortFormProperties={ +borderColor:['borderTopColor','borderRightColor','borderBottomColor','borderLeftColor'], +borderRadius:[ +'borderTopLeftRadius', +'borderTopRightRadius', +'borderBottomRightRadius', +'borderBottomLeftRadius'], + +borderStyle:['borderTopStyle','borderRightStyle','borderBottomStyle','borderLeftStyle'], +borderWidth:['borderTopWidth','borderRightWidth','borderBottomWidth','borderLeftWidth'], +margin:['marginTop','marginRight','marginBottom','marginLeft'], +marginHorizontal:['marginRight','marginLeft'], +marginVertical:['marginTop','marginBottom'], +overflow:['overflowX','overflowY'], +padding:['paddingTop','paddingRight','paddingBottom','paddingLeft'], +paddingHorizontal:['paddingRight','paddingLeft'], +paddingVertical:['paddingTop','paddingBottom'], +textDecorationLine:['textDecoration'], +writingDirection:['direction']}; + + +var colorProps={ +backgroundColor:true, +borderColor:true, +borderTopColor:true, +borderRightColor:true, +borderBottomColor:true, +borderLeftColor:true, +color:true}; + + +var alphaSortProps=function alphaSortProps(propsArray){return( +propsArray.sort(function(a,b){ +if(a<b){ +return-1; +} +if(a>b){ +return 1; +} +return 0; +}));}; + +var createReducer=function createReducer(style,styleProps){ +var hasResolvedBoxShadow=false; +var hasResolvedTextShadow=false; + +return function(resolvedStyle,prop){ +var value=(0,_normalizeValue2.default)(prop,style[prop]); +if(value==null){ +return resolvedStyle; +} + +switch(prop){ +case'display':{ +resolvedStyle.display=value; + +if(style.display==='flex'&&style.flex==null&&style.flexShrink==null){ +resolvedStyle.flexShrink=0; +} +break; +} + +case'aspectRatio': +case'elevation': +case'overlayColor': +case'resizeMode': +case'tintColor':{ +break; +} +case'flex':{ +resolvedStyle.flexGrow=value; +resolvedStyle.flexShrink=1; +resolvedStyle.flexBasis='auto'; +break; +} +case'shadowColor': +case'shadowOffset': +case'shadowOpacity': +case'shadowRadius':{ +if(!hasResolvedBoxShadow){ +(0,_resolveBoxShadow2.default)(resolvedStyle,style); +} +hasResolvedBoxShadow=true; +break; +} +case'textAlignVertical':{ +resolvedStyle.verticalAlign=value==='center'?'middle':value; +break; +} +case'textShadowColor': +case'textShadowOffset': +case'textShadowRadius':{ +if(!hasResolvedTextShadow){ +(0,_resolveTextShadow2.default)(resolvedStyle,style); +} +hasResolvedTextShadow=true; +break; +} +case'transform':{ +(0,_resolveTransform2.default)(resolvedStyle,style); +break; +} +default:{ + +var finalValue=value; +if(colorProps[prop]){ +finalValue=(0,_processColor2.default)(value); +} + +var longFormProperties=styleShortFormProperties[prop]; +if(longFormProperties){ +longFormProperties.forEach(function(longForm,i){ + + +if(styleProps.indexOf(longForm)===-1){ +resolvedStyle[longForm]=finalValue; +} +}); +}else{ +resolvedStyle[prop]=finalValue; +} +}} + + +return resolvedStyle; +}; +}; + +var expandStyle=function expandStyle(style){ +if(!style){ +return emptyObject; +} +var styleProps=Object.keys(style); +var sortedStyleProps=alphaSortProps(styleProps); +var reducer=createReducer(style,styleProps); +var resolvedStyle=sortedStyleProps.reduce(reducer,{}); +return resolvedStyle; +}; + +module.exports=expandStyle; + +/***/ }), +/* 312 */ +/***/ (function(module, exports, __webpack_require__) { + +var _hyphenateStyleName=__webpack_require__(110);var _hyphenateStyleName2=_interopRequireDefault(_hyphenateStyleName); +var _mapKeyValue=__webpack_require__(147);var _mapKeyValue2=_interopRequireDefault(_mapKeyValue); +var _normalizeValue=__webpack_require__(43);var _normalizeValue2=_interopRequireDefault(_normalizeValue); +var _static=__webpack_require__(111);var _static2=_interopRequireDefault(_static);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var createDeclarationString=function createDeclarationString(prop,val){ +var name=(0,_hyphenateStyleName2.default)(prop); +var value=(0,_normalizeValue2.default)(prop,val); +if(Array.isArray(val)){ +return val.map(function(v){return name+':'+v;}).join(';'); +} +return name+':'+value; +}; + + + + + + + +var generateCss=function generateCss(style){return( +(0,_mapKeyValue2.default)((0,_static2.default)(style),createDeclarationString).sort().join(';'));}; + +module.exports=generateCss; + +/***/ }), +/* 313 */ +/***/ (function(module, exports) { + + + + + + + + + + + + + + + +function murmurhash2_32_gc(str,seed){ +var l=str.length,h=seed^l,i=0,k; + +while(l>=4){ +k= +str.charCodeAt(i)&0xff| +(str.charCodeAt(++i)&0xff)<<8| +(str.charCodeAt(++i)&0xff)<<16| +(str.charCodeAt(++i)&0xff)<<24; + +k=(k&0xffff)*0x5bd1e995+(((k>>>16)*0x5bd1e995&0xffff)<<16); +k^=k>>>24; +k=(k&0xffff)*0x5bd1e995+(((k>>>16)*0x5bd1e995&0xffff)<<16); + +h=(h&0xffff)*0x5bd1e995+(((h>>>16)*0x5bd1e995&0xffff)<<16)^k; + +l-=4; +++i; +} + +switch(l){ +case 3: +h^=(str.charCodeAt(i+2)&0xff)<<16; +case 2: +h^=(str.charCodeAt(i+1)&0xff)<<8; +case 1: +h^=str.charCodeAt(i)&0xff; +h=(h&0xffff)*0x5bd1e995+(((h>>>16)*0x5bd1e995&0xffff)<<16);} + + +h^=h>>>13; +h=(h&0xffff)*0x5bd1e995+(((h>>>16)*0x5bd1e995&0xffff)<<16); +h^=h>>>15; + +return h>>>0; +} + +module.exports=function(str){return murmurhash2_32_gc(str,1).toString(36);}; + +/***/ }), +/* 314 */ +/***/ (function(module, exports, __webpack_require__) { + +var _I18nManager=__webpack_require__(82);var _I18nManager2=_interopRequireDefault(_I18nManager); +var _multiplyStyleLengthValue=__webpack_require__(148);var _multiplyStyleLengthValue2=_interopRequireDefault(_multiplyStyleLengthValue);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var emptyObject={}; + + + + +var PROPERTIES_TO_SWAP={ +borderTopLeftRadius:'borderTopRightRadius', +borderTopRightRadius:'borderTopLeftRadius', +borderBottomLeftRadius:'borderBottomRightRadius', +borderBottomRightRadius:'borderBottomLeftRadius', +borderLeftColor:'borderRightColor', +borderLeftStyle:'borderRightStyle', +borderLeftWidth:'borderRightWidth', +borderRightColor:'borderLeftColor', +borderRightWidth:'borderLeftWidth', +borderRightStyle:'borderLeftStyle', +left:'right', +marginLeft:'marginRight', +marginRight:'marginLeft', +paddingLeft:'paddingRight', +paddingRight:'paddingLeft', +right:'left'}; + + +var PROPERTIES_SWAP_LEFT_RIGHT={ +clear:true, +float:true, +textAlign:true}; + + + + + +var additiveInverse=function additiveInverse(value){return(0,_multiplyStyleLengthValue2.default)(value,-1);}; + + + + +var flipProperty=function flipProperty(prop){ +return PROPERTIES_TO_SWAP.hasOwnProperty(prop)?PROPERTIES_TO_SWAP[prop]:prop; +}; + + + + +var flipTransform=function flipTransform(transform){ +var translateX=transform.translateX; +if(translateX!=null){ +transform.translateX=additiveInverse(translateX); +} +return transform; +}; + +var swapLeftRight=function swapLeftRight(value){ +return value==='left'?'right':value==='right'?'left':value; +}; + +var i18nStyle=function i18nStyle(originalStyle){ +if(!_I18nManager2.default.isRTL){ +return originalStyle; +} + +var style=originalStyle||emptyObject; +var nextStyle={}; + +for(var prop in style){ +if(!Object.prototype.hasOwnProperty.call(style,prop)){ +continue; +} + +if(PROPERTIES_TO_SWAP[prop]){ +var newProp=flipProperty(prop); +nextStyle[newProp]=style[prop]; +}else if(PROPERTIES_SWAP_LEFT_RIGHT[prop]){ +nextStyle[prop]=swapLeftRight(style[prop]); +}else if(prop==='textShadowOffset'){ +nextStyle[prop]=style[prop]; +nextStyle[prop].width=additiveInverse(style[prop].width); +}else if(prop==='transform'){ +nextStyle[prop]=style[prop].map(flipTransform); +}else{ +nextStyle[prop]=style[prop]; +} +} + +return nextStyle; +}; + +module.exports=i18nStyle; + +/***/ }), +/* 315 */ +/***/ (function(module, exports, __webpack_require__) { + +var _static=__webpack_require__(111);var _static2=_interopRequireDefault(_static);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var prefixInlineStyles=function prefixInlineStyles(style){ +var prefixedStyles=(0,_static2.default)(style); + + + +Object.keys(prefixedStyles).forEach(function(prop){ +var value=prefixedStyles[prop]; +if(Array.isArray(value)){ +prefixedStyles[prop]=value[value.length-1]; +} +}); + +return prefixedStyles; +}; + +module.exports=prefixInlineStyles; + +/***/ }), +/* 316 */ +/***/ (function(module, exports, __webpack_require__) { + +var _normalizeValue=__webpack_require__(43);var _normalizeValue2=_interopRequireDefault(_normalizeValue); +var _processColor=__webpack_require__(61);var _processColor2=_interopRequireDefault(_processColor);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var defaultOffset={height:0,width:0}; + + +var resolveBoxShadow=function resolveBoxShadow(resolvedStyle,style){var _ref= +style.shadowOffset||defaultOffset,height=_ref.height,width=_ref.width; +var offsetX=(0,_normalizeValue2.default)(null,width); +var offsetY=(0,_normalizeValue2.default)(null,height); +var blurRadius=(0,_normalizeValue2.default)(null,style.shadowRadius||0); +var color=(0,_processColor2.default)(style.shadowColor,style.shadowOpacity); + +if(color){ +var boxShadow=offsetX+' '+offsetY+' '+blurRadius+' '+color; +resolvedStyle.boxShadow=style.boxShadow?style.boxShadow+', '+boxShadow:boxShadow; +}else if(style.boxShadow){ +resolvedStyle.boxShadow=style.boxShadow; +} +}; + +module.exports=resolveBoxShadow; + +/***/ }), +/* 317 */ +/***/ (function(module, exports, __webpack_require__) { + +var _normalizeValue=__webpack_require__(43);var _normalizeValue2=_interopRequireDefault(_normalizeValue); +var _processColor=__webpack_require__(61);var _processColor2=_interopRequireDefault(_processColor);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var defaultOffset={height:0,width:0}; + +var resolveTextShadow=function resolveTextShadow(resolvedStyle,style){var _ref= +style.textShadowOffset||defaultOffset,height=_ref.height,width=_ref.width; +var offsetX=(0,_normalizeValue2.default)(null,width); +var offsetY=(0,_normalizeValue2.default)(null,height); +var blurRadius=(0,_normalizeValue2.default)(null,style.textShadowRadius||0); +var color=(0,_processColor2.default)(style.textShadowColor); + +if(color){ +resolvedStyle.textShadow=offsetX+' '+offsetY+' '+blurRadius+' '+color; +} +}; + +module.exports=resolveTextShadow; + +/***/ }), +/* 318 */ +/***/ (function(module, exports, __webpack_require__) { + +var _normalizeValue=__webpack_require__(43);var _normalizeValue2=_interopRequireDefault(_normalizeValue);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + + + +var mapTransform=function mapTransform(transform){ +var type=Object.keys(transform)[0]; +var value=(0,_normalizeValue2.default)(type,transform[type]); +return type+'('+value+')'; +}; + + +var convertTransformMatrix=function convertTransformMatrix(transformMatrix){ +var matrix=transformMatrix.join(','); +return'matrix3d('+matrix+')'; +}; + +var resolveTransform=function resolveTransform(resolvedStyle,style){ +if(Array.isArray(style.transform)){ +var transform=style.transform.map(mapTransform).join(' '); +resolvedStyle.transform=transform; +}else if(style.transformMatrix){ +var _transform=convertTransformMatrix(style.transformMatrix); +resolvedStyle.transform=_transform; +} +}; + +module.exports=resolveTransform; + +/***/ }), +/* 319 */ +/***/ (function(module, exports) { + +module.exports= +'html{'+ +'font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;'+ +'-webkit-tap-highlight-color:rgba(0,0,0,0);'+ +'}\n'+ +'body{margin:0;}\n'+ +'button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}\n'+ +'input::-webkit-inner-spin-button,input::-webkit-outer-spin-button,'+ +'input::-webkit-search-cancel-button,input::-webkit-search-decoration,'+ +'input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}\n'+ +'@keyframes rn-ActivityIndicator-animation{'+ +'0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}'+ +'100%{-webkit-transform:rotate(360deg);transform:rotate(360deg);}'+ +'}\n'+ +'@keyframes rn-ProgressBar-animation{'+ +'0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);}'+ +'100%{-webkit-transform:translateX(400%);transform:translateX(400%);}'+ +'}'; + +/***/ }), +/* 320 */ +/***/ (function(module, exports) { + +var _vibrate=function _vibrate(pattern){ +if('vibrate'in window.navigator){ +if(typeof pattern==='number'||Array.isArray(pattern)){ +window.navigator.vibrate(pattern); +}else{ +throw new Error('Vibration pattern should be a number or array'); +} +} +}; + +var Vibration={ +cancel:function cancel(){ +_vibrate(0); +}, +vibrate:function vibrate(pattern){ +_vibrate(pattern); +}}; + + +module.exports=Vibration; + +/***/ }), +/* 321 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _propTypes=__webpack_require__(3); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var + +ActivityIndicator=function(_Component){_inherits(ActivityIndicator,_Component);function ActivityIndicator(){_classCallCheck(this,ActivityIndicator);return _possibleConstructorReturn(this,(ActivityIndicator.__proto__||Object.getPrototypeOf(ActivityIndicator)).apply(this,arguments));}_createClass(ActivityIndicator,[{key:'render',value:function render() + + + + + + + + + + + + + + + + + +{var _props= +this.props,animating=_props.animating,color=_props.color,hidesWhenStopped=_props.hidesWhenStopped,size=_props.size,style=_props.style,other=_objectWithoutProperties(_props,['animating','color','hidesWhenStopped','size','style']); + +var svg= +_react2.default.createElement('svg',{height:'100%',viewBox:'0 0 32 32',width:'100%'}, +_react2.default.createElement('circle',{ +cx:'16', +cy:'16', +fill:'none', +r:'14', +strokeWidth:'4', +style:{ +stroke:color, +opacity:0.2}}), + + +_react2.default.createElement('circle',{ +cx:'16', +cy:'16', +fill:'none', +r:'14', +strokeWidth:'4', +style:{ +stroke:color, +strokeDasharray:80, +strokeDashoffset:60}})); + + + + + +return( +_react2.default.createElement(_View2.default,_extends({}, +other,{ +accessibilityRole:'progressbar', +'aria-valuemax':'1', +'aria-valuemin':'0', +style:[styles.container,style,typeof size==='number'&&{height:size,width:size}]}), + +_react2.default.createElement(_View2.default,{ +children:svg, +style:[ +indicatorSizes[size], +styles.animation, +!animating&&styles.animationPause, +!animating&&hidesWhenStopped&&styles.hidesWhenStopped]}))); + + + + +}}]);return ActivityIndicator;}(_react.Component);ActivityIndicator.displayName='ActivityIndicator';ActivityIndicator.defaultProps={animating:true,color:'#1976D2',hidesWhenStopped:true,size:'small'}; true?ActivityIndicator.propTypes=_extends({},_ViewPropTypes2.default,{animating:_propTypes.bool,color:_propTypes.string,hidesWhenStopped:_propTypes.bool,size:(0,_propTypes.oneOfType)([(0,_propTypes.oneOf)(['small','large']),_propTypes.number])}):void 0; + + +var styles=_StyleSheet2.default.create({ +container:{ +alignItems:'center', +justifyContent:'center'}, + +hidesWhenStopped:{ +visibility:'hidden'}, + +animation:{ +animationDuration:'0.75s', +animationName:'rn-ActivityIndicator-animation', +animationTimingFunction:'linear', +animationIterationCount:'infinite'}, + +animationPause:{ +animationPlayState:'paused'}}); + + + +var indicatorSizes=_StyleSheet2.default.create({ +small:{ +width:20, +height:20}, + +large:{ +width:36, +height:36}}); + + + +module.exports=(0,_applyNativeMethods2.default)(ActivityIndicator); + +/***/ }), +/* 322 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _TouchableOpacity=__webpack_require__(144);var _TouchableOpacity2=_interopRequireDefault(_TouchableOpacity); +var _Text=__webpack_require__(85);var _Text2=_interopRequireDefault(_Text); +var _propTypes=__webpack_require__(3); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var + +Button=function(_Component){_inherits(Button,_Component);function Button(){_classCallCheck(this,Button);return _possibleConstructorReturn(this,(Button.__proto__||Object.getPrototypeOf(Button)).apply(this,arguments));}_createClass(Button,[{key:'render',value:function render() + + + + + + + + + +{var _props= +this.props,accessibilityLabel=_props.accessibilityLabel,color=_props.color,disabled=_props.disabled,onPress=_props.onPress,testID=_props.testID,title=_props.title; + +return( +_react2.default.createElement(_TouchableOpacity2.default,{ +accessibilityLabel:accessibilityLabel, +accessibilityRole:'button', +disabled:disabled, +onPress:onPress, +style:[ +styles.button, +color&&{backgroundColor:color}, +disabled&&styles.buttonDisabled], + +testID:testID}, + +_react2.default.createElement(_Text2.default,{style:[styles.text,disabled&&styles.textDisabled]}, +title))); + + + +}}]);return Button;}(_react.Component); true?Button.propTypes={accessibilityLabel:_propTypes.string,color:_ColorPropType2.default,disabled:_propTypes.bool,onPress:_propTypes.func.isRequired,testID:_propTypes.string,title:_propTypes.string.isRequired}:void 0; + + +var styles=_StyleSheet2.default.create({ +button:{ +backgroundColor:'#2196F3', +borderRadius:2}, + +text:{ +textAlign:'center', +color:'#fff', +padding:8, +fontWeight:'500'}, + +buttonDisabled:{ +backgroundColor:'#dfdfdf'}, + +textDisabled:{ +color:'#a1a1a1'}}); + + + +module.exports=Button; + +/***/ }), +/* 323 */ +/***/ (function(module, exports) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ImageUriCache=function(){function ImageUriCache(){_classCallCheck(this,ImageUriCache);}_createClass(ImageUriCache,null,[{key:"has",value:function has( + + + +uri){ +var entries=ImageUriCache._entries; +var isDataUri=/^data:/.test(uri); +return isDataUri||Boolean(entries[uri]); +}},{key:"add",value:function add( + +uri){ +var entries=ImageUriCache._entries; +var lastUsedTimestamp=Date.now(); +if(entries[uri]){ +entries[uri].lastUsedTimestamp=lastUsedTimestamp; +entries[uri].refCount+=1; +}else{ +entries[uri]={ +lastUsedTimestamp:lastUsedTimestamp, +refCount:1}; + +} +}},{key:"remove",value:function remove( + +uri){ +var entries=ImageUriCache._entries; +if(entries[uri]){ +entries[uri].refCount-=1; +} + +ImageUriCache._cleanUpIfNeeded(); +}},{key:"_cleanUpIfNeeded",value:function _cleanUpIfNeeded() + +{ +var entries=ImageUriCache._entries; +var imageUris=Object.keys(entries); + +if(imageUris.length+1>ImageUriCache._maximumEntries){ +var leastRecentlyUsedKey=void 0; +var leastRecentlyUsedEntry=void 0; + +imageUris.forEach(function(uri){ +var entry=entries[uri]; +if( +(!leastRecentlyUsedEntry|| +entry.lastUsedTimestamp<leastRecentlyUsedEntry.lastUsedTimestamp)&& +entry.refCount===0) +{ +leastRecentlyUsedKey=uri; +leastRecentlyUsedEntry=entry; +} +}); + +if(leastRecentlyUsedKey){ +delete entries[leastRecentlyUsedKey]; +} +} +}}]);return ImageUriCache;}();ImageUriCache._maximumEntries=256;ImageUriCache._entries={}; + + +module.exports=ImageUriCache; + +/***/ }), +/* 324 */ +/***/ (function(module, exports, __webpack_require__) { + +Object.defineProperty(exports,"__esModule",{value:true});var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _ListViewDataSource=__webpack_require__(142);var _ListViewDataSource2=_interopRequireDefault(_ListViewDataSource); +var _ScrollView=__webpack_require__(58);var _ScrollView2=_interopRequireDefault(_ScrollView); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}exports.default=_extends({}, + + +_ScrollView2.default.propTypes,{ +dataSource:(0,_propTypes.instanceOf)(_ListViewDataSource2.default).isRequired, +renderSeparator:_propTypes.func, +renderRow:_propTypes.func.isRequired, +initialListSize:_propTypes.number, +onEndReached:_propTypes.func, +onEndReachedThreshold:_propTypes.number, +pageSize:_propTypes.number, +renderFooter:_propTypes.func, +renderHeader:_propTypes.func, +renderSectionHeader:_propTypes.func, +renderScrollComponent:_propTypes.func.isRequired, +scrollRenderAheadDistance:_propTypes.number, +onChangeVisibleRows:_propTypes.func, +removeClippedSubviews:_propTypes.bool, +stickyHeaderIndices:(0,_propTypes.arrayOf)(_propTypes.number)}); + +/***/ }), +/* 325 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _ListViewDataSource=__webpack_require__(142);var _ListViewDataSource2=_interopRequireDefault(_ListViewDataSource); +var _ListViewPropTypes=__webpack_require__(324);var _ListViewPropTypes2=_interopRequireDefault(_ListViewPropTypes); +var _ScrollView=__webpack_require__(58);var _ScrollView2=_interopRequireDefault(_ScrollView); +var _StaticRenderer=__webpack_require__(328);var _StaticRenderer2=_interopRequireDefault(_StaticRenderer); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react); +var _isEmpty=__webpack_require__(109);var _isEmpty2=_interopRequireDefault(_isEmpty); +var _requestAnimationFrame=__webpack_require__(64);var _requestAnimationFrame2=_interopRequireDefault(_requestAnimationFrame);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var DEFAULT_PAGE_SIZE=1; +var DEFAULT_INITIAL_ROWS=10; +var DEFAULT_SCROLL_RENDER_AHEAD=1000; +var DEFAULT_END_REACHED_THRESHOLD=1000; +var DEFAULT_SCROLL_CALLBACK_THROTTLE=50;var + +ListView=function(_Component){_inherits(ListView,_Component); + + + + + + + + + + + + + + + +function ListView(props){_classCallCheck(this,ListView);var _this=_possibleConstructorReturn(this,(ListView.__proto__||Object.getPrototypeOf(ListView)).call(this, +props));_initialiseProps.call(_this); +_this.state={ +curRenderedRowsCount:_this.props.initialListSize, +highlightedRow:{}}; + +_this.onRowHighlighted=function(sectionId,rowId){return _this._onRowHighlighted(sectionId,rowId);}; +_this.scrollProperties={};return _this; +}_createClass(ListView,[{key:'componentWillMount',value:function componentWillMount() + +{ + +this.scrollProperties={ +visibleLength:null, +contentLength:null, +offset:0}; + +this._childFrames=[]; +this._visibleRows={}; +this._prevRenderedRowsCount=0; +this._sentEndForContentLength=null; +}},{key:'componentDidMount',value:function componentDidMount() + +{var _this2=this; + + +(0,_requestAnimationFrame2.default)(function(){ +_this2._measureAndUpdateScrollProps(); +}); +}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps( + +nextProps){var _this3=this; +if( +this.props.dataSource!==nextProps.dataSource|| +this.props.initialListSize!==nextProps.initialListSize) +{ +this.setState( +function(state,props){ +_this3._prevRenderedRowsCount=0; +return{ +curRenderedRowsCount:Math.min( +Math.max(state.curRenderedRowsCount,props.initialListSize), +props.enableEmptySections? +props.dataSource.getRowAndSectionCount(): +props.dataSource.getRowCount())}; + + +}, +function(){return _this3._renderMoreRowsIfNeeded();}); + +} +}},{key:'componentDidUpdate',value:function componentDidUpdate() + +{var _this4=this; +(0,_requestAnimationFrame2.default)(function(){ +_this4._measureAndUpdateScrollProps(); +}); +}},{key:'getScrollResponder',value:function getScrollResponder() + +{ +return this._scrollViewRef&&this._scrollViewRef.getScrollResponder(); +}},{key:'scrollTo',value:function scrollTo() + +{var _scrollViewRef; +return this._scrollViewRef&&(_scrollViewRef=this._scrollViewRef).scrollTo.apply(_scrollViewRef,arguments); +}},{key:'setNativeProps',value:function setNativeProps( + +props){ +return this._scrollViewRef&&this._scrollViewRef.setNativeProps(props); +}},{key:'render',value:function render() + + + + + + + + + + + + + +{ +var children=[];var _props= + + + + + + + + + + + + + + + + + + + + + + + + +this.props,dataSource=_props.dataSource,enableEmptySections=_props.enableEmptySections,renderFooter=_props.renderFooter,renderHeader=_props.renderHeader,renderScrollComponent=_props.renderScrollComponent,renderSectionHeader=_props.renderSectionHeader,renderSeparator=_props.renderSeparator,initialListSize=_props.initialListSize,onChangeVisibleRows=_props.onChangeVisibleRows,onEndReached=_props.onEndReached,onEndReachedThreshold=_props.onEndReachedThreshold,onKeyboardDidHide=_props.onKeyboardDidHide,onKeyboardDidShow=_props.onKeyboardDidShow,onKeyboardWillHide=_props.onKeyboardWillHide,onKeyboardWillShow=_props.onKeyboardWillShow,pageSize=_props.pageSize,renderRow=_props.renderRow,scrollRenderAheadDistance=_props.scrollRenderAheadDistance,stickyHeaderIndices=_props.stickyHeaderIndices,scrollProps=_objectWithoutProperties(_props,['dataSource','enableEmptySections','renderFooter','renderHeader','renderScrollComponent','renderSectionHeader','renderSeparator','initialListSize','onChangeVisibleRows','onEndReached','onEndReachedThreshold','onKeyboardDidHide','onKeyboardDidShow','onKeyboardWillHide','onKeyboardWillShow','pageSize','renderRow','scrollRenderAheadDistance','stickyHeaderIndices']); + +var allRowIDs=dataSource.rowIdentities; +var rowCount=0; +var sectionHeaderIndices=[]; + +var header=renderHeader&&renderHeader(); +var footer=renderFooter&&renderFooter(); +var totalIndex=header?1:0; + +for(var sectionIdx=0;sectionIdx<allRowIDs.length;sectionIdx++){ +var sectionID=dataSource.sectionIdentities[sectionIdx]; +var rowIDs=allRowIDs[sectionIdx]; +if(rowIDs.length===0){ +if(enableEmptySections===undefined){ +var warning=__webpack_require__(1); +warning( +false, +'In next release empty section headers will be rendered.'+ +" In this release you can use 'enableEmptySections' flag to render empty section headers."); + +continue; +}else{ +var invariant=__webpack_require__(0); +invariant( +enableEmptySections, +"In next release 'enableEmptySections' flag will be deprecated,"+ +' empty section headers will always be rendered. If empty section headers'+ +' are not desirable their indices should be excluded from sectionIDs object.'+ +" In this release 'enableEmptySections' may only have value 'true'"+ +' to allow empty section headers rendering.'); + +} +} + +if(renderSectionHeader){ +var shouldUpdateHeader= +rowCount>=this._prevRenderedRowsCount&& +dataSource.sectionHeaderShouldUpdate(sectionIdx); +children.push( +_react2.default.createElement(_StaticRenderer2.default,{ +key:'s_'+sectionID, +render:this.renderSectionHeaderFn( +dataSource.getSectionHeaderData(sectionIdx), +sectionID), + +shouldUpdate:!!shouldUpdateHeader})); + + +sectionHeaderIndices.push(totalIndex++); +} + +for(var rowIdx=0;rowIdx<rowIDs.length;rowIdx++){ +var rowID=rowIDs[rowIdx]; +var comboID=sectionID+'_'+rowID; +var shouldUpdateRow= +rowCount>=this._prevRenderedRowsCount&&dataSource.rowShouldUpdate(sectionIdx,rowIdx); +var row= +_react2.default.createElement(_StaticRenderer2.default,{ +key:'r_'+comboID, +render:this.renderRowFn(dataSource.getRowData(sectionIdx,rowIdx),sectionID,rowID), +shouldUpdate:!!shouldUpdateRow}); + + +children.push(row); +totalIndex++; + +if( +renderSeparator&&(rowIdx!==rowIDs.length-1||sectionIdx===allRowIDs.length-1)) +{ +var adjacentRowHighlighted= +this.state.highlightedRow.sectionID===sectionID&&( +this.state.highlightedRow.rowID===rowID|| +this.state.highlightedRow.rowID===rowIDs[rowIdx+1]); +var separator=renderSeparator(sectionID,rowID,adjacentRowHighlighted); +if(separator){ +children.push(separator); +totalIndex++; +} +} +if(++rowCount===this.state.curRenderedRowsCount){ +break; +} +} +if(rowCount>=this.state.curRenderedRowsCount){ +break; +} +} +scrollProps.onScroll=this._onScroll; + +return _react2.default.cloneElement( +renderScrollComponent(scrollProps), +{ +ref:this._setScrollViewRef, +onContentSizeChange:this._onContentSizeChange, +onLayout:this._onLayout}, + +header, +children, +footer); + +}},{key:'_measureAndUpdateScrollProps',value:function _measureAndUpdateScrollProps() + +{ +var scrollComponent=this.getScrollResponder(); +if(!scrollComponent||!scrollComponent.getInnerViewNode){ +return; +} + +this._updateVisibleRows(); +}},{key:'_updateVisibleRows',value:function _updateVisibleRows( + + + + + + + + + + + + +updatedFrames){var _this5=this; +if(!this.props.onChangeVisibleRows){ +return; +} +if(updatedFrames){ +updatedFrames.forEach(function(newFrame){ +_this5._childFrames[newFrame.index]=_extends({},newFrame); +}); +} +var isVertical=!this.props.horizontal; +var dataSource=this.props.dataSource; +var visibleMin=this.scrollProperties.offset; +var visibleMax=visibleMin+this.scrollProperties.visibleLength; +var allRowIDs=dataSource.rowIdentities; + +var header=this.props.renderHeader&&this.props.renderHeader(); +var totalIndex=header?1:0; +var visibilityChanged=false; +var changedRows={}; +for(var sectionIdx=0;sectionIdx<allRowIDs.length;sectionIdx++){ +var rowIDs=allRowIDs[sectionIdx]; +if(rowIDs.length===0){ +continue; +} +var sectionID=dataSource.sectionIdentities[sectionIdx]; +if(this.props.renderSectionHeader){ +totalIndex++; +} +var visibleSection=this._visibleRows[sectionID]; +if(!visibleSection){ +visibleSection={}; +} +for(var rowIdx=0;rowIdx<rowIDs.length;rowIdx++){ +var rowID=rowIDs[rowIdx]; +var frame=this._childFrames[totalIndex]; +totalIndex++; +if( +this.props.renderSeparator&&( +rowIdx!==rowIDs.length-1||sectionIdx===allRowIDs.length-1)) +{ +totalIndex++; +} +if(!frame){ +break; +} +var rowVisible=visibleSection[rowID]; +var min=isVertical?frame.y:frame.x; +var max=min+(isVertical?frame.height:frame.width); +if(!min&&!max||min===max){ +break; +} +if(min>visibleMax||max<visibleMin){ +if(rowVisible){ +visibilityChanged=true; +delete visibleSection[rowID]; +if(!changedRows[sectionID]){ +changedRows[sectionID]={}; +} +changedRows[sectionID][rowID]=false; +} +}else if(!rowVisible){ +visibilityChanged=true; +visibleSection[rowID]=true; +if(!changedRows[sectionID]){ +changedRows[sectionID]={}; +} +changedRows[sectionID][rowID]=true; +} +} +if(!(0,_isEmpty2.default)(visibleSection)){ +this._visibleRows[sectionID]=visibleSection; +}else if(this._visibleRows[sectionID]){ +delete this._visibleRows[sectionID]; +} +} +visibilityChanged&&this.props.onChangeVisibleRows(this._visibleRows,changedRows); +}},{key:'_getDistanceFromEnd',value:function _getDistanceFromEnd( + + + + + + + + + + + +scrollProperties){ +return( +scrollProperties.contentLength-scrollProperties.visibleLength-scrollProperties.offset); + +}},{key:'_maybeCallOnEndReached',value:function _maybeCallOnEndReached( + +event){ +if( +this.props.onEndReached&& +this.scrollProperties.contentLength!==this._sentEndForContentLength&& +this._getDistanceFromEnd(this.scrollProperties)<this.props.onEndReachedThreshold&& +this.state.curRenderedRowsCount===( +this.props.enableEmptySections? +this.props.dataSource.getRowAndSectionCount(): +this.props.dataSource.getRowCount())) +{ +this._sentEndForContentLength=this.scrollProperties.contentLength; +this.props.onEndReached(event); +return true; +} +return false; +}},{key:'_renderMoreRowsIfNeeded',value:function _renderMoreRowsIfNeeded() + +{ +if( +this.scrollProperties.contentLength===null|| +this.scrollProperties.visibleLength===null|| +this.state.curRenderedRowsCount===( +this.props.enableEmptySections? +this.props.dataSource.getRowAndSectionCount(): +this.props.dataSource.getRowCount())) +{ +this._maybeCallOnEndReached(); +return; +} + +var distanceFromEnd=this._getDistanceFromEnd(this.scrollProperties); +if(distanceFromEnd<this.props.scrollRenderAheadDistance){ +this._pageInNewRows(); +} +}},{key:'_pageInNewRows',value:function _pageInNewRows() + +{var _this6=this; +this.setState( +function(state,props){ +var rowsToRender=Math.min( +state.curRenderedRowsCount+props.pageSize, +props.enableEmptySections? +props.dataSource.getRowAndSectionCount(): +props.dataSource.getRowCount()); + +_this6._prevRenderedRowsCount=state.curRenderedRowsCount; +return{ +curRenderedRowsCount:rowsToRender}; + +}, +function(){ +_this6._measureAndUpdateScrollProps(); +_this6._prevRenderedRowsCount=_this6.state.curRenderedRowsCount; +}); + +}}]);return ListView;}(_react.Component);ListView.defaultProps={initialListSize:DEFAULT_INITIAL_ROWS,pageSize:DEFAULT_PAGE_SIZE,renderScrollComponent:function renderScrollComponent(props){return _react2.default.createElement(_ScrollView2.default,props);},scrollRenderAheadDistance:DEFAULT_SCROLL_RENDER_AHEAD,onEndReachedThreshold:DEFAULT_END_REACHED_THRESHOLD,scrollEventThrottle:DEFAULT_SCROLL_CALLBACK_THROTTLE,removeClippedSubviews:true,stickyHeaderIndices:[]};ListView.DataSource=_ListViewDataSource2.default;var _initialiseProps=function _initialiseProps(){var _this7=this;this._onRowHighlighted=function(sectionId,rowId){_this7.setState({highlightedRow:{sectionId:sectionId,rowId:rowId}});};this.renderSectionHeaderFn=function(data,sectionID){return function(){return _this7.props.renderSectionHeader(data,sectionID);};};this.renderRowFn=function(data,sectionID,rowID){return function(){return _this7.props.renderRow(data,sectionID,rowID,_this7._onRowHighlighted);};};this._onLayout=function(event){var _event$nativeEvent$la=event.nativeEvent.layout,width=_event$nativeEvent$la.width,height=_event$nativeEvent$la.height;var visibleLength=!_this7.props.horizontal?height:width;if(visibleLength!==_this7.scrollProperties.visibleLength){_this7.scrollProperties.visibleLength=visibleLength;_this7._updateVisibleRows();_this7._renderMoreRowsIfNeeded();}_this7.props.onLayout&&_this7.props.onLayout(event);};this._onContentSizeChange=function(width,height){var contentLength=!_this7.props.horizontal?height:width;if(contentLength!==_this7.scrollProperties.contentLength){_this7.scrollProperties.contentLength=contentLength;_this7._updateVisibleRows();_this7._renderMoreRowsIfNeeded();}_this7.props.onContentSizeChange&&_this7.props.onContentSizeChange(width,height);};this. + +_onScroll=function(e){ +var isVertical=!_this7.props.horizontal; +_this7.scrollProperties.visibleLength= +e.nativeEvent.layoutMeasurement[isVertical?'height':'width']; +_this7.scrollProperties.contentLength= +e.nativeEvent.contentSize[isVertical?'height':'width']; +_this7.scrollProperties.offset=e.nativeEvent.contentOffset[isVertical?'y':'x']; +_this7._updateVisibleRows(e.nativeEvent.updatedChildFrames); +if(!_this7._maybeCallOnEndReached(e)){ +_this7._renderMoreRowsIfNeeded(); +} + +if( +_this7.props.onEndReached&& +_this7._getDistanceFromEnd(_this7.scrollProperties)>_this7.props.onEndReachedThreshold) +{ + +_this7._sentEndForContentLength=null; +} + +_this7.props.onScroll&&_this7.props.onScroll(e); +};this. + +_setScrollViewRef=function(component){ +_this7._scrollViewRef=component; +};}; true?ListView.propTypes=_ListViewPropTypes2.default:void 0; + + +module.exports=(0,_applyNativeMethods2.default)(ListView); + +/***/ }), +/* 326 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var + +ProgressBar=function(_Component){_inherits(ProgressBar,_Component);function ProgressBar(){var _ref;var _temp,_this,_ret;_classCallCheck(this,ProgressBar);for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return _ret=(_temp=(_this=_possibleConstructorReturn(this,(_ref=ProgressBar.__proto__||Object.getPrototypeOf(ProgressBar)).call.apply(_ref,[this].concat(args))),_this),_this. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +_setProgressRef=function(component){ +_this._progressRef=component; +},_this. + +_updateProgressWidth=function(){var _this$props= +_this.props,indeterminate=_this$props.indeterminate,progress=_this$props.progress; +var percentageProgress=indeterminate?50:progress*100; +var width=indeterminate?'25%':percentageProgress+'%'; +_this._progressRef.setNativeProps({ +style:{width:width}}); + +},_temp),_possibleConstructorReturn(_this,_ret);}_createClass(ProgressBar,[{key:'componentDidMount',value:function componentDidMount(){this._updateProgressWidth();}},{key:'componentDidUpdate',value:function componentDidUpdate(){this._updateProgressWidth();}},{key:'render',value:function render(){var _props=this.props,color=_props.color,indeterminate=_props.indeterminate,progress=_props.progress,trackColor=_props.trackColor,style=_props.style,other=_objectWithoutProperties(_props,['color','indeterminate','progress','trackColor','style']);var percentageProgress=progress*100;return _react2.default.createElement(_View2.default,_extends({},other,{accessibilityRole:'progressbar','aria-valuemax':'100','aria-valuemin':'0','aria-valuenow':indeterminate?null:percentageProgress,style:[styles.track,style,{backgroundColor:trackColor}]}),_react2.default.createElement(_View2.default,{ref:this._setProgressRef,style:[styles.progress,indeterminate&&styles.animation,{backgroundColor:color}]}));}}]);return ProgressBar;}(_react.Component);ProgressBar.displayName='ProgressBar';ProgressBar.defaultProps={color:'#1976D2',indeterminate:false,progress:0,trackColor:'transparent'}; true?ProgressBar.propTypes=_extends({},_ViewPropTypes2.default,{color:_ColorPropType2.default,indeterminate:_propTypes.bool,progress:_propTypes.number,trackColor:_ColorPropType2.default}):void 0; + + +var styles=_StyleSheet2.default.create({ +track:{ +height:5, +overflow:'hidden', +userSelect:'none'}, + +progress:{ +height:'100%'}, + +animation:{ +animationDuration:'1s', +animationName:'rn-ProgressBar-animation', +animationTimingFunction:'linear', +animationIterationCount:'infinite'}}); + + + +module.exports=(0,_applyNativeMethods2.default)(ProgressBar); + +/***/ }), +/* 327 */ +/***/ (function(module, exports, __webpack_require__) { + +Object.defineProperty(exports,"__esModule",{value:true});var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + + + + + +var _debounce=__webpack_require__(63);var _debounce2=_interopRequireDefault(_debounce); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var normalizeScrollEvent=function normalizeScrollEvent(e){return{ +nativeEvent:{ +contentOffset:{ +get x(){ +return e.target.scrollLeft; +}, +get y(){ +return e.target.scrollTop; +}}, + +contentSize:{ +get height(){ +return e.target.scrollHeight; +}, +get width(){ +return e.target.scrollWidth; +}}, + +layoutMeasurement:{ +get height(){ +return e.target.offsetHeight; +}, +get width(){ +return e.target.offsetWidth; +}}}, + + +timeStamp:Date.now()};};var + + + + + +ScrollViewBase=function(_Component){_inherits(ScrollViewBase,_Component); + + + + + + + + + + + + + + + + + + + + + +function ScrollViewBase(props){_classCallCheck(this,ScrollViewBase);var _this=_possibleConstructorReturn(this,(ScrollViewBase.__proto__||Object.getPrototypeOf(ScrollViewBase)).call(this, +props));_this. + + + + +_handlePreventableScrollEvent=function(handler){ +return function(e){ +if(!_this.props.scrollEnabled){ +e.preventDefault(); +}else{ +if(handler){ +handler(e); +} +} +}; +};_this. + +_handleScroll=function(e){ +e.persist();var +scrollEventThrottle=_this.props.scrollEventThrottle; + +_this._debouncedOnScrollEnd(e); +if(_this._state.isScrolling){ + +if(_this._shouldEmitScrollEvent(_this._state.scrollLastTick,scrollEventThrottle)){ +_this._handleScrollTick(e); +} +}else{ + +_this._handleScrollStart(e); +} +};_this._debouncedOnScrollEnd=(0,_debounce2.default)(_this._handleScrollEnd,100);_this._state={isScrolling:false};return _this;}_createClass(ScrollViewBase,[{key:'_handleScrollStart',value:function _handleScrollStart( + +e){ +this._state.isScrolling=true; +this._state.scrollLastTick=Date.now(); +}},{key:'_handleScrollTick',value:function _handleScrollTick( + +e){var +onScroll=this.props.onScroll; +this._state.scrollLastTick=Date.now(); +if(onScroll){ +onScroll(normalizeScrollEvent(e)); +} +}},{key:'_handleScrollEnd',value:function _handleScrollEnd( + +e){var +onScroll=this.props.onScroll; +this._state.isScrolling=false; +if(onScroll){ +onScroll(normalizeScrollEvent(e)); +} +}},{key:'_shouldEmitScrollEvent',value:function _shouldEmitScrollEvent( + +lastTick,eventThrottle){ +var timeSinceLastTick=Date.now()-lastTick; +return eventThrottle>0&&timeSinceLastTick>=eventThrottle; +}},{key:'render',value:function render() + +{var _props= + + + + + + + + + + + + + +this.props,onMomentumScrollBegin=_props.onMomentumScrollBegin,onMomentumScrollEnd=_props.onMomentumScrollEnd,onScrollBeginDrag=_props.onScrollBeginDrag,onScrollEndDrag=_props.onScrollEndDrag,removeClippedSubviews=_props.removeClippedSubviews,scrollEnabled=_props.scrollEnabled,scrollEventThrottle=_props.scrollEventThrottle,showsHorizontalScrollIndicator=_props.showsHorizontalScrollIndicator,showsVerticalScrollIndicator=_props.showsVerticalScrollIndicator,other=_objectWithoutProperties(_props,['onMomentumScrollBegin','onMomentumScrollEnd','onScrollBeginDrag','onScrollEndDrag','removeClippedSubviews','scrollEnabled','scrollEventThrottle','showsHorizontalScrollIndicator','showsVerticalScrollIndicator']); + +return( +_react2.default.createElement(_View2.default,_extends({}, +other,{ +onScroll:this._handleScroll, +onTouchMove:this._handlePreventableScrollEvent(this.props.onTouchMove), +onWheel:this._handlePreventableScrollEvent(this.props.onWheel)}))); + + +}}]);return ScrollViewBase;}(_react.Component);ScrollViewBase.defaultProps={scrollEnabled:true,scrollEventThrottle:0};exports.default=ScrollViewBase; true?ScrollViewBase.propTypes=_extends({},_ViewPropTypes2.default,{onMomentumScrollBegin:_propTypes.func,onMomentumScrollEnd:_propTypes.func,onScroll:_propTypes.func,onScrollBeginDrag:_propTypes.func,onScrollEndDrag:_propTypes.func,onTouchMove:_propTypes.func,onWheel:_propTypes.func,removeClippedSubviews:_propTypes.bool,scrollEnabled:_propTypes.bool,scrollEventThrottle:_propTypes.number,showsHorizontalScrollIndicator:_propTypes.bool,showsVerticalScrollIndicator:_propTypes.bool}):void 0; + +/***/ }), +/* 328 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); + + + + + + + +var _react=__webpack_require__(5); +var _propTypes=__webpack_require__(3);function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var + + + + + + + + + + + + + + + +StaticRenderer=function(_Component){_inherits(StaticRenderer,_Component);function StaticRenderer(){_classCallCheck(this,StaticRenderer);return _possibleConstructorReturn(this,(StaticRenderer.__proto__||Object.getPrototypeOf(StaticRenderer)).apply(this,arguments));}_createClass(StaticRenderer,[{key:'shouldComponentUpdate',value:function shouldComponentUpdate( + + + + + +nextProps){ +return nextProps.shouldUpdate; +}},{key:'render',value:function render() + +{ +return this.props.render(); +}}]);return StaticRenderer;}(_react.Component); true?StaticRenderer.propTypes={render:_propTypes.func.isRequired,shouldUpdate:_propTypes.bool.isRequired}:void 0; + + +module.exports=StaticRenderer; + +/***/ }), +/* 329 */ +/***/ (function(module, exports, __webpack_require__) { + +var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _react=__webpack_require__(5);function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var + +StatusBar=function(_Component){_inherits(StatusBar,_Component);function StatusBar(){_classCallCheck(this,StatusBar);return _possibleConstructorReturn(this,(StatusBar.__proto__||Object.getPrototypeOf(StatusBar)).apply(this,arguments));}_createClass(StatusBar,[{key:'render',value:function render() + + + + + +{ +return null; +}}],[{key:'setBackgroundColor',value:function setBackgroundColor(){}},{key:'setBarStyle',value:function setBarStyle(){}},{key:'setHidden',value:function setHidden(){}},{key:'setNetworkActivityIndicatorVisible',value:function setNetworkActivityIndicatorVisible(){}},{key:'setTranslucent',value:function setTranslucent(){}}]);return StatusBar;}(_react.Component); + + +module.exports=StatusBar; + +/***/ }), +/* 330 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _ColorPropType=__webpack_require__(16);var _ColorPropType2=_interopRequireDefault(_ColorPropType); +var _createDOMElement=__webpack_require__(31);var _createDOMElement2=_interopRequireDefault(_createDOMElement); +var _multiplyStyleLengthValue=__webpack_require__(148);var _multiplyStyleLengthValue2=_interopRequireDefault(_multiplyStyleLengthValue); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _UIManager=__webpack_require__(30);var _UIManager2=_interopRequireDefault(_UIManager); +var _View=__webpack_require__(12);var _View2=_interopRequireDefault(_View); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _react=__webpack_require__(5);var _react2=_interopRequireDefault(_react); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var emptyObject={}; +var thumbDefaultBoxShadow='0px 1px 3px rgba(0,0,0,0.5)'; +var thumbFocusedBoxShadow=thumbDefaultBoxShadow+', 0 0 0 10px rgba(0,0,0,0.1)';var + +Switch=function(_PureComponent){_inherits(Switch,_PureComponent);function Switch(){var _ref;var _temp,_this,_ret;_classCallCheck(this,Switch);for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return _ret=(_temp=(_this=_possibleConstructorReturn(this,(_ref=Switch.__proto__||Object.getPrototypeOf(Switch)).call.apply(_ref,[this].concat(args))),_this),_this. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +_handleChange=function(event){var +onValueChange=_this.props.onValueChange; +onValueChange&&onValueChange(event.nativeEvent.target.checked); +},_this. + +_handleFocusState=function(event){ +var isFocused=event.nativeEvent.type==='focus'; +var boxShadow=isFocused?thumbFocusedBoxShadow:thumbDefaultBoxShadow; +_this._thumb.setNativeProps({style:{boxShadow:boxShadow}}); +},_this. + +_setCheckboxRef=function(component){ +_this._checkbox=component; +},_this. + +_setThumbRef=function(component){ +_this._thumb=component; +},_temp),_possibleConstructorReturn(_this,_ret);}_createClass(Switch,[{key:'blur',value:function blur(){_UIManager2.default.blur(this._checkbox);}},{key:'focus',value:function focus(){_UIManager2.default.focus(this._checkbox);}},{key:'render',value:function render(){var _props=this.props,activeThumbColor=_props.activeThumbColor,activeTrackColor=_props.activeTrackColor,disabled=_props.disabled,onValueChange=_props.onValueChange,style=_props.style,thumbColor=_props.thumbColor,trackColor=_props.trackColor,value=_props.value,onTintColor=_props.onTintColor,thumbTintColor=_props.thumbTintColor,tintColor=_props.tintColor,other=_objectWithoutProperties(_props,['activeThumbColor','activeTrackColor','disabled','onValueChange','style','thumbColor','trackColor','value','onTintColor','thumbTintColor','tintColor']);var _StyleSheet$flatten=_StyleSheet2.default.flatten(style),styleHeight=_StyleSheet$flatten.height,styleWidth=_StyleSheet$flatten.width;var height=styleHeight||20;var minWidth=(0,_multiplyStyleLengthValue2.default)(height,2);var width=styleWidth>minWidth?styleWidth:minWidth;var trackBorderRadius=(0,_multiplyStyleLengthValue2.default)(height,0.5);var trackCurrentColor=value?activeTrackColor:trackColor;var thumbCurrentColor=value?activeThumbColor:thumbColor;var thumbHeight=height;var thumbWidth=thumbHeight;var rootStyle=[styles.root,style,{height:height,width:width},disabled&&styles.cursorDefault];var trackStyle=[styles.track,{backgroundColor:trackCurrentColor,borderRadius:trackBorderRadius},disabled&&styles.disabledTrack];var thumbStyle=[styles.thumb,{backgroundColor:thumbCurrentColor,height:thumbHeight,width:thumbWidth},disabled&&styles.disabledThumb];var nativeControl=(0,_createDOMElement2.default)('input',{checked:value,disabled:disabled,onBlur:this._handleFocusState,onChange:this._handleChange,onFocus:this._handleFocusState,ref:this._setCheckboxRef,style:[styles.nativeControl,styles.cursorInherit],type:'checkbox'});return _react2.default.createElement(_View2.default,_extends({},other,{style:rootStyle}),_react2.default.createElement(_View2.default,{style:trackStyle}),_react2.default.createElement(_View2.default,{ref:this._setThumbRef,style:[thumbStyle,value&&styles.thumbOn,{marginLeft:value?(0,_multiplyStyleLengthValue2.default)(thumbWidth,-1):0}]}),nativeControl);}}]);return Switch;}(_react.PureComponent);Switch.displayName='Switch';Switch.defaultProps={activeThumbColor:'#009688',activeTrackColor:'#A3D3CF',disabled:false,style:emptyObject,thumbColor:'#FAFAFA',trackColor:'#939393',value:false}; true?Switch.propTypes=_extends({},_ViewPropTypes2.default,{activeThumbColor:_ColorPropType2.default,activeTrackColor:_ColorPropType2.default,disabled:_propTypes.bool,onValueChange:_propTypes.func,thumbColor:_ColorPropType2.default,trackColor:_ColorPropType2.default,value:_propTypes.bool}):void 0; + + +var styles=_StyleSheet2.default.create({ +root:{ +cursor:'pointer', +userSelect:'none'}, + +cursorDefault:{ +cursor:'default'}, + +cursorInherit:{ +cursor:'inherit'}, + +track:_extends({}, +_StyleSheet2.default.absoluteFillObject,{ +height:'70%', +margin:'auto', +transitionDuration:'0.1s', +width:'90%'}), + +disabledTrack:{ +backgroundColor:'#D5D5D5'}, + +thumb:{ +alignSelf:'flex-start', +borderRadius:'100%', +boxShadow:thumbDefaultBoxShadow, +left:'0%', +transform:[{translateZ:0}], +transitionDuration:'0.1s'}, + +thumbOn:{ +left:'100%'}, + +disabledThumb:{ +backgroundColor:'#BDBDBD'}, + +nativeControl:_extends({}, +_StyleSheet2.default.absoluteFillObject,{ +height:'100%', +margin:0, +opacity:0, +padding:0, +width:'100%'})}); + + + +module.exports=(0,_applyNativeMethods2.default)(Switch); + +/***/ }), +/* 331 */ +/***/ (function(module, exports, __webpack_require__) { + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _applyLayout=__webpack_require__(91);var _applyLayout2=_interopRequireDefault(_applyLayout); +var _applyNativeMethods=__webpack_require__(21);var _applyNativeMethods2=_interopRequireDefault(_applyNativeMethods); +var _react=__webpack_require__(5); +var _NativeMethodsMixin=__webpack_require__(60);var _NativeMethodsMixin2=_interopRequireDefault(_NativeMethodsMixin); +var _createDOMElement=__webpack_require__(31);var _createDOMElement2=_interopRequireDefault(_createDOMElement); +var _findNodeHandle=__webpack_require__(45);var _findNodeHandle2=_interopRequireDefault(_findNodeHandle); +var _StyleSheet=__webpack_require__(8);var _StyleSheet2=_interopRequireDefault(_StyleSheet); +var _StyleSheetPropType=__webpack_require__(32);var _StyleSheetPropType2=_interopRequireDefault(_StyleSheetPropType); +var _TextInputStylePropTypes=__webpack_require__(143);var _TextInputStylePropTypes2=_interopRequireDefault(_TextInputStylePropTypes); +var _TextInputState=__webpack_require__(86);var _TextInputState2=_interopRequireDefault(_TextInputState); +var _ViewPropTypes=__webpack_require__(19);var _ViewPropTypes2=_interopRequireDefault(_ViewPropTypes); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;} + +var emptyObject={}; + + + + +var normalizeEventHandler=function normalizeEventHandler(handler){return function(e){ +if(handler){ +e.nativeEvent.text=e.target.value; +return handler(e); +} +};}; + + + + + +var isSelectionStale=function isSelectionStale(node,selection){ +if(node&&selection){var +selectionEnd=node.selectionEnd,selectionStart=node.selectionStart;var +start=selection.start,end=selection.end; +return start!==selectionStart||end!==selectionEnd; +} +return false; +}; + + + + + +var setSelection=function setSelection(node,selection){ +try{ +if(isSelectionStale(node,selection)){var +start=selection.start,end=selection.end; +node.setSelectionRange(start,end||start); +} +}catch(e){} +};var + +TextInput=function(_Component){_inherits(TextInput,_Component);function TextInput(){var _ref;var _temp,_this,_ret;_classCallCheck(this,TextInput);for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return _ret=(_temp=(_this=_possibleConstructorReturn(this,(_ref=TextInput.__proto__||Object.getPrototypeOf(TextInput)).call.apply(_ref,[this].concat(args))),_this),_this. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +_handleBlur=function(e){var +onBlur=_this.props.onBlur; +if(onBlur){ +onBlur(e); +} +},_this. + +_handleChange=function(e){var _this$props= +_this.props,onChange=_this$props.onChange,onChangeText=_this$props.onChangeText;var +text=e.nativeEvent.text; +if(onChange){ +onChange(e); +} +if(onChangeText){ +onChangeText(text); +} +},_this. + +_handleFocus=function(e){var _this$props2= +_this.props,clearTextOnFocus=_this$props2.clearTextOnFocus,onFocus=_this$props2.onFocus,selectTextOnFocus=_this$props2.selectTextOnFocus; +var node=_this._node; +if(onFocus){ +onFocus(e); +} +if(clearTextOnFocus){ +_this.clear(); +} +if(selectTextOnFocus){ +node&&node.select(); +} +},_this. + +_handleKeyPress=function(e){var _this$props3= +_this.props,blurOnSubmit=_this$props3.blurOnSubmit,multiline=_this$props3.multiline,onKeyPress=_this$props3.onKeyPress,onSubmitEditing=_this$props3.onSubmitEditing; +var blurOnSubmitDefault=!multiline; +var shouldBlurOnSubmit=blurOnSubmit==null?blurOnSubmitDefault:blurOnSubmit; +if(onKeyPress){ +onKeyPress(e); +} +if(!e.isDefaultPrevented()&&e.which===13){ +if(onSubmitEditing){ +onSubmitEditing(e); +} +if(shouldBlurOnSubmit){ +_this.blur(); +} +} +},_this. + +_handleSelectionChange=function(e){var _this$props4= +_this.props,onSelectionChange=_this$props4.onSelectionChange,_this$props4$selectio=_this$props4.selection,selection=_this$props4$selectio===undefined?emptyObject:_this$props4$selectio; +if(onSelectionChange){ +try{ +var node=e.target; +if(isSelectionStale(node,selection)){var +selectionStart=node.selectionStart,selectionEnd=node.selectionEnd; +e.nativeEvent.selection={ +start:selectionStart, +end:selectionEnd}; + +onSelectionChange(e); +} +}catch(e){} +} +},_this. + +_setNode=function(component){ +_this._node=(0,_findNodeHandle2.default)(component); +},_temp),_possibleConstructorReturn(_this,_ret);}_createClass(TextInput,[{key:'blur',value:function blur(){_TextInputState2.default.blurTextInput(this._node);}},{key:'clear',value:function clear(){this._node.value='';}},{key:'focus',value:function focus(){_TextInputState2.default.focusTextInput(this._node);}},{key:'isFocused',value:function isFocused(){return _TextInputState2.default.currentlyFocusedField()===this._node;}},{key:'setNativeProps',value:function setNativeProps(props){_NativeMethodsMixin2.default.setNativeProps.call(this,props);}},{key:'componentDidMount',value:function componentDidMount(){setSelection(this._node,this.props.selection);}},{key:'componentDidUpdate',value:function componentDidUpdate(){setSelection(this._node,this.props.selection);}},{key:'render',value:function render(){var _props=this.props,autoCorrect=_props.autoCorrect,editable=_props.editable,keyboardType=_props.keyboardType,multiline=_props.multiline,numberOfLines=_props.numberOfLines,secureTextEntry=_props.secureTextEntry,style=_props.style,blurOnSubmit=_props.blurOnSubmit,caretHidden=_props.caretHidden,clearButtonMode=_props.clearButtonMode,clearTextOnFocus=_props.clearTextOnFocus,dataDetectorTypes=_props.dataDetectorTypes,enablesReturnKeyAutomatically=_props.enablesReturnKeyAutomatically,keyboardAppearance=_props.keyboardAppearance,onChangeText=_props.onChangeText,onContentSizeChange=_props.onContentSizeChange,onEndEditing=_props.onEndEditing,onLayout=_props.onLayout,onSelectionChange=_props.onSelectionChange,onSubmitEditing=_props.onSubmitEditing,placeholderTextColor=_props.placeholderTextColor,returnKeyType=_props.returnKeyType,selection=_props.selection,selectionColor=_props.selectionColor,selectTextOnFocus=_props.selectTextOnFocus,textBreakStrategy=_props.textBreakStrategy,underlineColorAndroid=_props.underlineColorAndroid,otherProps=_objectWithoutProperties(_props,['autoCorrect','editable','keyboardType','multiline','numberOfLines','secureTextEntry','style','blurOnSubmit','caretHidden','clearButtonMode','clearTextOnFocus','dataDetectorTypes','enablesReturnKeyAutomatically','keyboardAppearance','onChangeText','onContentSizeChange','onEndEditing','onLayout','onSelectionChange','onSubmitEditing','placeholderTextColor','returnKeyType','selection','selectionColor','selectTextOnFocus','textBreakStrategy','underlineColorAndroid']);var type=void 0;switch(keyboardType){case'email-address':type='email';break;case'number-pad':case'numeric':type='number';break;case'phone-pad':type='tel';break;case'search':case'web-search':type='search';break;case'url':type='url';break;default:type='text';}if(secureTextEntry){type='password';}var component=multiline?'textarea':'input';_extends(otherProps,{autoCorrect:autoCorrect?'on':'off',dir:'auto',onBlur:normalizeEventHandler(this._handleBlur),onChange:normalizeEventHandler(this._handleChange),onFocus:normalizeEventHandler(this._handleFocus),onKeyPress:normalizeEventHandler(this._handleKeyPress),onSelect:normalizeEventHandler(this._handleSelectionChange),readOnly:!editable,ref:this._setNode,style:[styles.initial,style]});if(multiline){otherProps.rows=numberOfLines;}else{otherProps.type=type;}return(0,_createDOMElement2.default)(component,otherProps);}}]);return TextInput;}(_react.Component);TextInput.displayName='TextInput';TextInput.defaultProps={autoCapitalize:'sentences',autoComplete:'on',autoCorrect:true,editable:true,keyboardType:'default',multiline:false,numberOfLines:2,secureTextEntry:false,style:emptyObject};TextInput.State=_TextInputState2.default; true?TextInput.propTypes=_extends({},_ViewPropTypes2.default,{autoCapitalize:(0,_propTypes.oneOf)(['characters','none','sentences','words']),autoComplete:_propTypes.string,autoCorrect:_propTypes.bool,autoFocus:_propTypes.bool,blurOnSubmit:_propTypes.bool,clearTextOnFocus:_propTypes.bool,defaultValue:_propTypes.string,editable:_propTypes.bool,keyboardType:(0,_propTypes.oneOf)(['default','email-address','number-pad','numeric','phone-pad','search','url','web-search']),maxLength:_propTypes.number,multiline:_propTypes.bool,numberOfLines:_propTypes.number,onBlur:_propTypes.func,onChange:_propTypes.func,onChangeText:_propTypes.func,onFocus:_propTypes.func,onKeyPress:_propTypes.func,onSelectionChange:_propTypes.func,onSubmitEditing:_propTypes.func,placeholder:_propTypes.string,placeholderTextColor:_propTypes.string,secureTextEntry:_propTypes.bool,selectTextOnFocus:_propTypes.bool,selection:(0,_propTypes.shape)({start:_propTypes.number.isRequired,end:_propTypes.number}),style:(0,_StyleSheetPropType2.default)(_TextInputStylePropTypes2.default),value:_propTypes.string}):void 0; + + +var styles=_StyleSheet2.default.create({ +initial:{ +appearance:'none', +backgroundColor:'transparent', +borderColor:'black', +borderRadius:0, +borderWidth:0, +boxSizing:'border-box', +color:'inherit', +font:'inherit', +padding:0, +resize:'none'}}); + + + +module.exports=(0,_applyLayout2.default)((0,_applyNativeMethods2.default)(TextInput)); + +/***/ }), +/* 332 */ +/***/ (function(module, exports, __webpack_require__) { + + + + + + + + +var PooledClass=__webpack_require__(156); + +var twoArgumentPooler=PooledClass.twoArgumentPooler; + + + + + + + + +function BoundingDimensions(width,height){ +this.width=width; +this.height=height; +} + +BoundingDimensions.prototype.destructor=function(){ +this.width=null; +this.height=null; +}; + + + + + +BoundingDimensions.getPooledFromElement=function(element){ +return BoundingDimensions.getPooled(element.offsetWidth,element.offsetHeight); +}; + +PooledClass.addPoolingTo(BoundingDimensions,twoArgumentPooler); + +module.exports=BoundingDimensions; + +/***/ }), +/* 333 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + +var PooledClass=__webpack_require__(156); + +var twoArgumentPooler=PooledClass.twoArgumentPooler; + + + + + + + + + +function Position(left,top){ +this.left=left; +this.top=top; +} + +Position.prototype.destructor=function(){ +this.left=null; +this.top=null; +}; + +PooledClass.addPoolingTo(Position,twoArgumentPooler); + +module.exports=Position; + +/***/ }), +/* 334 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + +var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;}; + + + + + + + + + + + + + +var _createReactClass=__webpack_require__(49);var _createReactClass2=_interopRequireDefault(_createReactClass); +var _propTypes=__webpack_require__(3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectWithoutProperties(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i];}return target;}var ColorPropType=__webpack_require__(16);var NativeMethodsMixin=__webpack_require__(60);var React=__webpack_require__(5);var StyleSheet=__webpack_require__(8);var StyleSheetPropType=__webpack_require__(32);var TimerMixin=__webpack_require__(95);var Touchable=__webpack_require__(59);var TouchableWithoutFeedback=__webpack_require__(87);var View=__webpack_require__(12);var ViewStylePropTypes=__webpack_require__(44); + +var ensureComponentIsNative=__webpack_require__(335); +var ensurePositiveDelayProps=__webpack_require__(88); + + + +var DEFAULT_PROPS={ +activeOpacity:0.85, +underlayColor:'black'}; + + +var PRESS_RETENTION_OFFSET={top:20,left:20,right:20,bottom:30}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var TouchableHighlight=(0,_createReactClass2.default)({ +propTypes:_extends({}, +TouchableWithoutFeedback.propTypes,{ + + + + +activeOpacity:_propTypes.number, + + + + +underlayColor:ColorPropType, +style:StyleSheetPropType(ViewStylePropTypes), + + + +onShowUnderlay:_propTypes.func, + + + +onHideUnderlay:_propTypes.func}), + + +mixins:[NativeMethodsMixin,TimerMixin,Touchable.Mixin], + +getDefaultProps:function getDefaultProps(){return DEFAULT_PROPS;}, + + +computeSyntheticState:function computeSyntheticState(props){var +activeOpacity=props.activeOpacity,style=props.style,underlayColor=props.underlayColor; +return{ +activeProps:{ +style:{ +opacity:activeOpacity}}, + + +activeUnderlayProps:{ +style:{ +backgroundColor:underlayColor}}, + + +underlayStyle:[INACTIVE_UNDERLAY_PROPS.style,props.style]}; + +}, + +getInitialState:function getInitialState(){ +return _extends({}, +this.touchableGetInitialState(), +this.computeSyntheticState(this.props)); + +}, + +componentDidMount:function componentDidMount(){ +ensurePositiveDelayProps(this.props); +ensureComponentIsNative(this.refs[CHILD_REF]); +this._isMounted=true; +}, + +componentDidUpdate:function componentDidUpdate(){ +ensureComponentIsNative(this.refs[CHILD_REF]); +}, + +componentWillReceiveProps:function componentWillReceiveProps(nextProps){ +ensurePositiveDelayProps(nextProps); +if( +nextProps.activeOpacity!==this.props.activeOpacity|| +nextProps.underlayColor!==this.props.underlayColor|| +nextProps.style!==this.props.style) +{ +this.setState(this.computeSyntheticState(nextProps)); +} +}, + +componentWillUnmount:function componentWillUnmount(){ +this._isMounted=false; +}, + + + + + + + + + + +touchableHandleActivePressIn:function touchableHandleActivePressIn(e){ +this.clearTimeout(this._hideTimeout); +this._hideTimeout=null; +this._showUnderlay(); +this.props.onPressIn&&this.props.onPressIn(e); +}, + +touchableHandleActivePressOut:function touchableHandleActivePressOut(e){ +if(!this._hideTimeout){ +this._hideUnderlay(); +} +this.props.onPressOut&&this.props.onPressOut(e); +}, + +touchableHandlePress:function touchableHandlePress(e){ +this.clearTimeout(this._hideTimeout); +this._showUnderlay(); +this._hideTimeout=this.setTimeout(this._hideUnderlay,this.props.delayPressOut||100); +this.props.onPress&&this.props.onPress(e); +}, + +touchableHandleLongPress:function touchableHandleLongPress(e){ +this.props.onLongPress&&this.props.onLongPress(e); +}, + +touchableGetPressRectOffset:function touchableGetPressRectOffset(){ +return this.props.pressRetentionOffset||PRESS_RETENTION_OFFSET; +}, + +touchableGetHitSlop:function touchableGetHitSlop(){ +return this.props.hitSlop; +}, + +touchableGetHighlightDelayMS:function touchableGetHighlightDelayMS(){ +return this.props.delayPressIn; +}, + +touchableGetLongPressDelayMS:function touchableGetLongPressDelayMS(){ +return this.props.delayLongPress; +}, + +touchableGetPressOutDelayMS:function touchableGetPressOutDelayMS(){ +return this.props.delayPressOut; +}, + +_showUnderlay:function _showUnderlay(){ +if(!this._isMounted||!this._hasPressHandler()){ +return; +} + +this.refs[UNDERLAY_REF].setNativeProps(this.state.activeUnderlayProps); +this.refs[CHILD_REF].setNativeProps(this.state.activeProps); +this.props.onShowUnderlay&&this.props.onShowUnderlay(); +}, + +_hideUnderlay:function _hideUnderlay(){ +this.clearTimeout(this._hideTimeout); +this._hideTimeout=null; +if(this._hasPressHandler()&&this.refs[UNDERLAY_REF]){ +this.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS); +this.refs[UNDERLAY_REF].setNativeProps(_extends({}, +INACTIVE_UNDERLAY_PROPS,{ +style:this.state.underlayStyle})); + +this.props.onHideUnderlay&&this.props.onHideUnderlay(); +} +}, + +_hasPressHandler:function _hasPressHandler(){ +return!!(this.props.onPress|| +this.props.onPressIn|| +this.props.onPressOut|| +this.props.onLongPress); +}, + +_onKeyEnter:function _onKeyEnter(e,callback){ +var ENTER=13; +if((e.type==='keypress'?e.charCode:e.keyCode)===ENTER){ +callback&&callback(e); +e.stopPropagation(); +} +}, + +render:function render(){var _this=this;var _props= + + + + + + + + + + + + + + + + +this.props,activeOpacity=_props.activeOpacity,onHideUnderlay=_props.onHideUnderlay,onShowUnderlay=_props.onShowUnderlay,underlayColor=_props.underlayColor,delayLongPress=_props.delayLongPress,delayPressIn=_props.delayPressIn,delayPressOut=_props.delayPressOut,onLongPress=_props.onLongPress,onPress=_props.onPress,onPressIn=_props.onPressIn,onPressOut=_props.onPressOut,pressRetentionOffset=_props.pressRetentionOffset,other=_objectWithoutProperties(_props,['activeOpacity','onHideUnderlay','onShowUnderlay','underlayColor','delayLongPress','delayPressIn','delayPressOut','onLongPress','onPress','onPressIn','onPressOut','pressRetentionOffset']); + +return( +React.createElement(View,_extends({}, +other,{ +accessible:this.props.accessible!==false, +onKeyDown:function onKeyDown(e){ +_this._onKeyEnter(e,_this.touchableHandleActivePressIn); +}, +onKeyPress:function onKeyPress(e){ +_this._onKeyEnter(e,_this.touchableHandlePress); +}, +onKeyUp:function onKeyUp(e){ +_this._onKeyEnter(e,_this.touchableHandleActivePressOut); +}, +onStartShouldSetResponder:this.touchableHandleStartShouldSetResponder, +onResponderTerminationRequest:this.touchableHandleResponderTerminationRequest, +onResponderGrant:this.touchableHandleResponderGrant, +onResponderMove:this.touchableHandleResponderMove, +onResponderRelease:this.touchableHandleResponderRelease, +onResponderTerminate:this.touchableHandleResponderTerminate, +ref:UNDERLAY_REF, +style:[styles.root,this.props.disabled&&styles.disabled,this.state.underlayStyle]}), + +React.cloneElement(React.Children.only(this.props.children),{ +ref:CHILD_REF}), + +Touchable.renderDebugView({color:'green',hitSlop:this.props.hitSlop}))); + + +}}); + + +var CHILD_REF='childRef'; +var UNDERLAY_REF='underlayRef'; + +var INACTIVE_CHILD_PROPS={ +style:StyleSheet.create({x:{opacity:1.0}}).x}; + +var INACTIVE_UNDERLAY_PROPS={ +style:StyleSheet.create({x:{backgroundColor:'transparent'}}).x}; + + +var styles=StyleSheet.create({ +root:{ +cursor:'pointer', +userSelect:'none'}, + +disabled:{ +cursor:'default'}}); + + + +module.exports=TouchableHighlight; + +/***/ }), +/* 335 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + +var invariant=__webpack_require__(0); + +var ensureComponentIsNative=function ensureComponentIsNative(component){ +invariant( +component&&typeof component.setNativeProps==='function', +'Touchable child must either be native or forward setNativeProps to a '+'native component'); + +}; + +module.exports=ensureComponentIsNative; + +/***/ }), +/* 336 */ +/***/ (function(module, exports, __webpack_require__) { + +Object.defineProperty(exports,"__esModule",{value:true});var _createDOMElement=__webpack_require__(31);Object.defineProperty(exports,'createDOMElement',{enumerable:true,get:function get(){return _interopRequireDefault(_createDOMElement).default;}});var _findNodeHandle=__webpack_require__(45);Object.defineProperty(exports,'findNodeHandle',{enumerable:true,get:function get(){return _interopRequireDefault(_findNodeHandle). +default;}});var _NativeModules=__webpack_require__(340);Object.defineProperty(exports,'NativeModules',{enumerable:true,get:function get(){return _interopRequireDefault(_NativeModules). +default;}});var _processColor=__webpack_require__(61);Object.defineProperty(exports,'processColor',{enumerable:true,get:function get(){return _interopRequireDefault(_processColor). +default;}});var _reactDom=__webpack_require__(51);Object.defineProperty(exports,'render',{enumerable:true,get:function get(){return _reactDom. +render;}});Object.defineProperty(exports,'unmountComponentAtNode',{enumerable:true,get:function get(){return _reactDom.unmountComponentAtNode;}});var _Animated=__webpack_require__(294);Object.defineProperty(exports,'Animated',{enumerable:true,get:function get(){return _interopRequireDefault(_Animated). + + +default;}});var _AppRegistry=__webpack_require__(296);Object.defineProperty(exports,'AppRegistry',{enumerable:true,get:function get(){return _interopRequireDefault(_AppRegistry). +default;}});var _AppState=__webpack_require__(298);Object.defineProperty(exports,'AppState',{enumerable:true,get:function get(){return _interopRequireDefault(_AppState). +default;}});var _AsyncStorage=__webpack_require__(299);Object.defineProperty(exports,'AsyncStorage',{enumerable:true,get:function get(){return _interopRequireDefault(_AsyncStorage). +default;}});var _BackAndroid=__webpack_require__(300);Object.defineProperty(exports,'BackAndroid',{enumerable:true,get:function get(){return _interopRequireDefault(_BackAndroid). +default;}});var _Clipboard=__webpack_require__(301);Object.defineProperty(exports,'Clipboard',{enumerable:true,get:function get(){return _interopRequireDefault(_Clipboard). +default;}});var _Dimensions=__webpack_require__(81);Object.defineProperty(exports,'Dimensions',{enumerable:true,get:function get(){return _interopRequireDefault(_Dimensions). +default;}});var _Easing=__webpack_require__(100);Object.defineProperty(exports,'Easing',{enumerable:true,get:function get(){return _interopRequireDefault(_Easing). +default;}});var _I18nManager=__webpack_require__(82);Object.defineProperty(exports,'I18nManager',{enumerable:true,get:function get(){return _interopRequireDefault(_I18nManager). +default;}});var _InteractionManager=__webpack_require__(302);Object.defineProperty(exports,'InteractionManager',{enumerable:true,get:function get(){return _interopRequireDefault(_InteractionManager). +default;}});var _Linking=__webpack_require__(303);Object.defineProperty(exports,'Linking',{enumerable:true,get:function get(){return _interopRequireDefault(_Linking). +default;}});var _NetInfo=__webpack_require__(304);Object.defineProperty(exports,'NetInfo',{enumerable:true,get:function get(){return _interopRequireDefault(_NetInfo). +default;}});var _PanResponder=__webpack_require__(305);Object.defineProperty(exports,'PanResponder',{enumerable:true,get:function get(){return _interopRequireDefault(_PanResponder). +default;}});var _PixelRatio=__webpack_require__(306);Object.defineProperty(exports,'PixelRatio',{enumerable:true,get:function get(){return _interopRequireDefault(_PixelRatio). +default;}});var _Platform=__webpack_require__(137);Object.defineProperty(exports,'Platform',{enumerable:true,get:function get(){return _interopRequireDefault(_Platform). +default;}});var _StyleSheet=__webpack_require__(8);Object.defineProperty(exports,'StyleSheet',{enumerable:true,get:function get(){return _interopRequireDefault(_StyleSheet). +default;}});var _UIManager=__webpack_require__(30);Object.defineProperty(exports,'UIManager',{enumerable:true,get:function get(){return _interopRequireDefault(_UIManager). +default;}});var _Vibration=__webpack_require__(320);Object.defineProperty(exports,'Vibration',{enumerable:true,get:function get(){return _interopRequireDefault(_Vibration). +default;}});var _ActivityIndicator=__webpack_require__(321);Object.defineProperty(exports,'ActivityIndicator',{enumerable:true,get:function get(){return _interopRequireDefault(_ActivityIndicator). + + +default;}});var _Button=__webpack_require__(322);Object.defineProperty(exports,'Button',{enumerable:true,get:function get(){return _interopRequireDefault(_Button). +default;}});var _Image=__webpack_require__(141);Object.defineProperty(exports,'Image',{enumerable:true,get:function get(){return _interopRequireDefault(_Image). +default;}});var _ListView=__webpack_require__(325);Object.defineProperty(exports,'ListView',{enumerable:true,get:function get(){return _interopRequireDefault(_ListView). +default;}});var _ProgressBar=__webpack_require__(326);Object.defineProperty(exports,'ProgressBar',{enumerable:true,get:function get(){return _interopRequireDefault(_ProgressBar). +default;}});var _ScrollView=__webpack_require__(58);Object.defineProperty(exports,'ScrollView',{enumerable:true,get:function get(){return _interopRequireDefault(_ScrollView). +default;}});var _StatusBar=__webpack_require__(329);Object.defineProperty(exports,'StatusBar',{enumerable:true,get:function get(){return _interopRequireDefault(_StatusBar). +default;}});var _Switch=__webpack_require__(330);Object.defineProperty(exports,'Switch',{enumerable:true,get:function get(){return _interopRequireDefault(_Switch). +default;}});var _Text=__webpack_require__(85);Object.defineProperty(exports,'Text',{enumerable:true,get:function get(){return _interopRequireDefault(_Text). +default;}});var _TextInput=__webpack_require__(331);Object.defineProperty(exports,'TextInput',{enumerable:true,get:function get(){return _interopRequireDefault(_TextInput). +default;}});var _Touchable=__webpack_require__(59);Object.defineProperty(exports,'Touchable',{enumerable:true,get:function get(){return _interopRequireDefault(_Touchable). +default;}});var _TouchableHighlight=__webpack_require__(334);Object.defineProperty(exports,'TouchableHighlight',{enumerable:true,get:function get(){return _interopRequireDefault(_TouchableHighlight). +default;}});var _TouchableOpacity=__webpack_require__(144);Object.defineProperty(exports,'TouchableOpacity',{enumerable:true,get:function get(){return _interopRequireDefault(_TouchableOpacity). +default;}});var _TouchableWithoutFeedback=__webpack_require__(87);Object.defineProperty(exports,'TouchableWithoutFeedback',{enumerable:true,get:function get(){return _interopRequireDefault(_TouchableWithoutFeedback). + +default;}});var _View=__webpack_require__(12);Object.defineProperty(exports,'View',{enumerable:true,get:function get(){return _interopRequireDefault(_View). + +default;}});var _ColorPropType=__webpack_require__(16);Object.defineProperty(exports,'ColorPropType',{enumerable:true,get:function get(){return _interopRequireDefault(_ColorPropType). + + +default;}});var _EdgeInsetsPropType=__webpack_require__(92);Object.defineProperty(exports,'EdgeInsetsPropType',{enumerable:true,get:function get(){return _interopRequireDefault(_EdgeInsetsPropType). +default;}});var _PointPropType=__webpack_require__(348);Object.defineProperty(exports,'PointPropType',{enumerable:true,get:function get(){return _interopRequireDefault(_PointPropType). +default;}});var _ViewPropTypes=__webpack_require__(19);Object.defineProperty(exports,'ViewPropTypes',{enumerable:true,get:function get(){return _interopRequireDefault(_ViewPropTypes). +default;}});function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +/***/ }), +/* 337 */ +/***/ (function(module, exports, __webpack_require__) { + +var _propsToAriaRole=__webpack_require__(90);var _propsToAriaRole2=_interopRequireDefault(_propsToAriaRole);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var roleComponents={ +article:'article', +banner:'header', +button:'button', +complementary:'aside', +contentinfo:'footer', +form:'form', +link:'a', +list:'ul', +listitem:'li', +main:'main', +navigation:'nav', +region:'section'}; + + +var emptyObject={}; + +var propsToAccessibilityComponent=function propsToAccessibilityComponent(){var props=arguments.length>0&&arguments[0]!==undefined?arguments[0]:emptyObject; +var role=(0,_propsToAriaRole2.default)(props); +if(role==='heading'){ +var level=props['aria-level']||1; +return'h'+level; +} +return roleComponents[role]; +}; + +module.exports=propsToAccessibilityComponent; + +/***/ }), +/* 338 */ +/***/ (function(module, exports, __webpack_require__) { + +var _propsToAriaRole=__webpack_require__(90);var _propsToAriaRole2=_interopRequireDefault(_propsToAriaRole);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var propsToTabIndex=function propsToTabIndex(props){ +var ariaRole=(0,_propsToAriaRole2.default)(props); +var focusable= +props.disabled!==true&& +props.importantForAccessibility!=='no'&& +props.importantForAccessibility!=='no-hide-descendants'; +var focusableRole=ariaRole==='button'||ariaRole==='link'; + +if(focusableRole){ +if(props.accessible===false||!focusable){ +return'-1'; +} +}else{ +if(props.accessible===true&&focusable){ +return'0'; +} +} +}; + +module.exports=propsToTabIndex; + +/***/ }), +/* 339 */ +/***/ (function(module, exports) { + +Object.defineProperty(exports,"__esModule",{value:true});var id=0; +var requests={}; + +var ImageLoader={ +abort:function abort(requestId){ +var image=requests[""+requestId]; +if(image){ +image.onerror=image.onload=image=null; +delete requests[""+requestId]; +} +}, +getSize:function getSize(uri,success,failure){ +var complete=false; +var interval=setInterval(callback,16); +var requestId=ImageLoader.load(uri,callback,callback); + +function callback(){ +var image=requests[""+requestId]; +if(image){var +naturalHeight=image.naturalHeight,naturalWidth=image.naturalWidth; +if(naturalHeight&&naturalWidth){ +success(naturalWidth,naturalHeight); +complete=true; +} +} +if(complete){ +ImageLoader.abort(requestId); +clearInterval(interval); +} +} +}, +load:function load(uri,onLoad,onError){ +id+=1; +var image=new window.Image(); +image.onerror=onError; +image.onload=onLoad; +image.src=uri; +requests[""+id]=image; +return id; +}, +prefetch:function prefetch(uri){ +return new Promise(function(resolve,reject){ +ImageLoader.load(uri,resolve,reject); +}); +}};exports.default= + + +ImageLoader; + +/***/ }), +/* 340 */ +/***/ (function(module, exports) { + + +module.exports={}; + +/***/ }), +/* 341 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + +var Dimensions=__webpack_require__(81); +var findNodeHandle=__webpack_require__(45); +var Platform=__webpack_require__(137); +var React=__webpack_require__(5); + +var TextInputState=__webpack_require__(86); +var UIManager=__webpack_require__(30); + + + +var invariant=__webpack_require__(0); +var warning=__webpack_require__(1); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +var emptyObject={}; + +var IS_ANIMATING_TOUCH_START_THRESHOLD_MS=16; + + + + + + + + + + +var ScrollResponderMixin={ + +scrollResponderMixinGetInitialState:function scrollResponderMixinGetInitialState(){ +return{ +isTouching:false, +lastMomentumScrollBeginTime:0, +lastMomentumScrollEndTime:0, + + + + + + +observedScrollSinceBecomingResponder:false, +becameResponderWhileAnimating:false}; + +}, + + + + +scrollResponderHandleScrollShouldSetResponder:function scrollResponderHandleScrollShouldSetResponder(){ +return this.state.isTouching; +}, + + + + + + + + + + + + + + + + + + + + + + + + + + +scrollResponderHandleStartShouldSetResponder:function scrollResponderHandleStartShouldSetResponder(){ +return false; +}, + + + + + + + + + + + + +scrollResponderHandleStartShouldSetResponderCapture:function scrollResponderHandleStartShouldSetResponderCapture(e){ + + + + + + + +return this.scrollResponderIsAnimating(); +}, + + + + + + + + + + + +scrollResponderHandleResponderReject:function scrollResponderHandleResponderReject(){ +warning(false,"ScrollView doesn't take rejection well - scrolls anyway"); +}, + + + + + + + + + + + + + + + + +scrollResponderHandleTerminationRequest:function scrollResponderHandleTerminationRequest(){ +return!this.state.observedScrollSinceBecomingResponder; +}, + + + + + + +scrollResponderHandleTouchEnd:function scrollResponderHandleTouchEnd(e){ +var nativeEvent=e.nativeEvent; +this.state.isTouching=nativeEvent.touches.length!==0; +this.props.onTouchEnd&&this.props.onTouchEnd(e); +}, + + + + +scrollResponderHandleResponderRelease:function scrollResponderHandleResponderRelease(e){ +this.props.onResponderRelease&&this.props.onResponderRelease(e); + + + +var currentlyFocusedTextInput=TextInputState.currentlyFocusedField(); +if( +!this.props.keyboardShouldPersistTaps&& +currentlyFocusedTextInput!=null&& +e.target!==currentlyFocusedTextInput&& +!this.state.observedScrollSinceBecomingResponder&& +!this.state.becameResponderWhileAnimating) +{ +this.props.onScrollResponderKeyboardDismissed&& +this.props.onScrollResponderKeyboardDismissed(e); +TextInputState.blurTextInput(currentlyFocusedTextInput); +} +}, + +scrollResponderHandleScroll:function scrollResponderHandleScroll(e){ +this.state.observedScrollSinceBecomingResponder=true; +this.props.onScroll&&this.props.onScroll(e); +}, + + + + +scrollResponderHandleResponderGrant:function scrollResponderHandleResponderGrant(e){ +this.state.observedScrollSinceBecomingResponder=false; +this.props.onResponderGrant&&this.props.onResponderGrant(e); +this.state.becameResponderWhileAnimating=this.scrollResponderIsAnimating(); +}, + + + + + + + + +scrollResponderHandleScrollBeginDrag:function scrollResponderHandleScrollBeginDrag(e){ +this.props.onScrollBeginDrag&&this.props.onScrollBeginDrag(e); +}, + + + + +scrollResponderHandleScrollEndDrag:function scrollResponderHandleScrollEndDrag(e){ +this.props.onScrollEndDrag&&this.props.onScrollEndDrag(e); +}, + + + + +scrollResponderHandleMomentumScrollBegin:function scrollResponderHandleMomentumScrollBegin(e){ +this.state.lastMomentumScrollBeginTime=Date.now(); +this.props.onMomentumScrollBegin&&this.props.onMomentumScrollBegin(e); +}, + + + + +scrollResponderHandleMomentumScrollEnd:function scrollResponderHandleMomentumScrollEnd(e){ +this.state.lastMomentumScrollEndTime=Date.now(); +this.props.onMomentumScrollEnd&&this.props.onMomentumScrollEnd(e); +}, + + + + + + + + + + + + +scrollResponderHandleTouchStart:function scrollResponderHandleTouchStart(e){ +this.state.isTouching=true; +this.props.onTouchStart&&this.props.onTouchStart(e); +}, + + + + + + + + + + + + +scrollResponderHandleTouchMove:function scrollResponderHandleTouchMove(e){ +this.props.onTouchMove&&this.props.onTouchMove(e); +}, + + + + + + +scrollResponderIsAnimating:function scrollResponderIsAnimating(){ +var now=Date.now(); +var timeSinceLastMomentumScrollEnd=now-this.state.lastMomentumScrollEndTime; +var isAnimating= +timeSinceLastMomentumScrollEnd<IS_ANIMATING_TOUCH_START_THRESHOLD_MS|| +this.state.lastMomentumScrollEndTime<this.state.lastMomentumScrollBeginTime; +return isAnimating; +}, + + + + + + +scrollResponderGetScrollableNode:function scrollResponderGetScrollableNode(){ +return this.getScrollableNode?this.getScrollableNode():findNodeHandle(this); +}, + + + + + + + + + + + + +scrollResponderScrollTo:function scrollResponderScrollTo( +x, +y, +animated) +{ +if(typeof x==='number'){ +console.warn( +'`scrollResponderScrollTo(x, y, animated)` is deprecated. Use `scrollResponderScrollTo({x: 5, y: 5, animated: true})` instead.'); + +}else{var _ref= +x||emptyObject;x=_ref.x;y=_ref.y;animated=_ref.animated; +} +var node=this.scrollResponderGetScrollableNode(); +node.scrollLeft=x||0; +node.scrollTop=y||0; +}, + + + + +scrollResponderScrollWithoutAnimationTo:function scrollResponderScrollWithoutAnimationTo(offsetX,offsetY){ +console.warn( +'`scrollResponderScrollWithoutAnimationTo` is deprecated. Use `scrollResponderScrollTo` instead'); + +this.scrollResponderScrollTo({x:offsetX,y:offsetY,animated:false}); +}, + + + + + + + +scrollResponderZoomTo:function scrollResponderZoomTo( +rect, + + + + + + +animated) +{ +if(Platform.OS!=='ios'){ +invariant('zoomToRect is not implemented'); +} +}, + + + + + + + + + + + +scrollResponderScrollNativeHandleToKeyboard:function scrollResponderScrollNativeHandleToKeyboard( +nodeHandle, +additionalOffset, +preventNegativeScrollOffset) +{ +this.additionalScrollOffset=additionalOffset||0; +this.preventNegativeScrollOffset=!!preventNegativeScrollOffset; +UIManager.measureLayout( +nodeHandle, +findNodeHandle(this.getInnerViewNode()), +this.scrollResponderTextInputFocusError, +this.scrollResponderInputMeasureAndScrollToKeyboard); + +}, + + + + + + + + + + + +scrollResponderInputMeasureAndScrollToKeyboard:function scrollResponderInputMeasureAndScrollToKeyboard( +left, +top, +width, +height) +{ +var keyboardScreenY=Dimensions.get('window').height; +if(this.keyboardWillOpenTo){ +keyboardScreenY=this.keyboardWillOpenTo.endCoordinates.screenY; +} +var scrollOffsetY=top-keyboardScreenY+height+this.additionalScrollOffset; + + + + + +if(this.preventNegativeScrollOffset){ +scrollOffsetY=Math.max(0,scrollOffsetY); +} +this.scrollResponderScrollTo({x:0,y:scrollOffsetY,animated:true}); + +this.additionalOffset=0; +this.preventNegativeScrollOffset=false; +}, + +scrollResponderTextInputFocusError:function scrollResponderTextInputFocusError(e){ +console.error('Error measuring text field: ',e); +}, + + + + + + + +componentWillMount:function componentWillMount(){ +this.keyboardWillOpenTo=null; +this.additionalScrollOffset=0; + + + + +}, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +scrollResponderKeyboardWillShow:function scrollResponderKeyboardWillShow(e){ +this.keyboardWillOpenTo=e; +this.props.onKeyboardWillShow&&this.props.onKeyboardWillShow(e); +}, + +scrollResponderKeyboardWillHide:function scrollResponderKeyboardWillHide(e){ +this.keyboardWillOpenTo=null; +this.props.onKeyboardWillHide&&this.props.onKeyboardWillHide(e); +}, + +scrollResponderKeyboardDidShow:function scrollResponderKeyboardDidShow(e){ + + +if(e){ +this.keyboardWillOpenTo=e; +} +this.props.onKeyboardDidShow&&this.props.onKeyboardDidShow(e); +}, + +scrollResponderKeyboardDidHide:function scrollResponderKeyboardDidHide(e){ +this.keyboardWillOpenTo=null; +this.props.onKeyboardDidHide&&this.props.onKeyboardDidHide(e); +}}; + + +var ScrollResponder={ +Mixin:ScrollResponderMixin}; + + +module.exports=ScrollResponder; + +/***/ }), +/* 342 */ +/***/ (function(module, exports, __webpack_require__) { + +var _TextInputState=__webpack_require__(86);var _TextInputState2=_interopRequireDefault(_TextInputState);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var dismissKeyboard=function dismissKeyboard(){ +_TextInputState2.default.blurTextInput(_TextInputState2.default.currentlyFocusedField()); +}; + +module.exports=dismissKeyboard; + +/***/ }), +/* 343 */ +/***/ (function(module, exports) { + +function flattenArray(array){ +function flattenDown(array,result){ +for(var i=0;i<array.length;i++){ +var value=array[i]; + +if(Array.isArray(value)){ +flattenDown(value,result); +}else if(value!=null&&value!==false){ +result.push(value); +} +} + +return result; +} +return flattenDown(array,[]); +} + +module.exports=flattenArray; + +/***/ }), +/* 344 */ +/***/ (function(module, exports, __webpack_require__) { + + + +var _EventPluginHub=__webpack_require__(27);var _EventPluginHub2=_interopRequireDefault(_EventPluginHub); +var _normalizeNativeEvent=__webpack_require__(149);var _normalizeNativeEvent2=_interopRequireDefault(_normalizeNativeEvent); +var _ResponderEventPlugin=__webpack_require__(267);var _ResponderEventPlugin2=_interopRequireDefault(_ResponderEventPlugin); +var _ResponderTouchHistoryStore=__webpack_require__(127);var _ResponderTouchHistoryStore2=_interopRequireDefault(_ResponderTouchHistoryStore);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +var topMouseDown='topMouseDown'; +var topMouseMove='topMouseMove'; +var topMouseUp='topMouseUp'; +var topScroll='topScroll'; +var topSelectionChange='topSelectionChange'; +var topTouchCancel='topTouchCancel'; +var topTouchEnd='topTouchEnd'; +var topTouchMove='topTouchMove'; +var topTouchStart='topTouchStart'; + +var endDependencies=[topTouchCancel,topTouchEnd,topMouseUp]; +var moveDependencies=[topTouchMove,topMouseMove]; +var startDependencies=[topTouchStart,topMouseDown]; + + + + +_ResponderEventPlugin2.default.eventTypes.responderMove.dependencies=moveDependencies; +_ResponderEventPlugin2.default.eventTypes.responderEnd.dependencies=endDependencies; +_ResponderEventPlugin2.default.eventTypes.responderStart.dependencies=startDependencies; +_ResponderEventPlugin2.default.eventTypes.responderRelease.dependencies=endDependencies; +_ResponderEventPlugin2.default.eventTypes.responderTerminationRequest.dependencies=[]; +_ResponderEventPlugin2.default.eventTypes.responderGrant.dependencies=[]; +_ResponderEventPlugin2.default.eventTypes.responderReject.dependencies=[]; +_ResponderEventPlugin2.default.eventTypes.responderTerminate.dependencies=[]; +_ResponderEventPlugin2.default.eventTypes.moveShouldSetResponder.dependencies=moveDependencies; +_ResponderEventPlugin2.default.eventTypes.selectionChangeShouldSetResponder.dependencies=[ +topSelectionChange]; + +_ResponderEventPlugin2.default.eventTypes.scrollShouldSetResponder.dependencies=[topScroll]; +_ResponderEventPlugin2.default.eventTypes.startShouldSetResponder.dependencies=startDependencies; + +var originalRecordTouchTrack=_ResponderTouchHistoryStore2.default.recordTouchTrack; + +_ResponderTouchHistoryStore2.default.recordTouchTrack=function(topLevelType,nativeEvent){ + +if(topLevelType===topMouseMove&&!_ResponderTouchHistoryStore2.default.touchHistory.touchBank.length){ +return; +} + +var normalizedEvent=(0,_normalizeNativeEvent2.default)(nativeEvent); +originalRecordTouchTrack.call(_ResponderTouchHistoryStore2.default,topLevelType,normalizedEvent); +}; + +_EventPluginHub2.default.injection.injectEventPluginsByName({ +ResponderEventPlugin:_ResponderEventPlugin2.default}); + +/***/ }), +/* 345 */ +/***/ (function(module, exports, __webpack_require__) { + +Object.defineProperty(exports,"__esModule",{value:true}); + +var _ExecutionEnvironment=__webpack_require__(4); + + + + + + + + + + + + + + + + +var modality=function modality(){ +if(!_ExecutionEnvironment.canUseDOM){ +return; +} + +var styleElement=void 0; +var hadKeyboardEvent=false; +var keyboardThrottleTimeoutID=0; + +var proto=window.Element.prototype; +var matches= +proto.matches|| +proto.mozMatchesSelector|| +proto.msMatchesSelector|| +proto.webkitMatchesSelector; + + + +var keyboardModalityWhitelist=[ +'input:not([type])', +'input[type=text]', +'input[type=search]', +'input[type=url]', +'input[type=tel]', +'input[type=email]', +'input[type=password]', +'input[type=number]', +'input[type=date]', +'input[type=month]', +'input[type=week]', +'input[type=time]', +'input[type=datetime]', +'input[type=datetime-local]', +'textarea', +'[role=textbox]']. +join(','); + + + + +var initialize=function initialize(){ + +var id='react-native-modality'; +styleElement=document.getElementById(id); +if(!styleElement){ + +var style='<style id="'+id+'">:focus { outline: none; }</style>'; +document.head.insertAdjacentHTML('afterbegin',style); +styleElement=document.getElementById(id); +} +}; + + + + + +var focusTriggersKeyboardModality=function focusTriggersKeyboardModality(el){ +if(matches){ +return matches.call(el,keyboardModalityWhitelist)&&matches.call(el,':not([readonly])'); +}else{ +return false; +} +}; + + + + +var addFocusRing=function addFocusRing(){ +if(styleElement){ +styleElement.disabled=true; +} +}; + + + + +var removeFocusRing=function removeFocusRing(){ +if(styleElement){ +styleElement.disabled=false; +} +}; + + + + + + + +var handleKeyDown=function handleKeyDown(e){ +hadKeyboardEvent=true; +if(keyboardThrottleTimeoutID!==0){ +clearTimeout(keyboardThrottleTimeoutID); +} +keyboardThrottleTimeoutID=setTimeout(function(){ +hadKeyboardEvent=false; +keyboardThrottleTimeoutID=0; +},100); +}; + + + + +var handleFocus=function handleFocus(e){ +if(hadKeyboardEvent||focusTriggersKeyboardModality(e.target)){ +addFocusRing(); +} +}; + + + + +var handleBlur=function handleBlur(){ +if(!hadKeyboardEvent){ +removeFocusRing(); +} +}; + +if(document.body&&document.body.addEventListener){ +initialize(); +document.body.addEventListener('keydown',handleKeyDown,true); +document.body.addEventListener('focus',handleFocus,true); +document.body.addEventListener('blur',handleBlur,true); +} +};exports.default= + +modality; + +/***/ }), +/* 346 */ +/***/ (function(module, exports, __webpack_require__) { + +Object.defineProperty(exports,"__esModule",{value:true});exports.cancelIdleCallback=undefined; +var _ExecutionEnvironment=__webpack_require__(4); + +var _requestIdleCallback=function _requestIdleCallback(cb){ +return setTimeout(function(){ +var start=Date.now(); +cb({ +didTimeout:false, +timeRemaining:function timeRemaining(){ +return Math.max(0,50-(Date.now()-start)); +}}); + +},1); +}; + +var _cancelIdleCallback=function _cancelIdleCallback(id){ +clearTimeout(id); +}; + +var isSupported=_ExecutionEnvironment.canUseDOM&&typeof window.requestIdleCallback!=='undefined'; + +var requestIdleCallback=isSupported?window.requestIdleCallback:_requestIdleCallback; +var cancelIdleCallback=isSupported?window.cancelIdleCallback:_cancelIdleCallback;exports.default= + +requestIdleCallback;exports. +cancelIdleCallback=cancelIdleCallback; + +/***/ }), +/* 347 */ +/***/ (function(module, exports, __webpack_require__) { + +var _propTypes=__webpack_require__(3); + +var AnimationPropTypes={ +animationDelay:_propTypes.string, +animationDirection:(0,_propTypes.oneOf)(['alternate','alternate-reverse','normal','reverse']), +animationDuration:_propTypes.string, +animationFillMode:(0,_propTypes.oneOf)(['none','forwards','backwards','both']), +animationIterationCount:(0,_propTypes.oneOfType)([_propTypes.number,(0,_propTypes.oneOf)(['infinite'])]), +animationName:_propTypes.string, +animationPlayState:(0,_propTypes.oneOf)(['paused','running']), +animationTimingFunction:_propTypes.string}; + + +module.exports=AnimationPropTypes; + +/***/ }), +/* 348 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + +var _propTypes=__webpack_require__(3); + +var PointPropType=__webpack_require__(93)({ +x:_propTypes.number, +y:_propTypes.number}); + + +module.exports=PointPropType; + +/***/ }), +/* 349 */ +/***/ (function(module, exports) { + + + +var TouchHistoryMath={ + + + + + + + + + + + + + + + + +centroidDimension:function centroidDimension(touchHistory,touchesChangedAfter,isXAxis,ofCurrent){ +var touchBank=touchHistory.touchBank; +var total=0; +var count=0; + +var oneTouchData=touchHistory.numberActiveTouches===1? +touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]: +null; + +if(oneTouchData!==null){ +if(oneTouchData.touchActive&&oneTouchData.currentTimeStamp>touchesChangedAfter){ +total+=ofCurrent&&isXAxis? +oneTouchData.currentPageX: +ofCurrent&&!isXAxis? +oneTouchData.currentPageY: +!ofCurrent&&isXAxis?oneTouchData.previousPageX:oneTouchData.previousPageY; +count=1; +} +}else{ +for(var i=0;i<touchBank.length;i++){ +var touchTrack=touchBank[i]; +if( +touchTrack!==null&& +touchTrack!==undefined&& +touchTrack.touchActive&& +touchTrack.currentTimeStamp>=touchesChangedAfter) +{ +var toAdd; +if(ofCurrent&&isXAxis){ +toAdd=touchTrack.currentPageX; +}else if(ofCurrent&&!isXAxis){ +toAdd=touchTrack.currentPageY; +}else if(!ofCurrent&&isXAxis){ +toAdd=touchTrack.previousPageX; +}else{ +toAdd=touchTrack.previousPageY; +} +total+=toAdd; +count++; +} +} +} +return count>0?total/count:TouchHistoryMath.noCentroid; +}, + +currentCentroidXOfTouchesChangedAfter:function currentCentroidXOfTouchesChangedAfter(touchHistory,touchesChangedAfter){ +return TouchHistoryMath.centroidDimension( +touchHistory, +touchesChangedAfter, +true, +true); + +}, + +currentCentroidYOfTouchesChangedAfter:function currentCentroidYOfTouchesChangedAfter(touchHistory,touchesChangedAfter){ +return TouchHistoryMath.centroidDimension( +touchHistory, +touchesChangedAfter, +false, +true); + +}, + +previousCentroidXOfTouchesChangedAfter:function previousCentroidXOfTouchesChangedAfter(touchHistory,touchesChangedAfter){ +return TouchHistoryMath.centroidDimension( +touchHistory, +touchesChangedAfter, +true, +false); + +}, + +previousCentroidYOfTouchesChangedAfter:function previousCentroidYOfTouchesChangedAfter(touchHistory,touchesChangedAfter){ +return TouchHistoryMath.centroidDimension( +touchHistory, +touchesChangedAfter, +false, +false); + +}, + +currentCentroidX:function currentCentroidX(touchHistory){ +return TouchHistoryMath.centroidDimension( +touchHistory, +0, +true, +true); + +}, + +currentCentroidY:function currentCentroidY(touchHistory){ +return TouchHistoryMath.centroidDimension( +touchHistory, +0, +false, +true); + +}, + +noCentroid:-1}; + + +module.exports=TouchHistoryMath; + +/***/ }), +/* 350 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + + + + + + + + + + + + + +var _unitlessNumbers=__webpack_require__(150);var _unitlessNumbers2=_interopRequireDefault(_unitlessNumbers);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} + +if(true){ +var camelizeStyleName=__webpack_require__(106); +var warning=__webpack_require__(1); + + +var badVendoredStyleNamePattern=/^(?:webkit|moz|o)[A-Z]/; + + +var badStyleValueWithSemicolonPattern=/;\s*$/; + +var warnedStyleNames={}; +var warnedStyleValues={}; +var warnedForNaNValue=false; + +var warnHyphenatedStyleName=function warnHyphenatedStyleName(name,owner){ +if(warnedStyleNames.hasOwnProperty(name)&&warnedStyleNames[name]){ +return; +} + +warnedStyleNames[name]=true; + true? +warning( +false, +'Unsupported style property %s. Did you mean %s?%s', +name, +camelizeStyleName(name), +checkRenderMessage(owner)): + +void 0; +}; + +var warnBadVendoredStyleName=function warnBadVendoredStyleName(name,owner){ +if(warnedStyleNames.hasOwnProperty(name)&&warnedStyleNames[name]){ +return; +} + +warnedStyleNames[name]=true; + true? +warning( +false, +'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', +name, +name.charAt(0).toUpperCase()+name.slice(1), +checkRenderMessage(owner)): + +void 0; +}; + +var warnStyleValueWithSemicolon=function warnStyleValueWithSemicolon(name,value,owner){ +if(warnedStyleValues.hasOwnProperty(value)&&warnedStyleValues[value]){ +return; +} + +warnedStyleValues[value]=true; + true? +warning( +false, +"Style property values shouldn't contain a semicolon.%s "+'Try "%s: %s" instead.', +checkRenderMessage(owner), +name, +value.replace(badStyleValueWithSemicolonPattern,'')): + +void 0; +}; + +var warnStyleValueIsNaN=function warnStyleValueIsNaN(name,value,owner){ +if(warnedForNaNValue){ +return; +} + +warnedForNaNValue=true; + true? +warning( +false, +'`NaN` is an invalid value for the `%s` css style property.%s', +name, +checkRenderMessage(owner)): + +void 0; +}; + +var checkRenderMessage=function checkRenderMessage(owner){ +if(owner){ +var name=owner.getName(); +if(name){ +return' Check the render method of `'+name+'`.'; +} +} +return''; +}; + + + + + + +var warnValidStyle=function warnValidStyle(name,value,component){ +var owner; +if(component){ +owner=component._currentElement._owner; +} +if(name.indexOf('-')>-1){ +warnHyphenatedStyleName(name,owner); +}else if(badVendoredStyleNamePattern.test(name)){ +warnBadVendoredStyleName(name,owner); +}else if(badStyleValueWithSemicolonPattern.test(value)){ +warnStyleValueWithSemicolon(name,value,owner); +} + +if(typeof value==='number'&&isNaN(value)){ +warnStyleValueIsNaN(name,value,owner); +} +}; +} + +var styleWarnings={}; + + + + + + + + + + +function dangerousStyleValue(name,value,component){ + + + + + + + + + + +var isEmpty=value==null||typeof value==='boolean'||value===''; +if(isEmpty){ +return''; +} + +var isNonNumeric=isNaN(value); +if( +isNonNumeric||value===0||_unitlessNumbers2.default.hasOwnProperty(name)&&_unitlessNumbers2.default[name]) +{ +return''+value; +} + +if(typeof value==='string'){ +if(true){ +var warning=__webpack_require__(1); + + + +if(component&&value!=='0'){ +var owner=component._currentElement._owner; +var ownerName=owner?owner.getName():null; +if(ownerName&&!styleWarnings[ownerName]){ +styleWarnings[ownerName]={}; +} +var warned=false; +if(ownerName){ +var warnings=styleWarnings[ownerName]; +warned=warnings[name]; +if(!warned){ +warnings[name]=true; +} +} +if(!warned){ + true? +warning( +false, +'a `%s` tag (owner: `%s`) was passed a numeric string value '+ +'for CSS property `%s` (value: `%s`) which will be treated '+ +'as a unitless number in a future version of React.', +component._currentElement.type, +ownerName||'unknown', +name, +value): + +void 0; +} +} +} +value=value.trim(); +} +return value+'px'; +} + + + + + + + + + +var setValueForStyles=function setValueForStyles(node,styles,component){ +var style=node.style; +for(var styleName in styles){ +if(!styles.hasOwnProperty(styleName)){ +continue; +} +if(true){ +warnValidStyle(styleName,styles[styleName],component); +} +var styleValue=dangerousStyleValue(styleName,styles[styleName],component); +if(styleName==='float'||styleName==='cssFloat'){ +styleName='cssFloat'; +} +if(styleValue){ +style[styleName]=styleValue; +}else{ +style[styleName]=''; +} +} +}; + +module.exports=setValueForStyles; + +/***/ }), +/* 351 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +/** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ + +function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = ('' + key).replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + + return '$' + escapedString; +} + +/** + * Unescape and unwrap key for human-readable display + * + * @param {string} key to unescape. + * @return {string} the unescaped key. + */ +function unescape(key) { + var unescapeRegex = /(=0|=2)/g; + var unescaperLookup = { + '=0': '=', + '=2': ':' + }; + var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1); + + return ('' + keySubstring).replace(unescapeRegex, function (match) { + return unescaperLookup[match]; + }); +} + +var KeyEscapeUtils = { + escape: escape, + unescape: unescape +}; + +module.exports = KeyEscapeUtils; + +/***/ }), +/* 352 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var _prodInvariant = __webpack_require__(22); + +var invariant = __webpack_require__(0); + +/** + * 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 standardReleaser = function (instance) { + var Klass = this; + !(instance instanceof Klass) ? true ? 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) { + // Casting as any so that flow ignores the actual implementation and trusts + // it to match the type we declared + 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 +}; + +module.exports = PooledClass; + +/***/ }), +/* 353 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var PooledClass = __webpack_require__(352); +var ReactElement = __webpack_require__(25); + +var emptyFunction = __webpack_require__(10); +var traverseAllChildren = __webpack_require__(362); + +var twoArgumentPooler = PooledClass.twoArgumentPooler; +var fourArgumentPooler = PooledClass.fourArgumentPooler; + +var userProvidedKeyEscapeRegex = /\/+/g; +function escapeUserProvidedKey(text) { + return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); +} + +/** + * PooledClass representing the bookkeeping associated with performing a child + * traversal. Allows avoiding binding callbacks. + * + * @constructor ForEachBookKeeping + * @param {!function} forEachFunction Function to perform traversal with. + * @param {?*} forEachContext Context to perform context with. + */ +function ForEachBookKeeping(forEachFunction, forEachContext) { + this.func = forEachFunction; + this.context = forEachContext; + this.count = 0; +} +ForEachBookKeeping.prototype.destructor = function () { + this.func = null; + this.context = null; + this.count = 0; +}; +PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler); + +function forEachSingleChild(bookKeeping, child, name) { + var func = bookKeeping.func, + context = bookKeeping.context; + + func.call(context, child, bookKeeping.count++); +} + +/** + * Iterates through children that are typically specified as `props.children`. + * + * See https://facebook.github.io/react/docs/react-api.html#react.children.foreach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ +function forEachChildren(children, forEachFunc, forEachContext) { + if (children == null) { + return children; + } + var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext); + traverseAllChildren(children, forEachSingleChild, traverseContext); + ForEachBookKeeping.release(traverseContext); +} + +/** + * PooledClass representing the bookkeeping associated with performing a child + * mapping. Allows avoiding binding callbacks. + * + * @constructor MapBookKeeping + * @param {!*} mapResult Object containing the ordered map of results. + * @param {!function} mapFunction Function to perform mapping with. + * @param {?*} mapContext Context to perform mapping with. + */ +function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) { + this.result = mapResult; + this.keyPrefix = keyPrefix; + this.func = mapFunction; + this.context = mapContext; + this.count = 0; +} +MapBookKeeping.prototype.destructor = function () { + this.result = null; + this.keyPrefix = null; + this.func = null; + this.context = null; + this.count = 0; +}; +PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler); + +function mapSingleChildIntoContext(bookKeeping, child, childKey) { + var result = bookKeeping.result, + keyPrefix = bookKeeping.keyPrefix, + func = bookKeeping.func, + context = bookKeeping.context; + + + var mappedChild = func.call(context, child, bookKeeping.count++); + if (Array.isArray(mappedChild)) { + mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument); + } else if (mappedChild != null) { + if (ReactElement.isValidElement(mappedChild)) { + mappedChild = ReactElement.cloneAndReplaceKey(mappedChild, + // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); + } + result.push(mappedChild); + } +} + +function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { + var escapedPrefix = ''; + if (prefix != null) { + escapedPrefix = escapeUserProvidedKey(prefix) + '/'; + } + var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context); + traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); + MapBookKeeping.release(traverseContext); +} + +/** + * Maps children that are typically specified as `props.children`. + * + * See https://facebook.github.io/react/docs/react-api.html#react.children.map + * + * The provided mapFunction(child, key, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ +function mapChildren(children, func, context) { + if (children == null) { + return children; + } + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, func, context); + return result; +} + +function forEachSingleChildDummy(traverseContext, child, name) { + return null; +} + +/** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://facebook.github.io/react/docs/react-api.html#react.children.count + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ +function countChildren(children, context) { + return traverseAllChildren(children, forEachSingleChildDummy, null); +} + +/** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://facebook.github.io/react/docs/react-api.html#react.children.toarray + */ +function toArray(children) { + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument); + return result; +} + +var ReactChildren = { + forEach: forEachChildren, + map: mapChildren, + mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal, + count: countChildren, + toArray: toArray +}; + +module.exports = ReactChildren; + +/***/ }), +/* 354 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _assign = __webpack_require__(6), + _prodInvariant = __webpack_require__(22); + +var ReactBaseClasses = __webpack_require__(158); +var ReactElement = __webpack_require__(25); +var ReactNoopUpdateQueue = __webpack_require__(163); + +var emptyObject = __webpack_require__(38); +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +var ReactComponent = ReactBaseClasses.Component; + +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`. + */ + + +/** + * Composite components are higher-level components that compose other composite + * or host components. + * + * To create a new type of `ReactClass`, pass a specification of + * your new class to `React.createClass`. The only requirement of your class + * specification is that you implement a `render` method. + * + * var MyComponent = React.createClass({ + * render: function() { + * return <div>Hello World</div>; + * } + * }); + * + * The class specification supports a specific protocol of methods that have + * special meaning (e.g. `render`). See `ReactClassInterface` for + * more the comprehensive protocol. Any other properties and methods in the + * class specification will be available on the prototype. + * + * @interface ReactClassInterface + * @internal + */ +var ReactClassInterface = { + /** + * An array of Mixin objects to include when defining your component. + * + * @type {array} + * @optional + */ + mixins: 'DEFINE_MANY', + + /** + * An object containing properties and methods that should be defined on + * the component's constructor instead of its prototype (static methods). + * + * @type {object} + * @optional + */ + statics: 'DEFINE_MANY', + + /** + * Definition of prop types for this component. + * + * @type {object} + * @optional + */ + propTypes: 'DEFINE_MANY', + + /** + * Definition of context types for this component. + * + * @type {object} + * @optional + */ + contextTypes: 'DEFINE_MANY', + + /** + * Definition of context types this component sets for its children. + * + * @type {object} + * @optional + */ + childContextTypes: 'DEFINE_MANY', + + // ==== Definition methods ==== + + /** + * Invoked when the component is mounted. Values in the mapping will be set on + * `this.props` if that prop is not specified (i.e. using an `in` check). + * + * This method is invoked before `getInitialState` and therefore cannot rely + * on `this.state` or use `this.setState`. + * + * @return {object} + * @optional + */ + getDefaultProps: 'DEFINE_MANY_MERGED', + + /** + * Invoked once before the component is mounted. The return value will be used + * as the initial value of `this.state`. + * + * getInitialState: function() { + * return { + * isOn: false, + * fooBaz: new BazFoo() + * } + * } + * + * @return {object} + * @optional + */ + getInitialState: 'DEFINE_MANY_MERGED', + + /** + * @return {object} + * @optional + */ + getChildContext: 'DEFINE_MANY_MERGED', + + /** + * Uses props from `this.props` and state from `this.state` to render the + * structure of the component. + * + * No guarantees are made about when or how often this method is invoked, so + * it must not have side effects. + * + * render: function() { + * var name = this.props.name; + * return <div>Hello, {name}!</div>; + * } + * + * @return {ReactComponent} + * @required + */ + render: 'DEFINE_ONCE', + + // ==== Delegate methods ==== + + /** + * Invoked when the component is initially created and about to be mounted. + * This may have side effects, but any external subscriptions or data created + * by this method must be cleaned up in `componentWillUnmount`. + * + * @optional + */ + componentWillMount: 'DEFINE_MANY', + + /** + * Invoked when the component has been mounted and has a DOM representation. + * However, there is no guarantee that the DOM node is in the document. + * + * Use this as an opportunity to operate on the DOM when the component has + * been mounted (initialized and rendered) for the first time. + * + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidMount: 'DEFINE_MANY', + + /** + * Invoked before the component receives new props. + * + * Use this as an opportunity to react to a prop transition by updating the + * state using `this.setState`. Current props are accessed via `this.props`. + * + * componentWillReceiveProps: function(nextProps, nextContext) { + * this.setState({ + * likesIncreasing: nextProps.likeCount > this.props.likeCount + * }); + * } + * + * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop + * transition may cause a state change, but the opposite is not true. If you + * need it, you are probably looking for `componentWillUpdate`. + * + * @param {object} nextProps + * @optional + */ + componentWillReceiveProps: 'DEFINE_MANY', + + /** + * Invoked while deciding if the component should be updated as a result of + * receiving new props, state and/or context. + * + * Use this as an opportunity to `return false` when you're certain that the + * transition to the new props/state/context will not require a component + * update. + * + * shouldComponentUpdate: function(nextProps, nextState, nextContext) { + * return !equal(nextProps, this.props) || + * !equal(nextState, this.state) || + * !equal(nextContext, this.context); + * } + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @return {boolean} True if the component should update. + * @optional + */ + shouldComponentUpdate: 'DEFINE_ONCE', + + /** + * Invoked when the component is about to update due to a transition from + * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` + * and `nextContext`. + * + * Use this as an opportunity to perform preparation before an update occurs. + * + * NOTE: You **cannot** use `this.setState()` in this method. + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @param {ReactReconcileTransaction} transaction + * @optional + */ + componentWillUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component's DOM representation has been updated. + * + * Use this as an opportunity to operate on the DOM when the component has + * been updated. + * + * @param {object} prevProps + * @param {?object} prevState + * @param {?object} prevContext + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component is about to be removed from its parent and have + * its DOM representation destroyed. + * + * Use this as an opportunity to deallocate any external resources. + * + * NOTE: There is no `componentDidUnmount` since your component will have been + * destroyed by that point. + * + * @optional + */ + componentWillUnmount: 'DEFINE_MANY', + + // ==== Advanced methods ==== + + /** + * Updates the component's currently mounted DOM representation. + * + * By default, this implements React's rendering and reconciliation algorithm. + * Sophisticated clients may wish to override this. + * + * @param {ReactReconcileTransaction} transaction + * @internal + * @overridable + */ + updateComponent: 'OVERRIDE_BASE' +}; + +/** + * Mapping from class specification keys to special processing functions. + * + * Although these are declared like instance properties in the specification + * when defining classes using `React.createClass`, they are actually static + * and are accessible on the constructor instead of the prototype. Despite + * being static, they must be defined outside of the "statics" key under + * which all other static methods are defined. + */ +var RESERVED_SPEC_KEYS = { + displayName: function (Constructor, displayName) { + Constructor.displayName = displayName; + }, + mixins: function (Constructor, mixins) { + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + mixSpecIntoComponent(Constructor, mixins[i]); + } + } + }, + childContextTypes: function (Constructor, childContextTypes) { + if (true) { + validateTypeDef(Constructor, childContextTypes, 'child context'); + } + Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes); + }, + contextTypes: function (Constructor, contextTypes) { + if (true) { + validateTypeDef(Constructor, contextTypes, 'context'); + } + Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes); + }, + /** + * Special case getDefaultProps which should move into statics but requires + * automatic merging. + */ + getDefaultProps: function (Constructor, getDefaultProps) { + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); + } else { + Constructor.getDefaultProps = getDefaultProps; + } + }, + propTypes: function (Constructor, propTypes) { + if (true) { + validateTypeDef(Constructor, propTypes, 'prop'); + } + Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); + }, + statics: function (Constructor, statics) { + mixStaticSpecIntoComponent(Constructor, statics); + }, + autobind: function () {} }; + +function validateTypeDef(Constructor, typeDef, location) { + for (var propName in typeDef) { + if (typeDef.hasOwnProperty(propName)) { + // use a warning instead of an invariant so components + // don't show up in prod but only in __DEV__ + true ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', location, propName) : void 0; + } + } +} + +function validateMethodOverride(isAlreadyDefined, name) { + var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; + + // Disallow overriding of base class methods unless explicitly allowed. + if (ReactClassMixin.hasOwnProperty(name)) { + !(specPolicy === 'OVERRIDE_BASE') ? true ? 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 === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? true ? 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; + } +} + +/** + * Mixin helper which handles policy validation and reserved + * specification keys when building React classes. + */ +function mixSpecIntoComponent(Constructor, spec) { + if (!spec) { + if (true) { + var typeofSpec = typeof spec; + var isMixinValid = typeofSpec === 'object' && spec !== null; + + true ? warning(isMixinValid, "%s: You're attempting to include a mixin that is either null " + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0; + } + + return; + } + + !(typeof spec !== 'function') ? true ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0; + !!ReactElement.isValidElement(spec) ? true ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0; + + var proto = Constructor.prototype; + var autoBindPairs = proto.__reactAutoBindPairs; + + // By handling mixins before any other properties, we ensure the same + // chaining order is applied to methods with DEFINE_MANY policy, whether + // mixins are listed before or after these methods in the spec. + if (spec.hasOwnProperty(MIXINS_KEY)) { + RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); + } + + for (var name in spec) { + if (!spec.hasOwnProperty(name)) { + continue; + } + + if (name === MIXINS_KEY) { + // We have already handled mixins in a special case above. + continue; + } + + var property = spec[name]; + var isAlreadyDefined = proto.hasOwnProperty(name); + validateMethodOverride(isAlreadyDefined, name); + + if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { + RESERVED_SPEC_KEYS[name](Constructor, property); + } else { + // Setup methods on prototype: + // The following member methods should not be automatically bound: + // 1. Expected ReactClass methods (in the "interface"). + // 2. Overridden methods (that were mixed in). + var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); + var isFunction = typeof property === 'function'; + var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; + + if (shouldAutoBind) { + autoBindPairs.push(name, property); + proto[name] = property; + } else { + if (isAlreadyDefined) { + var specPolicy = ReactClassInterface[name]; + + // These cases should already be caught by validateMethodOverride. + !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? true ? 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 === 'DEFINE_MANY_MERGED') { + proto[name] = createMergedResultFunction(proto[name], property); + } else if (specPolicy === 'DEFINE_MANY') { + proto[name] = createChainedFunction(proto[name], property); + } + } else { + proto[name] = property; + if (true) { + // Add verbose displayName to the function, which helps when looking + // at profiling tools. + if (typeof property === 'function' && spec.displayName) { + proto[name].displayName = spec.displayName + '_' + name; + } + } + } + } + } + } +} + +function mixStaticSpecIntoComponent(Constructor, statics) { + if (!statics) { + return; + } + for (var name in statics) { + var property = statics[name]; + if (!statics.hasOwnProperty(name)) { + continue; + } + + var isReserved = name in RESERVED_SPEC_KEYS; + !!isReserved ? true ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0; + + var isInherited = name in Constructor; + !!isInherited ? true ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0; + Constructor[name] = property; + } +} + +/** + * Merge two objects, but throw if both contain the same key. + * + * @param {object} one The first object, which is mutated. + * @param {object} two The second object + * @return {object} one after it has been mutated to contain everything in two. + */ +function mergeIntoWithNoDuplicateKeys(one, two) { + !(one && two && typeof one === 'object' && typeof two === 'object') ? true ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0; + + for (var key in two) { + if (two.hasOwnProperty(key)) { + !(one[key] === undefined) ? true ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0; + one[key] = two[key]; + } + } + return one; +} + +/** + * Creates a function that invokes two functions and merges their return values. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ +function createMergedResultFunction(one, two) { + return function mergedResult() { + var a = one.apply(this, arguments); + var b = two.apply(this, arguments); + if (a == null) { + return b; + } else if (b == null) { + return a; + } + var c = {}; + mergeIntoWithNoDuplicateKeys(c, a); + mergeIntoWithNoDuplicateKeys(c, b); + return c; + }; +} + +/** + * Creates a function that invokes two functions and ignores their return vales. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ +function createChainedFunction(one, two) { + return function chainedFunction() { + one.apply(this, arguments); + two.apply(this, arguments); + }; +} + +/** + * Binds a method to the component. + * + * @param {object} component Component whose method is going to be bound. + * @param {function} method Method to be bound. + * @return {function} The bound method. + */ +function bindAutoBindMethod(component, method) { + var boundMethod = method.bind(component); + if (true) { + boundMethod.__reactBoundContext = component; + boundMethod.__reactBoundMethod = method; + boundMethod.__reactBoundArguments = null; + var componentName = component.constructor.displayName; + var _bind = boundMethod.bind; + boundMethod.bind = function (newThis) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + // User is trying to bind() an autobound method; we effectively will + // ignore the value of "this" that the user is trying to use, so + // let's warn. + if (newThis !== component && newThis !== null) { + true ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance.\n\nSee %s', componentName) : void 0; + } else if (!args.length) { + true ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call.\n\nSee %s', componentName) : void 0; + return boundMethod; + } + var reboundMethod = _bind.apply(boundMethod, arguments); + reboundMethod.__reactBoundContext = component; + reboundMethod.__reactBoundMethod = method; + reboundMethod.__reactBoundArguments = args; + return reboundMethod; + }; + } + return boundMethod; +} + +/** + * Binds all auto-bound methods in a component. + * + * @param {object} component Component whose method is going to be bound. + */ +function bindAutoBindMethods(component) { + var pairs = component.__reactAutoBindPairs; + for (var i = 0; i < pairs.length; i += 2) { + var autoBindKey = pairs[i]; + var method = pairs[i + 1]; + component[autoBindKey] = bindAutoBindMethod(component, method); + } +} + +/** + * Add more to the ReactClass base class. These are all legacy features and + * therefore not already part of the modern ReactComponent. + */ +var ReactClassMixin = { + /** + * TODO: This will be deprecated because state should always keep a consistent + * type signature and the only use case for this, is to avoid that. + */ + replaceState: function (newState, callback) { + this.updater.enqueueReplaceState(this, newState, callback, 'replaceState'); + }, + + /** + * Checks whether or not this composite component is mounted. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function () { + return this.updater.isMounted(this); + } +}; + +var ReactClassComponent = function () {}; +_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); + +/** + * Module for creating composite components. + * + * @class ReactClass + */ +var ReactClass = { + /** + * Creates a composite component class given a class specification. + * See https://facebook.github.io/react/docs/react-api.html#createclass + * + * @param {object} spec Class specification (which must define `render`). + * @return {function} Component constructor function. + * @public + */ + createClass: function (spec) { + // 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. + + if (true) { + true ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0; + } + + // Wire up auto-binding + if (this.__reactAutoBindPairs.length) { + bindAutoBindMethods(this); + } + + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + + this.state = null; + + // ReactClasses doesn't have constructors. Instead, they use the + // getInitialState and componentWillMount methods for initialization. + + var initialState = this.getInitialState ? this.getInitialState() : null; + if (true) { + // We allow auto-mocks to proceed as if they're returning null. + if (initialState === undefined && this.getInitialState._isMockFunction) { + // This is probably bad practice. Consider warning here and + // deprecating this convenience. + initialState = null; + } + } + !(typeof initialState === 'object' && !Array.isArray(initialState)) ? true ? 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 = []; + + mixSpecIntoComponent(Constructor, spec); + + // Initialize the defaultProps property after all mixins have been merged. + if (Constructor.getDefaultProps) { + Constructor.defaultProps = Constructor.getDefaultProps(); + } + + if (true) { + // This is a tag to indicate that the use of these method names is ok, + // since it's used with createClass. If it's not, then it's likely a + // mistake so we'll warn you to use the static property, property + // initializer or constructor respectively. + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps.isReactClassApproved = {}; + } + if (Constructor.prototype.getInitialState) { + Constructor.prototype.getInitialState.isReactClassApproved = {}; + } + } + + !Constructor.prototype.render ? true ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0; + + if (true) { + true ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0; + true ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0; + } + + // Reduce time spent doing lookups by setting these on the prototype. + for (var methodName in ReactClassInterface) { + if (!Constructor.prototype[methodName]) { + Constructor.prototype[methodName] = null; + } + } + + return Constructor; + } +}; + +module.exports = ReactClass; + +/***/ }), +/* 355 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var ReactElement = __webpack_require__(25); + +/** + * Create a factory that creates HTML tag elements. + * + * @private + */ +var createDOMFactory = ReactElement.createFactory; +if (true) { + var ReactElementValidator = __webpack_require__(161); + createDOMFactory = ReactElementValidator.createFactory; +} + +/** + * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes. + * This is also accessible via `React.DOM`. + * + * @public + */ +var ReactDOMFactories = { + a: createDOMFactory('a'), + abbr: createDOMFactory('abbr'), + address: createDOMFactory('address'), + area: createDOMFactory('area'), + article: createDOMFactory('article'), + aside: createDOMFactory('aside'), + audio: createDOMFactory('audio'), + b: createDOMFactory('b'), + base: createDOMFactory('base'), + bdi: createDOMFactory('bdi'), + bdo: createDOMFactory('bdo'), + big: createDOMFactory('big'), + blockquote: createDOMFactory('blockquote'), + body: createDOMFactory('body'), + br: createDOMFactory('br'), + button: createDOMFactory('button'), + canvas: createDOMFactory('canvas'), + caption: createDOMFactory('caption'), + cite: createDOMFactory('cite'), + code: createDOMFactory('code'), + col: createDOMFactory('col'), + colgroup: createDOMFactory('colgroup'), + data: createDOMFactory('data'), + datalist: createDOMFactory('datalist'), + dd: createDOMFactory('dd'), + del: createDOMFactory('del'), + details: createDOMFactory('details'), + dfn: createDOMFactory('dfn'), + dialog: createDOMFactory('dialog'), + div: createDOMFactory('div'), + dl: createDOMFactory('dl'), + dt: createDOMFactory('dt'), + em: createDOMFactory('em'), + embed: createDOMFactory('embed'), + fieldset: createDOMFactory('fieldset'), + figcaption: createDOMFactory('figcaption'), + figure: createDOMFactory('figure'), + footer: createDOMFactory('footer'), + form: createDOMFactory('form'), + h1: createDOMFactory('h1'), + h2: createDOMFactory('h2'), + h3: createDOMFactory('h3'), + h4: createDOMFactory('h4'), + h5: createDOMFactory('h5'), + h6: createDOMFactory('h6'), + head: createDOMFactory('head'), + header: createDOMFactory('header'), + hgroup: createDOMFactory('hgroup'), + hr: createDOMFactory('hr'), + html: createDOMFactory('html'), + i: createDOMFactory('i'), + iframe: createDOMFactory('iframe'), + img: createDOMFactory('img'), + input: createDOMFactory('input'), + ins: createDOMFactory('ins'), + kbd: createDOMFactory('kbd'), + keygen: createDOMFactory('keygen'), + label: createDOMFactory('label'), + legend: createDOMFactory('legend'), + li: createDOMFactory('li'), + link: createDOMFactory('link'), + main: createDOMFactory('main'), + map: createDOMFactory('map'), + mark: createDOMFactory('mark'), + menu: createDOMFactory('menu'), + menuitem: createDOMFactory('menuitem'), + meta: createDOMFactory('meta'), + meter: createDOMFactory('meter'), + nav: createDOMFactory('nav'), + noscript: createDOMFactory('noscript'), + object: createDOMFactory('object'), + ol: createDOMFactory('ol'), + optgroup: createDOMFactory('optgroup'), + option: createDOMFactory('option'), + output: createDOMFactory('output'), + p: createDOMFactory('p'), + param: createDOMFactory('param'), + picture: createDOMFactory('picture'), + pre: createDOMFactory('pre'), + progress: createDOMFactory('progress'), + q: createDOMFactory('q'), + rp: createDOMFactory('rp'), + rt: createDOMFactory('rt'), + ruby: createDOMFactory('ruby'), + s: createDOMFactory('s'), + samp: createDOMFactory('samp'), + script: createDOMFactory('script'), + section: createDOMFactory('section'), + select: createDOMFactory('select'), + small: createDOMFactory('small'), + source: createDOMFactory('source'), + span: createDOMFactory('span'), + strong: createDOMFactory('strong'), + style: createDOMFactory('style'), + sub: createDOMFactory('sub'), + summary: createDOMFactory('summary'), + sup: createDOMFactory('sup'), + table: createDOMFactory('table'), + tbody: createDOMFactory('tbody'), + td: createDOMFactory('td'), + textarea: createDOMFactory('textarea'), + tfoot: createDOMFactory('tfoot'), + th: createDOMFactory('th'), + thead: createDOMFactory('thead'), + time: createDOMFactory('time'), + title: createDOMFactory('title'), + tr: createDOMFactory('tr'), + track: createDOMFactory('track'), + u: createDOMFactory('u'), + ul: createDOMFactory('ul'), + 'var': createDOMFactory('var'), + video: createDOMFactory('video'), + wbr: createDOMFactory('wbr'), + + // SVG + circle: createDOMFactory('circle'), + clipPath: createDOMFactory('clipPath'), + defs: createDOMFactory('defs'), + ellipse: createDOMFactory('ellipse'), + g: createDOMFactory('g'), + image: createDOMFactory('image'), + line: createDOMFactory('line'), + linearGradient: createDOMFactory('linearGradient'), + mask: createDOMFactory('mask'), + path: createDOMFactory('path'), + pattern: createDOMFactory('pattern'), + polygon: createDOMFactory('polygon'), + polyline: createDOMFactory('polyline'), + radialGradient: createDOMFactory('radialGradient'), + rect: createDOMFactory('rect'), + stop: createDOMFactory('stop'), + svg: createDOMFactory('svg'), + text: createDOMFactory('text'), + tspan: createDOMFactory('tspan') +}; + +module.exports = ReactDOMFactories; + +/***/ }), +/* 356 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(22); + +var ReactElement = __webpack_require__(25); +var ReactPropTypesSecret = __webpack_require__(164); + +var emptyFunction = __webpack_require__(10); +var getIteratorFn = __webpack_require__(98); +var invariant = __webpack_require__(0); +var warning = __webpack_require__(1); + +/** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + +var ANONYMOUS = '<<anonymous>>'; + +var ReactPropTypes; + +if (true) { + // Keep in sync with production version below + ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker + }; +} else { + var productionTypeChecker = function () { + !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.PropTypes type checking code is stripped in production.') : _prodInvariant('144') : void 0; + }; + productionTypeChecker.isRequired = productionTypeChecker; + var getProductionTypeChecker = function () { + return productionTypeChecker; + }; + // Keep in sync with development version above + ReactPropTypes = { + array: productionTypeChecker, + bool: productionTypeChecker, + func: productionTypeChecker, + number: productionTypeChecker, + object: productionTypeChecker, + string: productionTypeChecker, + symbol: productionTypeChecker, + + any: productionTypeChecker, + arrayOf: getProductionTypeChecker, + element: productionTypeChecker, + instanceOf: getProductionTypeChecker, + node: productionTypeChecker, + objectOf: getProductionTypeChecker, + oneOf: getProductionTypeChecker, + oneOfType: getProductionTypeChecker, + shape: getProductionTypeChecker + }; +} + +/** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ +/*eslint-disable no-self-compare*/ +function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } +} +/*eslint-enable no-self-compare*/ + +/** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ +function PropTypeError(message) { + this.message = message; + this.stack = ''; +} +// Make `instanceof Error` still work for returned errors. +PropTypeError.prototype = Error.prototype; + +function createChainableTypeChecker(validate) { + if (true) { + var manualPropTypeCallCache = {}; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + if (true) { + if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') { + var cacheKey = componentName + ':' + propName; + if (!manualPropTypeCallCache[cacheKey]) { + true ? 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; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; +} + +function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); +} + +function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunction.thatReturnsNull); +} + +function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); +} + +function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactElement.isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); +} + +function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); +} + +function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + true ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); +} + +function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (propValue.hasOwnProperty(key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); +} + +function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + true ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunction.thatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); +} + +function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); +} + +function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); +} + +function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || ReactElement.isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } +} + +function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; +} + +// Equivalent of `typeof` but with special handling for array and regexp. +function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; +} + +// This handles more types than `getPropType`. Only used for error messages. +// See `createPrimitiveTypeChecker`. +function getPreciseType(propValue) { + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; +} + +// Returns class name of the object, if any. +function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; +} + +module.exports = ReactPropTypes; + +/***/ }), +/* 357 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +module.exports = { + IndeterminateComponent: 0, // Before we know whether it is functional or class + FunctionalComponent: 1, + ClassComponent: 2, + HostRoot: 3, // Root of a host tree. Could be nested inside another node. + HostPortal: 4, // A subtree. Could be an entry point to a different renderer. + HostComponent: 5, + HostText: 6, + CoroutineComponent: 7, + CoroutineHandlerPhase: 8, + YieldComponent: 9, + Fragment: 10 +}; + +/***/ }), +/* 358 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +module.exports = '16.0.0-alpha.6'; + +/***/ }), +/* 359 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var checkPropTypes = __webpack_require__(165); + +var _require = __webpack_require__(159), + getStackAddendum = _require.getStackAddendum; + +function checkReactTypeSpec(typeSpecs, values, location, componentName) { + checkPropTypes(typeSpecs, values, location, componentName, getStackAddendum); +} + +module.exports = checkReactTypeSpec; + +/***/ }), +/* 360 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + * + */ + + + +var nextDebugID = 1; + +function getNextDebugID() { + return nextDebugID++; +} + +module.exports = getNextDebugID; + +/***/ }), +/* 361 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + +var _prodInvariant = __webpack_require__(22); + +var ReactElement = __webpack_require__(25); + +var invariant = __webpack_require__(0); + +/** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://facebook.github.io/react/docs/react-api.html#react.children.only + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ +function onlyChild(children) { + !ReactElement.isValidElement(children) ? true ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0; + return children; +} + +module.exports = onlyChild; + +/***/ }), +/* 362 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * 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. + * + */ + + + +var _prodInvariant = __webpack_require__(22); + +var ReactCurrentOwner = __webpack_require__(17); +var REACT_ELEMENT_TYPE = __webpack_require__(160); + +var getIteratorFn = __webpack_require__(98); +var invariant = __webpack_require__(0); +var KeyEscapeUtils = __webpack_require__(351); +var warning = __webpack_require__(1); + +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. + */ + +var didWarnAboutMaps = false; + +/** + * Generate a key string that identifies a component within a set. + * + * @param {*} component A component that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ +function getComponentKey(component, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (component && typeof component === 'object' && component.key != null) { + // Explicit key + return KeyEscapeUtils.escape(component.key); + } + // Implicit key determined by the index in the set + return index.toString(36); +} + +/** + * @param {?*} children Children tree container. + * @param {!string} nameSoFar Name of the key path so far. + * @param {!function} callback Callback to invoke with each child found. + * @param {?*} traverseContext Used to pass information throughout the traversal + * process. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + 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. + nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getComponentKey(child, i); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + var iteratorFn = getIteratorFn(children); + if (iteratorFn) { + if (true) { + // Warn about using Maps as children + if (iteratorFn === children.entries) { + var mapsAsChildrenAddendum = ''; + if (ReactCurrentOwner.current) { + var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); + if (mapsAsChildrenOwnerName) { + mapsAsChildrenAddendum = '\n\nCheck the render method of `' + mapsAsChildrenOwnerName + '`.'; + } + } + true ? warning(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; + didWarnAboutMaps = true; + } + } + + var iterator = iteratorFn.call(children); + var step; + var ii = 0; + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getComponentKey(child, ii++); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else if (type === 'object') { + var addendum = ''; + if (true) { + addendum = ' If you meant to render a collection of children, use an array ' + 'instead.'; + if (ReactCurrentOwner.current) { + var name = ReactCurrentOwner.current.getName(); + if (name) { + addendum += '\n\nCheck the render method of `' + name + '`.'; + } + } + } + var childrenString = '' + children; + true ? true ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; + } + } + + return subtreeCount; +} + +/** + * Traverses children that are typically specified as `props.children`, but + * might also be specified through attributes: + * + * - `traverseAllChildren(this.props.children, ...)` + * - `traverseAllChildren(this.props.leftPanelChildren, ...)` + * + * The `traverseContext` is an optional argument that is passed through the + * entire traversal. It can be used to store accumulations or anything else that + * the callback might find relevant. + * + * @param {?*} children Children tree object. + * @param {!function} callback To invoke upon traversing each child. + * @param {?*} traverseContext Context for traversal. + * @return {!number} The number of children in this subtree. + */ +function traverseAllChildren(children, callback, traverseContext) { + if (children == null) { + return 0; + } + + return traverseAllChildrenImpl(children, '', callback, traverseContext); +} + +module.exports = traverseAllChildren; + +/***/ }), +/* 363 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__; + +/***/ }) +/******/ ]);
\ No newline at end of file |
