diff --git a/Examples/HybridMobileDeployCompanion/iOS/Info.plist b/Examples/HybridMobileDeployCompanion/iOS/Info.plist index d8d6714a0..20d5f2795 100644 --- a/Examples/HybridMobileDeployCompanion/iOS/Info.plist +++ b/Examples/HybridMobileDeployCompanion/iOS/Info.plist @@ -40,5 +40,7 @@ CodePushDeploymentKey deployment-key-here + CodePushServerUrl + server-url-here diff --git a/Examples/HybridMobileDeployCompanion/index.ios.js b/Examples/HybridMobileDeployCompanion/index.ios.js index 49ad592b4..712750823 100644 --- a/Examples/HybridMobileDeployCompanion/index.ios.js +++ b/Examples/HybridMobileDeployCompanion/index.ios.js @@ -22,9 +22,9 @@ var HybridMobileDeployCompanion = React.createClass({ this.fetchData(); }, fetchData: function() { - HybridMobileDeploy.queryUpdate((err, update) => { - this.setState({ update: update, updateString: JSON.stringify(update) }); - }); + HybridMobileDeploy.queryUpdate((err, update) => { + this.setState({ update: update, updateString: JSON.stringify(update) }); + }); }, getInitialState: function() { return { update: false, updateString: "" }; diff --git a/Examples/HybridMobileDeployCompanion/react-packager-cache-5737493143262339187995942fd693ba b/Examples/HybridMobileDeployCompanion/react-packager-cache-5737493143262339187995942fd693ba new file mode 100644 index 000000000..8a0cfd96b --- /dev/null +++ b/Examples/HybridMobileDeployCompanion/react-packager-cache-5737493143262339187995942fd693ba @@ -0,0 +1 @@ +{"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/prelude_dev.js":{"data":{"code":"__DEV__ = \ntrue;\n\n\n__BUNDLE_START_TIME__ = Date.now();","sourceCode":"/* eslint global-strict:0 */\n__DEV__ = true;\n\n/* global __BUNDLE_START_TIME__:true */\n__BUNDLE_START_TIME__ = Date.now();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/prelude_dev.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/require.js":{"data":{"code":"(\nfunction(global){\n\n\nif(global.require){\nreturn;}\n\n\nvar __DEV__=global.__DEV__;\n\nvar toString=Object.prototype.toString;\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar modulesMap={},\n\n\n\n\n\n\ndependencyMap={},\n\n\n\npredefinedRefCounts={},\n\n_counter=0,\n\nREQUIRE_WHEN_READY=1,\nUSED_AS_TRANSPORT=2,\n\nhop=Object.prototype.hasOwnProperty;\n\nfunction _debugUnresolvedDependencies(names){\nvar unresolved=Array.prototype.slice.call(names);\nvar visited={};\nvar ii,name,module,dependency;\n\nwhile(unresolved.length) {\nname = unresolved.shift();\nif(visited[name]){\ncontinue;}\n\nvisited[name] = true;\n\nmodule = modulesMap[name];\nif(!module || !module.waiting){\ncontinue;}\n\n\nfor(ii = 0;ii < module.dependencies.length;ii++) {\ndependency = module.dependencies[ii];\nif(!modulesMap[dependency] || modulesMap[dependency].waiting){\nunresolved.push(dependency);}}}\n\n\n\n\nfor(name in visited) if(hop.call(visited,name)){\nunresolved.push(name);}\n\n\nvar messages=[];\nfor(ii = 0;ii < unresolved.length;ii++) {\nname = unresolved[ii];\nvar message=name;\nmodule = modulesMap[name];\nif(!module){\nmessage += ' is not defined';}else \nif(!module.waiting){\nmessage += ' is ready';}else \n{\nvar unresolvedDependencies=[];\nfor(var jj=0;jj < module.dependencies.length;jj++) {\ndependency = module.dependencies[jj];\nif(!modulesMap[dependency] || modulesMap[dependency].waiting){\nunresolvedDependencies.push(dependency);}}\n\n\nmessage += ' is waiting for ' + unresolvedDependencies.join(', ');}\n\nmessages.push(message);}\n\nreturn messages.join('\\n');}\n\n\n\n\n\nfunction ModuleError(msg){\nthis.name = 'ModuleError';\nthis.message = msg;\nthis.stack = Error(msg).stack;\nthis.framesToPop = 2;}\n\nModuleError.prototype = Object.create(Error.prototype);\nModuleError.prototype.constructor = ModuleError;\n\nvar _performance=\nglobal.performance || \nglobal.msPerformance || \nglobal.webkitPerformance || {};\n\nif(!_performance.now){\n_performance = global.Date;}\n\n\nvar _now=_performance?\n_performance.now.bind(_performance):function(){return 0;};\n\nvar _factoryStackCount=0;\nvar _factoryTime=0;\nvar _totalFactories=0;\nvar _inGuard=false;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction require(id){\nvar module=modulesMap[id],dep,i,msg;\nif(module && module.exports){\n\n\nif(module.refcount-- === 1){\ndelete modulesMap[id];}\n\nreturn module.exports;}\n\nif(global.ErrorUtils && !_inGuard){\n_inGuard = true;\ntry{\nvar ret=require.apply(this,arguments);}\ncatch(e) {\nglobal.ErrorUtils.reportFatalError(e);}\n\n_inGuard = false;\nreturn ret;}\n\n\nif(!module){\nmsg = 'Requiring unknown module \"' + id + '\"';\nif(__DEV__){\nmsg += '. If you are sure the module is there, try restarting the packager.';}\n\nthrow new ModuleError(msg);}\n\n\nif(module.hasError){\nthrow new ModuleError(\n'Requiring module \"' + id + '\" which threw an exception');}\n\n\n\nif(module.waiting){\nthrow new ModuleError(\n'Requiring module \"' + id + '\" with unresolved dependencies: ' + \n_debugUnresolvedDependencies([id]));}\n\n\n\nvar exports=module.exports = {};\nvar factory=module.factory;\nif(toString.call(factory) === '[object Function]'){\nvar args=[],\ndependencies=module.dependencies,\nlength=dependencies.length,\nret;\nif(module.special & USED_AS_TRANSPORT){\nlength = Math.min(length,factory.length);}\n\ntry{\nfor(i = 0;args.length < length;i++) {\ndep = dependencies[i];\nif(!module.inlineRequires[dep]){\nargs.push(dep === 'module'?module:\ndep === 'exports'?exports:\nrequire.call(null,dep));}}\n\n\n\n++_totalFactories;\nif(_factoryStackCount++ === 0){\n_factoryTime -= _now();}\n\ntry{\nret = factory.apply(module.context || global,args);}\ncatch(e) {\nif(modulesMap.ex && modulesMap.erx){\n\n\nvar ex=require.call(null,'ex');\nvar erx=require.call(null,'erx');\nvar messageWithParams=erx(e.message);\nif(messageWithParams[0].indexOf(' from module \"%s\"') < 0){\nmessageWithParams[0] += ' from module \"%s\"';\nmessageWithParams[messageWithParams.length] = id;}\n\ne.message = ex.apply(null,messageWithParams);}\n\nthrow e;}finally \n{\nif(--_factoryStackCount === 0){\n_factoryTime += _now();}}}\n\n\ncatch(e) {\nmodule.hasError = true;\nmodule.exports = null;\nthrow e;}\n\nif(ret){\nif(__DEV__){\nif(typeof ret != 'object' && typeof ret != 'function'){\nthrow new ModuleError(\n'Factory for module \"' + id + '\" returned ' + \n'an invalid value \"' + ret + '\". ' + \n'Returned value should be either a function or an object.');}}\n\n\n\nmodule.exports = ret;}}else \n\n{\nmodule.exports = factory;}\n\n\n\n\nif(module.refcount-- === 1){\ndelete modulesMap[id];}\n\nreturn module.exports;}\n\n\nrequire.__getFactoryTime = function(){\nreturn (_factoryStackCount?_now():0) + _factoryTime;};\n\n\nrequire.__getTotalFactories = function(){\nreturn _totalFactories;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction define(id,dependencies,factory,\n_special,_context,_refCount,_inlineRequires){\nif(dependencies === undefined){\ndependencies = [];\nfactory = id;\nid = _uid();}else \nif(factory === undefined){\nfactory = dependencies;\nif(toString.call(id) === '[object Array]'){\ndependencies = id;\nid = _uid();}else \n{\ndependencies = [];}}\n\n\n\n\n\nvar canceler={cancel:_undefine.bind(this,id)};\n\nvar record=modulesMap[id];\n\n\n\n\n\n\nif(record){\nif(_refCount){\nrecord.refcount += _refCount;}\n\n\nreturn canceler;}else \nif(!dependencies && !factory && _refCount){\n\n\npredefinedRefCounts[id] = (predefinedRefCounts[id] || 0) + _refCount;\nreturn canceler;}else \n{\n\nrecord = {id:id};\nrecord.refcount = (predefinedRefCounts[id] || 0) + (_refCount || 0);\ndelete predefinedRefCounts[id];}\n\n\nif(__DEV__){\nif(\n!factory || \ntypeof factory != 'object' && typeof factory != 'function' && \ntypeof factory != 'string'){\nthrow new ModuleError(\n'Invalid factory \"' + factory + '\" for module \"' + id + '\". ' + \n'Factory should be either a function or an object.');}\n\n\n\nif(toString.call(dependencies) !== '[object Array]'){\nthrow new ModuleError(\n'Invalid dependencies for module \"' + id + '\". ' + \n'Dependencies must be passed as an array.');}}\n\n\n\n\nrecord.factory = factory;\nrecord.dependencies = dependencies;\nrecord.context = _context;\nrecord.special = _special;\nrecord.inlineRequires = _inlineRequires || {};\nrecord.waitingMap = {};\nrecord.waiting = 0;\nrecord.hasError = false;\nmodulesMap[id] = record;\n_initDependencies(id);\n\nreturn canceler;}\n\n\nfunction _undefine(id){\nif(!modulesMap[id]){\nreturn;}\n\n\nvar module=modulesMap[id];\ndelete modulesMap[id];\n\nfor(var dep in module.waitingMap) {\nif(module.waitingMap[dep]){\ndelete dependencyMap[dep][id];}}\n\n\n\nfor(var ii=0;ii < module.dependencies.length;ii++) {\ndep = module.dependencies[ii];\nif(modulesMap[dep]){\nif(modulesMap[dep].refcount-- === 1){\n_undefine(dep);}}else \n\nif(predefinedRefCounts[dep]){\npredefinedRefCounts[dep]--;}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requireLazy(dependencies,factory,context){\nreturn define(\ndependencies,\nfactory,\nundefined,\nREQUIRE_WHEN_READY,\ncontext,\n1);}\n\n\n\nfunction _uid(){\nreturn '__mod__' + _counter++;}\n\n\nfunction _addDependency(module,dep){\n\nif(!module.waitingMap[dep] && module.id !== dep){\nmodule.waiting++;\nmodule.waitingMap[dep] = 1;\ndependencyMap[dep] || (dependencyMap[dep] = {});\ndependencyMap[dep][module.id] = 1;}}\n\n\n\nfunction _initDependencies(id){\nvar modulesToRequire=[];\nvar module=modulesMap[id];\nvar dep,i,subdep;\n\n\nfor(i = 0;i < module.dependencies.length;i++) {\ndep = module.dependencies[i];\nif(!modulesMap[dep]){\n_addDependency(module,dep);}else \nif(modulesMap[dep].waiting){\nfor(subdep in modulesMap[dep].waitingMap) {\nif(modulesMap[dep].waitingMap[subdep]){\n_addDependency(module,subdep);}}}}\n\n\n\n\nif(module.waiting === 0 && module.special & REQUIRE_WHEN_READY){\nmodulesToRequire.push(id);}\n\n\n\nif(dependencyMap[id]){\nvar deps=dependencyMap[id];\nvar submodule;\ndependencyMap[id] = undefined;\nfor(dep in deps) {\nsubmodule = modulesMap[dep];\n\n\nfor(subdep in module.waitingMap) {\nif(module.waitingMap[subdep]){\n_addDependency(submodule,subdep);}}\n\n\n\nif(submodule.waitingMap[id]){\nsubmodule.waitingMap[id] = undefined;\nsubmodule.waiting--;}\n\nif(submodule.waiting === 0 && \nsubmodule.special & REQUIRE_WHEN_READY){\nmodulesToRequire.push(dep);}}}\n\n\n\n\n\nfor(i = 0;i < modulesToRequire.length;i++) {\nrequire.call(null,modulesToRequire[i]);}}\n\n\n\nfunction _register(id,exports){\nvar module=modulesMap[id] = {id:id};\nmodule.exports = exports;\nmodule.refcount = 0;}\n\n\n\n\n_register('module',0);\n_register('exports',0);\n\n_register('global',global);\n_register('require',require);\n_register('requireDynamic',require);\n_register('requireLazy',requireLazy);\n\nglobal.require = require;\nglobal.requireDynamic = require;\nglobal.requireLazy = requireLazy;\n\nrequire.__debug = {\nmodules:modulesMap,\ndeps:dependencyMap,\nprintDependencyInfo:function(){\nif(!global.console){\nreturn;}\n\nvar names=Object.keys(require.__debug.deps);\nglobal.console.log(_debugUnresolvedDependencies(names));}};\n\n\n\n\n\n\n\n\n\nglobal.__d = function(id,deps,factory,_special,_inlineRequires){\nvar defaultDeps=['global','require','requireDynamic','requireLazy',\n'module','exports'];\ndefine(id,defaultDeps.concat(deps),factory,_special || USED_AS_TRANSPORT,\nnull,null,_inlineRequires);};})(\n\n\nthis);","sourceCode":"/* eslint global-strict:0,eqeqeq:0,no-bitwise:0,no-undef:0 */\n(function(global) {\n\n // avoid redefining require()\n if (global.require) {\n return;\n }\n\n var __DEV__ = global.__DEV__;\n\n var toString = Object.prototype.toString;\n\n /**\n * module index: {\n * mod1: {\n * exports: { ... },\n * id: 'mod1',\n * dependencies: ['mod1', 'mod2'],\n * factory: function() { ... },\n * waitingMap: { mod1: 1, mod3: 1, mod4: 1 },\n * waiting: 2\n * }\n * }\n */\n var modulesMap = {},\n /**\n * inverse index: {\n * mod1: [modules, waiting for mod1],\n * mod2: [modules, waiting for mod2]\n * }\n */\n dependencyMap = {},\n /**\n * modules whose reference counts are set out of order\n */\n predefinedRefCounts = {},\n\n _counter = 0,\n\n REQUIRE_WHEN_READY = 1,\n USED_AS_TRANSPORT = 2,\n\n hop = Object.prototype.hasOwnProperty;\n\n function _debugUnresolvedDependencies(names) {\n var unresolved = Array.prototype.slice.call(names);\n var visited = {};\n var ii, name, module, dependency;\n\n while (unresolved.length) {\n name = unresolved.shift();\n if (visited[name]) {\n continue;\n }\n visited[name] = true;\n\n module = modulesMap[name];\n if (!module || !module.waiting) {\n continue;\n }\n\n for (ii = 0; ii < module.dependencies.length; ii++) {\n dependency = module.dependencies[ii];\n if (!modulesMap[dependency] || modulesMap[dependency].waiting) {\n unresolved.push(dependency);\n }\n }\n }\n\n for (name in visited) if (hop.call(visited, name)) {\n unresolved.push(name);\n }\n\n var messages = [];\n for (ii = 0; ii < unresolved.length; ii++) {\n name = unresolved[ii];\n var message = name;\n module = modulesMap[name];\n if (!module) {\n message += ' is not defined';\n } else if (!module.waiting) {\n message += ' is ready';\n } else {\n var unresolvedDependencies = [];\n for (var jj = 0; jj < module.dependencies.length; jj++) {\n dependency = module.dependencies[jj];\n if (!modulesMap[dependency] || modulesMap[dependency].waiting) {\n unresolvedDependencies.push(dependency);\n }\n }\n message += ' is waiting for ' + unresolvedDependencies.join(', ');\n }\n messages.push(message);\n }\n return messages.join('\\n');\n }\n\n /**\n * This is mainly for logging in ModuleErrorLogger.\n */\n function ModuleError(msg) {\n this.name = 'ModuleError';\n this.message = msg;\n this.stack = Error(msg).stack;\n this.framesToPop = 2;\n }\n ModuleError.prototype = Object.create(Error.prototype);\n ModuleError.prototype.constructor = ModuleError;\n\n var _performance =\n global.performance ||\n global.msPerformance ||\n global.webkitPerformance || {};\n\n if (!_performance.now) {\n _performance = global.Date;\n }\n\n var _now = _performance ?\n _performance.now.bind(_performance) : function(){ return 0; };\n\n var _factoryStackCount = 0;\n var _factoryTime = 0;\n var _totalFactories = 0;\n var _inGuard = false;\n\n /**\n * The require function conforming to CommonJS spec:\n * http://wiki.commonjs.org/wiki/Modules/1.1.1\n *\n * To define a CommonJS-compliant module add the providesModule\n * Haste header to your file instead of @provides. Your file is going\n * to be executed in a separate context. Every variable/function you\n * define will be local (private) to that module. To export local members\n * use \"exports\" variable or return the exported value at the end of your\n * file. Your code will have access to the \"module\" object.\n * The \"module\" object will have an \"id\" property that is the id of your\n * current module. \"module\" object will also have \"exports\" property that\n * is the same as \"exports\" variable passed into your module context.\n * You can require other modules using their ids.\n *\n * Haste will automatically pick dependencies from require() calls. So\n * you don't have to manually specify @requires in your header.\n *\n * You cannot require() modules from non-CommonJS files. Write a legacy stub\n * (@providesLegacy) and use @requires instead.\n *\n * @example\n *\n * / **\n * * @providesModule math\n * * /\n * exports.add = function() {\n * var sum = 0, i = 0, args = arguments, l = args.length;\n * while (i < l) {\n * sum += args[i++];\n * }\n * return sum;\n * };\n *\n * / **\n * * @providesModule increment\n * * /\n * var add = require('math').add;\n * return function(val) {\n * return add(val, 1);\n * };\n *\n * / **\n * * @providesModule program\n * * /\n * var inc = require('increment');\n * var a = 1;\n * inc(a); // 2\n *\n * module.id == \"program\";\n *\n *\n * @param {String} id\n * @throws when module is not loaded or not ready to be required\n */\n function require(id) {\n var module = modulesMap[id], dep, i, msg;\n if (module && module.exports) {\n // If ref count is 1, this was the last call, so undefine the module.\n // The ref count can be null or undefined, but those are never === 1.\n if (module.refcount-- === 1) {\n delete modulesMap[id];\n }\n return module.exports;\n }\n if (global.ErrorUtils && !_inGuard) {\n _inGuard = true;\n try {\n var ret = require.apply(this, arguments);\n } catch(e) {\n global.ErrorUtils.reportFatalError(e);\n }\n _inGuard = false;\n return ret;\n }\n\n if (!module) {\n msg = 'Requiring unknown module \"' + id + '\"';\n if (__DEV__) {\n msg += '. If you are sure the module is there, try restarting the packager.';\n }\n throw new ModuleError(msg);\n }\n\n if (module.hasError) {\n throw new ModuleError(\n 'Requiring module \"' + id + '\" which threw an exception'\n );\n }\n\n if (module.waiting) {\n throw new ModuleError(\n 'Requiring module \"' + id + '\" with unresolved dependencies: ' +\n _debugUnresolvedDependencies([id])\n );\n }\n\n var exports = module.exports = {};\n var factory = module.factory;\n if (toString.call(factory) === '[object Function]') {\n var args = [],\n dependencies = module.dependencies,\n length = dependencies.length,\n ret;\n if (module.special & USED_AS_TRANSPORT) {\n length = Math.min(length, factory.length);\n }\n try {\n for (i = 0; args.length < length; i++) {\n dep = dependencies[i];\n if (!module.inlineRequires[dep]) {\n args.push(dep === 'module' ? module :\n (dep === 'exports' ? exports :\n require.call(null, dep)));\n }\n }\n\n ++_totalFactories;\n if (_factoryStackCount++ === 0) {\n _factoryTime -= _now();\n }\n try {\n ret = factory.apply(module.context || global, args);\n } catch (e) {\n if (modulesMap.ex && modulesMap.erx) {\n // when ErrorUtils is ready, ex and erx are ready. otherwise, we\n // don't append module id to the error message but still throw it\n var ex = require.call(null, 'ex');\n var erx = require.call(null, 'erx');\n var messageWithParams = erx(e.message);\n if (messageWithParams[0].indexOf(' from module \"%s\"') < 0) {\n messageWithParams[0] += ' from module \"%s\"';\n messageWithParams[messageWithParams.length] = id;\n }\n e.message = ex.apply(null, messageWithParams);\n }\n throw e;\n } finally {\n if (--_factoryStackCount === 0) {\n _factoryTime += _now();\n }\n }\n } catch (e) {\n module.hasError = true;\n module.exports = null;\n throw e;\n }\n if (ret) {\n if (__DEV__) {\n if (typeof ret != 'object' && typeof ret != 'function') {\n throw new ModuleError(\n 'Factory for module \"' + id + '\" returned ' +\n 'an invalid value \"' + ret + '\". ' +\n 'Returned value should be either a function or an object.'\n );\n }\n }\n module.exports = ret;\n }\n } else {\n module.exports = factory;\n }\n\n // If ref count is 1, this was the last call, so undefine the module.\n // The ref count can be null or undefined, but those are never === 1.\n if (module.refcount-- === 1) {\n delete modulesMap[id];\n }\n return module.exports;\n }\n\n require.__getFactoryTime = function() {\n return (_factoryStackCount ? _now() : 0) + _factoryTime;\n };\n\n require.__getTotalFactories = function() {\n return _totalFactories;\n };\n\n /**\n * The define function conforming to CommonJS proposal:\n * http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition\n *\n * define() allows you to explicitly state dependencies of your module\n * in javascript. It's most useful in non-CommonJS files.\n *\n * define() is used internally by haste as a transport for CommonJS\n * modules. So there's no need to use define() if you use providesModule\n *\n * @example\n * / **\n * * @provides alpha\n * * /\n *\n * // Sets up the module with ID of \"alpha\", that uses require,\n * // exports and the module with ID of \"beta\":\n * define(\"alpha\", [\"require\", \"exports\", \"beta\"],\n * function (require, exports, beta) {\n * exports.verb = function() {\n * return beta.verb();\n * //Or:\n * return require(\"beta\").verb();\n * }\n * });\n *\n * / **\n * * @provides alpha\n * * /\n * // An anonymous module could be defined (module id derived from filename)\n * // that returns an object literal:\n *\n * define([\"alpha\"], function (alpha) {\n * return {\n * verb: function(){\n * return alpha.verb() + 2;\n * }\n * };\n * });\n *\n * / **\n * * @provides alpha\n * * /\n * // A dependency-free module can define a direct object literal:\n *\n * define({\n * add: function(x, y){\n * return x + y;\n * }\n * });\n *\n * @param {String} id optional\n * @param {Array} dependencies optional\n * @param {Object|Function} factory\n */\n function define(id, dependencies, factory,\n _special, _context, _refCount, _inlineRequires) {\n if (dependencies === undefined) {\n dependencies = [];\n factory = id;\n id = _uid();\n } else if (factory === undefined) {\n factory = dependencies;\n if (toString.call(id) === '[object Array]') {\n dependencies = id;\n id = _uid();\n } else {\n dependencies = [];\n }\n }\n\n // Non-standard: we allow modules to be undefined. This is designed for\n // temporary modules.\n var canceler = { cancel: _undefine.bind(this, id) };\n\n var record = modulesMap[id];\n\n // Nonstandard hack: we call define with null deps and factory, but a\n // non-null reference count (e.g. define('name', null, null, 0, null, 4))\n // when this module is defined elsewhere and we just need to update the\n // reference count. We use this hack to avoid having to expose another\n // global function to increment ref counts.\n if (record) {\n if (_refCount) {\n record.refcount += _refCount;\n }\n // Calling define() on a pre-existing module does not redefine it\n return canceler;\n } else if (!dependencies && !factory && _refCount) {\n // If this module hasn't been defined yet, store the ref count. We'll use\n // it when the module is defined later.\n predefinedRefCounts[id] = (predefinedRefCounts[id] || 0) + _refCount;\n return canceler;\n } else {\n // Defining a new module\n record = { id: id };\n record.refcount = (predefinedRefCounts[id] || 0) + (_refCount || 0);\n delete predefinedRefCounts[id];\n }\n\n if (__DEV__) {\n if (\n !factory ||\n (typeof factory != 'object' && typeof factory != 'function' &&\n typeof factory != 'string')) {\n throw new ModuleError(\n 'Invalid factory \"' + factory + '\" for module \"' + id + '\". ' +\n 'Factory should be either a function or an object.'\n );\n }\n\n if (toString.call(dependencies) !== '[object Array]') {\n throw new ModuleError(\n 'Invalid dependencies for module \"' + id + '\". ' +\n 'Dependencies must be passed as an array.'\n );\n }\n }\n\n record.factory = factory;\n record.dependencies = dependencies;\n record.context = _context;\n record.special = _special;\n record.inlineRequires = _inlineRequires || {};\n record.waitingMap = {};\n record.waiting = 0;\n record.hasError = false;\n modulesMap[id] = record;\n _initDependencies(id);\n\n return canceler;\n }\n\n function _undefine(id) {\n if (!modulesMap[id]) {\n return;\n }\n\n var module = modulesMap[id];\n delete modulesMap[id];\n\n for (var dep in module.waitingMap) {\n if (module.waitingMap[dep]) {\n delete dependencyMap[dep][id];\n }\n }\n\n for (var ii = 0; ii < module.dependencies.length; ii++) {\n dep = module.dependencies[ii];\n if (modulesMap[dep]) {\n if (modulesMap[dep].refcount-- === 1) {\n _undefine(dep);\n }\n } else if (predefinedRefCounts[dep]) {\n predefinedRefCounts[dep]--;\n }\n // Subtle: we won't account for this one fewer reference if we don't have\n // the dependency's definition or reference count yet.\n }\n }\n\n /**\n * Special version of define that executes the factory as soon as all\n * dependencies are met.\n *\n * define() does just that, defines a module. Module's factory will not be\n * called until required by other module. This makes sense for most of our\n * library modules: we do not want to execute the factory unless it's being\n * used by someone.\n *\n * On the other hand there are modules, that you can call \"entrance points\".\n * You want to run the \"factory\" method for them as soon as all dependencies\n * are met.\n *\n * @example\n *\n * define('BaseClass', [], function() { return ... });\n * // ^^ factory for BaseClass was just stored in modulesMap\n *\n * define('SubClass', ['BaseClass'], function() { ... });\n * // SubClass module is marked as ready (waiting == 0), factory is just\n * // stored\n *\n * define('OtherClass, ['BaseClass'], function() { ... });\n * // OtherClass module is marked as ready (waiting == 0), factory is just\n * // stored\n *\n * requireLazy(['SubClass', 'ChatConfig'],\n * function() { ... });\n * // ChatRunner is waiting for ChatConfig to come\n *\n * define('ChatConfig', [], { foo: 'bar' });\n * // at this point ChatRunner is marked as ready, and its factory\n * // executed + all dependent factories are executed too: BaseClass,\n * // SubClass, ChatConfig notice that OtherClass's factory won't be\n * // executed unless explicitly required by someone\n *\n * @param {Array} dependencies\n * @param {Object|Function} factory\n */\n function requireLazy(dependencies, factory, context) {\n return define(\n dependencies,\n factory,\n undefined,\n REQUIRE_WHEN_READY,\n context,\n 1\n );\n }\n\n function _uid() {\n return '__mod__' + _counter++;\n }\n\n function _addDependency(module, dep) {\n // do not add duplicate dependencies and circ deps\n if (!module.waitingMap[dep] && module.id !== dep) {\n module.waiting++;\n module.waitingMap[dep] = 1;\n dependencyMap[dep] || (dependencyMap[dep] = {});\n dependencyMap[dep][module.id] = 1;\n }\n }\n\n function _initDependencies(id) {\n var modulesToRequire = [];\n var module = modulesMap[id];\n var dep, i, subdep;\n\n // initialize id's waitingMap\n for (i = 0; i < module.dependencies.length; i++) {\n dep = module.dependencies[i];\n if (!modulesMap[dep]) {\n _addDependency(module, dep);\n } else if (modulesMap[dep].waiting) {\n for (subdep in modulesMap[dep].waitingMap) {\n if (modulesMap[dep].waitingMap[subdep]) {\n _addDependency(module, subdep);\n }\n }\n }\n }\n if (module.waiting === 0 && module.special & REQUIRE_WHEN_READY) {\n modulesToRequire.push(id);\n }\n\n // update modules depending on id\n if (dependencyMap[id]) {\n var deps = dependencyMap[id];\n var submodule;\n dependencyMap[id] = undefined;\n for (dep in deps) {\n submodule = modulesMap[dep];\n\n // add all deps of id\n for (subdep in module.waitingMap) {\n if (module.waitingMap[subdep]) {\n _addDependency(submodule, subdep);\n }\n }\n // remove id itself\n if (submodule.waitingMap[id]) {\n submodule.waitingMap[id] = undefined;\n submodule.waiting--;\n }\n if (submodule.waiting === 0 &&\n submodule.special & REQUIRE_WHEN_READY) {\n modulesToRequire.push(dep);\n }\n }\n }\n\n // run everything that's ready\n for (i = 0; i < modulesToRequire.length; i++) {\n require.call(null, modulesToRequire[i]);\n }\n }\n\n function _register(id, exports) {\n var module = modulesMap[id] = { id: id };\n module.exports = exports;\n module.refcount = 0;\n }\n\n // pseudo name used in common-require\n // see require() function for more info\n _register('module', 0);\n _register('exports', 0);\n\n _register('global', global);\n _register('require', require);\n _register('requireDynamic', require);\n _register('requireLazy', requireLazy);\n\n global.require = require;\n global.requireDynamic = require;\n global.requireLazy = requireLazy;\n\n require.__debug = {\n modules: modulesMap,\n deps: dependencyMap,\n printDependencyInfo: function() {\n if (!global.console) {\n return;\n }\n var names = Object.keys(require.__debug.deps);\n global.console.log(_debugUnresolvedDependencies(names));\n }\n };\n\n /**\n * All @providesModule files are wrapped by this function by makehaste. It\n * is a convenience function around define() that prepends a bunch of required\n * modules (global, require, module, etc) so that we don't have to spit that\n * out for every module which would be a lot of extra bytes.\n */\n global.__d = function(id, deps, factory, _special, _inlineRequires) {\n var defaultDeps = ['global', 'require', 'requireDynamic', 'requireLazy',\n 'module', 'exports'];\n define(id, defaultDeps.concat(deps), factory, _special || USED_AS_TRANSPORT,\n null, null, _inlineRequires);\n };\n\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/require.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/polyfills.js":{"data":{"code":"Object.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nassign = function(target,sources){\nif(__DEV__){\nif(target == null){\nthrow new TypeError('Object.assign target cannot be null or undefined');}\n\nif(typeof target !== 'object' && typeof target !== 'function'){\nthrow new TypeError(\n'In this environment the target of assign MUST be an object.' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\n\nfor(var nextIndex=1;nextIndex < arguments.length;nextIndex++) {\nvar nextSource=arguments[nextIndex];\nif(nextSource == null){\ncontinue;}\n\n\nif(__DEV__){\nif(typeof nextSource !== 'object' && \ntypeof nextSource !== 'function'){\nthrow new TypeError(\n'In this environment the target of assign MUST be an object.' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\n\n\n\n\n\nfor(var key in nextSource) {\nif(__DEV__){\nvar hasOwnProperty=Object.prototype.hasOwnProperty;\nif(!hasOwnProperty.call(nextSource,key)){\nthrow new TypeError(\n'One of the sources to assign has an enumerable key on the ' + \n'prototype chain. This is an edge case that we do not support. ' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\ntarget[key] = nextSource[key];}}\n\n\n\nreturn target;};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n *\n * @provides Object.es6\n * @polyfill\n */\n\n// WARNING: This is an optimized version that fails on hasOwnProperty checks\n// and non objects. It's not spec-compliant. It's a perf optimization.\n/* eslint global-strict:0 */\nObject.assign = function(target, sources) {\n if (__DEV__) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n if (typeof target !== 'object' && typeof target !== 'function') {\n throw new TypeError(\n 'In this environment the target of assign MUST be an object.' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n if (__DEV__) {\n if (typeof nextSource !== 'object' &&\n typeof nextSource !== 'function') {\n throw new TypeError(\n 'In this environment the target of assign MUST be an object.' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects.\n\n for (var key in nextSource) {\n if (__DEV__) {\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n if (!hasOwnProperty.call(nextSource, key)) {\n throw new TypeError(\n 'One of the sources to assign has an enumerable key on the ' +\n 'prototype chain. This is an edge case that we do not support. ' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n target[key] = nextSource[key];\n }\n }\n\n return target;\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/polyfills.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/console.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(global){\n'use strict';\n\nvar inspect=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction inspect(obj,opts){\nvar ctx={\nseen:[],\nstylize:stylizeNoColor};\n\nreturn formatValue(ctx,obj,opts.depth);}\n\n\nfunction stylizeNoColor(str,styleType){\nreturn str;}\n\n\nfunction arrayToHash(array){\nvar hash={};\n\narray.forEach(function(val,idx){\nhash[val] = true;});\n\n\nreturn hash;}\n\n\n\nfunction formatValue(ctx,value,recurseTimes){\n\nvar primitive=formatPrimitive(ctx,value);\nif(primitive){\nreturn primitive;}\n\n\n\nvar keys=Object.keys(value);\nvar visibleKeys=arrayToHash(keys);\n\n\n\nif(isError(value) && (\nkeys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)){\nreturn formatError(value);}\n\n\n\nif(keys.length === 0){\nif(isFunction(value)){\nvar name=value.name?': ' + value.name:'';\nreturn ctx.stylize('[Function' + name + ']','special');}\n\nif(isRegExp(value)){\nreturn ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}\n\nif(isDate(value)){\nreturn ctx.stylize(Date.prototype.toString.call(value),'date');}\n\nif(isError(value)){\nreturn formatError(value);}}\n\n\n\nvar base='',array=false,braces=['{','}'];\n\n\nif(isArray(value)){\narray = true;\nbraces = ['[',']'];}\n\n\n\nif(isFunction(value)){\nvar n=value.name?': ' + value.name:'';\nbase = ' [Function' + n + ']';}\n\n\n\nif(isRegExp(value)){\nbase = ' ' + RegExp.prototype.toString.call(value);}\n\n\n\nif(isDate(value)){\nbase = ' ' + Date.prototype.toUTCString.call(value);}\n\n\n\nif(isError(value)){\nbase = ' ' + formatError(value);}\n\n\nif(keys.length === 0 && (!array || value.length == 0)){\nreturn braces[0] + base + braces[1];}\n\n\nif(recurseTimes < 0){\nif(isRegExp(value)){\nreturn ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}else \n{\nreturn ctx.stylize('[Object]','special');}}\n\n\n\nctx.seen.push(value);\n\nvar output;\nif(array){\noutput = formatArray(ctx,value,recurseTimes,visibleKeys,keys);}else \n{\noutput = keys.map(function(key){\nreturn formatProperty(ctx,value,recurseTimes,visibleKeys,key,array);});}\n\n\n\nctx.seen.pop();\n\nreturn reduceToSingleString(output,base,braces);}\n\n\n\nfunction formatPrimitive(ctx,value){\nif(isUndefined(value))\nreturn ctx.stylize('undefined','undefined');\nif(isString(value)){\nvar simple='\\'' + JSON.stringify(value).replace(/^\"|\"$/g,'').\nreplace(/'/g,\"\\\\'\").\nreplace(/\\\\\"/g,'\"') + '\\'';\nreturn ctx.stylize(simple,'string');}\n\nif(isNumber(value))\nreturn ctx.stylize('' + value,'number');\nif(isBoolean(value))\nreturn ctx.stylize('' + value,'boolean');\n\nif(isNull(value))\nreturn ctx.stylize('null','null');}\n\n\n\nfunction formatError(value){\nreturn '[' + Error.prototype.toString.call(value) + ']';}\n\n\n\nfunction formatArray(ctx,value,recurseTimes,visibleKeys,keys){\nvar output=[];\nfor(var i=0,l=value.length;i < l;++i) {\nif(hasOwnProperty(value,String(i))){\noutput.push(formatProperty(ctx,value,recurseTimes,visibleKeys,\nString(i),true));}else \n{\noutput.push('');}}\n\n\nkeys.forEach(function(key){\nif(!key.match(/^\\d+$/)){\noutput.push(formatProperty(ctx,value,recurseTimes,visibleKeys,\nkey,true));}});\n\n\nreturn output;}\n\n\n\nfunction formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){\nvar name,str,desc;\ndesc = Object.getOwnPropertyDescriptor(value,key) || {value:value[key]};\nif(desc.get){\nif(desc.set){\nstr = ctx.stylize('[Getter/Setter]','special');}else \n{\nstr = ctx.stylize('[Getter]','special');}}else \n\n{\nif(desc.set){\nstr = ctx.stylize('[Setter]','special');}}\n\n\nif(!hasOwnProperty(visibleKeys,key)){\nname = '[' + key + ']';}\n\nif(!str){\nif(ctx.seen.indexOf(desc.value) < 0){\nif(isNull(recurseTimes)){\nstr = formatValue(ctx,desc.value,null);}else \n{\nstr = formatValue(ctx,desc.value,recurseTimes - 1);}\n\nif(str.indexOf('\\n') > -1){\nif(array){\nstr = str.split('\\n').map(function(line){\nreturn ' ' + line;}).\njoin('\\n').substr(2);}else \n{\nstr = '\\n' + str.split('\\n').map(function(line){\nreturn ' ' + line;}).\njoin('\\n');}}}else \n\n\n{\nstr = ctx.stylize('[Circular]','special');}}\n\n\nif(isUndefined(name)){\nif(array && key.match(/^\\d+$/)){\nreturn str;}\n\nname = JSON.stringify('' + key);\nif(name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)){\nname = name.substr(1,name.length - 2);\nname = ctx.stylize(name,'name');}else \n{\nname = name.replace(/'/g,\"\\\\'\").\nreplace(/\\\\\"/g,'\"').\nreplace(/(^\"|\"$)/g,\"'\");\nname = ctx.stylize(name,'string');}}\n\n\n\nreturn name + ': ' + str;}\n\n\n\nfunction reduceToSingleString(output,base,braces){\nvar numLinesEst=0;\nvar length=output.reduce(function(prev,cur){\nnumLinesEst++;\nif(cur.indexOf('\\n') >= 0)numLinesEst++;\nreturn prev + cur.replace(/\\u001b\\[\\d\\d?m/g,'').length + 1;},\n0);\n\nif(length > 60){\nreturn braces[0] + (\nbase === ''?'':base + '\\n ') + \n' ' + \noutput.join(',\\n ') + \n' ' + \nbraces[1];}\n\n\nreturn braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];}\n\n\n\n\n\nfunction isArray(ar){\nreturn Array.isArray(ar);}\n\n\nfunction isBoolean(arg){\nreturn typeof arg === 'boolean';}\n\n\nfunction isNull(arg){\nreturn arg === null;}\n\n\nfunction isNullOrUndefined(arg){\nreturn arg == null;}\n\n\nfunction isNumber(arg){\nreturn typeof arg === 'number';}\n\n\nfunction isString(arg){\nreturn typeof arg === 'string';}\n\n\nfunction isSymbol(arg){\nreturn typeof arg === 'symbol';}\n\n\nfunction isUndefined(arg){\nreturn arg === void 0;}\n\n\nfunction isRegExp(re){\nreturn isObject(re) && objectToString(re) === '[object RegExp]';}\n\n\nfunction isObject(arg){\nreturn typeof arg === 'object' && arg !== null;}\n\n\nfunction isDate(d){\nreturn isObject(d) && objectToString(d) === '[object Date]';}\n\n\nfunction isError(e){\nreturn isObject(e) && (\nobjectToString(e) === '[object Error]' || e instanceof Error);}\n\n\nfunction isFunction(arg){\nreturn typeof arg === 'function';}\n\n\nfunction isPrimitive(arg){\nreturn arg === null || \ntypeof arg === 'boolean' || \ntypeof arg === 'number' || \ntypeof arg === 'string' || \ntypeof arg === 'symbol' || \ntypeof arg === 'undefined';}\n\n\nfunction objectToString(o){\nreturn Object.prototype.toString.call(o);}\n\n\nfunction hasOwnProperty(obj,prop){\nreturn Object.prototype.hasOwnProperty.call(obj,prop);}\n\n\nreturn inspect;})();\n\n\n\nvar OBJECT_COLUMN_NAME='(index)';\nvar LOG_LEVELS={\ntrace:0,\nlog:1,\ninfo:2,\nwarn:3,\nerror:4};\n\n\nfunction setupConsole(global){\nif(!global.nativeLoggingHook){\nreturn;}\n\n\nfunction getNativeLogFunction(level){\nreturn function(){\nvar str=Array.prototype.map.call(arguments,function(arg){\nreturn inspect(arg,{depth:10});}).\njoin(', ');\nglobal.nativeLoggingHook(str,level);};}\n\n\n\nvar repeat=function(element,n){\nreturn Array.apply(null,Array(n)).map(function(){return element;});};\n\n\nfunction consoleTablePolyfill(rows){\n\nif(!Array.isArray(rows)){\nvar data=rows;\nrows = [];\nfor(var key in data) {\nif(data.hasOwnProperty(key)){\nvar row=data[key];\nrow[OBJECT_COLUMN_NAME] = key;\nrows.push(row);}}}\n\n\n\nif(rows.length === 0){\nglobal.nativeLoggingHook('',LOG_LEVELS.log);\nreturn;}\n\n\nvar columns=Object.keys(rows[0]).sort();\nvar stringRows=[];\nvar columnWidths=[];\n\n\n\ncolumns.forEach(function(k,i){\ncolumnWidths[i] = k.length;\nfor(var j=0;j < rows.length;j++) {\nvar cellStr=rows[j][k].toString();\nstringRows[j] = stringRows[j] || [];\nstringRows[j][i] = cellStr;\ncolumnWidths[i] = Math.max(columnWidths[i],cellStr.length);}});\n\n\n\n\n\nvar joinRow=function(row,space){\nvar cells=row.map(function(cell,i){\nvar extraSpaces=repeat(' ',columnWidths[i] - cell.length).join('');\nreturn cell + extraSpaces;});\n\nspace = space || ' ';\nreturn cells.join(space + '|' + space);};\n\n\nvar separators=columnWidths.map(function(columnWidth){\nreturn repeat('-',columnWidth).join('');});\n\nvar separatorRow=joinRow(separators,'-');\nvar header=joinRow(columns);\nvar table=[header,separatorRow];\n\nfor(var i=0;i < rows.length;i++) {\ntable.push(joinRow(stringRows[i]));}\n\n\n\n\n\n\nglobal.nativeLoggingHook('\\n' + table.join('\\n'),LOG_LEVELS.log);}\n\n\nglobal.console = {\nerror:getNativeLogFunction(LOG_LEVELS.error),\ninfo:getNativeLogFunction(LOG_LEVELS.info),\nlog:getNativeLogFunction(LOG_LEVELS.log),\nwarn:getNativeLogFunction(LOG_LEVELS.warn),\ntrace:getNativeLogFunction(LOG_LEVELS.trace),\ntable:consoleTablePolyfill};}\n\n\n\n\nif(typeof module !== 'undefined'){\nmodule.exports = setupConsole;}else \n{\nsetupConsole(global);}})(\n\n\nthis);","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n *\n * @provides console\n * @polyfill\n * @nolint\n */\n\n(function(global) {\n 'use strict';\n\n var inspect = (function() {\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n //\n // https://github.com/joyent/node/blob/master/lib/util.js\n\n function inspect(obj, opts) {\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n return formatValue(ctx, obj, opts.depth);\n }\n\n function stylizeNoColor(str, styleType) {\n return str;\n }\n\n function arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n }\n\n\n function formatValue(ctx, value, recurseTimes) {\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n }\n\n\n function formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n }\n\n\n function formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n }\n\n\n function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n }\n\n\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n }\n\n\n function reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n }\n\n\n // NOTE: These type checking functions intentionally don't use `instanceof`\n // because it is fragile and can be easily faked with `Object.create()`.\n function isArray(ar) {\n return Array.isArray(ar);\n }\n\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n\n function isNull(arg) {\n return arg === null;\n }\n\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n\n function isString(arg) {\n return typeof arg === 'string';\n }\n\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n\n function isUndefined(arg) {\n return arg === void 0;\n }\n\n function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n }\n\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n\n function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n }\n\n function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n }\n\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n\n function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n }\n\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n return inspect;\n })();\n\n\n var OBJECT_COLUMN_NAME = '(index)';\n var LOG_LEVELS = {\n trace: 0,\n log: 1,\n info: 2,\n warn: 3,\n error: 4\n };\n\n function setupConsole(global) {\n if (!global.nativeLoggingHook) {\n return;\n }\n\n function getNativeLogFunction(level) {\n return function() {\n var str = Array.prototype.map.call(arguments, function(arg) {\n return inspect(arg, {depth: 10});\n }).join(', ');\n global.nativeLoggingHook(str, level);\n };\n }\n\n var repeat = function(element, n) {\n return Array.apply(null, Array(n)).map(function() { return element; });\n };\n\n function consoleTablePolyfill(rows) {\n // convert object -> array\n if (!Array.isArray(rows)) {\n var data = rows;\n rows = [];\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n var row = data[key];\n row[OBJECT_COLUMN_NAME] = key;\n rows.push(row);\n }\n }\n }\n if (rows.length === 0) {\n global.nativeLoggingHook('', LOG_LEVELS.log);\n return;\n }\n\n var columns = Object.keys(rows[0]).sort();\n var stringRows = [];\n var columnWidths = [];\n\n // Convert each cell to a string. Also\n // figure out max cell width for each column\n columns.forEach(function(k, i) {\n columnWidths[i] = k.length;\n for (var j = 0; j < rows.length; j++) {\n var cellStr = rows[j][k].toString();\n stringRows[j] = stringRows[j] || [];\n stringRows[j][i] = cellStr;\n columnWidths[i] = Math.max(columnWidths[i], cellStr.length);\n }\n });\n\n // Join all elements in the row into a single string with | separators\n // (appends extra spaces to each cell to make separators | alligned)\n var joinRow = function(row, space) {\n var cells = row.map(function(cell, i) {\n var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join('');\n return cell + extraSpaces;\n });\n space = space || ' ';\n return cells.join(space + '|' + space);\n };\n\n var separators = columnWidths.map(function(columnWidth) {\n return repeat('-', columnWidth).join('');\n });\n var separatorRow = joinRow(separators, '-');\n var header = joinRow(columns);\n var table = [header, separatorRow];\n\n for (var i = 0; i < rows.length; i++) {\n table.push(joinRow(stringRows[i]));\n }\n\n // Notice extra empty line at the beginning.\n // Native logging hook adds \"RCTLog >\" at the front of every\n // logged string, which would shift the header and screw up\n // the table\n global.nativeLoggingHook('\\n' + table.join('\\n'), LOG_LEVELS.log);\n }\n\n global.console = {\n error: getNativeLogFunction(LOG_LEVELS.error),\n info: getNativeLogFunction(LOG_LEVELS.info),\n log: getNativeLogFunction(LOG_LEVELS.log),\n warn: getNativeLogFunction(LOG_LEVELS.warn),\n trace: getNativeLogFunction(LOG_LEVELS.trace),\n table: consoleTablePolyfill\n };\n\n }\n\n if (typeof module !== 'undefined') {\n module.exports = setupConsole;\n } else {\n setupConsole(global);\n }\n\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/console.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/error-guard.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(global){\nvar ErrorUtils={\n_inGuard:0,\n_globalHandler:null,\nsetGlobalHandler:function(fun){\nErrorUtils._globalHandler = fun;},\n\nreportError:function(error){\nErrorUtils._globalHandler && ErrorUtils._globalHandler(error);},\n\nreportFatalError:function(error){\nErrorUtils._globalHandler && ErrorUtils._globalHandler(error,true);},\n\napplyWithGuard:function(fun,context,args){\ntry{\nErrorUtils._inGuard++;\nreturn fun.apply(context,args);}\ncatch(e) {\nErrorUtils.reportError(e);}finally \n{\nErrorUtils._inGuard--;}},\n\n\napplyWithGuardIfNeeded:function(fun,context,args){\nif(ErrorUtils.inGuard()){\nreturn fun.apply(context,args);}else \n{\nErrorUtils.applyWithGuard(fun,context,args);}},\n\n\ninGuard:function(){\nreturn ErrorUtils._inGuard;},\n\nguard:function(fun,name,context){\nif(typeof fun !== 'function'){\nconsole.warn('A function must be passed to ErrorUtils.guard, got ',fun);\nreturn null;}\n\nname = name || fun.name || '';\nfunction guarded(){\nreturn (\nErrorUtils.applyWithGuard(\nfun,\ncontext || this,\narguments,\nnull,\nname));}\n\n\n\n\nreturn guarded;}};\n\n\nglobal.ErrorUtils = ErrorUtils;\n\n\n\n\n\nfunction setupErrorGuard(){\nvar onError=function(e){\nglobal.console.error(\n'Error: ' + \n'\\n stack: ' + e.stack + \n'\\n line: ' + e.line + \n'\\n message: ' + e.message,\ne);};\n\n\nglobal.ErrorUtils.setGlobalHandler(onError);}\n\n\nsetupErrorGuard();})(\nthis);","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n */\n/* eslint global-strict:0 */\n(function(global) {\n var ErrorUtils = {\n _inGuard: 0,\n _globalHandler: null,\n setGlobalHandler: function(fun) {\n ErrorUtils._globalHandler = fun;\n },\n reportError: function(error) {\n ErrorUtils._globalHandler && ErrorUtils._globalHandler(error);\n },\n reportFatalError: function(error) {\n ErrorUtils._globalHandler && ErrorUtils._globalHandler(error, true);\n },\n applyWithGuard: function(fun, context, args) {\n try {\n ErrorUtils._inGuard++;\n return fun.apply(context, args);\n } catch (e) {\n ErrorUtils.reportError(e);\n } finally {\n ErrorUtils._inGuard--;\n }\n },\n applyWithGuardIfNeeded: function(fun, context, args) {\n if (ErrorUtils.inGuard()) {\n return fun.apply(context, args);\n } else {\n ErrorUtils.applyWithGuard(fun, context, args);\n }\n },\n inGuard: function() {\n return ErrorUtils._inGuard;\n },\n guard: function(fun, name, context) {\n if (typeof fun !== 'function') {\n console.warn('A function must be passed to ErrorUtils.guard, got ', fun);\n return null;\n }\n name = name || fun.name || '';\n function guarded() {\n return (\n ErrorUtils.applyWithGuard(\n fun,\n context || this,\n arguments,\n null,\n name\n )\n );\n }\n\n return guarded;\n }\n };\n global.ErrorUtils = ErrorUtils;\n\n /**\n * This is the error handler that is called when we encounter an exception\n * when loading a module.\n */\n function setupErrorGuard() {\n var onError = function(e) {\n global.console.error(\n 'Error: ' +\n '\\n stack: ' + e.stack +\n '\\n line: ' + e.line +\n '\\n message: ' + e.message,\n e\n );\n };\n global.ErrorUtils.setGlobalHandler(onError);\n }\n\n setupErrorGuard();\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/error-guard.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/String.prototype.es6.js":{"data":{"code":"if(\n\n\n\n\n\n\n\n\n\n\n\n!String.prototype.startsWith){\nString.prototype.startsWith = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:0;\nvar start=Math.min(Math.max(pos,0),string.length);\nreturn string.indexOf(String(search),pos) === start;};}\n\n\n\nif(!String.prototype.endsWith){\nString.prototype.endsWith = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar stringLength=string.length;\nvar searchString=String(search);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:stringLength;\nvar end=Math.min(Math.max(pos,0),stringLength);\nvar start=end - searchString.length;\nif(start < 0){\nreturn false;}\n\nreturn string.lastIndexOf(searchString,start) === start;};}\n\n\n\nif(!String.prototype.contains){\nString.prototype.contains = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:0;\nreturn string.indexOf(String(search),pos) !== -1;};}\n\n\n\nif(!String.prototype.repeat){\nString.prototype.repeat = function(count){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\ncount = Number(count) || 0;\nif(count < 0 || count === Infinity){\nthrow RangeError();}\n\nif(count === 1){\nreturn string;}\n\nvar result='';\nwhile(count) {\nif(count & 1){\nresult += string;}\n\nif(count >>= 1){\nstring += string;}}\n\n\nreturn result;};}","sourceCode":"/**\n * @provides String.prototype.es6\n * @polyfill\n */\n\n/*eslint global-strict:0, no-extend-native:0, no-bitwise:0 */\n/*jshint bitwise:false*/\n\n/*\n * NOTE: We use (Number(x) || 0) to replace NaN values with zero.\n */\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : 0;\n var start = Math.min(Math.max(pos, 0), string.length);\n return string.indexOf(String(search), pos) === start;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var stringLength = string.length;\n var searchString = String(search);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : stringLength;\n var end = Math.min(Math.max(pos, 0), stringLength);\n var start = end - searchString.length;\n if (start < 0) {\n return false;\n }\n return string.lastIndexOf(searchString, start) === start;\n };\n}\n\nif (!String.prototype.contains) {\n String.prototype.contains = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : 0;\n return string.indexOf(String(search), pos) !== -1;\n };\n}\n\nif (!String.prototype.repeat) {\n String.prototype.repeat = function(count) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n count = Number(count) || 0;\n if (count < 0 || count === Infinity) {\n throw RangeError();\n }\n if (count === 1) {\n return string;\n }\n var result = '';\n while (count) {\n if (count & 1) {\n result += string;\n }\n if ((count >>= 1)) {\n string += string;\n }\n }\n return result;\n };\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/String.prototype.es6.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/Array.prototype.es6.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\nfunction(undefined){\n\nfunction findIndex(predicate,context){\nif(this == null){\nthrow new TypeError(\n'Array.prototype.findIndex called on null or undefined');}\n\n\nif(typeof predicate !== 'function'){\nthrow new TypeError('predicate must be a function');}\n\nvar list=Object(this);\nvar length=list.length >>> 0;\nfor(var i=0;i < length;i++) {\nif(predicate.call(context,list[i],i,list)){\nreturn i;}}\n\n\nreturn -1;}\n\n\nif(!Array.prototype.findIndex){\nObject.defineProperty(Array.prototype,'findIndex',{\nenumerable:false,\nwritable:true,\nconfigurable:true,\nvalue:findIndex});}\n\n\n\n\nif(!Array.prototype.find){\nObject.defineProperty(Array.prototype,'find',{\nenumerable:false,\nwritable:true,\nconfigurable:true,\nvalue:function(predicate,context){\nif(this == null){\nthrow new TypeError(\n'Array.prototype.find called on null or undefined');}\n\n\nvar index=findIndex.call(this,predicate,context);\nreturn index === -1?undefined:this[index];}});}})();","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @provides Array.prototype.es6\n * @polyfill\n */\n\n/*eslint-disable */\n/*jslint bitwise: true */\n\n(function(undefined) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n function findIndex(predicate, context) {\n if (this == null) {\n throw new TypeError(\n 'Array.prototype.findIndex called on null or undefined'\n );\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n for (var i = 0; i < length; i++) {\n if (predicate.call(context, list[i], i, list)) {\n return i;\n }\n }\n return -1;\n }\n\n if (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, 'findIndex', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: findIndex\n });\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n if (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function(predicate, context) {\n if (this == null) {\n throw new TypeError(\n 'Array.prototype.find called on null or undefined'\n );\n }\n var index = findIndex.call(this, predicate, context);\n return index === -1 ? undefined : this[index];\n }\n });\n }\n})();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/Array.prototype.es6.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/JavaScriptAppEngine/polyfills/document.js":{"data":{"code":"(\nfunction(GLOBAL){\n\n\n\n\n\n\n\nfunction getInvalidGlobalUseError(name){\nreturn new Error(\n'You are trying to render the global ' + name + ' variable as a ' + \n'React element. You probably forgot to require ' + name + '.');}\n\n\nGLOBAL.Text = {\nget defaultProps(){\nthrow getInvalidGlobalUseError('Text');}};\n\n\nGLOBAL.Image = {\nget defaultProps(){\nthrow getInvalidGlobalUseError('Image');}};\n\n\n\nif(GLOBAL.document){\nGLOBAL.document.createElement = null;}\n\n\n\n\nGLOBAL.MutationObserver = undefined;})(\nthis);","sourceCode":"/* eslint global-strict: 0 */\n(function(GLOBAL) {\n /**\n * The document must be shimmed before anything else that might define the\n * `ExecutionEnvironment` module (which checks for `document.createElement`).\n */\n\n // The browser defines Text and Image globals by default. If you forget to\n // require them, then the error message is very confusing.\n function getInvalidGlobalUseError(name) {\n return new Error(\n 'You are trying to render the global ' + name + ' variable as a ' +\n 'React element. You probably forgot to require ' + name + '.'\n );\n }\n GLOBAL.Text = {\n get defaultProps() {\n throw getInvalidGlobalUseError('Text');\n }\n };\n GLOBAL.Image = {\n get defaultProps() {\n throw getInvalidGlobalUseError('Image');\n }\n };\n // Force `ExecutionEnvironment.canUseDOM` to be false.\n if (GLOBAL.document) {\n GLOBAL.document.createElement = null;\n }\n\n // There is no DOM so MutationObserver doesn't make sense. It is used\n // as feature detection in Bluebird Promise implementation\n GLOBAL.MutationObserver = undefined;\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/JavaScriptAppEngine/polyfills/document.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/react-native/react-native.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNative=Object.assign(Object.create(require('React')),{\n\nActivityIndicatorIOS:require('ActivityIndicatorIOS'),\nDatePickerIOS:require('DatePickerIOS'),\nImage:require('Image'),\nListView:require('ListView'),\nMapView:require('MapView'),\nNavigator:require('Navigator'),\nNavigatorIOS:require('NavigatorIOS'),\nPickerIOS:require('PickerIOS'),\nProgressViewIOS:require('ProgressViewIOS'),\nScrollView:require('ScrollView'),\nSegmentedControlIOS:require('SegmentedControlIOS'),\nSliderIOS:require('SliderIOS'),\nSwitchIOS:require('SwitchIOS'),\nTabBarIOS:require('TabBarIOS'),\nText:require('Text'),\nTextInput:require('TextInput'),\nTouchableHighlight:require('TouchableHighlight'),\nTouchableOpacity:require('TouchableOpacity'),\nTouchableWithoutFeedback:require('TouchableWithoutFeedback'),\nView:require('View'),\nWebView:require('WebView'),\n\n\nActionSheetIOS:require('ActionSheetIOS'),\nAdSupportIOS:require('AdSupportIOS'),\nAlertIOS:require('AlertIOS'),\nAnimated:require('Animated'),\nAppRegistry:require('AppRegistry'),\nAppStateIOS:require('AppStateIOS'),\nAsyncStorage:require('AsyncStorage'),\nCameraRoll:require('CameraRoll'),\nDimensions:require('Dimensions'),\nEasing:require('Easing'),\nImagePickerIOS:require('ImagePickerIOS'),\nInteractionManager:require('InteractionManager'),\nLayoutAnimation:require('LayoutAnimation'),\nLinkingIOS:require('LinkingIOS'),\nNetInfo:require('NetInfo'),\nPanResponder:require('PanResponder'),\nPixelRatio:require('PixelRatio'),\nPushNotificationIOS:require('PushNotificationIOS'),\nSettings:require('Settings'),\nStatusBarIOS:require('StatusBarIOS'),\nStyleSheet:require('StyleSheet'),\nVibrationIOS:require('VibrationIOS'),\n\n\nDeviceEventEmitter:require('RCTDeviceEventEmitter'),\nNativeAppEventEmitter:require('RCTNativeAppEventEmitter'),\nNativeModules:require('NativeModules'),\nPlatform:require('Platform'),\nrequireNativeComponent:require('requireNativeComponent'),\n\n\nEdgeInsetsPropType:require('EdgeInsetsPropType'),\nPointPropType:require('PointPropType'),\n\naddons:{\nLinkedStateMixin:require('LinkedStateMixin'),\nPerf:undefined,\nPureRenderMixin:require('ReactComponentWithPureRenderMixin'),\nTestModule:require('NativeModules').TestModule,\nTestUtils:undefined,\nbatchedUpdates:require('ReactUpdates').batchedUpdates,\ncloneWithProps:require('cloneWithProps'),\ncreateFragment:require('ReactFragment').create,\nupdate:require('update')}});\n\n\n\nif(__DEV__){\nReactNative.addons.Perf = require('ReactDefaultPerf');\nReactNative.addons.TestUtils = require('ReactTestUtils');}\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n'use strict';\n\n// Export React, plus some native additions.\n//\n// The use of Object.create/assign is to work around a Flow bug (#6560135).\n// Once that is fixed, change this back to\n//\n// var ReactNative = {...require('React'), /* additions */}\n//\nvar ReactNative = Object.assign(Object.create(require('React')), {\n // Components\n ActivityIndicatorIOS: require('ActivityIndicatorIOS'),\n DatePickerIOS: require('DatePickerIOS'),\n Image: require('Image'),\n ListView: require('ListView'),\n MapView: require('MapView'),\n Navigator: require('Navigator'),\n NavigatorIOS: require('NavigatorIOS'),\n PickerIOS: require('PickerIOS'),\n ProgressViewIOS: require('ProgressViewIOS'),\n ScrollView: require('ScrollView'),\n SegmentedControlIOS: require('SegmentedControlIOS'),\n SliderIOS: require('SliderIOS'),\n SwitchIOS: require('SwitchIOS'),\n TabBarIOS: require('TabBarIOS'),\n Text: require('Text'),\n TextInput: require('TextInput'),\n TouchableHighlight: require('TouchableHighlight'),\n TouchableOpacity: require('TouchableOpacity'),\n TouchableWithoutFeedback: require('TouchableWithoutFeedback'),\n View: require('View'),\n WebView: require('WebView'),\n\n // APIs\n ActionSheetIOS: require('ActionSheetIOS'),\n AdSupportIOS: require('AdSupportIOS'),\n AlertIOS: require('AlertIOS'),\n Animated: require('Animated'),\n AppRegistry: require('AppRegistry'),\n AppStateIOS: require('AppStateIOS'),\n AsyncStorage: require('AsyncStorage'),\n CameraRoll: require('CameraRoll'),\n Dimensions: require('Dimensions'),\n Easing: require('Easing'),\n ImagePickerIOS: require('ImagePickerIOS'),\n InteractionManager: require('InteractionManager'),\n LayoutAnimation: require('LayoutAnimation'),\n LinkingIOS: require('LinkingIOS'),\n NetInfo: require('NetInfo'),\n PanResponder: require('PanResponder'),\n PixelRatio: require('PixelRatio'),\n PushNotificationIOS: require('PushNotificationIOS'),\n Settings: require('Settings'),\n StatusBarIOS: require('StatusBarIOS'),\n StyleSheet: require('StyleSheet'),\n VibrationIOS: require('VibrationIOS'),\n\n // Plugins\n DeviceEventEmitter: require('RCTDeviceEventEmitter'),\n NativeAppEventEmitter: require('RCTNativeAppEventEmitter'),\n NativeModules: require('NativeModules'),\n Platform: require('Platform'),\n requireNativeComponent: require('requireNativeComponent'),\n\n // Prop Types\n EdgeInsetsPropType: require('EdgeInsetsPropType'),\n PointPropType: require('PointPropType'),\n\n addons: {\n LinkedStateMixin: require('LinkedStateMixin'),\n Perf: undefined,\n PureRenderMixin: require('ReactComponentWithPureRenderMixin'),\n TestModule: require('NativeModules').TestModule,\n TestUtils: undefined,\n batchedUpdates: require('ReactUpdates').batchedUpdates,\n cloneWithProps: require('cloneWithProps'),\n createFragment: require('ReactFragment').create,\n update: require('update'),\n },\n});\n\nif (__DEV__) {\n ReactNative.addons.Perf = require('ReactDefaultPerf');\n ReactNative.addons.TestUtils = require('ReactTestUtils');\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/react-native/react-native.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/React.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports = require('ReactNative');","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule React\n * @flow\n */\n'use strict';\n\nmodule.exports = require('ReactNative');\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/React.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNative.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactChildren=require('ReactChildren');\nvar ReactClass=require('ReactClass');\nvar ReactComponent=require('ReactComponent');\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactNativeDefaultInjection=require('ReactNativeDefaultInjection');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactPropTypes=require('ReactPropTypes');\n\nvar deprecated=require('deprecated');\nvar findNodeHandle=require('findNodeHandle');\nvar invariant=require('invariant');\nvar onlyChild=require('onlyChild');\n\nReactNativeDefaultInjection.inject();\n\nvar createElement=ReactElement.createElement;\nvar createFactory=ReactElement.createFactory;\nvar cloneElement=ReactElement.cloneElement;\n\nif(__DEV__){\ncreateElement = ReactElementValidator.createElement;\ncreateFactory = ReactElementValidator.createFactory;\ncloneElement = ReactElementValidator.cloneElement;}\n\n\nvar resolveDefaultProps=function(element){\n\nvar defaultProps=element.type.defaultProps;\nvar props=element.props;\nfor(var propName in defaultProps) {\nif(props[propName] === undefined){\nprops[propName] = defaultProps[propName];}}};\n\n\n\n\n\nvar augmentElement=function(element){\nif(__DEV__){\ninvariant(\nfalse,\n'This optimized path should never be used in DEV mode because ' + \n'it does not provide validation. Check your JSX transform.');}\n\n\nelement._owner = ReactCurrentOwner.current;\nelement._context = ReactContext.current;\nif(element.type.defaultProps){\nresolveDefaultProps(element);}\n\nreturn element;};\n\n\nvar render=function(\nelement,\nmountInto,\ncallback)\n{\nreturn ReactNativeMount.renderComponent(element,mountInto,callback);};\n\n\nvar ReactNative={\nhasReactNativeInitialized:false,\nChildren:{\nmap:ReactChildren.map,\nforEach:ReactChildren.forEach,\ncount:ReactChildren.count,\nonly:onlyChild},\n\nComponent:ReactComponent,\nPropTypes:ReactPropTypes,\ncreateClass:ReactClass.createClass,\ncreateElement:createElement,\ncreateFactory:createFactory,\ncloneElement:cloneElement,\n_augmentElement:augmentElement,\nfindNodeHandle:findNodeHandle,\nrender:render,\nunmountComponentAtNode:ReactNativeMount.unmountComponentAtNode,\n\n\n__spread:Object.assign,\n\nunmountComponentAtNodeAndRemoveContainer:ReactNativeMount.unmountComponentAtNodeAndRemoveContainer,\nisValidClass:ReactElement.isValidFactory,\nisValidElement:ReactElement.isValidElement,\n\n\nrenderComponent:deprecated(\n'React',\n'renderComponent',\n'render',\nthis,\nrender),\n\nisValidComponent:deprecated(\n'React',\n'isValidComponent',\n'isValidElement',\nthis,\nReactElement.isValidElement)};\n\n\n\n\n\n\nif(\ntypeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && \ntypeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function'){\n__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\nCurrentOwner:ReactCurrentOwner,\nInstanceHandles:ReactInstanceHandles,\nMount:ReactNativeMount,\nReconciler:require('ReactReconciler'),\nTextComponent:require('ReactNativeTextComponent')});}\n\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNative\n * @flow\n */\n'use strict';\n\nvar ReactChildren = require('ReactChildren');\nvar ReactClass = require('ReactClass');\nvar ReactComponent = require('ReactComponent');\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactNativeDefaultInjection = require('ReactNativeDefaultInjection');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactPropTypes = require('ReactPropTypes');\n\nvar deprecated = require('deprecated');\nvar findNodeHandle = require('findNodeHandle');\nvar invariant = require('invariant');\nvar onlyChild = require('onlyChild');\n\nReactNativeDefaultInjection.inject();\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (__DEV__) {\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar resolveDefaultProps = function(element) {\n // Could be optimized, but not currently in heavy use.\n var defaultProps = element.type.defaultProps;\n var props = element.props;\n for (var propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n};\n\n// Experimental optimized element creation\nvar augmentElement = function(element: ReactElement) {\n if (__DEV__) {\n invariant(\n false,\n 'This optimized path should never be used in DEV mode because ' +\n 'it does not provide validation. Check your JSX transform.'\n );\n }\n element._owner = ReactCurrentOwner.current;\n element._context = ReactContext.current;\n if (element.type.defaultProps) {\n resolveDefaultProps(element);\n }\n return element;\n};\n\nvar render = function(\n element: ReactElement,\n mountInto: number,\n callback?: ?(() => void)\n): ?ReactComponent {\n return ReactNativeMount.renderComponent(element, mountInto, callback);\n};\n\nvar ReactNative = {\n hasReactNativeInitialized: false,\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n only: onlyChild\n },\n Component: ReactComponent,\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createElement: createElement,\n createFactory: createFactory,\n cloneElement: cloneElement,\n _augmentElement: augmentElement,\n findNodeHandle: findNodeHandle,\n render: render,\n unmountComponentAtNode: ReactNativeMount.unmountComponentAtNode,\n\n // Hook for JSX spread, don't use this for anything else.\n __spread: Object.assign,\n\n unmountComponentAtNodeAndRemoveContainer: ReactNativeMount.unmountComponentAtNodeAndRemoveContainer,\n isValidClass: ReactElement.isValidFactory,\n isValidElement: ReactElement.isValidElement,\n\n // Deprecations (remove for 0.13)\n renderComponent: deprecated(\n 'React',\n 'renderComponent',\n 'render',\n this,\n render\n ),\n isValidComponent: deprecated(\n 'React',\n 'isValidComponent',\n 'isValidElement',\n this,\n ReactElement.isValidElement\n )\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n CurrentOwner: ReactCurrentOwner,\n InstanceHandles: ReactInstanceHandles,\n Mount: ReactNativeMount,\n Reconciler: require('ReactReconciler'),\n TextComponent: require('ReactNativeTextComponent'),\n });\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNative.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/ReactChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\nvar ReactFragment=require('ReactFragment');\n\nvar traverseAllChildren=require('traverseAllChildren');\nvar warning=require('warning');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\nvar threeArgumentPooler=PooledClass.threeArgumentPooler;\n\n\n\n\n\n\n\n\n\nfunction ForEachBookKeeping(forEachFunction,forEachContext){\nthis.forEachFunction = forEachFunction;\nthis.forEachContext = forEachContext;}\n\nPooledClass.addPoolingTo(ForEachBookKeeping,twoArgumentPooler);\n\nfunction forEachSingleChild(traverseContext,child,name,i){\nvar forEachBookKeeping=traverseContext;\nforEachBookKeeping.forEachFunction.call(\nforEachBookKeeping.forEachContext,child,i);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction forEachChildren(children,forEachFunc,forEachContext){\nif(children == null){\nreturn children;}\n\n\nvar traverseContext=\nForEachBookKeeping.getPooled(forEachFunc,forEachContext);\ntraverseAllChildren(children,forEachSingleChild,traverseContext);\nForEachBookKeeping.release(traverseContext);}\n\n\n\n\n\n\n\n\n\n\n\nfunction MapBookKeeping(mapResult,mapFunction,mapContext){\nthis.mapResult = mapResult;\nthis.mapFunction = mapFunction;\nthis.mapContext = mapContext;}\n\nPooledClass.addPoolingTo(MapBookKeeping,threeArgumentPooler);\n\nfunction mapSingleChildIntoContext(traverseContext,child,name,i){\nvar mapBookKeeping=traverseContext;\nvar mapResult=mapBookKeeping.mapResult;\n\nvar keyUnique=!mapResult.hasOwnProperty(name);\nif(__DEV__){\nwarning(\nkeyUnique,\n'ReactChildren.map(...): Encountered two children with the same key, ' + \n'`%s`. Child keys must be unique; when two children share a key, only ' + \n'the first child will be used.',\nname);}\n\n\n\nif(keyUnique){\nvar mappedChild=\nmapBookKeeping.mapFunction.call(mapBookKeeping.mapContext,child,i);\nmapResult[name] = mappedChild;}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction mapChildren(children,func,context){\nif(children == null){\nreturn children;}\n\n\nvar mapResult={};\nvar traverseContext=MapBookKeeping.getPooled(mapResult,func,context);\ntraverseAllChildren(children,mapSingleChildIntoContext,traverseContext);\nMapBookKeeping.release(traverseContext);\nreturn ReactFragment.create(mapResult);}\n\n\nfunction forEachSingleChildDummy(traverseContext,child,name,i){\nreturn null;}\n\n\n\n\n\n\n\n\n\nfunction countChildren(children,context){\nreturn traverseAllChildren(children,forEachSingleChildDummy,null);}\n\n\nvar ReactChildren={\nforEach:forEachChildren,\nmap:mapChildren,\ncount:countChildren};\n\n\nmodule.exports = ReactChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildren\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\nvar ReactFragment = require('ReactFragment');\n\nvar traverseAllChildren = require('traverseAllChildren');\nvar warning = require('warning');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar threeArgumentPooler = PooledClass.threeArgumentPooler;\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.forEachFunction = forEachFunction;\n this.forEachContext = forEachContext;\n}\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(traverseContext, child, name, i) {\n var forEachBookKeeping = traverseContext;\n forEachBookKeeping.forEachFunction.call(\n forEachBookKeeping.forEachContext, child, i);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc.\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n\n var traverseContext =\n ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, mapFunction, mapContext) {\n this.mapResult = mapResult;\n this.mapFunction = mapFunction;\n this.mapContext = mapContext;\n}\nPooledClass.addPoolingTo(MapBookKeeping, threeArgumentPooler);\n\nfunction mapSingleChildIntoContext(traverseContext, child, name, i) {\n var mapBookKeeping = traverseContext;\n var mapResult = mapBookKeeping.mapResult;\n\n var keyUnique = !mapResult.hasOwnProperty(name);\n if (__DEV__) {\n warning(\n keyUnique,\n 'ReactChildren.map(...): Encountered two children with the same key, ' +\n '`%s`. Child keys must be unique; when two children share a key, only ' +\n 'the first child will be used.',\n name\n );\n }\n\n if (keyUnique) {\n var mappedChild =\n mapBookKeeping.mapFunction.call(mapBookKeeping.mapContext, child, i);\n mapResult[name] = mappedChild;\n }\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * TODO: This may likely break any calls to `ReactChildren.map` that were\n * previously relying on the fact that we guarded against null children.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} mapFunction.\n * @param {*} mapContext Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var mapResult = {};\n var traverseContext = MapBookKeeping.getPooled(mapResult, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n return ReactFragment.create(mapResult);\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name, i) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n count: countChildren\n};\n\nmodule.exports = ReactChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/ReactChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/PooledClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\nvar oneArgumentPooler=function(copyFieldsFrom){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,copyFieldsFrom);\nreturn instance;}else \n{\nreturn new Klass(copyFieldsFrom);}};\n\n\n\nvar twoArgumentPooler=function(a1,a2){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2);\nreturn instance;}else \n{\nreturn new Klass(a1,a2);}};\n\n\n\nvar threeArgumentPooler=function(a1,a2,a3){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2,a3);\nreturn instance;}else \n{\nreturn new Klass(a1,a2,a3);}};\n\n\n\nvar fiveArgumentPooler=function(a1,a2,a3,a4,a5){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2,a3,a4,a5);\nreturn instance;}else \n{\nreturn new Klass(a1,a2,a3,a4,a5);}};\n\n\n\nvar standardReleaser=function(instance){\nvar Klass=this;\ninvariant(\ninstance instanceof Klass,\n'Trying to release an instance into a pool of a different type.');\n\nif(instance.destructor){\ninstance.destructor();}\n\nif(Klass.instancePool.length < Klass.poolSize){\nKlass.instancePool.push(instance);}};\n\n\n\nvar DEFAULT_POOL_SIZE=10;\nvar DEFAULT_POOLER=oneArgumentPooler;\n\n\n\n\n\n\n\n\n\n\nvar addPoolingTo=function(CopyConstructor,pooler){\nvar NewKlass=CopyConstructor;\nNewKlass.instancePool = [];\nNewKlass.getPooled = pooler || DEFAULT_POOLER;\nif(!NewKlass.poolSize){\nNewKlass.poolSize = DEFAULT_POOL_SIZE;}\n\nNewKlass.release = standardReleaser;\nreturn NewKlass;};\n\n\nvar PooledClass={\naddPoolingTo:addPoolingTo,\noneArgumentPooler:oneArgumentPooler,\ntwoArgumentPooler:twoArgumentPooler,\nthreeArgumentPooler:threeArgumentPooler,\nfiveArgumentPooler:fiveArgumentPooler};\n\n\nmodule.exports = PooledClass;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PooledClass\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fiveArgumentPooler = function(a1, a2, a3, a4, a5) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4, a5);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4, a5);\n }\n};\n\nvar standardReleaser = function(instance) {\n var Klass = this;\n invariant(\n instance instanceof Klass,\n 'Trying to release an instance into a pool of a different type.'\n );\n if (instance.destructor) {\n instance.destructor();\n }\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances (optional).\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function(CopyConstructor, pooler) {\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fiveArgumentPooler: fiveArgumentPooler\n};\n\nmodule.exports = PooledClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/PooledClass.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/invariant.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=function(condition,format,a,b,c,d,e,f){\nif(__DEV__){\nif(format === undefined){\nthrow new Error('invariant requires an error message argument');}}\n\n\n\nif(!condition){\nvar error;\nif(format === undefined){\nerror = new Error(\n'Minified exception occurred; use the non-minified dev environment ' + \n'for the full error message and additional helpful warnings.');}else \n\n{\nvar args=[a,b,c,d,e,f];\nvar argIndex=0;\nerror = new Error(\n'Invariant Violation: ' + \nformat.replace(/%s/g,function(){return args[argIndex++];}));}\n\n\n\nerror.framesToPop = 1;\nthrow error;}};\n\n\n\nmodule.exports = invariant;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (__DEV__) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/invariant.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactFragment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\nif(__DEV__){\nvar fragmentKey='_reactFragment';\nvar didWarnKey='_reactDidWarn';\nvar canWarnForReactFragment=false;\n\ntry{\n\n\n\nvar dummy=function(){\nreturn 1;};\n\n\nObject.defineProperty(\n{},\nfragmentKey,\n{enumerable:false,value:true});\n\n\nObject.defineProperty(\n{},\n'key',\n{enumerable:true,get:dummy});\n\n\ncanWarnForReactFragment = true;}\ncatch(x) {}\n\nvar proxyPropertyAccessWithWarning=function(obj,key){\nObject.defineProperty(obj,key,{\nenumerable:true,\nget:function(){\nwarning(\nthis[didWarnKey],\n'A ReactFragment is an opaque type. Accessing any of its ' + \n'properties is deprecated. Pass it to one of the React.Children ' + \n'helpers.');\n\nthis[didWarnKey] = true;\nreturn this[fragmentKey][key];},\n\nset:function(value){\nwarning(\nthis[didWarnKey],\n'A ReactFragment is an immutable opaque type. Mutating its ' + \n'properties is deprecated.');\n\nthis[didWarnKey] = true;\nthis[fragmentKey][key] = value;}});};\n\n\n\n\nvar issuedWarnings={};\n\nvar didWarnForFragment=function(fragment){\n\n\nvar fragmentCacheKey='';\nfor(var key in fragment) {\nfragmentCacheKey += key + ':' + typeof fragment[key] + ',';}\n\nvar alreadyWarnedOnce=!!issuedWarnings[fragmentCacheKey];\nissuedWarnings[fragmentCacheKey] = true;\nreturn alreadyWarnedOnce;};}\n\n\n\nvar ReactFragment={\n\n\ncreate:function(object){\nif(__DEV__){\nif(typeof object !== 'object' || !object || Array.isArray(object)){\nwarning(\nfalse,\n'React.addons.createFragment only accepts a single object.',\nobject);\n\nreturn object;}\n\nif(ReactElement.isValidElement(object)){\nwarning(\nfalse,\n'React.addons.createFragment does not accept a ReactElement ' + \n'without a wrapper object.');\n\nreturn object;}\n\nif(canWarnForReactFragment){\nvar proxy={};\nObject.defineProperty(proxy,fragmentKey,{\nenumerable:false,\nvalue:object});\n\nObject.defineProperty(proxy,didWarnKey,{\nwritable:true,\nenumerable:false,\nvalue:false});\n\nfor(var key in object) {\nproxyPropertyAccessWithWarning(proxy,key);}\n\nObject.preventExtensions(proxy);\nreturn proxy;}}\n\n\nreturn object;},\n\n\n\nextract:function(fragment){\nif(__DEV__){\nif(canWarnForReactFragment){\nif(!fragment[fragmentKey]){\nwarning(\ndidWarnForFragment(fragment),\n'Any use of a keyed object should be wrapped in ' + \n'React.addons.createFragment(object) before being passed as a ' + \n'child.');\n\nreturn fragment;}\n\nreturn fragment[fragmentKey];}}\n\n\nreturn fragment;},\n\n\n\n\nextractIfFragment:function(fragment){\nif(__DEV__){\nif(canWarnForReactFragment){\n\nif(fragment[fragmentKey]){\nreturn fragment[fragmentKey];}\n\n\n\n\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key) && \nReactElement.isValidElement(fragment[key])){\n\n\nreturn ReactFragment.extract(fragment);}}}}\n\n\n\n\nreturn fragment;}};\n\n\n\nmodule.exports = ReactFragment;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactFragment\n*/\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\n\nvar warning = require('warning');\n\n/**\n * We used to allow keyed objects to serve as a collection of ReactElements,\n * or nested sets. This allowed us a way to explicitly key a set a fragment of\n * components. This is now being replaced with an opaque data structure.\n * The upgrade path is to call React.addons.createFragment({ key: value }) to\n * create a keyed fragment. The resulting data structure is opaque, for now.\n */\n\nif (__DEV__) {\n var fragmentKey = '_reactFragment';\n var didWarnKey = '_reactDidWarn';\n var canWarnForReactFragment = false;\n\n try {\n // Feature test. Don't even try to issue this warning if we can't use\n // enumerable: false.\n\n var dummy = function() {\n return 1;\n };\n\n Object.defineProperty(\n {},\n fragmentKey,\n {enumerable: false, value: true}\n );\n\n Object.defineProperty(\n {},\n 'key',\n {enumerable: true, get: dummy}\n );\n\n canWarnForReactFragment = true;\n } catch (x) { }\n\n var proxyPropertyAccessWithWarning = function(obj, key) {\n Object.defineProperty(obj, key, {\n enumerable: true,\n get: function() {\n warning(\n this[didWarnKey],\n 'A ReactFragment is an opaque type. Accessing any of its ' +\n 'properties is deprecated. Pass it to one of the React.Children ' +\n 'helpers.'\n );\n this[didWarnKey] = true;\n return this[fragmentKey][key];\n },\n set: function(value) {\n warning(\n this[didWarnKey],\n 'A ReactFragment is an immutable opaque type. Mutating its ' +\n 'properties is deprecated.'\n );\n this[didWarnKey] = true;\n this[fragmentKey][key] = value;\n }\n });\n };\n\n var issuedWarnings = {};\n\n var didWarnForFragment = function(fragment) {\n // We use the keys and the type of the value as a heuristic to dedupe the\n // warning to avoid spamming too much.\n var fragmentCacheKey = '';\n for (var key in fragment) {\n fragmentCacheKey += key + ':' + (typeof fragment[key]) + ',';\n }\n var alreadyWarnedOnce = !!issuedWarnings[fragmentCacheKey];\n issuedWarnings[fragmentCacheKey] = true;\n return alreadyWarnedOnce;\n };\n}\n\nvar ReactFragment = {\n // Wrap a keyed object in an opaque proxy that warns you if you access any\n // of its properties.\n create: function(object) {\n if (__DEV__) {\n if (typeof object !== 'object' || !object || Array.isArray(object)) {\n warning(\n false,\n 'React.addons.createFragment only accepts a single object.',\n object\n );\n return object;\n }\n if (ReactElement.isValidElement(object)) {\n warning(\n false,\n 'React.addons.createFragment does not accept a ReactElement ' +\n 'without a wrapper object.'\n );\n return object;\n }\n if (canWarnForReactFragment) {\n var proxy = {};\n Object.defineProperty(proxy, fragmentKey, {\n enumerable: false,\n value: object\n });\n Object.defineProperty(proxy, didWarnKey, {\n writable: true,\n enumerable: false,\n value: false\n });\n for (var key in object) {\n proxyPropertyAccessWithWarning(proxy, key);\n }\n Object.preventExtensions(proxy);\n return proxy;\n }\n }\n return object;\n },\n // Extract the original keyed object from the fragment opaque type. Warn if\n // a plain object is passed here.\n extract: function(fragment) {\n if (__DEV__) {\n if (canWarnForReactFragment) {\n if (!fragment[fragmentKey]) {\n warning(\n didWarnForFragment(fragment),\n 'Any use of a keyed object should be wrapped in ' +\n 'React.addons.createFragment(object) before being passed as a ' +\n 'child.'\n );\n return fragment;\n }\n return fragment[fragmentKey];\n }\n }\n return fragment;\n },\n // Check if this is a fragment and if so, extract the keyed object. If it\n // is a fragment-like object, warn that it should be wrapped. Ignore if we\n // can't determine what kind of object this is.\n extractIfFragment: function(fragment) {\n if (__DEV__) {\n if (canWarnForReactFragment) {\n // If it is the opaque type, return the keyed object.\n if (fragment[fragmentKey]) {\n return fragment[fragmentKey];\n }\n // Otherwise, check each property if it has an element, if it does\n // it is probably meant as a fragment, so we can warn early. Defer,\n // the warning to extract.\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key) &&\n ReactElement.isValidElement(fragment[key])) {\n // This looks like a fragment object, we should provide an\n // early warning.\n return ReactFragment.extract(fragment);\n }\n }\n }\n }\n return fragment;\n }\n};\n\nmodule.exports = ReactFragment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactFragment.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElement.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\n\nvar assign=require('Object.assign');\nvar warning=require('warning');\n\nvar RESERVED_PROPS={\nkey:true,\nref:true};\n\n\n\n\n\n\n\n\n\nfunction defineWarningProperty(object,key){\nObject.defineProperty(object,key,{\n\nconfigurable:false,\nenumerable:true,\n\nget:function(){\nif(!this._store){\nreturn null;}\n\nreturn this._store[key];},\n\n\nset:function(value){\nwarning(\nfalse,\n'Don\\'t set the %s property of the React element. Instead, ' + \n'specify the correct value when initially creating the element.',\nkey);\n\nthis._store[key] = value;}});}\n\n\n\n\n\n\n\n\nvar useMutationMembrane=false;\n\n\n\n\n\n\n\nfunction defineMutationMembrane(prototype){\ntry{\nvar pseudoFrozenProperties={\nprops:true};\n\nfor(var key in pseudoFrozenProperties) {\ndefineWarningProperty(prototype,key);}\n\nuseMutationMembrane = true;}\ncatch(x) {}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=function(type,key,ref,owner,context,props){\n\nthis.type = type;\nthis.key = key;\nthis.ref = ref;\n\n\nthis._owner = owner;\n\n\n\nthis._context = context;\n\nif(__DEV__){\n\n\n\n\nthis._store = {props:props,originalProps:assign({},props)};\n\n\n\n\n\ntry{\nObject.defineProperty(this._store,'validated',{\nconfigurable:false,\nenumerable:false,\nwritable:true});}\n\ncatch(x) {}\n\nthis._store.validated = false;\n\n\n\n\nif(useMutationMembrane){\nObject.freeze(this);\nreturn;}}\n\n\n\nthis.props = props;};\n\n\n\n\nReactElement.prototype = {\n_isReactElement:true};\n\n\nif(__DEV__){\ndefineMutationMembrane(ReactElement.prototype);}\n\n\nReactElement.createElement = function(type,config,children){\nvar propName;\n\n\nvar props={};\n\nvar key=null;\nvar ref=null;\n\nif(config != null){\nref = config.ref === undefined?null:config.ref;\nkey = config.key === undefined?null:'' + config.key;\n\nfor(propName in config) {\nif(config.hasOwnProperty(propName) && \n!RESERVED_PROPS.hasOwnProperty(propName)){\nprops[propName] = config[propName];}}}\n\n\n\n\n\n\nvar childrenLength=arguments.length - 2;\nif(childrenLength === 1){\nprops.children = children;}else \nif(childrenLength > 1){\nvar childArray=Array(childrenLength);\nfor(var i=0;i < childrenLength;i++) {\nchildArray[i] = arguments[i + 2];}\n\nprops.children = childArray;}\n\n\n\nif(type && type.defaultProps){\nvar defaultProps=type.defaultProps;\nfor(propName in defaultProps) {\nif(typeof props[propName] === 'undefined'){\nprops[propName] = defaultProps[propName];}}}\n\n\n\n\nreturn new ReactElement(\ntype,\nkey,\nref,\nReactCurrentOwner.current,\nReactContext.current,\nprops);};\n\n\n\nReactElement.createFactory = function(type){\nvar factory=ReactElement.createElement.bind(null,type);\n\n\n\n\n\nfactory.type = type;\nreturn factory;};\n\n\nReactElement.cloneAndReplaceProps = function(oldElement,newProps){\nvar newElement=new ReactElement(\noldElement.type,\noldElement.key,\noldElement.ref,\noldElement._owner,\noldElement._context,\nnewProps);\n\n\nif(__DEV__){\n\nnewElement._store.validated = oldElement._store.validated;}\n\nreturn newElement;};\n\n\nReactElement.cloneElement = function(element,config,children){\nvar propName;\n\n\nvar props=assign({},element.props);\n\n\nvar key=element.key;\nvar ref=element.ref;\n\n\nvar owner=element._owner;\n\nif(config != null){\nif(config.ref !== undefined){\n\nref = config.ref;\nowner = ReactCurrentOwner.current;}\n\nif(config.key !== undefined){\nkey = '' + config.key;}\n\n\nfor(propName in config) {\nif(config.hasOwnProperty(propName) && \n!RESERVED_PROPS.hasOwnProperty(propName)){\nprops[propName] = config[propName];}}}\n\n\n\n\n\n\nvar childrenLength=arguments.length - 2;\nif(childrenLength === 1){\nprops.children = children;}else \nif(childrenLength > 1){\nvar childArray=Array(childrenLength);\nfor(var i=0;i < childrenLength;i++) {\nchildArray[i] = arguments[i + 2];}\n\nprops.children = childArray;}\n\n\nreturn new ReactElement(\nelement.type,\nkey,\nref,\nowner,\nelement._context,\nprops);};\n\n\n\n\n\n\n\n\nReactElement.isValidElement = function(object){\n\n\n\n\nvar isElement=!!(object && object._isReactElement);\n\n\n\n\n\nreturn isElement;};\n\n\nmodule.exports = ReactElement;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElement\n */\n\n'use strict';\n\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\n\nvar assign = require('Object.assign');\nvar warning = require('warning');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true\n};\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} object\n * @param {string} key\n */\nfunction defineWarningProperty(object, key) {\n Object.defineProperty(object, key, {\n\n configurable: false,\n enumerable: true,\n\n get: function() {\n if (!this._store) {\n return null;\n }\n return this._store[key];\n },\n\n set: function(value) {\n warning(\n false,\n 'Don\\'t set the %s property of the React element. Instead, ' +\n 'specify the correct value when initially creating the element.',\n key\n );\n this._store[key] = value;\n }\n\n });\n}\n\n/**\n * This is updated to true if the membrane is successfully created.\n */\nvar useMutationMembrane = false;\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} element\n */\nfunction defineMutationMembrane(prototype) {\n try {\n var pseudoFrozenProperties = {\n props: true\n };\n for (var key in pseudoFrozenProperties) {\n defineWarningProperty(prototype, key);\n }\n useMutationMembrane = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\n/**\n * Base constructor for all React elements. This is only used to make this\n * work with a dynamic instanceof check. Nothing should live on this prototype.\n *\n * @param {*} type\n * @param {string|object} ref\n * @param {*} key\n * @param {*} props\n * @internal\n */\nvar ReactElement = function(type, key, ref, owner, context, props) {\n // Built-in properties that belong on the element\n this.type = type;\n this.key = key;\n this.ref = ref;\n\n // Record the component responsible for creating this element.\n this._owner = owner;\n\n // TODO: Deprecate withContext, and then the context becomes accessible\n // through the owner.\n this._context = context;\n\n if (__DEV__) {\n // The validation flag and props are currently mutative. We put them on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n this._store = {props: props, originalProps: assign({}, props)};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n try {\n Object.defineProperty(this._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true\n });\n } catch (x) {\n }\n this._store.validated = false;\n\n // We're not allowed to set props directly on the object so we early\n // return and rely on the prototype membrane to forward to the backing\n // store.\n if (useMutationMembrane) {\n Object.freeze(this);\n return;\n }\n }\n\n this.props = props;\n};\n\n// We intentionally don't expose the function on the constructor property.\n// ReactElement should be indistinguishable from a plain object.\nReactElement.prototype = {\n _isReactElement: true\n};\n\nif (__DEV__) {\n defineMutationMembrane(ReactElement.prototype);\n}\n\nReactElement.createElement = function(type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n\n if (config != null) {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (typeof props[propName] === 'undefined') {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return new ReactElement(\n type,\n key,\n ref,\n ReactCurrentOwner.current,\n ReactContext.current,\n props\n );\n};\n\nReactElement.createFactory = function(type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. .type === Foo.type.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n var newElement = new ReactElement(\n oldElement.type,\n oldElement.key,\n oldElement.ref,\n oldElement._owner,\n oldElement._context,\n newProps\n );\n\n if (__DEV__) {\n // If the key on the original is valid, then the clone is valid\n newElement._store.validated = oldElement._store.validated;\n }\n return newElement;\n};\n\nReactElement.cloneElement = function(element, config, children) {\n var propName;\n\n // Original props are copied\n var props = assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (config.ref !== undefined) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (config.key !== undefined) {\n key = '' + config.key;\n }\n // Remaining properties override existing props\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return new ReactElement(\n element.type,\n key,\n ref,\n owner,\n element._context,\n props\n );\n};\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function(object) {\n // ReactTestUtils is often used outside of beforeEach where as React is\n // within it. This leads to two different instances of React on the same\n // page. To identify a element from a different React instance we use\n // a flag instead of an instanceof check.\n var isElement = !!(object && object._isReactElement);\n // if (isElement && !(object instanceof ReactElement)) {\n // This is an indicator that you're using multiple versions of React at the\n // same time. This will screw with ownership and stuff. Fix it, please.\n // TODO: We could possibly warn here.\n // }\n return isElement;\n};\n\nmodule.exports = ReactElement;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElement.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactContext.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar emptyObject=require('emptyObject');\nvar warning=require('warning');\n\nvar didWarn=false;\n\n\n\n\n\n\n\nvar ReactContext={\n\n\n\n\n\ncurrent:emptyObject,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nwithContext:function(newContext,scopedCallback){\nif(__DEV__){\nwarning(\ndidWarn,\n'withContext is deprecated and will be removed in a future version. ' + \n'Use a wrapper component with getChildContext instead.');\n\n\ndidWarn = true;}\n\n\nvar result;\nvar previousContext=ReactContext.current;\nReactContext.current = assign({},previousContext,newContext);\ntry{\nresult = scopedCallback();}finally \n{\nReactContext.current = previousContext;}\n\nreturn result;}};\n\n\n\n\nmodule.exports = ReactContext;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar emptyObject = require('emptyObject');\nvar warning = require('warning');\n\nvar didWarn = false;\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: emptyObject,\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return
{children}
;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array}\n */\n withContext: function(newContext, scopedCallback) {\n if (__DEV__) {\n warning(\n didWarn,\n 'withContext is deprecated and will be removed in a future version. ' +\n 'Use a wrapper component with getChildContext instead.'\n );\n\n didWarn = true;\n }\n\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactContext.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/stubs/Object.assign.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction assign(target,sources){\nif(target == null){\nthrow new TypeError('Object.assign target cannot be null or undefined');}\n\n\nvar to=Object(target);\nvar hasOwnProperty=Object.prototype.hasOwnProperty;\n\nfor(var nextIndex=1;nextIndex < arguments.length;nextIndex++) {\nvar nextSource=arguments[nextIndex];\nif(nextSource == null){\ncontinue;}\n\n\nvar from=Object(nextSource);\n\n\n\n\n\n\nfor(var key in from) {\nif(hasOwnProperty.call(from,key)){\nto[key] = from[key];}}}\n\n\n\n\nreturn to;}\n\n\nmodule.exports = assign;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.assign\n */\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n'use strict';\n\nfunction assign(target, sources) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n\n var to = Object(target);\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n var from = Object(nextSource);\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects. We don't support symbols so they won't\n // be transferred.\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n }\n\n return to;\n}\n\nmodule.exports = assign;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/stubs/Object.assign.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyObject.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar emptyObject={};\n\nif(__DEV__){\nObject.freeze(emptyObject);}\n\n\nmodule.exports = emptyObject;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyObject\n */\n\n\"use strict\";\n\nvar emptyObject = {};\n\nif (__DEV__) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyObject.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/warning.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar emptyFunction=require('emptyFunction');\n\n\n\n\n\n\n\n\nvar warning=emptyFunction;\n\nif(__DEV__){\nwarning = function(condition,format){for(var _len=arguments.length,args=Array(_len > 2?_len - 2:0),_key=2;_key < _len;_key++) {args[_key - 2] = arguments[_key];}\nif(format === undefined){\nthrow new Error(\n'`warning(condition, format, ...args)` requires a warning ' + \n'message argument');}\n\n\n\nif(format.length < 10 || /^[s\\W]*$/.test(format)){\nthrow new Error(\n'The warning format should be able to uniquely identify this ' + \n'warning. Please, use a more descriptive format than: ' + format);}\n\n\n\nif(format.indexOf('Failed Composite propType: ') === 0){\nreturn;}\n\n\nif(!condition){\nvar argIndex=0;\nvar message='Warning: ' + format.replace(/%s/g,function(){return args[argIndex++];});\nconsole.warn(message);\ntry{\n\n\n\nthrow new Error(message);}\ncatch(x) {}}};}\n\n\n\n\nmodule.exports = warning;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule warning\n */\n\n\"use strict\";\n\nvar emptyFunction = require('emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (__DEV__) {\n warning = function(condition, format, ...args) {\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]);\n console.warn(message);\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/warning.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyFunction.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\nmakeEmptyFunction(arg){\nreturn function(){\nreturn arg;};}\n\n\n\n\n\n\n\n\nfunction emptyFunction(){}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function(){return this;};\nemptyFunction.thatReturnsArgument = function(arg){return arg;};\n\nmodule.exports = emptyFunction;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyFunction\n */\n\nfunction makeEmptyFunction(arg) {\n return function() {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nfunction emptyFunction() {}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function() { return this; };\nemptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\nmodule.exports = emptyFunction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyFunction.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCurrentOwner.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCurrentOwner={\n\n\n\n\n\ncurrent:null};\n\n\n\nmodule.exports = ReactCurrentOwner;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCurrentOwner.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/traverseAllChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\n\nvar getIteratorFn=require('getIteratorFn');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar SEPARATOR=ReactInstanceHandles.SEPARATOR;\nvar SUBSEPARATOR=':';\n\n\n\n\n\n\nvar userProvidedKeyEscaperLookup={\n'=':'=0',\n'.':'=1',\n':':'=2'};\n\n\nvar userProvidedKeyEscapeRegex=/[=.:]/g;\n\nvar didWarnAboutMaps=false;\n\nfunction userProvidedKeyEscaper(match){\nreturn userProvidedKeyEscaperLookup[match];}\n\n\n\n\n\n\n\n\n\nfunction getComponentKey(component,index){\nif(component && component.key != null){\n\nreturn wrapUserProvidedKey(component.key);}\n\n\nreturn index.toString(36);}\n\n\n\n\n\n\n\n\nfunction escapeUserProvidedKey(text){\nreturn ('' + text).replace(\nuserProvidedKeyEscapeRegex,\nuserProvidedKeyEscaper);}\n\n\n\n\n\n\n\n\n\n\nfunction wrapUserProvidedKey(key){\nreturn '$' + escapeUserProvidedKey(key);}\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseAllChildrenImpl(\nchildren,\nnameSoFar,\nindexSoFar,\ncallback,\ntraverseContext)\n{\nvar type=typeof children;\n\nif(type === 'undefined' || type === 'boolean'){\n\nchildren = null;}\n\n\nif(children === null || \ntype === 'string' || \ntype === 'number' || \nReactElement.isValidElement(children)){\ncallback(\ntraverseContext,\nchildren,\n\n\nnameSoFar === ''?SEPARATOR + getComponentKey(children,0):nameSoFar,\nindexSoFar);\n\nreturn 1;}\n\n\nvar child,nextName,nextIndex;\nvar subtreeCount=0;\n\nif(Array.isArray(children)){\nfor(var i=0;i < children.length;i++) {\nchild = children[i];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \ngetComponentKey(child,i);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}else \n\n\n{\nvar iteratorFn=getIteratorFn(children);\nif(iteratorFn){\nvar iterator=iteratorFn.call(children);\nvar step;\nif(iteratorFn !== children.entries){\nvar ii=0;\nwhile(!(step = iterator.next()).done) {\nchild = step.value;\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \ngetComponentKey(child,ii++);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}else \n\n\n{\nif(__DEV__){\nwarning(\ndidWarnAboutMaps,\n'Using Maps as children is not yet fully supported. It is an ' + \n'experimental feature that might be removed. Convert it to a ' + \n'sequence / iterable of keyed ReactElements instead.');\n\ndidWarnAboutMaps = true;}\n\n\nwhile(!(step = iterator.next()).done) {\nvar entry=step.value;\nif(entry){\nchild = entry[1];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \nwrapUserProvidedKey(entry[0]) + SUBSEPARATOR + \ngetComponentKey(child,0);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}}}else \n\n\n\n\nif(type === 'object'){\ninvariant(\nchildren.nodeType !== 1,\n'traverseAllChildren(...): Encountered an invalid child; DOM ' + \n'elements are not valid children of React components.');\n\nvar fragment=ReactFragment.extract(children);\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key)){\nchild = fragment[key];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \nwrapUserProvidedKey(key) + SUBSEPARATOR + \ngetComponentKey(child,0);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}}}\n\n\n\n\n\n\nreturn subtreeCount;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseAllChildren(children,callback,traverseContext){\nif(children == null){\nreturn 0;}\n\n\nreturn traverseAllChildrenImpl(children,'',0,callback,traverseContext);}\n\n\nmodule.exports = traverseAllChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule traverseAllChildren\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\n\nvar getIteratorFn = require('getIteratorFn');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar SEPARATOR = ReactInstanceHandles.SEPARATOR;\nvar SUBSEPARATOR = ':';\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar userProvidedKeyEscaperLookup = {\n '=': '=0',\n '.': '=1',\n ':': '=2'\n};\n\nvar userProvidedKeyEscapeRegex = /[=.:]/g;\n\nvar didWarnAboutMaps = false;\n\nfunction userProvidedKeyEscaper(match) {\n return userProvidedKeyEscaperLookup[match];\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n if (component && component.key != null) {\n // Explicit key\n return wrapUserProvidedKey(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * Escape a component key so that it is safe to use in a reactid.\n *\n * @param {*} key Component key to be escaped.\n * @return {string} An escaped string.\n */\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(\n userProvidedKeyEscapeRegex,\n userProvidedKeyEscaper\n );\n}\n\n/**\n * Wrap a `key` value explicitly provided by the user to distinguish it from\n * implicitly-generated keys generated by a component's index in its parent.\n *\n * @param {string} key Value of a user-provided `key` attribute\n * @return {string}\n */\nfunction wrapUserProvidedKey(key) {\n return '$' + escapeUserProvidedKey(key);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!number} indexSoFar Number of children encountered until this point.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(\n children,\n nameSoFar,\n indexSoFar,\n callback,\n traverseContext\n) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null ||\n type === 'string' ||\n type === 'number' ||\n ReactElement.isValidElement(children)) {\n callback(\n traverseContext,\n children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar,\n indexSoFar\n );\n return 1;\n }\n\n var child, nextName, nextIndex;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, i)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, ii++)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n if (__DEV__) {\n warning(\n didWarnAboutMaps,\n 'Using Maps as children is not yet fully supported. It is an ' +\n 'experimental feature that might be removed. Convert it to a ' +\n 'sequence / iterable of keyed ReactElements instead.'\n );\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(entry[0]) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n } else if (type === 'object') {\n invariant(\n children.nodeType !== 1,\n 'traverseAllChildren(...): Encountered an invalid child; DOM ' +\n 'elements are not valid children of React components.'\n );\n var fragment = ReactFragment.extract(children);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n child = fragment[key];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(key) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', 0, callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/traverseAllChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/ReactInstanceHandles.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRootIndex=require('ReactRootIndex');\n\nvar invariant=require('invariant');\n\nvar SEPARATOR='.';\nvar SEPARATOR_LENGTH=SEPARATOR.length;\n\n\n\n\nvar MAX_TREE_DEPTH=100;\n\n\n\n\n\n\n\n\nfunction getReactRootIDString(index){\nreturn SEPARATOR + index.toString(36);}\n\n\n\n\n\n\n\n\n\n\nfunction isBoundary(id,index){\nreturn id.charAt(index) === SEPARATOR || index === id.length;}\n\n\n\n\n\n\n\n\n\nfunction isValidID(id){\nreturn id === '' || \nid.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR;}\n\n\n\n\n\n\n\n\n\n\n\nfunction isAncestorIDOf(ancestorID,descendantID){\nreturn (\ndescendantID.indexOf(ancestorID) === 0 && \nisBoundary(descendantID,ancestorID.length));}\n\n\n\n\n\n\n\n\n\n\nfunction getParentID(id){\nreturn id?id.substr(0,id.lastIndexOf(SEPARATOR)):'';}\n\n\n\n\n\n\n\n\n\n\n\nfunction getNextDescendantID(ancestorID,destinationID){\ninvariant(\nisValidID(ancestorID) && isValidID(destinationID),\n'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',\nancestorID,\ndestinationID);\n\ninvariant(\nisAncestorIDOf(ancestorID,destinationID),\n'getNextDescendantID(...): React has made an invalid assumption about ' + \n'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',\nancestorID,\ndestinationID);\n\nif(ancestorID === destinationID){\nreturn ancestorID;}\n\n\n\nvar start=ancestorID.length + SEPARATOR_LENGTH;\nfor(var i=start;i < destinationID.length;i++) {\nif(isBoundary(destinationID,i)){\nbreak;}}\n\n\nreturn destinationID.substr(0,i);}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getFirstCommonAncestorID(oneID,twoID){\nvar minLength=Math.min(oneID.length,twoID.length);\nif(minLength === 0){\nreturn '';}\n\nvar lastCommonMarkerIndex=0;\n\nfor(var i=0;i <= minLength;i++) {\nif(isBoundary(oneID,i) && isBoundary(twoID,i)){\nlastCommonMarkerIndex = i;}else \nif(oneID.charAt(i) !== twoID.charAt(i)){\nbreak;}}\n\n\nvar longestCommonID=oneID.substr(0,lastCommonMarkerIndex);\ninvariant(\nisValidID(longestCommonID),\n'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',\noneID,\ntwoID,\nlongestCommonID);\n\nreturn longestCommonID;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseParentPath(start,stop,cb,arg,skipFirst,skipLast){\nstart = start || '';\nstop = stop || '';\ninvariant(\nstart !== stop,\n'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',\nstart);\n\nvar traverseUp=isAncestorIDOf(stop,start);\ninvariant(\ntraverseUp || isAncestorIDOf(start,stop),\n'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' + \n'not have a parent path.',\nstart,\nstop);\n\n\nvar depth=0;\nvar traverse=traverseUp?getParentID:getNextDescendantID;\nfor(var id=start;;id = traverse(id,stop)) {\nvar ret;\nif((!skipFirst || id !== start) && (!skipLast || id !== stop)){\nret = cb(id,traverseUp,arg);}\n\nif(ret === false || id === stop){\n\nbreak;}\n\ninvariant(\ndepth++ < MAX_TREE_DEPTH,\n'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' + \n'traversing the React DOM ID tree. This may be due to malformed IDs: %s',\nstart,stop);}}\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceHandles={\n\n\n\n\n\ncreateReactRootID:function(){\nreturn getReactRootIDString(ReactRootIndex.createReactRootIndex());},\n\n\n\n\n\n\n\n\n\n\ncreateReactID:function(rootID,name){\nreturn rootID + name;},\n\n\n\n\n\n\n\n\n\n\ngetReactRootIDFromNodeID:function(id){\nif(id && id.charAt(0) === SEPARATOR && id.length > 1){\nvar index=id.indexOf(SEPARATOR,1);\nreturn index > -1?id.substr(0,index):id;}\n\nreturn null;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseEnterLeave:function(leaveID,enterID,cb,upArg,downArg){\nvar ancestorID=getFirstCommonAncestorID(leaveID,enterID);\nif(ancestorID !== leaveID){\ntraverseParentPath(leaveID,ancestorID,cb,upArg,false,true);}\n\nif(ancestorID !== enterID){\ntraverseParentPath(ancestorID,enterID,cb,downArg,true,false);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseTwoPhase:function(targetID,cb,arg){\nif(targetID){\ntraverseParentPath('',targetID,cb,arg,true,false);\ntraverseParentPath(targetID,'',cb,arg,false,true);}},\n\n\n\n\n\n\ntraverseTwoPhaseSkipTarget:function(targetID,cb,arg){\nif(targetID){\ntraverseParentPath('',targetID,cb,arg,true,true);\ntraverseParentPath(targetID,'',cb,arg,true,true);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseAncestors:function(targetID,cb,arg){\ntraverseParentPath('',targetID,cb,arg,true,false);},\n\n\n\n\n\n\n_getFirstCommonAncestorID:getFirstCommonAncestorID,\n\n\n\n\n\n_getNextDescendantID:getNextDescendantID,\n\nisAncestorIDOf:isAncestorIDOf,\n\nSEPARATOR:SEPARATOR};\n\n\n\nmodule.exports = ReactInstanceHandles;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ReactInstanceHandles\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar ReactRootIndex = require('ReactRootIndex');\n\nvar invariant = require('invariant');\n\nvar SEPARATOR = '.';\nvar SEPARATOR_LENGTH = SEPARATOR.length;\n\n/**\n * Maximum depth of traversals before we consider the possibility of a bad ID.\n */\nvar MAX_TREE_DEPTH = 100;\n\n/**\n * Creates a DOM ID prefix to use when mounting React components.\n *\n * @param {number} index A unique integer\n * @return {string} React root ID.\n * @internal\n */\nfunction getReactRootIDString(index) {\n return SEPARATOR + index.toString(36);\n}\n\n/**\n * Checks if a character in the supplied ID is a separator or the end.\n *\n * @param {string} id A React DOM ID.\n * @param {number} index Index of the character to check.\n * @return {boolean} True if the character is a separator or end of the ID.\n * @private\n */\nfunction isBoundary(id, index) {\n return id.charAt(index) === SEPARATOR || index === id.length;\n}\n\n/**\n * Checks if the supplied string is a valid React DOM ID.\n *\n * @param {string} id A React DOM ID, maybe.\n * @return {boolean} True if the string is a valid React DOM ID.\n * @private\n */\nfunction isValidID(id) {\n return id === '' || (\n id.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR\n );\n}\n\n/**\n * Checks if the first ID is an ancestor of or equal to the second ID.\n *\n * @param {string} ancestorID\n * @param {string} descendantID\n * @return {boolean} True if `ancestorID` is an ancestor of `descendantID`.\n * @internal\n */\nfunction isAncestorIDOf(ancestorID, descendantID) {\n return (\n descendantID.indexOf(ancestorID) === 0 &&\n isBoundary(descendantID, ancestorID.length)\n );\n}\n\n/**\n * Gets the parent ID of the supplied React DOM ID, `id`.\n *\n * @param {string} id ID of a component.\n * @return {string} ID of the parent, or an empty string.\n * @private\n */\nfunction getParentID(id) {\n return id ? id.substr(0, id.lastIndexOf(SEPARATOR)) : '';\n}\n\n/**\n * Gets the next DOM ID on the tree path from the supplied `ancestorID` to the\n * supplied `destinationID`. If they are equal, the ID is returned.\n *\n * @param {string} ancestorID ID of an ancestor node of `destinationID`.\n * @param {string} destinationID ID of the destination node.\n * @return {string} Next ID on the path from `ancestorID` to `destinationID`.\n * @private\n */\nfunction getNextDescendantID(ancestorID, destinationID) {\n invariant(\n isValidID(ancestorID) && isValidID(destinationID),\n 'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',\n ancestorID,\n destinationID\n );\n invariant(\n isAncestorIDOf(ancestorID, destinationID),\n 'getNextDescendantID(...): React has made an invalid assumption about ' +\n 'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',\n ancestorID,\n destinationID\n );\n if (ancestorID === destinationID) {\n return ancestorID;\n }\n // Skip over the ancestor and the immediate separator. Traverse until we hit\n // another separator or we reach the end of `destinationID`.\n var start = ancestorID.length + SEPARATOR_LENGTH;\n for (var i = start; i < destinationID.length; i++) {\n if (isBoundary(destinationID, i)) {\n break;\n }\n }\n return destinationID.substr(0, i);\n}\n\n/**\n * Gets the nearest common ancestor ID of two IDs.\n *\n * Using this ID scheme, the nearest common ancestor ID is the longest common\n * prefix of the two IDs that immediately preceded a \"marker\" in both strings.\n *\n * @param {string} oneID\n * @param {string} twoID\n * @return {string} Nearest common ancestor ID, or the empty string if none.\n * @private\n */\nfunction getFirstCommonAncestorID(oneID, twoID) {\n var minLength = Math.min(oneID.length, twoID.length);\n if (minLength === 0) {\n return '';\n }\n var lastCommonMarkerIndex = 0;\n // Use `<=` to traverse until the \"EOL\" of the shorter string.\n for (var i = 0; i <= minLength; i++) {\n if (isBoundary(oneID, i) && isBoundary(twoID, i)) {\n lastCommonMarkerIndex = i;\n } else if (oneID.charAt(i) !== twoID.charAt(i)) {\n break;\n }\n }\n var longestCommonID = oneID.substr(0, lastCommonMarkerIndex);\n invariant(\n isValidID(longestCommonID),\n 'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',\n oneID,\n twoID,\n longestCommonID\n );\n return longestCommonID;\n}\n\n/**\n * Traverses the parent path between two IDs (either up or down). The IDs must\n * not be the same, and there must exist a parent path between them. If the\n * callback returns `false`, traversal is stopped.\n *\n * @param {?string} start ID at which to start traversal.\n * @param {?string} stop ID at which to end traversal.\n * @param {function} cb Callback to invoke each ID with.\n * @param {?boolean} skipFirst Whether or not to skip the first node.\n * @param {?boolean} skipLast Whether or not to skip the last node.\n * @private\n */\nfunction traverseParentPath(start, stop, cb, arg, skipFirst, skipLast) {\n start = start || '';\n stop = stop || '';\n invariant(\n start !== stop,\n 'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',\n start\n );\n var traverseUp = isAncestorIDOf(stop, start);\n invariant(\n traverseUp || isAncestorIDOf(start, stop),\n 'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' +\n 'not have a parent path.',\n start,\n stop\n );\n // Traverse from `start` to `stop` one depth at a time.\n var depth = 0;\n var traverse = traverseUp ? getParentID : getNextDescendantID;\n for (var id = start; /* until break */; id = traverse(id, stop)) {\n var ret;\n if ((!skipFirst || id !== start) && (!skipLast || id !== stop)) {\n ret = cb(id, traverseUp, arg);\n }\n if (ret === false || id === stop) {\n // Only break //after// visiting `stop`.\n break;\n }\n invariant(\n depth++ < MAX_TREE_DEPTH,\n 'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' +\n 'traversing the React DOM ID tree. This may be due to malformed IDs: %s',\n start, stop\n );\n }\n}\n\n/**\n * Manages the IDs assigned to DOM representations of React components. This\n * uses a specific scheme in order to traverse the DOM efficiently (e.g. in\n * order to simulate events).\n *\n * @internal\n */\nvar ReactInstanceHandles = {\n\n /**\n * Constructs a React root ID\n * @return {string} A React root ID.\n */\n createReactRootID: function() {\n return getReactRootIDString(ReactRootIndex.createReactRootIndex());\n },\n\n /**\n * Constructs a React ID by joining a root ID with a name.\n *\n * @param {string} rootID Root ID of a parent component.\n * @param {string} name A component's name (as flattened children).\n * @return {string} A React ID.\n * @internal\n */\n createReactID: function(rootID, name) {\n return rootID + name;\n },\n\n /**\n * Gets the DOM ID of the React component that is the root of the tree that\n * contains the React component with the supplied DOM ID.\n *\n * @param {string} id DOM ID of a React component.\n * @return {?string} DOM ID of the React component that is the root.\n * @internal\n */\n getReactRootIDFromNodeID: function(id) {\n if (id && id.charAt(0) === SEPARATOR && id.length > 1) {\n var index = id.indexOf(SEPARATOR, 1);\n return index > -1 ? id.substr(0, index) : id;\n }\n return null;\n },\n\n /**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * NOTE: Does not invoke the callback on the nearest common ancestor because\n * nothing \"entered\" or \"left\" that element.\n *\n * @param {string} leaveID ID being left.\n * @param {string} enterID ID being entered.\n * @param {function} cb Callback to invoke on each entered/left ID.\n * @param {*} upArg Argument to invoke the callback with on left IDs.\n * @param {*} downArg Argument to invoke the callback with on entered IDs.\n * @internal\n */\n traverseEnterLeave: function(leaveID, enterID, cb, upArg, downArg) {\n var ancestorID = getFirstCommonAncestorID(leaveID, enterID);\n if (ancestorID !== leaveID) {\n traverseParentPath(leaveID, ancestorID, cb, upArg, false, true);\n }\n if (ancestorID !== enterID) {\n traverseParentPath(ancestorID, enterID, cb, downArg, true, false);\n }\n },\n\n /**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseTwoPhase: function(targetID, cb, arg) {\n if (targetID) {\n traverseParentPath('', targetID, cb, arg, true, false);\n traverseParentPath(targetID, '', cb, arg, false, true);\n }\n },\n\n /**\n * Same as `traverseTwoPhase` but skips the `targetID`.\n */\n traverseTwoPhaseSkipTarget: function(targetID, cb, arg) {\n if (targetID) {\n traverseParentPath('', targetID, cb, arg, true, true);\n traverseParentPath(targetID, '', cb, arg, true, true);\n }\n },\n\n /**\n * Traverse a node ID, calling the supplied `cb` for each ancestor ID. For\n * example, passing `.0.$row-0.1` would result in `cb` getting called\n * with `.0`, `.0.$row-0`, and `.0.$row-0.1`.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseAncestors: function(targetID, cb, arg) {\n traverseParentPath('', targetID, cb, arg, true, false);\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getFirstCommonAncestorID: getFirstCommonAncestorID,\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getNextDescendantID: getNextDescendantID,\n\n isAncestorIDOf: isAncestorIDOf,\n\n SEPARATOR: SEPARATOR\n\n};\n\nmodule.exports = ReactInstanceHandles;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/ReactInstanceHandles.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRootIndex.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRootIndexInjection={\n\n\n\ninjectCreateReactRootIndex:function(_createReactRootIndex){\nReactRootIndex.createReactRootIndex = _createReactRootIndex;}};\n\n\n\nvar ReactRootIndex={\ncreateReactRootIndex:null,\ninjection:ReactRootIndexInjection};\n\n\nmodule.exports = ReactRootIndex;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRootIndex\n * @typechecks\n */\n\n'use strict';\n\nvar ReactRootIndexInjection = {\n /**\n * @param {function} _createReactRootIndex\n */\n injectCreateReactRootIndex: function(_createReactRootIndex) {\n ReactRootIndex.createReactRootIndex = _createReactRootIndex;\n }\n};\n\nvar ReactRootIndex = {\n createReactRootIndex: null,\n injection: ReactRootIndexInjection\n};\n\nmodule.exports = ReactRootIndex;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRootIndex.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/getIteratorFn.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ITERATOR_SYMBOL=typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL='@@iterator';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getIteratorFn(maybeIterable){\nvar iteratorFn=maybeIterable && (\nITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || \nmaybeIterable[FAUX_ITERATOR_SYMBOL]);\n\nif(typeof iteratorFn === 'function'){\nreturn iteratorFn;}}\n\n\n\nmodule.exports = getIteratorFn;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getIteratorFn\n * @typechecks static-only\n */\n\n'use strict';\n\n/* global Symbol */\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (\n (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL]) ||\n maybeIterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/getIteratorFn.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/class/ReactClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponent=require('ReactComponent');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactErrorUtils=require('ReactErrorUtils');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar keyOf=require('keyOf');\nvar warning=require('warning');\n\nvar MIXINS_KEY=keyOf({mixins:null});\n\n\n\n\nvar SpecPolicy=keyMirror({\n\n\n\nDEFINE_ONCE:null,\n\n\n\n\nDEFINE_MANY:null,\n\n\n\nOVERRIDE_BASE:null,\n\n\n\n\n\nDEFINE_MANY_MERGED:null});\n\n\n\nvar injectedMixins=[];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactClassInterface={\n\n\n\n\n\n\n\nmixins:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\nstatics:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\npropTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\ncontextTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\nchildContextTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetDefaultProps:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetInitialState:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\ngetChildContext:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrender:SpecPolicy.DEFINE_ONCE,\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillMount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\ncomponentDidMount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillReceiveProps:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nshouldComponentUpdate:SpecPolicy.DEFINE_ONCE,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillUpdate:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentDidUpdate:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillUnmount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nupdateComponent:SpecPolicy.OVERRIDE_BASE};\n\n\n\n\n\n\n\n\n\n\n\n\nvar RESERVED_SPEC_KEYS={\ndisplayName:function(Constructor,displayName){\nConstructor.displayName = displayName;},\n\nmixins:function(Constructor,mixins){\nif(mixins){\nfor(var i=0;i < mixins.length;i++) {\nmixSpecIntoComponent(Constructor,mixins[i]);}}},\n\n\n\nchildContextTypes:function(Constructor,childContextTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\nchildContextTypes,\nReactPropTypeLocations.childContext);}\n\n\nConstructor.childContextTypes = assign(\n{},\nConstructor.childContextTypes,\nchildContextTypes);},\n\n\ncontextTypes:function(Constructor,contextTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\ncontextTypes,\nReactPropTypeLocations.context);}\n\n\nConstructor.contextTypes = assign(\n{},\nConstructor.contextTypes,\ncontextTypes);},\n\n\n\n\n\n\ngetDefaultProps:function(Constructor,getDefaultProps){\nif(Constructor.getDefaultProps){\nConstructor.getDefaultProps = createMergedResultFunction(\nConstructor.getDefaultProps,\ngetDefaultProps);}else \n\n{\nConstructor.getDefaultProps = getDefaultProps;}},\n\n\npropTypes:function(Constructor,propTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\npropTypes,\nReactPropTypeLocations.prop);}\n\n\nConstructor.propTypes = assign(\n{},\nConstructor.propTypes,\npropTypes);},\n\n\nstatics:function(Constructor,statics){\nmixStaticSpecIntoComponent(Constructor,statics);}};\n\n\n\nfunction validateTypeDef(Constructor,typeDef,location){\nfor(var propName in typeDef) {\nif(typeDef.hasOwnProperty(propName)){\n\n\nwarning(\ntypeof typeDef[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually from ' + \n'React.PropTypes.',\nConstructor.displayName || 'ReactClass',\nReactPropTypeLocationNames[location],\npropName);}}}\n\n\n\n\n\nfunction validateMethodOverride(proto,name){\nvar specPolicy=ReactClassInterface.hasOwnProperty(name)?\nReactClassInterface[name]:\nnull;\n\n\nif(ReactClassMixin.hasOwnProperty(name)){\ninvariant(\nspecPolicy === SpecPolicy.OVERRIDE_BASE,\n'ReactClassInterface: You are attempting to override ' + \n'`%s` from your class specification. Ensure that your method names ' + \n'do not overlap with React methods.',\nname);}\n\n\n\n\nif(proto.hasOwnProperty(name)){\ninvariant(\nspecPolicy === SpecPolicy.DEFINE_MANY || \nspecPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n'ReactClassInterface: You are attempting to define ' + \n'`%s` on your component more than once. This conflict may be due ' + \n'to a mixin.',\nname);}}\n\n\n\n\n\n\n\n\nfunction mixSpecIntoComponent(Constructor,spec){\nif(!spec){\nreturn;}\n\n\ninvariant(\ntypeof spec !== 'function',\n'ReactClass: You\\'re attempting to ' + \n'use a component class as a mixin. Instead, just use a regular object.');\n\ninvariant(\n!ReactElement.isValidElement(spec),\n'ReactClass: You\\'re attempting to ' + \n'use a component as a mixin. Instead, just use a regular object.');\n\n\nvar proto=Constructor.prototype;\n\n\n\n\nif(spec.hasOwnProperty(MIXINS_KEY)){\nRESERVED_SPEC_KEYS.mixins(Constructor,spec.mixins);}\n\n\nfor(var name in spec) {\nif(!spec.hasOwnProperty(name)){\ncontinue;}\n\n\nif(name === MIXINS_KEY){\n\ncontinue;}\n\n\nvar property=spec[name];\nvalidateMethodOverride(proto,name);\n\nif(RESERVED_SPEC_KEYS.hasOwnProperty(name)){\nRESERVED_SPEC_KEYS[name](Constructor,property);}else \n{\n\n\n\n\nvar isReactClassMethod=\nReactClassInterface.hasOwnProperty(name);\nvar isAlreadyDefined=proto.hasOwnProperty(name);\nvar markedDontBind=property && property.__reactDontBind;\nvar isFunction=typeof property === 'function';\nvar shouldAutoBind=\nisFunction && \n!isReactClassMethod && \n!isAlreadyDefined && \n!markedDontBind;\n\nif(shouldAutoBind){\nif(!proto.__reactAutoBindMap){\nproto.__reactAutoBindMap = {};}\n\nproto.__reactAutoBindMap[name] = property;\nproto[name] = property;}else \n{\nif(isAlreadyDefined){\nvar specPolicy=ReactClassInterface[name];\n\n\ninvariant(\nisReactClassMethod && (\nspecPolicy === SpecPolicy.DEFINE_MANY_MERGED || \nspecPolicy === SpecPolicy.DEFINE_MANY),\n\n'ReactClass: Unexpected spec policy %s for key %s ' + \n'when mixing in component specs.',\nspecPolicy,\nname);\n\n\n\n\nif(specPolicy === SpecPolicy.DEFINE_MANY_MERGED){\nproto[name] = createMergedResultFunction(proto[name],property);}else \nif(specPolicy === SpecPolicy.DEFINE_MANY){\nproto[name] = createChainedFunction(proto[name],property);}}else \n\n{\nproto[name] = property;\nif(__DEV__){\n\n\nif(typeof property === 'function' && spec.displayName){\nproto[name].displayName = spec.displayName + '_' + name;}}}}}}}\n\n\n\n\n\n\n\n\nfunction mixStaticSpecIntoComponent(Constructor,statics){\nif(!statics){\nreturn;}\n\nfor(var name in statics) {\nvar property=statics[name];\nif(!statics.hasOwnProperty(name)){\ncontinue;}\n\n\nvar isReserved=(name in RESERVED_SPEC_KEYS);\ninvariant(\n!isReserved,\n'ReactClass: You are attempting to define a reserved ' + \n'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' + \n'as an instance property instead; it will still be accessible on the ' + \n'constructor.',\nname);\n\n\nvar isInherited=(name in Constructor);\ninvariant(\n!isInherited,\n'ReactClass: You are attempting to define ' + \n'`%s` on your component more than once. This conflict may be ' + \n'due to a mixin.',\nname);\n\nConstructor[name] = property;}}\n\n\n\n\n\n\n\n\n\n\nfunction mergeIntoWithNoDuplicateKeys(one,two){\ninvariant(\none && two && typeof one === 'object' && typeof two === 'object',\n'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.');\n\n\nfor(var key in two) {\nif(two.hasOwnProperty(key)){\ninvariant(\none[key] === undefined,\n'mergeIntoWithNoDuplicateKeys(): ' + \n'Tried to merge two objects with the same key: `%s`. This conflict ' + \n'may be due to a mixin; in particular, this may be caused by two ' + \n'getInitialState() or getDefaultProps() methods returning objects ' + \n'with clashing keys.',\nkey);\n\none[key] = two[key];}}\n\n\nreturn one;}\n\n\n\n\n\n\n\n\n\n\nfunction createMergedResultFunction(one,two){\nreturn function mergedResult(){\nvar a=one.apply(this,arguments);\nvar b=two.apply(this,arguments);\nif(a == null){\nreturn b;}else \nif(b == null){\nreturn a;}\n\nvar c={};\nmergeIntoWithNoDuplicateKeys(c,a);\nmergeIntoWithNoDuplicateKeys(c,b);\nreturn c;};}\n\n\n\n\n\n\n\n\n\n\n\nfunction createChainedFunction(one,two){\nreturn function chainedFunction(){\none.apply(this,arguments);\ntwo.apply(this,arguments);};}\n\n\n\n\n\n\n\n\n\n\nfunction bindAutoBindMethod(component,method){\nvar boundMethod=method.bind(component);\nif(__DEV__){\nboundMethod.__reactBoundContext = component;\nboundMethod.__reactBoundMethod = method;\nboundMethod.__reactBoundArguments = null;\nvar componentName=component.constructor.displayName;\nvar _bind=boundMethod.bind;\n\nboundMethod.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];}\n\n\n\nif(newThis !== component && newThis !== null){\nwarning(\nfalse,\n'bind(): React component methods may only be bound to the ' + \n'component instance. See %s',\ncomponentName);}else \n\nif(!args.length){\nwarning(\nfalse,\n'bind(): You are binding a component method to the component. ' + \n'React does this for you automatically in a high-performance ' + \n'way, so you can safely remove this call. See %s',\ncomponentName);\n\nreturn boundMethod;}\n\nvar reboundMethod=_bind.apply(boundMethod,arguments);\nreboundMethod.__reactBoundContext = component;\nreboundMethod.__reactBoundMethod = method;\nreboundMethod.__reactBoundArguments = args;\nreturn reboundMethod;};}\n\n\n\nreturn boundMethod;}\n\n\n\n\n\n\n\nfunction bindAutoBindMethods(component){\nfor(var autoBindKey in component.__reactAutoBindMap) {\nif(component.__reactAutoBindMap.hasOwnProperty(autoBindKey)){\nvar method=component.__reactAutoBindMap[autoBindKey];\ncomponent[autoBindKey] = bindAutoBindMethod(\ncomponent,\nReactErrorUtils.guard(\nmethod,\ncomponent.constructor.displayName + '.' + autoBindKey));}}}\n\n\n\n\n\n\nvar typeDeprecationDescriptor={\nenumerable:false,\nget:function(){\nvar displayName=this.displayName || this.name || 'Component';\nwarning(\nfalse,\n'%s.type is deprecated. Use %s directly to access the class.',\ndisplayName,\ndisplayName);\n\nObject.defineProperty(this,'type',{\nvalue:this});\n\nreturn this;}};\n\n\n\n\n\n\n\nvar ReactClassMixin={\n\n\n\n\n\nreplaceState:function(newState,callback){\nReactUpdateQueue.enqueueReplaceState(this,newState);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}},\n\n\n\n\n\n\n\n\n\nisMounted:function(){\nif(__DEV__){\nvar owner=ReactCurrentOwner.current;\nif(owner !== null){\nwarning(\nowner._warnedAboutRefsInRender,\n'%s is accessing isMounted inside its render() function. ' + \n'render() should be a pure function of props and state. It should ' + \n'never access something that requires stale data from the previous ' + \n'render, such as refs. Move this logic to componentDidMount and ' + \n'componentDidUpdate instead.',\nowner.getName() || 'A component');\n\nowner._warnedAboutRefsInRender = true;}}\n\n\nvar internalInstance=ReactInstanceMap.get(this);\nreturn (\ninternalInstance && \ninternalInstance !== ReactLifeCycle.currentlyMountingInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\nsetProps:function(partialProps,callback){\nReactUpdateQueue.enqueueSetProps(this,partialProps);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}},\n\n\n\n\n\n\n\n\n\n\n\n\nreplaceProps:function(newProps,callback){\nReactUpdateQueue.enqueueReplaceProps(this,newProps);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}}};\n\n\n\n\nvar ReactClassComponent=function(){};\nassign(\nReactClassComponent.prototype,\nReactComponent.prototype,\nReactClassMixin);\n\n\n\n\n\n\n\nvar ReactClass={\n\n\n\n\n\n\n\n\ncreateClass:function(spec){\nvar Constructor=function(props,context){\n\n\n\nif(__DEV__){\nwarning(\nthis instanceof Constructor,\n'Something is calling a React component directly. Use a factory or ' + \n'JSX instead. See: http://fb.me/react-legacyfactory');}\n\n\n\n\nif(this.__reactAutoBindMap){\nbindAutoBindMethods(this);}\n\n\nthis.props = props;\nthis.context = context;\nthis.state = null;\n\n\n\n\nvar initialState=this.getInitialState?this.getInitialState():null;\nif(__DEV__){\n\nif(typeof initialState === 'undefined' && \nthis.getInitialState._isMockFunction){\n\n\ninitialState = null;}}\n\n\ninvariant(\ntypeof initialState === 'object' && !Array.isArray(initialState),\n'%s.getInitialState(): must return an object or null',\nConstructor.displayName || 'ReactCompositeComponent');\n\n\nthis.state = initialState;};\n\nConstructor.prototype = new ReactClassComponent();\nConstructor.prototype.constructor = Constructor;\n\ninjectedMixins.forEach(\nmixSpecIntoComponent.bind(null,Constructor));\n\n\nmixSpecIntoComponent(Constructor,spec);\n\n\nif(Constructor.getDefaultProps){\nConstructor.defaultProps = Constructor.getDefaultProps();}\n\n\nif(__DEV__){\n\n\n\n\nif(Constructor.getDefaultProps){\nConstructor.getDefaultProps.isReactClassApproved = {};}\n\nif(Constructor.prototype.getInitialState){\nConstructor.prototype.getInitialState.isReactClassApproved = {};}}\n\n\n\ninvariant(\nConstructor.prototype.render,\n'createClass(...): Class specification must implement a `render` method.');\n\n\nif(__DEV__){\nwarning(\n!Constructor.prototype.componentShouldUpdate,\n'%s has a method called ' + \n'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + \n'The name is phrased as a question because the function is ' + \n'expected to return a value.',\nspec.displayName || 'A component');}\n\n\n\n\nfor(var methodName in ReactClassInterface) {\nif(!Constructor.prototype[methodName]){\nConstructor.prototype[methodName] = null;}}\n\n\n\n\nConstructor.type = Constructor;\nif(__DEV__){\ntry{\nObject.defineProperty(Constructor,'type',typeDeprecationDescriptor);}\ncatch(x) {}}\n\n\n\n\nreturn Constructor;},\n\n\ninjection:{\ninjectMixin:function(mixin){\ninjectedMixins.push(mixin);}}};\n\n\n\n\n\nmodule.exports = ReactClass;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactClass\n */\n\n'use strict';\n\nvar ReactComponent = require('ReactComponent');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactErrorUtils = require('ReactErrorUtils');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar keyOf = require('keyOf');\nvar warning = require('warning');\n\nvar MIXINS_KEY = keyOf({mixins: null});\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\nvar SpecPolicy = keyMirror({\n /**\n * These methods may be defined only once by the class specification or mixin.\n */\n DEFINE_ONCE: null,\n /**\n * These methods may be defined by both the class specification and mixins.\n * Subsequent definitions will be chained. These methods must return void.\n */\n DEFINE_MANY: null,\n /**\n * These methods are overriding the base class.\n */\n OVERRIDE_BASE: null,\n /**\n * These methods are similar to DEFINE_MANY, except we assume they return\n * objects. We try to merge the keys of the return values of all the mixed in\n * functions. If there is a key conflict we throw.\n */\n DEFINE_MANY_MERGED: null\n});\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or native components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: SpecPolicy.DEFINE_MANY,\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: SpecPolicy.DEFINE_MANY,\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: SpecPolicy.DEFINE_ONCE,\n\n\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: SpecPolicy.DEFINE_MANY,\n\n\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: SpecPolicy.OVERRIDE_BASE\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n childContextTypes,\n ReactPropTypeLocations.childContext\n );\n }\n Constructor.childContextTypes = assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n contextTypes,\n ReactPropTypeLocations.context\n );\n }\n Constructor.contextTypes = assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n propTypes,\n ReactPropTypeLocations.prop\n );\n }\n Constructor.propTypes = assign(\n {},\n Constructor.propTypes,\n propTypes\n );\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n }\n};\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but not in __DEV__\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n}\n\nfunction validateMethodOverride(proto, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ?\n ReactClassInterface[name] :\n null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n invariant(\n specPolicy === SpecPolicy.OVERRIDE_BASE,\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (proto.hasOwnProperty(name)) {\n invariant(\n specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classses.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n return;\n }\n\n invariant(\n typeof spec !== 'function',\n 'ReactClass: You\\'re attempting to ' +\n 'use a component class as a mixin. Instead, just use a regular object.'\n );\n invariant(\n !ReactElement.isValidElement(spec),\n 'ReactClass: You\\'re attempting to ' +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above\n continue;\n }\n\n var property = spec[name];\n validateMethodOverride(proto, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod =\n ReactClassInterface.hasOwnProperty(name);\n var isAlreadyDefined = proto.hasOwnProperty(name);\n var markedDontBind = property && property.__reactDontBind;\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n !markedDontBind;\n\n if (shouldAutoBind) {\n if (!proto.__reactAutoBindMap) {\n proto.__reactAutoBindMap = {};\n }\n proto.__reactAutoBindMap[name] = property;\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride\n invariant(\n isReactClassMethod && (\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED ||\n specPolicy === SpecPolicy.DEFINE_MANY\n ),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === SpecPolicy.DEFINE_MANY) {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (__DEV__) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (__DEV__) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n /* eslint-disable block-scoped-var, no-undef */\n boundMethod.bind = function(newThis, ...args) {\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n } else if (!args.length) {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n /* eslint-enable */\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n for (var autoBindKey in component.__reactAutoBindMap) {\n if (component.__reactAutoBindMap.hasOwnProperty(autoBindKey)) {\n var method = component.__reactAutoBindMap[autoBindKey];\n component[autoBindKey] = bindAutoBindMethod(\n component,\n ReactErrorUtils.guard(\n method,\n component.constructor.displayName + '.' + autoBindKey\n )\n );\n }\n }\n}\n\nvar typeDeprecationDescriptor = {\n enumerable: false,\n get: function() {\n var displayName = this.displayName || this.name || 'Component';\n warning(\n false,\n '%s.type is deprecated. Use %s directly to access the class.',\n displayName,\n displayName\n );\n Object.defineProperty(this, 'type', {\n value: this\n });\n return this;\n }\n};\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n ReactUpdateQueue.enqueueReplaceState(this, newState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (__DEV__) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing isMounted inside its render() function. ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n );\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(this);\n return (\n internalInstance &&\n internalInstance !== ReactLifeCycle.currentlyMountingInstance\n );\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n setProps: function(partialProps, callback) {\n ReactUpdateQueue.enqueueSetProps(this, partialProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Replace all the props.\n *\n * @param {object} newProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n replaceProps: function(newProps, callback) {\n ReactUpdateQueue.enqueueReplaceProps(this, newProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n }\n};\n\nvar ReactClassComponent = function() {};\nassign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function(spec) {\n var Constructor = function(props, context) {\n // This constructor is overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (__DEV__) {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: http://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindMap) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (__DEV__) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof initialState === 'undefined' &&\n this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n };\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n\n injectedMixins.forEach(\n mixSpecIntoComponent.bind(null, Constructor)\n );\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (__DEV__) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (__DEV__) {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n // Legacy hook\n Constructor.type = Constructor;\n if (__DEV__) {\n try {\n Object.defineProperty(Constructor, 'type', typeDeprecationDescriptor);\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function(mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/class/ReactClass.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/modern/class/ReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactUpdateQueue=require('ReactUpdateQueue');\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\nfunction ReactComponent(props,context){\nthis.props = props;\nthis.context = context;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nReactComponent.prototype.setState = function(partialState,callback){\ninvariant(\ntypeof partialState === 'object' || \ntypeof partialState === 'function' || \npartialState == null,\n'setState(...): takes an object of state variables to update or a ' + \n'function which returns an object of state variables.');\n\nif(__DEV__){\nwarning(\npartialState != null,\n'setState(...): You passed an undefined or null state object; ' + \n'instead, use forceUpdate().');}\n\n\nReactUpdateQueue.enqueueSetState(this,partialState);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nReactComponent.prototype.forceUpdate = function(callback){\nReactUpdateQueue.enqueueForceUpdate(this);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}};\n\n\n\n\n\n\n\n\nif(__DEV__){\nvar deprecatedAPIs={\ngetDOMNode:'getDOMNode',\nisMounted:'isMounted',\nreplaceProps:'replaceProps',\nreplaceState:'replaceState',\nsetProps:'setProps'};\n\nvar defineDeprecationWarning=function(methodName,displayName){\ntry{\nObject.defineProperty(ReactComponent.prototype,methodName,{\nget:function(){\nwarning(\nfalse,\n'%s(...) is deprecated in plain JavaScript React classes.',\ndisplayName);\n\nreturn undefined;}});}\n\n\ncatch(x) {}};\n\n\n\nfor(var fnName in deprecatedAPIs) {\nif(deprecatedAPIs.hasOwnProperty(fnName)){\ndefineDeprecationWarning(fnName,deprecatedAPIs[fnName]);}}}\n\n\n\n\nmodule.exports = ReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponent\n */\n\n'use strict';\n\nvar ReactUpdateQueue = require('ReactUpdateQueue');\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context) {\n this.props = props;\n this.context = context;\n}\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function(partialState, callback) {\n invariant(\n typeof partialState === 'object' ||\n typeof partialState === 'function' ||\n partialState == null,\n 'setState(...): takes an object of state variables to update or a ' +\n 'function which returns an object of state variables.'\n );\n if (__DEV__) {\n warning(\n partialState != null,\n 'setState(...): You passed an undefined or null state object; ' +\n 'instead, use forceUpdate().'\n );\n }\n ReactUpdateQueue.enqueueSetState(this, partialState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function(callback) {\n ReactUpdateQueue.enqueueForceUpdate(this);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (__DEV__) {\n var deprecatedAPIs = {\n getDOMNode: 'getDOMNode',\n isMounted: 'isMounted',\n replaceProps: 'replaceProps',\n replaceState: 'replaceState',\n setProps: 'setProps'\n };\n var defineDeprecationWarning = function(methodName, displayName) {\n try {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function() {\n warning(\n false,\n '%s(...) is deprecated in plain JavaScript React classes.',\n displayName\n );\n return undefined;\n }\n });\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/modern/class/ReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdateQueue.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactUpdates=require('ReactUpdates');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nfunction enqueueUpdate(internalInstance){\nif(internalInstance !== ReactLifeCycle.currentlyMountingInstance){\n\n\n\n\nReactUpdates.enqueueUpdate(internalInstance);}}\n\n\n\nfunction getInternalInstanceReadyForUpdate(publicInstance,callerName){\ninvariant(\nReactCurrentOwner.current == null,\n'%s(...): Cannot update during an existing state transition ' + \n'(such as within `render`). Render methods should be a pure function ' + \n'of props and state.',\ncallerName);\n\n\nvar internalInstance=ReactInstanceMap.get(publicInstance);\nif(!internalInstance){\nif(__DEV__){\n\n\n\nwarning(\n!callerName,\n'%s(...): Can only update a mounted or mounting component. ' + \n'This usually means you called %s() on an unmounted ' + \n'component. This is a no-op.',\ncallerName,\ncallerName);}\n\n\nreturn null;}\n\n\nif(internalInstance === ReactLifeCycle.currentlyUnmountingInstance){\nreturn null;}\n\n\nreturn internalInstance;}\n\n\n\n\n\n\nvar ReactUpdateQueue={\n\n\n\n\n\n\n\n\n\nenqueueCallback:function(publicInstance,callback){\ninvariant(\ntypeof callback === 'function',\n'enqueueCallback(...): You called `setProps`, `replaceProps`, ' + \n'`setState`, `replaceState`, or `forceUpdate` with a callback that ' + \n'isn\\'t callable.');\n\nvar internalInstance=getInternalInstanceReadyForUpdate(publicInstance);\n\n\n\n\n\n\nif(!internalInstance || \ninternalInstance === ReactLifeCycle.currentlyMountingInstance){\nreturn null;}\n\n\nif(internalInstance._pendingCallbacks){\ninternalInstance._pendingCallbacks.push(callback);}else \n{\ninternalInstance._pendingCallbacks = [callback];}\n\n\n\n\n\nenqueueUpdate(internalInstance);},\n\n\nenqueueCallbackInternal:function(internalInstance,callback){\ninvariant(\ntypeof callback === 'function',\n'enqueueCallback(...): You called `setProps`, `replaceProps`, ' + \n'`setState`, `replaceState`, or `forceUpdate` with a callback that ' + \n'isn\\'t callable.');\n\nif(internalInstance._pendingCallbacks){\ninternalInstance._pendingCallbacks.push(callback);}else \n{\ninternalInstance._pendingCallbacks = [callback];}\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueForceUpdate:function(publicInstance){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'forceUpdate');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninternalInstance._pendingForceUpdate = true;\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueReplaceState:function(publicInstance,completeState){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'replaceState');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninternalInstance._pendingStateQueue = [completeState];\ninternalInstance._pendingReplaceState = true;\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueSetState:function(publicInstance,partialState){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'setState');\n\n\nif(!internalInstance){\nreturn;}\n\n\nvar queue=\ninternalInstance._pendingStateQueue || (\ninternalInstance._pendingStateQueue = []);\nqueue.push(partialState);\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\nenqueueSetProps:function(publicInstance,partialProps){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'setProps');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninvariant(\ninternalInstance._isTopLevel,\n'setProps(...): You called `setProps` on a ' + \n'component with a parent. This is an anti-pattern since props will ' + \n'get reactively updated when rendered. Instead, change the owner\\'s ' + \n'`render` method to pass the correct value as props to the component ' + \n'where it is created.');\n\n\n\n\nvar element=internalInstance._pendingElement || \ninternalInstance._currentElement;\nvar props=assign({},element.props,partialProps);\ninternalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nprops);\n\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\nenqueueReplaceProps:function(publicInstance,props){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'replaceProps');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninvariant(\ninternalInstance._isTopLevel,\n'replaceProps(...): You called `replaceProps` on a ' + \n'component with a parent. This is an anti-pattern since props will ' + \n'get reactively updated when rendered. Instead, change the owner\\'s ' + \n'`render` method to pass the correct value as props to the component ' + \n'where it is created.');\n\n\n\n\nvar element=internalInstance._pendingElement || \ninternalInstance._currentElement;\ninternalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nprops);\n\n\nenqueueUpdate(internalInstance);},\n\n\nenqueueElementInternal:function(internalInstance,newElement){\ninternalInstance._pendingElement = newElement;\nenqueueUpdate(internalInstance);}};\n\n\n\n\nmodule.exports = ReactUpdateQueue;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdateQueue\n */\n\n'use strict';\n\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactUpdates = require('ReactUpdates');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nfunction enqueueUpdate(internalInstance) {\n if (internalInstance !== ReactLifeCycle.currentlyMountingInstance) {\n // If we're in a componentWillMount handler, don't enqueue a rerender\n // because ReactUpdates assumes we're in a browser context (which is\n // wrong for server rendering) and we're about to do a render anyway.\n // See bug in #1740.\n ReactUpdates.enqueueUpdate(internalInstance);\n }\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n invariant(\n ReactCurrentOwner.current == null,\n '%s(...): Cannot update during an existing state transition ' +\n '(such as within `render`). Render methods should be a pure function ' +\n 'of props and state.',\n callerName\n );\n\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (__DEV__) {\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n warning(\n !callerName,\n '%s(...): Can only update a mounted or mounting component. ' +\n 'This usually means you called %s() on an unmounted ' +\n 'component. This is a no-op.',\n callerName,\n callerName\n );\n }\n return null;\n }\n\n if (internalInstance === ReactLifeCycle.currentlyUnmountingInstance) {\n return null;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function(publicInstance, callback) {\n invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n );\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance ||\n internalInstance === ReactLifeCycle.currentlyMountingInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function(internalInstance, callback) {\n invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n );\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldUpdateComponent`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function(publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'forceUpdate'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function(publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function(publicInstance, partialState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n var queue =\n internalInstance._pendingStateQueue ||\n (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialProps Subset of the next props.\n * @internal\n */\n enqueueSetProps: function(publicInstance, partialProps) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n invariant(\n internalInstance._isTopLevel,\n 'setProps(...): You called `setProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n );\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n var props = assign({}, element.props, partialProps);\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} props New props.\n * @internal\n */\n enqueueReplaceProps: function(publicInstance, props) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n invariant(\n internalInstance._isTopLevel,\n 'replaceProps(...): You called `replaceProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n );\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function(internalInstance, newElement) {\n internalInstance._pendingElement = newElement;\n enqueueUpdate(internalInstance);\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdateQueue.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactLifeCycle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLifeCycle={\ncurrentlyMountingInstance:null,\ncurrentlyUnmountingInstance:null};\n\n\nmodule.exports = ReactLifeCycle;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactLifeCycle\n */\n\n'use strict';\n\n/**\n * This module manages the bookkeeping when a component is in the process\n * of being mounted or being unmounted. This is used as a way to enforce\n * invariants (or warnings) when it is not recommended to call\n * setState/forceUpdate.\n *\n * currentlyMountingInstance: During the construction phase, it is not possible\n * to trigger an update since the instance is not fully mounted yet. However, we\n * currently allow this as a convenience for mutating the initial state.\n *\n * currentlyUnmountingInstance: During the unmounting phase, the instance is\n * still mounted and can therefore schedule an update. However, this is not\n * recommended and probably an error since it's about to be unmounted.\n * Therefore we still want to trigger in an error for that case.\n */\n\nvar ReactLifeCycle = {\n currentlyMountingInstance: null,\n currentlyUnmountingInstance: null\n};\n\nmodule.exports = ReactLifeCycle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactLifeCycle.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactInstanceMap.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceMap={\n\n\n\n\n\n\nremove:function(key){\nkey._reactInternalInstance = undefined;},\n\n\nget:function(key){\nreturn key._reactInternalInstance;},\n\n\nhas:function(key){\nreturn key._reactInternalInstance !== undefined;},\n\n\nset:function(key,value){\nkey._reactInternalInstance = value;}};\n\n\n\n\nmodule.exports = ReactInstanceMap;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInstanceMap\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function(key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function(key) {\n return key._reactInternalInstance;\n },\n\n has: function(key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function(key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactInstanceMap.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdates.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar CallbackQueue=require('CallbackQueue');\nvar PooledClass=require('PooledClass');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar Transaction=require('Transaction');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar dirtyComponents=[];\nvar asapCallbackQueue=CallbackQueue.getPooled();\nvar asapEnqueued=false;\n\nvar batchingStrategy=null;\n\nfunction ensureInjected(){\ninvariant(\nReactUpdates.ReactReconcileTransaction && batchingStrategy,\n'ReactUpdates: must inject a reconcile transaction class and batching ' + \n'strategy');}\n\n\n\nvar NESTED_UPDATES={\ninitialize:function(){\nthis.dirtyComponentsLength = dirtyComponents.length;},\n\nclose:function(){\nif(this.dirtyComponentsLength !== dirtyComponents.length){\n\n\n\n\n\ndirtyComponents.splice(0,this.dirtyComponentsLength);\nflushBatchedUpdates();}else \n{\ndirtyComponents.length = 0;}}};\n\n\n\n\nvar UPDATE_QUEUEING={\ninitialize:function(){\nthis.callbackQueue.reset();},\n\nclose:function(){\nthis.callbackQueue.notifyAll();}};\n\n\n\nvar TRANSACTION_WRAPPERS=[NESTED_UPDATES,UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction(){\nthis.reinitializeTransaction();\nthis.dirtyComponentsLength = null;\nthis.callbackQueue = CallbackQueue.getPooled();\nthis.reconcileTransaction = \nReactUpdates.ReactReconcileTransaction.getPooled();}\n\n\nassign(\nReactUpdatesFlushTransaction.prototype,\nTransaction.Mixin,{\ngetTransactionWrappers:function(){\nreturn TRANSACTION_WRAPPERS;},\n\n\ndestructor:function(){\nthis.dirtyComponentsLength = null;\nCallbackQueue.release(this.callbackQueue);\nthis.callbackQueue = null;\nReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\nthis.reconcileTransaction = null;},\n\n\nperform:function(method,scope,a){\n\n\nreturn Transaction.Mixin.perform.call(\nthis,\nthis.reconcileTransaction.perform,\nthis.reconcileTransaction,\nmethod,\nscope,\na);}});\n\n\n\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback,a,b,c,d){\nensureInjected();\nbatchingStrategy.batchedUpdates(callback,a,b,c,d);}\n\n\n\n\n\n\n\n\n\nfunction mountOrderComparator(c1,c2){\nreturn c1._mountOrder - c2._mountOrder;}\n\n\nfunction runBatchedUpdates(transaction){\nvar len=transaction.dirtyComponentsLength;\ninvariant(\nlen === dirtyComponents.length,\n'Expected flush transaction\\'s stored dirty-components length (%s) to ' + \n'match dirty-components array length (%s).',\nlen,\ndirtyComponents.length);\n\n\n\n\n\ndirtyComponents.sort(mountOrderComparator);\n\nfor(var i=0;i < len;i++) {\n\n\n\nvar component=dirtyComponents[i];\n\n\n\n\nvar callbacks=component._pendingCallbacks;\ncomponent._pendingCallbacks = null;\n\nReactReconciler.performUpdateIfNecessary(\ncomponent,\ntransaction.reconcileTransaction);\n\n\nif(callbacks){\nfor(var j=0;j < callbacks.length;j++) {\ntransaction.callbackQueue.enqueue(\ncallbacks[j],\ncomponent.getPublicInstance());}}}}\n\n\n\n\n\n\nvar flushBatchedUpdates=function(){\n\n\n\n\nwhile(dirtyComponents.length || asapEnqueued) {\nif(dirtyComponents.length){\nvar transaction=ReactUpdatesFlushTransaction.getPooled();\ntransaction.perform(runBatchedUpdates,null,transaction);\nReactUpdatesFlushTransaction.release(transaction);}\n\n\nif(asapEnqueued){\nasapEnqueued = false;\nvar queue=asapCallbackQueue;\nasapCallbackQueue = CallbackQueue.getPooled();\nqueue.notifyAll();\nCallbackQueue.release(queue);}}};\n\n\n\nflushBatchedUpdates = ReactPerf.measure(\n'ReactUpdates',\n'flushBatchedUpdates',\nflushBatchedUpdates);\n\n\n\n\n\n\nfunction enqueueUpdate(component){\nensureInjected();\n\n\n\n\n\n\nwarning(\nReactCurrentOwner.current == null,\n'enqueueUpdate(): Render methods should be a pure function of props ' + \n'and state; triggering nested component updates from render is not ' + \n'allowed. If necessary, trigger nested updates in ' + \n'componentDidUpdate.');\n\n\nif(!batchingStrategy.isBatchingUpdates){\nbatchingStrategy.batchedUpdates(enqueueUpdate,component);\nreturn;}\n\n\ndirtyComponents.push(component);}\n\n\n\n\n\n\nfunction asap(callback,context){\ninvariant(\nbatchingStrategy.isBatchingUpdates,\n'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' + \n'updates are not being batched.');\n\nasapCallbackQueue.enqueue(callback,context);\nasapEnqueued = true;}\n\n\nvar ReactUpdatesInjection={\ninjectReconcileTransaction:function(ReconcileTransaction){\ninvariant(\nReconcileTransaction,\n'ReactUpdates: must provide a reconcile transaction class');\n\nReactUpdates.ReactReconcileTransaction = ReconcileTransaction;},\n\n\ninjectBatchingStrategy:function(_batchingStrategy){\ninvariant(\n_batchingStrategy,\n'ReactUpdates: must provide a batching strategy');\n\ninvariant(\ntypeof _batchingStrategy.batchedUpdates === 'function',\n'ReactUpdates: must provide a batchedUpdates() function');\n\ninvariant(\ntypeof _batchingStrategy.isBatchingUpdates === 'boolean',\n'ReactUpdates: must provide an isBatchingUpdates boolean attribute');\n\nbatchingStrategy = _batchingStrategy;}};\n\n\n\nvar ReactUpdates={\n\n\n\n\n\n\nReactReconcileTransaction:null,\n\nbatchedUpdates:batchedUpdates,\nenqueueUpdate:enqueueUpdate,\nflushBatchedUpdates:flushBatchedUpdates,\ninjection:ReactUpdatesInjection,\nasap:asap};\n\n\nmodule.exports = ReactUpdates;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdates\n */\n\n'use strict';\n\nvar CallbackQueue = require('CallbackQueue');\nvar PooledClass = require('PooledClass');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar Transaction = require('Transaction');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar dirtyComponents = [];\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n invariant(\n ReactUpdates.ReactReconcileTransaction && batchingStrategy,\n 'ReactUpdates: must inject a reconcile transaction class and batching ' +\n 'strategy'\n );\n}\n\nvar NESTED_UPDATES = {\n initialize: function() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function() {\n this.callbackQueue.reset();\n },\n close: function() {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction =\n ReactUpdates.ReactReconcileTransaction.getPooled();\n}\n\nassign(\n ReactUpdatesFlushTransaction.prototype,\n Transaction.Mixin, {\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.Mixin.perform.call(\n this,\n this.reconcileTransaction.perform,\n this.reconcileTransaction,\n method,\n scope,\n a\n );\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d) {\n ensureInjected();\n batchingStrategy.batchedUpdates(callback, a, b, c, d);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n invariant(\n len === dirtyComponents.length,\n 'Expected flush transaction\\'s stored dirty-components length (%s) to ' +\n 'match dirty-components array length (%s).',\n len,\n dirtyComponents.length\n );\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n ReactReconciler.performUpdateIfNecessary(\n component,\n transaction.reconcileTransaction\n );\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(\n callbacks[j],\n component.getPublicInstance()\n );\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\nflushBatchedUpdates = ReactPerf.measure(\n 'ReactUpdates',\n 'flushBatchedUpdates',\n flushBatchedUpdates\n);\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setProps, setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n warning(\n ReactCurrentOwner.current == null,\n 'enqueueUpdate(): Render methods should be a pure function of props ' +\n 'and state; triggering nested component updates from render is not ' +\n 'allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n );\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n invariant(\n batchingStrategy.isBatchingUpdates,\n 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' +\n 'updates are not being batched.'\n );\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function(ReconcileTransaction) {\n invariant(\n ReconcileTransaction,\n 'ReactUpdates: must provide a reconcile transaction class'\n );\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function(_batchingStrategy) {\n invariant(\n _batchingStrategy,\n 'ReactUpdates: must provide a batching strategy'\n );\n invariant(\n typeof _batchingStrategy.batchedUpdates === 'function',\n 'ReactUpdates: must provide a batchedUpdates() function'\n );\n invariant(\n typeof _batchingStrategy.isBatchingUpdates === 'boolean',\n 'ReactUpdates: must provide an isBatchingUpdates boolean attribute'\n );\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdates.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/CallbackQueue.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CallbackQueue(){\nthis._callbacks = null;\nthis._contexts = null;}\n\n\nassign(CallbackQueue.prototype,{\n\n\n\n\n\n\n\n\nenqueue:function(callback,context){\nthis._callbacks = this._callbacks || [];\nthis._contexts = this._contexts || [];\nthis._callbacks.push(callback);\nthis._contexts.push(context);},\n\n\n\n\n\n\n\n\nnotifyAll:function(){\nvar callbacks=this._callbacks;\nvar contexts=this._contexts;\nif(callbacks){\ninvariant(\ncallbacks.length === contexts.length,\n'Mismatched list of contexts in callback queue');\n\nthis._callbacks = null;\nthis._contexts = null;\nfor(var i=0,l=callbacks.length;i < l;i++) {\ncallbacks[i].call(contexts[i]);}\n\ncallbacks.length = 0;\ncontexts.length = 0;}},\n\n\n\n\n\n\n\n\nreset:function(){\nthis._callbacks = null;\nthis._contexts = null;},\n\n\n\n\n\ndestructor:function(){\nthis.reset();}});\n\n\n\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CallbackQueue\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\nfunction CallbackQueue() {\n this._callbacks = null;\n this._contexts = null;\n}\n\nassign(CallbackQueue.prototype, {\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n enqueue: function(callback, context) {\n this._callbacks = this._callbacks || [];\n this._contexts = this._contexts || [];\n this._callbacks.push(callback);\n this._contexts.push(context);\n },\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n notifyAll: function() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n if (callbacks) {\n invariant(\n callbacks.length === contexts.length,\n 'Mismatched list of contexts in callback queue'\n );\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0, l = callbacks.length; i < l; i++) {\n callbacks[i].call(contexts[i]);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n },\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n reset: function() {\n this._callbacks = null;\n this._contexts = null;\n },\n\n /**\n * `PooledClass` looks for this.\n */\n destructor: function() {\n this.reset();\n }\n\n});\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/CallbackQueue.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactPerf.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPerf={\n\n\n\n\nenableMeasure:false,\n\n\n\n\n\nstoredMeasure:_noMeasure,\n\n\n\n\n\n\nmeasureMethods:function(object,objectName,methodNames){\nif(__DEV__){\nfor(var key in methodNames) {\nif(!methodNames.hasOwnProperty(key)){\ncontinue;}\n\nobject[key] = ReactPerf.measure(\nobjectName,\nmethodNames[key],\nobject[key]);}}},\n\n\n\n\n\n\n\n\n\n\n\n\n\nmeasure:function(objName,fnName,func){\nif(__DEV__){\nvar measuredFunc=null;\nvar wrapper=function(){\nif(ReactPerf.enableMeasure){\nif(!measuredFunc){\nmeasuredFunc = ReactPerf.storedMeasure(objName,fnName,func);}\n\nreturn measuredFunc.apply(this,arguments);}\n\nreturn func.apply(this,arguments);};\n\nwrapper.displayName = objName + '_' + fnName;\nreturn wrapper;}\n\nreturn func;},\n\n\ninjection:{\n\n\n\ninjectMeasure:function(measure){\nReactPerf.storedMeasure = measure;}}};\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _noMeasure(objName,fnName,func){\nreturn func;}\n\n\nmodule.exports = ReactPerf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPerf\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * ReactPerf is a general AOP system designed to measure performance. This\n * module only has the hooks: see ReactDefaultPerf for the analysis tool.\n */\nvar ReactPerf = {\n /**\n * Boolean to enable/disable measurement. Set to false by default to prevent\n * accidental logging and perf loss.\n */\n enableMeasure: false,\n\n /**\n * Holds onto the measure function in use. By default, don't measure\n * anything, but we'll override this if we inject a measure function.\n */\n storedMeasure: _noMeasure,\n\n /**\n * @param {object} object\n * @param {string} objectName\n * @param {object} methodNames\n */\n measureMethods: function(object, objectName, methodNames) {\n if (__DEV__) {\n for (var key in methodNames) {\n if (!methodNames.hasOwnProperty(key)) {\n continue;\n }\n object[key] = ReactPerf.measure(\n objectName,\n methodNames[key],\n object[key]\n );\n }\n }\n },\n\n /**\n * Use this to wrap methods you want to measure. Zero overhead in production.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\n measure: function(objName, fnName, func) {\n if (__DEV__) {\n var measuredFunc = null;\n var wrapper = function() {\n if (ReactPerf.enableMeasure) {\n if (!measuredFunc) {\n measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);\n }\n return measuredFunc.apply(this, arguments);\n }\n return func.apply(this, arguments);\n };\n wrapper.displayName = objName + '_' + fnName;\n return wrapper;\n }\n return func;\n },\n\n injection: {\n /**\n * @param {function} measure\n */\n injectMeasure: function(measure) {\n ReactPerf.storedMeasure = measure;\n }\n }\n};\n\n/**\n * Simply passes through the measured function, without measuring it.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\nfunction _noMeasure(objName, fnName, func) {\n return func;\n}\n\nmodule.exports = ReactPerf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactPerf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactReconciler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRef=require('ReactRef');\nvar ReactElementValidator=require('ReactElementValidator');\n\n\n\n\n\nfunction attachRefs(){\nReactRef.attachRefs(this,this._currentElement);}\n\n\nvar ReactReconciler={\n\n\n\n\n\n\n\n\n\n\n\nmountComponent:function(internalInstance,rootID,transaction,context){\nvar markup=internalInstance.mountComponent(rootID,transaction,context);\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(\ninternalInstance._currentElement);}\n\n\ntransaction.getReactMountReady().enqueue(attachRefs,internalInstance);\nreturn markup;},\n\n\n\n\n\n\n\n\nunmountComponent:function(internalInstance){\nReactRef.detachRefs(internalInstance,internalInstance._currentElement);\ninternalInstance.unmountComponent();},\n\n\n\n\n\n\n\n\n\n\n\nreceiveComponent:function(\ninternalInstance,nextElement,transaction,context)\n{\nvar prevElement=internalInstance._currentElement;\n\nif(nextElement === prevElement && nextElement._owner != null){\n\n\n\n\n\n\n\nreturn;}\n\n\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(nextElement);}\n\n\nvar refsChanged=ReactRef.shouldUpdateRefs(\nprevElement,\nnextElement);\n\n\nif(refsChanged){\nReactRef.detachRefs(internalInstance,prevElement);}\n\n\ninternalInstance.receiveComponent(nextElement,transaction,context);\n\nif(refsChanged){\ntransaction.getReactMountReady().enqueue(attachRefs,internalInstance);}},\n\n\n\n\n\n\n\n\n\n\nperformUpdateIfNecessary:function(\ninternalInstance,\ntransaction)\n{\ninternalInstance.performUpdateIfNecessary(transaction);}};\n\n\n\n\nmodule.exports = ReactReconciler;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactReconciler\n */\n\n'use strict';\n\nvar ReactRef = require('ReactRef');\nvar ReactElementValidator = require('ReactElementValidator');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(internalInstance, rootID, transaction, context) {\n var markup = internalInstance.mountComponent(rootID, transaction, context);\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n internalInstance._currentElement\n );\n }\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function(internalInstance) {\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent();\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function(\n internalInstance, nextElement, transaction, context\n ) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && nextElement._owner != null) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n return;\n }\n\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(nextElement);\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(\n prevElement,\n nextElement\n );\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(\n internalInstance,\n transaction\n ) {\n internalInstance.performUpdateIfNecessary(transaction);\n }\n\n};\n\nmodule.exports = ReactReconciler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactReconciler.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRef.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactOwner=require('ReactOwner');\n\nvar ReactRef={};\n\nfunction attachRef(ref,component,owner){\nif(typeof ref === 'function'){\nref(component.getPublicInstance());}else \n{\n\nReactOwner.addComponentAsRefTo(component,ref,owner);}}\n\n\n\nfunction detachRef(ref,component,owner){\nif(typeof ref === 'function'){\nref(null);}else \n{\n\nReactOwner.removeComponentAsRefFrom(component,ref,owner);}}\n\n\n\nReactRef.attachRefs = function(instance,element){\nvar ref=element.ref;\nif(ref != null){\nattachRef(ref,instance,element._owner);}};\n\n\n\nReactRef.shouldUpdateRefs = function(prevElement,nextElement){\n\n\n\n\n\n\n\n\n\n\n\n\nreturn (\nnextElement._owner !== prevElement._owner || \nnextElement.ref !== prevElement.ref);};\n\n\n\nReactRef.detachRefs = function(instance,element){\nvar ref=element.ref;\nif(ref != null){\ndetachRef(ref,instance,element._owner);}};\n\n\n\nmodule.exports = ReactRef;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRef\n */\n\n'use strict';\n\nvar ReactOwner = require('ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function(prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n return (\n nextElement._owner !== prevElement._owner ||\n nextElement.ref !== prevElement.ref\n );\n};\n\nReactRef.detachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRef.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactOwner.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactOwner={\n\n\n\n\n\n\nisValidOwner:function(object){\nreturn !!(\nobject && \ntypeof object.attachRef === 'function' && \ntypeof object.detachRef === 'function');},\n\n\n\n\n\n\n\n\n\n\n\n\naddComponentAsRefTo:function(component,ref,owner){\ninvariant(\nReactOwner.isValidOwner(owner),\n'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' + \n'usually means that you\\'re trying to add a ref to a component that ' + \n'doesn\\'t have an owner (that is, was not created inside of another ' + \n'component\\'s `render` method). Try rendering this component inside of ' + \n'a new top-level component which will hold the ref.');\n\nowner.attachRef(ref,component);},\n\n\n\n\n\n\n\n\n\n\n\nremoveComponentAsRefFrom:function(component,ref,owner){\ninvariant(\nReactOwner.isValidOwner(owner),\n'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' + \n'usually means that you\\'re trying to remove a ref to a component that ' + \n'doesn\\'t have an owner (that is, was not created inside of another ' + \n'component\\'s `render` method). Try rendering this component inside of ' + \n'a new top-level component which will hold the ref.');\n\n\n\nif(owner.getPublicInstance().refs[ref] === component.getPublicInstance()){\nowner.detachRef(ref);}}};\n\n\n\n\n\nmodule.exports = ReactOwner;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactOwner\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n *
\n * \n *
\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n\n /**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\n isValidOwner: function(object) {\n return !!(\n object &&\n typeof object.attachRef === 'function' &&\n typeof object.detachRef === 'function'\n );\n },\n\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function(component, ref, owner) {\n invariant(\n ReactOwner.isValidOwner(owner),\n 'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to add a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n );\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function(component, ref, owner) {\n invariant(\n ReactOwner.isValidOwner(owner),\n 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to remove a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n );\n // Check that `component` is still the current ref because we do not want to\n // detach the ref if another component stole it.\n if (owner.getPublicInstance().refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactOwner.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElementValidator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactNativeComponent=require('ReactNativeComponent');\n\nvar getIteratorFn=require('getIteratorFn');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nfunction getDeclarationErrorAddendum(){\nif(ReactCurrentOwner.current){\nvar name=ReactCurrentOwner.current.getName();\nif(name){\nreturn ' Check the render method of `' + name + '`.';}}\n\n\nreturn '';}\n\n\n\n\n\n\n\nvar ownerHasKeyUseWarning={};\n\nvar loggedTypeFailures={};\n\nvar NUMERIC_PROPERTY_REGEX=/^\\d+$/;\n\n\n\n\n\n\n\nfunction getName(instance){\nvar publicInstance=instance && instance.getPublicInstance();\nif(!publicInstance){\nreturn undefined;}\n\nvar constructor=publicInstance.constructor;\nif(!constructor){\nreturn undefined;}\n\nreturn constructor.displayName || constructor.name || undefined;}\n\n\n\n\n\n\n\n\nfunction getCurrentOwnerDisplayName(){\nvar current=ReactCurrentOwner.current;\nreturn (\ncurrent && getName(current) || undefined);}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validateExplicitKey(element,parentType){\nif(element._store.validated || element.key != null){\nreturn;}\n\nelement._store.validated = true;\n\nwarnAndMonitorForKeyUse(\n'Each child in an array or iterator should have a unique \"key\" prop.',\nelement,\nparentType);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validatePropertyKey(name,element,parentType){\nif(!NUMERIC_PROPERTY_REGEX.test(name)){\nreturn;}\n\nwarnAndMonitorForKeyUse(\n'Child objects should have non-numeric keys so ordering is preserved.',\nelement,\nparentType);}\n\n\n\n\n\n\n\n\n\n\n\nfunction warnAndMonitorForKeyUse(message,element,parentType){\nvar ownerName=getCurrentOwnerDisplayName();\nvar parentName=typeof parentType === 'string'?\nparentType:parentType.displayName || parentType.name;\n\nvar useName=ownerName || parentName;\nvar memoizer=ownerHasKeyUseWarning[message] || (\nownerHasKeyUseWarning[message] = {});\n\nif(memoizer.hasOwnProperty(useName)){\nreturn;}\n\nmemoizer[useName] = true;\n\nvar parentOrOwnerAddendum=\nownerName?' Check the render method of ' + ownerName + '.':\nparentName?' Check the React.render call using <' + parentName + '>.':\n'';\n\n\n\n\nvar childOwnerAddendum='';\nif(element && \nelement._owner && \nelement._owner !== ReactCurrentOwner.current){\n\nvar childOwnerName=getName(element._owner);\n\nchildOwnerAddendum = ' It was passed a child from ' + childOwnerName + '.';}\n\n\nwarning(\nfalse,\nmessage + '%s%s See http://fb.me/react-warning-keys for more information.',\nparentOrOwnerAddendum,\nchildOwnerAddendum);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validateChildKeys(node,parentType){\nif(Array.isArray(node)){\nfor(var i=0;i < node.length;i++) {\nvar child=node[i];\nif(ReactElement.isValidElement(child)){\nvalidateExplicitKey(child,parentType);}}}else \n\n\nif(ReactElement.isValidElement(node)){\n\nnode._store.validated = true;}else \nif(node){\nvar iteratorFn=getIteratorFn(node);\n\nif(iteratorFn){\nif(iteratorFn !== node.entries){\nvar iterator=iteratorFn.call(node);\nvar step;\nwhile(!(step = iterator.next()).done) {\nif(ReactElement.isValidElement(step.value)){\nvalidateExplicitKey(step.value,parentType);}}}}else \n\n\n\nif(typeof node === 'object'){\nvar fragment=ReactFragment.extractIfFragment(node);\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key)){\nvalidatePropertyKey(key,fragment[key],parentType);}}}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction checkPropTypes(componentName,propTypes,props,location){\nfor(var propName in propTypes) {\nif(propTypes.hasOwnProperty(propName)){\nvar error;\n\n\n\ntry{\n\n\ninvariant(\ntypeof propTypes[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually from ' + \n'React.PropTypes.',\ncomponentName || 'React class',\nReactPropTypeLocationNames[location],\npropName);\n\nerror = propTypes[propName](props,propName,componentName,location);}\ncatch(ex) {\nerror = ex;}\n\nif(error instanceof Error && !(error.message in loggedTypeFailures)){\n\n\nloggedTypeFailures[error.message] = true;\n\nvar addendum=getDeclarationErrorAddendum(this);\nwarning(false,'Failed propType: %s%s',error.message,addendum);}}}}\n\n\n\n\n\nvar warnedPropsMutations={};\n\n\n\n\n\n\n\nfunction warnForPropsMutation(propName,element){\nvar type=element.type;\nvar elementName=typeof type === 'string'?type:type.displayName;\nvar ownerName=element._owner?\nelement._owner.getPublicInstance().constructor.displayName:null;\n\nvar warningKey=propName + '|' + elementName + '|' + ownerName;\nif(warnedPropsMutations.hasOwnProperty(warningKey)){\nreturn;}\n\nwarnedPropsMutations[warningKey] = true;\n\nvar elementInfo='';\nif(elementName){\nelementInfo = ' <' + elementName + ' />';}\n\nvar ownerInfo='';\nif(ownerName){\nownerInfo = ' The element was created by ' + ownerName + '.';}\n\n\nwarning(\nfalse,\n'Don\\'t set .props.%s of the React component%s. Instead, specify the ' + \n'correct value when initially creating the element or use ' + \n'React.cloneElement to make a new element with updated props.%s',\npropName,\nelementInfo,\nownerInfo);}\n\n\n\n\nfunction is(a,b){\nif(a !== a){\n\nreturn b !== b;}\n\nif(a === 0 && b === 0){\n\nreturn 1 / a === 1 / b;}\n\nreturn a === b;}\n\n\n\n\n\n\n\n\n\n\nfunction checkAndWarnForMutatedProps(element){\nif(!element._store){\n\n\nreturn;}\n\n\nvar originalProps=element._store.originalProps;\nvar props=element.props;\n\nfor(var propName in props) {\nif(props.hasOwnProperty(propName)){\nif(!originalProps.hasOwnProperty(propName) || \n!is(originalProps[propName],props[propName])){\nwarnForPropsMutation(propName,element);\n\n\noriginalProps[propName] = props[propName];}}}}\n\n\n\n\n\n\n\n\n\n\n\nfunction validatePropTypes(element){\nif(element.type == null){\n\nreturn;}\n\n\n\n\n\nvar componentClass=ReactNativeComponent.getComponentClassForElement(\nelement);\n\nvar name=componentClass.displayName || componentClass.name;\nif(componentClass.propTypes){\ncheckPropTypes(\nname,\ncomponentClass.propTypes,\nelement.props,\nReactPropTypeLocations.prop);}\n\n\nif(typeof componentClass.getDefaultProps === 'function'){\nwarning(\ncomponentClass.getDefaultProps.isReactClassApproved,\n'getDefaultProps is only used on classic React.createClass ' + \n'definitions. Use a static property named `defaultProps` instead.');}}\n\n\n\n\nvar ReactElementValidator={\n\ncheckAndWarnForMutatedProps:checkAndWarnForMutatedProps,\n\ncreateElement:function(type,props,children){\n\n\nwarning(\ntype != null,\n'React.createElement: type should not be null or undefined. It should ' + \n'be a string (for DOM elements) or a ReactClass (for composite ' + \n'components).');\n\n\nvar element=ReactElement.createElement.apply(this,arguments);\n\n\n\nif(element == null){\nreturn element;}\n\n\nfor(var i=2;i < arguments.length;i++) {\nvalidateChildKeys(arguments[i],type);}\n\n\nvalidatePropTypes(element);\n\nreturn element;},\n\n\ncreateFactory:function(type){\nvar validatedFactory=ReactElementValidator.createElement.bind(\nnull,\ntype);\n\n\nvalidatedFactory.type = type;\n\nif(__DEV__){\ntry{\nObject.defineProperty(\nvalidatedFactory,\n'type',\n{\nenumerable:false,\nget:function(){\nwarning(\nfalse,\n'Factory.type is deprecated. Access the class directly ' + \n'before passing it to createFactory.');\n\nObject.defineProperty(this,'type',{\nvalue:type});\n\nreturn type;}});}\n\n\n\ncatch(x) {}}\n\n\n\n\n\nreturn validatedFactory;},\n\n\ncloneElement:function(element,props,children){\nvar newElement=ReactElement.cloneElement.apply(this,arguments);\nfor(var i=2;i < arguments.length;i++) {\nvalidateChildKeys(arguments[i],newElement.type);}\n\nvalidatePropTypes(newElement);\nreturn newElement;}};\n\n\n\n\nmodule.exports = ReactElementValidator;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElementValidator\n */\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactNativeComponent = require('ReactNativeComponent');\n\nvar getIteratorFn = require('getIteratorFn');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nvar loggedTypeFailures = {};\n\nvar NUMERIC_PROPERTY_REGEX = /^\\d+$/;\n\n/**\n * Gets the instance's name for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getName(instance) {\n var publicInstance = instance && instance.getPublicInstance();\n if (!publicInstance) {\n return undefined;\n }\n var constructor = publicInstance.constructor;\n if (!constructor) {\n return undefined;\n }\n return constructor.displayName || constructor.name || undefined;\n}\n\n/**\n * Gets the current owner's displayName for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getCurrentOwnerDisplayName() {\n var current = ReactCurrentOwner.current;\n return (\n current && getName(current) || undefined\n );\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n warnAndMonitorForKeyUse(\n 'Each child in an array or iterator should have a unique \"key\" prop.',\n element,\n parentType\n );\n}\n\n/**\n * Warn if the key is being defined as an object property but has an incorrect\n * value.\n *\n * @internal\n * @param {string} name Property name of the key.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validatePropertyKey(name, element, parentType) {\n if (!NUMERIC_PROPERTY_REGEX.test(name)) {\n return;\n }\n warnAndMonitorForKeyUse(\n 'Child objects should have non-numeric keys so ordering is preserved.',\n element,\n parentType\n );\n}\n\n/**\n * Shared warning and monitoring code for the key warnings.\n *\n * @internal\n * @param {string} message The base warning that gets output.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction warnAndMonitorForKeyUse(message, element, parentType) {\n var ownerName = getCurrentOwnerDisplayName();\n var parentName = typeof parentType === 'string' ?\n parentType : parentType.displayName || parentType.name;\n\n var useName = ownerName || parentName;\n var memoizer = ownerHasKeyUseWarning[message] || (\n ownerHasKeyUseWarning[message] = {}\n );\n if (memoizer.hasOwnProperty(useName)) {\n return;\n }\n memoizer[useName] = true;\n\n var parentOrOwnerAddendum =\n ownerName ? ` Check the render method of ${ownerName}.` :\n parentName ? ` Check the React.render call using <${parentName}>.` :\n '';\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwnerAddendum = '';\n if (element &&\n element._owner &&\n element._owner !== ReactCurrentOwner.current) {\n // Name of the component that originally created this child.\n var childOwnerName = getName(element._owner);\n\n childOwnerAddendum = ` It was passed a child from ${childOwnerName}.`;\n }\n\n warning(\n false,\n message + '%s%s See http://fb.me/react-warning-keys for more information.',\n parentOrOwnerAddendum,\n childOwnerAddendum\n );\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (ReactElement.isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (ReactElement.isValidElement(node)) {\n // This element was passed in a valid location.\n node._store.validated = true;\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n // Entry iterators provide implicit keys.\n if (iteratorFn) {\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n while (!(step = iterator.next()).done) {\n if (ReactElement.isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n } else if (typeof node === 'object') {\n var fragment = ReactFragment.extractIfFragment(node);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n validatePropertyKey(key, fragment[key], parentType);\n }\n }\n }\n }\n}\n\n/**\n * Assert that the props are valid\n *\n * @param {string} componentName Name of the component for error messages.\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\nfunction checkPropTypes(componentName, propTypes, props, location) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n );\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(this);\n warning(false, 'Failed propType: %s%s', error.message, addendum);\n }\n }\n }\n}\n\nvar warnedPropsMutations = {};\n\n/**\n * Warn about mutating props when setting `propName` on `element`.\n *\n * @param {string} propName The string key within props that was set\n * @param {ReactElement} element\n */\nfunction warnForPropsMutation(propName, element) {\n var type = element.type;\n var elementName = typeof type === 'string' ? type : type.displayName;\n var ownerName = element._owner ?\n element._owner.getPublicInstance().constructor.displayName : null;\n\n var warningKey = propName + '|' + elementName + '|' + ownerName;\n if (warnedPropsMutations.hasOwnProperty(warningKey)) {\n return;\n }\n warnedPropsMutations[warningKey] = true;\n\n var elementInfo = '';\n if (elementName) {\n elementInfo = ' <' + elementName + ' />';\n }\n var ownerInfo = '';\n if (ownerName) {\n ownerInfo = ' The element was created by ' + ownerName + '.';\n }\n\n warning(\n false,\n 'Don\\'t set .props.%s of the React component%s. Instead, specify the ' +\n 'correct value when initially creating the element or use ' +\n 'React.cloneElement to make a new element with updated props.%s',\n propName,\n elementInfo,\n ownerInfo\n );\n}\n\n// Inline Object.is polyfill\nfunction is(a, b) {\n if (a !== a) {\n // NaN\n return b !== b;\n }\n if (a === 0 && b === 0) {\n // +-0\n return 1 / a === 1 / b;\n }\n return a === b;\n}\n\n/**\n * Given an element, check if its props have been mutated since element\n * creation (or the last call to this function). In particular, check if any\n * new props have been added, which we can't directly catch by defining warning\n * properties on the props object.\n *\n * @param {ReactElement} element\n */\nfunction checkAndWarnForMutatedProps(element) {\n if (!element._store) {\n // Element was created using `new ReactElement` directly or with\n // `ReactElement.createElement`; skip mutation checking\n return;\n }\n\n var originalProps = element._store.originalProps;\n var props = element.props;\n\n for (var propName in props) {\n if (props.hasOwnProperty(propName)) {\n if (!originalProps.hasOwnProperty(propName) ||\n !is(originalProps[propName], props[propName])) {\n warnForPropsMutation(propName, element);\n\n // Copy over the new value so that the two props objects match again\n originalProps[propName] = props[propName];\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n if (element.type == null) {\n // This has already warned. Don't throw.\n return;\n }\n // Extract the component class from the element. Converts string types\n // to a composite class which may have propTypes.\n // TODO: Validating a string's propTypes is not decoupled from the\n // rendering target which is problematic.\n var componentClass = ReactNativeComponent.getComponentClassForElement(\n element\n );\n var name = componentClass.displayName || componentClass.name;\n if (componentClass.propTypes) {\n checkPropTypes(\n name,\n componentClass.propTypes,\n element.props,\n ReactPropTypeLocations.prop\n );\n }\n if (typeof componentClass.getDefaultProps === 'function') {\n warning(\n componentClass.getDefaultProps.isReactClassApproved,\n 'getDefaultProps is only used on classic React.createClass ' +\n 'definitions. Use a static property named `defaultProps` instead.'\n );\n }\n}\n\nvar ReactElementValidator = {\n\n checkAndWarnForMutatedProps: checkAndWarnForMutatedProps,\n\n createElement: function(type, props, children) {\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n warning(\n type != null,\n 'React.createElement: type should not be null or undefined. It should ' +\n 'be a string (for DOM elements) or a ReactClass (for composite ' +\n 'components).'\n );\n\n var element = ReactElement.createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n\n validatePropTypes(element);\n\n return element;\n },\n\n createFactory: function(type) {\n var validatedFactory = ReactElementValidator.createElement.bind(\n null,\n type\n );\n // Legacy hook TODO: Warn if this is accessed\n validatedFactory.type = type;\n\n if (__DEV__) {\n try {\n Object.defineProperty(\n validatedFactory,\n 'type',\n {\n enumerable: false,\n get: function() {\n warning(\n false,\n 'Factory.type is deprecated. Access the class directly ' +\n 'before passing it to createFactory.'\n );\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n }\n );\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n\n return validatedFactory;\n },\n\n cloneElement: function(element, props, children) {\n var newElement = ReactElement.cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n }\n\n};\n\nmodule.exports = ReactElementValidator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElementValidator.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocations.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\nvar ReactPropTypeLocations=keyMirror({\nprop:null,\ncontext:null,\nchildContext:null});\n\n\nmodule.exports = ReactPropTypeLocations;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocations\n */\n\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\nvar ReactPropTypeLocations = keyMirror({\n prop: null,\n context: null,\n childContext: null\n});\n\nmodule.exports = ReactPropTypeLocations;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocations.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyMirror.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=function(obj){\nvar ret={};\nvar key;\ninvariant(\nobj instanceof Object && !Array.isArray(obj),\n'keyMirror(...): Argument must be an object.');\n\nfor(key in obj) {\nif(!obj.hasOwnProperty(key)){\ncontinue;}\n\nret[key] = key;}\n\nreturn ret;};\n\n\nmodule.exports = keyMirror;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyMirror\n * @typechecks static-only\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n invariant(\n obj instanceof Object && !Array.isArray(obj),\n 'keyMirror(...): Argument must be an object.'\n );\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyMirror.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocationNames.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypeLocationNames={};\n\nif(__DEV__){\nReactPropTypeLocationNames = {\nprop:'prop',\ncontext:'context',\nchildContext:'child context'};}\n\n\n\nmodule.exports = ReactPropTypeLocationNames;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocationNames\n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (__DEV__) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocationNames.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactNativeComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\n\nvar autoGenerateWrapperClass=null;\nvar genericComponentClass=null;\n\nvar tagToComponentClass={};\nvar textComponentClass=null;\n\nvar ReactNativeComponentInjection={\n\n\ninjectGenericComponentClass:function(componentClass){\ngenericComponentClass = componentClass;},\n\n\n\ninjectTextComponentClass:function(componentClass){\ntextComponentClass = componentClass;},\n\n\n\ninjectComponentClasses:function(componentClasses){\nassign(tagToComponentClass,componentClasses);},\n\n\n\ninjectAutoWrapper:function(wrapperFactory){\nautoGenerateWrapperClass = wrapperFactory;}};\n\n\n\n\n\n\n\n\n\nfunction getComponentClassForElement(element){\nif(typeof element.type === 'function'){\nreturn element.type;}\n\nvar tag=element.type;\nvar componentClass=tagToComponentClass[tag];\nif(componentClass == null){\ntagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);}\n\nreturn componentClass;}\n\n\n\n\n\n\n\n\nfunction createInternalComponent(element){\ninvariant(\ngenericComponentClass,\n'There is no registered component for the tag %s',\nelement.type);\n\nreturn new genericComponentClass(element.type,element.props);}\n\n\n\n\n\n\nfunction createInstanceForText(text){\nreturn new textComponentClass(text);}\n\n\n\n\n\n\nfunction isTextComponent(component){\nreturn component instanceof textComponentClass;}\n\n\nvar ReactNativeComponent={\ngetComponentClassForElement:getComponentClassForElement,\ncreateInternalComponent:createInternalComponent,\ncreateInstanceForText:createInstanceForText,\nisTextComponent:isTextComponent,\ninjection:ReactNativeComponentInjection};\n\n\nmodule.exports = ReactNativeComponent;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeComponent\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\n\nvar autoGenerateWrapperClass = null;\nvar genericComponentClass = null;\n// This registry keeps track of wrapper classes around native tags\nvar tagToComponentClass = {};\nvar textComponentClass = null;\n\nvar ReactNativeComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function(componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function(componentClass) {\n textComponentClass = componentClass;\n },\n // This accepts a keyed object with classes as values. Each key represents a\n // tag. That particular tag will use this class instead of the generic one.\n injectComponentClasses: function(componentClasses) {\n assign(tagToComponentClass, componentClasses);\n },\n // Temporary hack since we expect DOM refs to behave like composites,\n // for this release.\n injectAutoWrapper: function(wrapperFactory) {\n autoGenerateWrapperClass = wrapperFactory;\n }\n};\n\n/**\n * Get a composite component wrapper class for a specific tag.\n *\n * @param {ReactElement} element The tag for which to get the class.\n * @return {function} The React class constructor function.\n */\nfunction getComponentClassForElement(element) {\n if (typeof element.type === 'function') {\n return element.type;\n }\n var tag = element.type;\n var componentClass = tagToComponentClass[tag];\n if (componentClass == null) {\n tagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);\n }\n return componentClass;\n}\n\n/**\n * Get a native internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n invariant(\n genericComponentClass,\n 'There is no registered component for the tag %s',\n element.type\n );\n return new genericComponentClass(element.type, element.props);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactNativeComponent = {\n getComponentClassForElement: getComponentClassForElement,\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactNativeComponentInjection\n};\n\nmodule.exports = ReactNativeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactNativeComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/Transaction.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Mixin={\n\n\n\n\n\n\n\nreinitializeTransaction:function(){\nthis.transactionWrappers = this.getTransactionWrappers();\nif(!this.wrapperInitData){\nthis.wrapperInitData = [];}else \n{\nthis.wrapperInitData.length = 0;}\n\nthis._isInTransaction = false;},\n\n\n_isInTransaction:false,\n\n\n\n\n\ngetTransactionWrappers:null,\n\nisInTransaction:function(){\nreturn !!this._isInTransaction;},\n\n\n\n\n\n\n\n\n\n\n\n\n\nperform:function(method,scope,a,b,c,d,e,f){\ninvariant(\n!this.isInTransaction(),\n'Transaction.perform(...): Cannot initialize a transaction when there ' + \n'is already an outstanding transaction.');\n\nvar errorThrown;\nvar ret;\ntry{\nthis._isInTransaction = true;\n\n\n\n\nerrorThrown = true;\nthis.initializeAll(0);\nret = method.call(scope,a,b,c,d,e,f);\nerrorThrown = false;}finally \n{\ntry{\nif(errorThrown){\n\n\ntry{\nthis.closeAll(0);}\ncatch(err) {}}else \n\n{\n\n\nthis.closeAll(0);}}finally \n\n{\nthis._isInTransaction = false;}}\n\n\nreturn ret;},\n\n\ninitializeAll:function(startIndex){\nvar transactionWrappers=this.transactionWrappers;\nfor(var i=startIndex;i < transactionWrappers.length;i++) {\nvar wrapper=transactionWrappers[i];\ntry{\n\n\n\n\nthis.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\nthis.wrapperInitData[i] = wrapper.initialize?\nwrapper.initialize.call(this):\nnull;}finally \n{\nif(this.wrapperInitData[i] === Transaction.OBSERVED_ERROR){\n\n\n\ntry{\nthis.initializeAll(i + 1);}\ncatch(err) {}}}}},\n\n\n\n\n\n\n\n\n\n\n\n\ncloseAll:function(startIndex){\ninvariant(\nthis.isInTransaction(),\n'Transaction.closeAll(): Cannot close transaction when none are open.');\n\nvar transactionWrappers=this.transactionWrappers;\nfor(var i=startIndex;i < transactionWrappers.length;i++) {\nvar wrapper=transactionWrappers[i];\nvar initData=this.wrapperInitData[i];\nvar errorThrown;\ntry{\n\n\n\n\nerrorThrown = true;\nif(initData !== Transaction.OBSERVED_ERROR && wrapper.close){\nwrapper.close.call(this,initData);}\n\nerrorThrown = false;}finally \n{\nif(errorThrown){\n\n\n\ntry{\nthis.closeAll(i + 1);}\ncatch(e) {}}}}\n\n\n\n\nthis.wrapperInitData.length = 0;}};\n\n\n\nvar Transaction={\n\nMixin:Mixin,\n\n\n\n\nOBSERVED_ERROR:{}};\n\n\n\nmodule.exports = Transaction;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Transaction\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n *
\n *                       wrappers (injected at creation time)\n *                                      +        +\n *                                      |        |\n *                    +-----------------|--------|--------------+\n *                    |                 v        |              |\n *                    |      +---------------+   |              |\n *                    |   +--|    wrapper1   |---|----+         |\n *                    |   |  +---------------+   v    |         |\n *                    |   |          +-------------+  |         |\n *                    |   |     +----|   wrapper2  |--------+   |\n *                    |   |     |    +-------------+  |     |   |\n *                    |   |     |                     |     |   |\n *                    |   v     v                     v     v   | wrapper\n *                    | +---+ +---+   +---------+   +---+ +---+ | invariants\n * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | +---+ +---+   +---------+   +---+ +---+ |\n *                    |  initialize                    close    |\n *                    +-----------------------------------------+\n * 
\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar Mixin = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function() {\n this.transactionWrappers = this.getTransactionWrappers();\n if (!this.wrapperInitData) {\n this.wrapperInitData = [];\n } else {\n this.wrapperInitData.length = 0;\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function() {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} args... Arguments to pass to the method (optional).\n * Helps prevent need to bind in many cases.\n * @return Return value from `method`.\n */\n perform: function(method, scope, a, b, c, d, e, f) {\n invariant(\n !this.isInTransaction(),\n 'Transaction.perform(...): Cannot initialize a transaction when there ' +\n 'is already an outstanding transaction.'\n );\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {\n }\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function(startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ?\n wrapper.initialize.call(this) :\n null;\n } finally {\n if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {\n }\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function(startIndex) {\n invariant(\n this.isInTransaction(),\n 'Transaction.closeAll(): Cannot close transaction when none are open.'\n );\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== Transaction.OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {\n }\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nvar Transaction = {\n\n Mixin: Mixin,\n\n /**\n * Token to look for to determine if an error occured.\n */\n OBSERVED_ERROR: {}\n\n};\n\nmodule.exports = Transaction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/Transaction.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/stubs/ReactErrorUtils.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactErrorUtils={\n\n\n\n\n\n\n\n\n\nguard:function(func,name){\nreturn func;}};\n\n\n\nmodule.exports = ReactErrorUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactErrorUtils\n * @typechecks\n */\n\n\"use strict\";\n\nvar ReactErrorUtils = {\n /**\n * Creates a guarded version of a function. This is supposed to make debugging\n * of event handlers easier. To aid debugging with the browser's debugger,\n * this currently simply returns the original function.\n *\n * @param {function} func Function to be executed\n * @param {string} name The name of the guard\n * @return {function}\n */\n guard: function(func, name) {\n return func;\n }\n};\n\nmodule.exports = ReactErrorUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/stubs/ReactErrorUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyOf.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nkeyOf=function(oneKeyObj){\nvar key;\nfor(key in oneKeyObj) {\nif(!oneKeyObj.hasOwnProperty(key)){\ncontinue;}\n\nreturn key;}\n\nreturn null;};\n\n\n\nmodule.exports = keyOf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyOf\n */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without loosing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\nvar keyOf = function(oneKeyObj) {\n var key;\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n return key;\n }\n return null;\n};\n\n\nmodule.exports = keyOf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyOf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDefaultInjection.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrequire('InitializeJavaScriptAppEngine');\nvar EventPluginHub=require('EventPluginHub');\nvar EventPluginUtils=require('EventPluginUtils');\nvar IOSDefaultEventPluginOrder=require('IOSDefaultEventPluginOrder');\nvar IOSNativeBridgeEventPlugin=require('IOSNativeBridgeEventPlugin');\nvar NodeHandle=require('NodeHandle');\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactDefaultBatchingStrategy=require('ReactDefaultBatchingStrategy');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactNativeComponentEnvironment=require('ReactNativeComponentEnvironment');\nvar ReactNativeGlobalInteractionHandler=require('ReactNativeGlobalInteractionHandler');\nvar ReactNativeGlobalResponderHandler=require('ReactNativeGlobalResponderHandler');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactNativeTextComponent=require('ReactNativeTextComponent');\nvar ReactNativeComponent=require('ReactNativeComponent');\nvar ReactUpdates=require('ReactUpdates');\nvar ResponderEventPlugin=require('ResponderEventPlugin');\nvar UniversalWorkerNodeHandle=require('UniversalWorkerNodeHandle');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar invariant=require('invariant');\n\n\nrequire('RCTEventEmitter');\nrequire('RCTLog');\nrequire('JSTimersExecution');\n\nfunction inject(){\n\n\n\nEventPluginHub.injection.injectEventPluginOrder(IOSDefaultEventPluginOrder);\nEventPluginHub.injection.injectInstanceHandle(ReactInstanceHandles);\n\nResponderEventPlugin.injection.injectGlobalResponderHandler(\nReactNativeGlobalResponderHandler);\n\n\nResponderEventPlugin.injection.injectGlobalInteractionHandler(\nReactNativeGlobalInteractionHandler);\n\n\n\n\n\n\nEventPluginHub.injection.injectEventPluginsByName({\n'ResponderEventPlugin':ResponderEventPlugin,\n'IOSNativeBridgeEventPlugin':IOSNativeBridgeEventPlugin});\n\n\nReactUpdates.injection.injectReconcileTransaction(\nReactNativeComponentEnvironment.ReactReconcileTransaction);\n\n\nReactUpdates.injection.injectBatchingStrategy(\nReactDefaultBatchingStrategy);\n\n\nReactComponentEnvironment.injection.injectEnvironment(\nReactNativeComponentEnvironment);\n\n\n\nvar RCTView=createReactNativeComponentClass({\nvalidAttributes:{},\nuiViewClassName:'RCTView'});\n\nReactEmptyComponent.injection.injectEmptyComponent(RCTView);\n\nEventPluginUtils.injection.injectMount(ReactNativeMount);\n\nReactNativeComponent.injection.injectTextComponentClass(\nReactNativeTextComponent);\n\nReactNativeComponent.injection.injectAutoWrapper(function(tag){\n\nvar info='';\nif(typeof tag === 'string' && /^[a-z]/.test(tag)){\ninfo += ' Each component name should start with an uppercase letter.';}\n\ninvariant(false,'Expected a component class, got %s.%s',tag,info);});\n\n\nNodeHandle.injection.injectImplementation(UniversalWorkerNodeHandle);}\n\n\nmodule.exports = {\ninject:inject};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeDefaultInjection\n * @flow\n */\n'use strict';\n\n/**\n * Make sure `setTimeout`/`setInterval` are patched correctly.\n */\nrequire('InitializeJavaScriptAppEngine');\nvar EventPluginHub = require('EventPluginHub');\nvar EventPluginUtils = require('EventPluginUtils');\nvar IOSDefaultEventPluginOrder = require('IOSDefaultEventPluginOrder');\nvar IOSNativeBridgeEventPlugin = require('IOSNativeBridgeEventPlugin');\nvar NodeHandle = require('NodeHandle');\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactNativeComponentEnvironment = require('ReactNativeComponentEnvironment');\nvar ReactNativeGlobalInteractionHandler = require('ReactNativeGlobalInteractionHandler');\nvar ReactNativeGlobalResponderHandler = require('ReactNativeGlobalResponderHandler');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactNativeTextComponent = require('ReactNativeTextComponent');\nvar ReactNativeComponent = require('ReactNativeComponent');\nvar ReactUpdates = require('ReactUpdates');\nvar ResponderEventPlugin = require('ResponderEventPlugin');\nvar UniversalWorkerNodeHandle = require('UniversalWorkerNodeHandle');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar invariant = require('invariant');\n\n// Just to ensure this gets packaged, since its only caller is from Native.\nrequire('RCTEventEmitter');\nrequire('RCTLog');\nrequire('JSTimersExecution');\n\nfunction inject() {\n /**\n * Inject module for resolving DOM hierarchy and plugin ordering.\n */\n EventPluginHub.injection.injectEventPluginOrder(IOSDefaultEventPluginOrder);\n EventPluginHub.injection.injectInstanceHandle(ReactInstanceHandles);\n\n ResponderEventPlugin.injection.injectGlobalResponderHandler(\n ReactNativeGlobalResponderHandler\n );\n\n ResponderEventPlugin.injection.injectGlobalInteractionHandler(\n ReactNativeGlobalInteractionHandler\n );\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n EventPluginHub.injection.injectEventPluginsByName({\n 'ResponderEventPlugin': ResponderEventPlugin,\n 'IOSNativeBridgeEventPlugin': IOSNativeBridgeEventPlugin\n });\n\n ReactUpdates.injection.injectReconcileTransaction(\n ReactNativeComponentEnvironment.ReactReconcileTransaction\n );\n\n ReactUpdates.injection.injectBatchingStrategy(\n ReactDefaultBatchingStrategy\n );\n\n ReactComponentEnvironment.injection.injectEnvironment(\n ReactNativeComponentEnvironment\n );\n\n // Can't import View here because it depends on React to make its composite\n var RCTView = createReactNativeComponentClass({\n validAttributes: {},\n uiViewClassName: 'RCTView',\n });\n ReactEmptyComponent.injection.injectEmptyComponent(RCTView);\n\n EventPluginUtils.injection.injectMount(ReactNativeMount);\n\n ReactNativeComponent.injection.injectTextComponentClass(\n ReactNativeTextComponent\n );\n ReactNativeComponent.injection.injectAutoWrapper(function(tag) {\n // Show a nicer error message for non-function tags\n var info = '';\n if (typeof tag === 'string' && /^[a-z]/.test(tag)) {\n info += ' Each component name should start with an uppercase letter.';\n }\n invariant(false, 'Expected a component class, got %s.%s', tag, info);\n });\n\n NodeHandle.injection.injectImplementation(UniversalWorkerNodeHandle);\n}\n\nmodule.exports = {\n inject: inject,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDefaultInjection.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js":{"data":{"code":"require(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'RCTDebugComponentOwnership');\nrequire('RCTDeviceEventEmitter');\nrequire('PerformanceLogger');\n\nif(typeof GLOBAL === 'undefined'){\nGLOBAL = this;}\n\n\nif(typeof window === 'undefined'){\nwindow = GLOBAL;}\n\n\nfunction handleError(e,isFatal){\ntry{\nrequire('ExceptionsManager').handleException(e,isFatal);}\ncatch(ee) {\nconsole.log('Failed to print error: ',ee.message);}}\n\n\n\nfunction setUpRedBoxErrorHandler(){\nvar ErrorUtils=require('ErrorUtils');\nErrorUtils.setGlobalHandler(handleError);}\n\n\nfunction setUpRedBoxConsoleErrorHandler(){\n\nvar ExceptionsManager=require('ExceptionsManager');\nvar Platform=require('Platform');\n\nif(__DEV__ && Platform.OS === 'ios'){\nExceptionsManager.installConsoleErrorReporter();}}\n\n\n\n\n\n\n\n\n\n\nfunction setUpTimers(){\nvar JSTimers=require('JSTimers');\nGLOBAL.setTimeout = JSTimers.setTimeout;\nGLOBAL.setInterval = JSTimers.setInterval;\nGLOBAL.setImmediate = JSTimers.setImmediate;\nGLOBAL.clearTimeout = JSTimers.clearTimeout;\nGLOBAL.clearInterval = JSTimers.clearInterval;\nGLOBAL.clearImmediate = JSTimers.clearImmediate;\nGLOBAL.cancelAnimationFrame = JSTimers.clearInterval;\nGLOBAL.requestAnimationFrame = function(cb){\n\nreturn JSTimers.requestAnimationFrame(cb);};}\n\n\n\nfunction setUpAlert(){\nvar RCTAlertManager=require('NativeModules').AlertManager;\nif(!GLOBAL.alert){\nGLOBAL.alert = function(text){\nvar alertOpts={\ntitle:'Alert',\nmessage:'' + text,\nbuttons:[{'cancel':'OK'}]};\n\nRCTAlertManager.alertWithArgs(alertOpts,null);};}}\n\n\n\n\nfunction setUpPromise(){\n\n\nGLOBAL.Promise = require('Promise');}\n\n\nfunction setUpXHR(){\n\n\nGLOBAL.XMLHttpRequest = require('XMLHttpRequest');\nGLOBAL.FormData = require('FormData');\n\nvar fetchPolyfill=require('fetch');\nGLOBAL.fetch = fetchPolyfill.fetch;\nGLOBAL.Headers = fetchPolyfill.Headers;\nGLOBAL.Request = fetchPolyfill.Request;\nGLOBAL.Response = fetchPolyfill.Response;}\n\n\nfunction setUpGeolocation(){\nGLOBAL.navigator = GLOBAL.navigator || {};\nGLOBAL.navigator.geolocation = require('Geolocation');}\n\n\nfunction setUpWebSockets(){\nGLOBAL.WebSocket = require('WebSocket');}\n\n\nfunction setupProfile(){\nconsole.profile = console.profile || GLOBAL.consoleProfile || function(){};\nconsole.profileEnd = console.profileEnd || GLOBAL.consoleProfileEnd || function(){};\nrequire('BridgeProfiling').swizzleReactPerf();}\n\n\nsetUpRedBoxErrorHandler();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpXHR();\nsetUpRedBoxConsoleErrorHandler();\nsetUpGeolocation();\nsetUpWebSockets();\nsetupProfile();","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Sets up global variables typical in most JavaScript environments.\n *\n * 1. Global timers (via `setTimeout` etc).\n * 2. Global console object.\n * 3. Hooks for printing stack traces with source maps.\n *\n * Leaves enough room in the environment for implementing your own:\n * 1. Require system.\n * 2. Bridged modules.\n *\n * @providesModule InitializeJavaScriptAppEngine\n */\n\n/* eslint global-strict: 0 */\n/* globals GLOBAL: true, window: true */\n\n// Just to make sure the JS gets packaged up.\nrequire('RCTDebugComponentOwnership');\nrequire('RCTDeviceEventEmitter');\nrequire('PerformanceLogger');\n\nif (typeof GLOBAL === 'undefined') {\n GLOBAL = this;\n}\n\nif (typeof window === 'undefined') {\n window = GLOBAL;\n}\n\nfunction handleError(e, isFatal) {\n try {\n require('ExceptionsManager').handleException(e, isFatal);\n } catch(ee) {\n console.log('Failed to print error: ', ee.message);\n }\n}\n\nfunction setUpRedBoxErrorHandler() {\n var ErrorUtils = require('ErrorUtils');\n ErrorUtils.setGlobalHandler(handleError);\n}\n\nfunction setUpRedBoxConsoleErrorHandler() {\n // ExceptionsManager transitively requires Promise so we install it after\n var ExceptionsManager = require('ExceptionsManager');\n var Platform = require('Platform');\n // TODO (#6925182): Enable console.error redbox on Android\n if (__DEV__ && Platform.OS === 'ios') {\n ExceptionsManager.installConsoleErrorReporter();\n }\n}\n\n/**\n * Sets up a set of window environment wrappers that ensure that the\n * BatchedBridge is flushed after each tick. In both the case of the\n * `UIWebView` based `RCTJavaScriptCaller` and `RCTContextCaller`, we\n * implement our own custom timing bridge that should be immune to\n * unexplainably dropped timing signals.\n */\nfunction setUpTimers() {\n var JSTimers = require('JSTimers');\n GLOBAL.setTimeout = JSTimers.setTimeout;\n GLOBAL.setInterval = JSTimers.setInterval;\n GLOBAL.setImmediate = JSTimers.setImmediate;\n GLOBAL.clearTimeout = JSTimers.clearTimeout;\n GLOBAL.clearInterval = JSTimers.clearInterval;\n GLOBAL.clearImmediate = JSTimers.clearImmediate;\n GLOBAL.cancelAnimationFrame = JSTimers.clearInterval;\n GLOBAL.requestAnimationFrame = function(cb) {\n /*requestAnimationFrame() { [native code] };*/ // Trick scroller library\n return JSTimers.requestAnimationFrame(cb); // into thinking it's native\n };\n}\n\nfunction setUpAlert() {\n var RCTAlertManager = require('NativeModules').AlertManager;\n if (!GLOBAL.alert) {\n GLOBAL.alert = function(text) {\n var alertOpts = {\n title: 'Alert',\n message: '' + text,\n buttons: [{'cancel': 'OK'}],\n };\n RCTAlertManager.alertWithArgs(alertOpts, null);\n };\n }\n}\n\nfunction setUpPromise() {\n // The native Promise implementation throws the following error:\n // ERROR: Event loop not supported.\n GLOBAL.Promise = require('Promise');\n}\n\nfunction setUpXHR() {\n // The native XMLHttpRequest in Chrome dev tools is CORS aware and won't\n // let you fetch anything from the internet\n GLOBAL.XMLHttpRequest = require('XMLHttpRequest');\n GLOBAL.FormData = require('FormData');\n\n var fetchPolyfill = require('fetch');\n GLOBAL.fetch = fetchPolyfill.fetch;\n GLOBAL.Headers = fetchPolyfill.Headers;\n GLOBAL.Request = fetchPolyfill.Request;\n GLOBAL.Response = fetchPolyfill.Response;\n}\n\nfunction setUpGeolocation() {\n GLOBAL.navigator = GLOBAL.navigator || {};\n GLOBAL.navigator.geolocation = require('Geolocation');\n}\n\nfunction setUpWebSockets() {\n GLOBAL.WebSocket = require('WebSocket');\n}\n\nfunction setupProfile() {\n console.profile = console.profile || GLOBAL.consoleProfile || function () {};\n console.profileEnd = console.profileEnd || GLOBAL.consoleProfileEnd || function () {};\n require('BridgeProfiling').swizzleReactPerf();\n}\n\nsetUpRedBoxErrorHandler();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpXHR();\nsetUpRedBoxConsoleErrorHandler();\nsetUpGeolocation();\nsetUpWebSockets();\nsetupProfile();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/DebugComponentHierarchy/RCTDebugComponentOwnership.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DebugComponentOwnershipModule=require('NativeModules').DebugComponentOwnershipModule;\nvar InspectorUtils=require('InspectorUtils');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nfunction componentToString(component){\nreturn component.getName?component.getName():'Unknown';}\n\n\nfunction getRootTagForTag(tag){\nvar rootNodeID=ReactNativeTagHandles.tagToRootNodeID[tag];\nif(!rootNodeID){\nreturn null;}\n\nvar rootID=ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootNodeID);\nif(!rootID){\nreturn null;}\n\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootID];}\n\n\nmodule.exports = {\n\n\n\n\n\n\n\n\ngetOwnerHierarchy:function(requestID,tag){\nvar rootTag=getRootTagForTag(tag);\nvar instance=InspectorUtils.findInstanceByNativeTag(rootTag,tag);\nvar ownerHierarchy=instance?\nInspectorUtils.getOwnerHierarchy(instance).map(componentToString):\nnull;\nDebugComponentOwnershipModule.receiveOwnershipHierarchy(requestID,tag,ownerHierarchy);}};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Utility class to provide the component owner hierarchy to native code for\n * debugging purposes.\n *\n * @providesModule RCTDebugComponentOwnership\n * @flow\n */\n\n'use strict';\n\nvar DebugComponentOwnershipModule = require('NativeModules').DebugComponentOwnershipModule;\nvar InspectorUtils = require('InspectorUtils');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nfunction componentToString(component) {\n return component.getName ? component.getName() : 'Unknown';\n}\n\nfunction getRootTagForTag(tag: number): ?number {\n var rootNodeID = ReactNativeTagHandles.tagToRootNodeID[tag];\n if (!rootNodeID) {\n return null;\n }\n var rootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootNodeID);\n if (!rootID) {\n return null;\n }\n return ReactNativeTagHandles.rootNodeIDToTag[rootID];\n}\n\nmodule.exports = {\n\n /**\n * Asynchronously returns the owner hierarchy as an array of strings. Request id is\n * passed along to the native module so that the native module can identify the\n * particular call instance.\n *\n * Example returned owner hierarchy: ['RootView', 'Dialog', 'TitleView', 'Text']\n */\n getOwnerHierarchy: function(requestID: number, tag: number) {\n var rootTag = getRootTagForTag(tag);\n var instance = InspectorUtils.findInstanceByNativeTag(rootTag, tag);\n var ownerHierarchy = instance ?\n InspectorUtils.getOwnerHierarchy(instance).map(componentToString) :\n null;\n DebugComponentOwnershipModule.receiveOwnershipHierarchy(requestID, tag, ownerHierarchy);\n },\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/DebugComponentHierarchy/RCTDebugComponentOwnership.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/NativeModules.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('BatchedBridge').RemoteModules;\n\nvar nativeModulePrefixNormalizer=require('nativeModulePrefixNormalizer');\n\nnativeModulePrefixNormalizer(NativeModules);\n\nmodule.exports = NativeModules;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NativeModules\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('BatchedBridge').RemoteModules;\n\nvar nativeModulePrefixNormalizer = require('nativeModulePrefixNormalizer');\n\nnativeModulePrefixNormalizer(NativeModules);\n\nmodule.exports = NativeModules;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/NativeModules.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar MessageQueue=require('MessageQueue');\n\nvar BatchedBridge=new MessageQueue(\n__fbBatchedBridgeConfig.remoteModuleConfig,\n__fbBatchedBridgeConfig.localModulesConfig);\n\n\nmodule.exports = BatchedBridge;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BatchedBridge\n */\n'use strict';\n\nlet MessageQueue = require('MessageQueue');\n\nlet BatchedBridge = new MessageQueue(\n __fbBatchedBridgeConfig.remoteModuleConfig,\n __fbBatchedBridgeConfig.localModulesConfig,\n);\n\nmodule.exports = BatchedBridge;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MessageQueue.js":{"data":{"code":"'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 _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');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BridgeProfiling=require('BridgeProfiling');\nvar ErrorUtils=require('ErrorUtils');\nvar JSTimersExecution=require('JSTimersExecution');\nvar ReactUpdates=require('ReactUpdates');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar stringifySafe=require('stringifySafe');\n\nvar MODULE_IDS=0;\nvar METHOD_IDS=1;\nvar PARAMS=2;\n\nvar SPY_MODE=false;\n\nvar MethodTypes=keyMirror({\nlocal:null,\nremote:null,\nremoteAsync:null});\n\n\nvar guard=function(fn){\ntry{\nfn();}\ncatch(error) {\nErrorUtils.reportFatalError(error);}};var \n\n\n\nMessageQueue=(function(){\n\nfunction MessageQueue(remoteModules,localModules,customRequire){var _this=this;_classCallCheck(this,MessageQueue);\nthis.RemoteModules = {};\n\nthis._require = customRequire || require;\nthis._queue = [[],[],[]];\nthis._moduleTable = {};\nthis._methodTable = {};\nthis._callbacks = [];\nthis._callbackID = 0;\n\n[\n'processBatch',\n'invokeCallbackAndReturnFlushedQueue',\n'callFunctionReturnFlushedQueue',\n'flushedQueue'].\nforEach(function(fn){return _this[fn] = _this[fn].bind(_this);});\n\nthis._genModules(remoteModules);\nlocalModules && this._genLookupTables(\nlocalModules,this._moduleTable,this._methodTable);\n\nif(__DEV__){\nthis._debugInfo = {};\nthis._remoteModuleTable = {};\nthis._remoteMethodTable = {};\nthis._genLookupTables(\nremoteModules,this._remoteModuleTable,this._remoteMethodTable);}}_createClass(MessageQueue,[{key:'processBatch',value:\n\n\n\n\n\n\nfunction processBatch(batch){var _this2=this;\nguard(function(){\nReactUpdates.batchedUpdates(function(){\nbatch.forEach(function(call){\nvar method=call.method === 'callFunctionReturnFlushedQueue'?\n'__callFunction':'__invokeCallback';\nguard(function(){return _this2[method].apply(_this2,call.args);});});\n\nBridgeProfiling.profile('ReactUpdates.batchedUpdates()');});\n\nBridgeProfiling.profileEnd();});\n\nreturn this.flushedQueue();}},{key:'callFunctionReturnFlushedQueue',value:\n\n\nfunction callFunctionReturnFlushedQueue(module,method,args){var _this3=this;\nguard(function(){return _this3.__callFunction(module,method,args);});\nreturn this.flushedQueue();}},{key:'invokeCallbackAndReturnFlushedQueue',value:\n\n\nfunction invokeCallbackAndReturnFlushedQueue(cbID,args){var _this4=this;\nguard(function(){return _this4.__invokeCallback(cbID,args);});\nreturn this.flushedQueue();}},{key:'flushedQueue',value:\n\n\nfunction flushedQueue(){\nBridgeProfiling.profile('JSTimersExecution.callImmediates()');\nguard(function(){return JSTimersExecution.callImmediates();});\nBridgeProfiling.profileEnd();\nvar queue=this._queue;\nthis._queue = [[],[],[]];\nreturn queue[0].length?queue:null;}},{key:'__nativeCall',value:\n\n\n\n\n\nfunction __nativeCall(module,method,params,onFail,onSucc){\nif(onFail || onSucc){\nif(__DEV__){\n\nthis._callbackID > 1 << 5 && (\nthis._debugInfo[this._callbackID >> 5] = null);\n\nthis._debugInfo[this._callbackID >> 1] = [module,method];\nif(SPY_MODE && isFinite(module)){\nconsole.log('JS->N : ' + this._remoteModuleTable[module] + '.' + \nthis._remoteMethodTable[module][method] + '(' + JSON.stringify(params) + ')');}}\n\n\nonFail && params.push(this._callbackID);\nthis._callbacks[this._callbackID++] = onFail;\nonSucc && params.push(this._callbackID);\nthis._callbacks[this._callbackID++] = onSucc;}\n\nthis._queue[MODULE_IDS].push(module);\nthis._queue[METHOD_IDS].push(method);\nthis._queue[PARAMS].push(params);}},{key:'__callFunction',value:\n\n\nfunction __callFunction(module,method,args){\nBridgeProfiling.profile(function(){return module + '.' + method + '(' + stringifySafe(args) + ')';});\nif(isFinite(module)){\nmethod = this._methodTable[module][method];\nmodule = this._moduleTable[module];}\n\nif(__DEV__ && SPY_MODE){\nconsole.log('N->JS : ' + module + '.' + method + '(' + JSON.stringify(args) + ')');}\n\nmodule = this._require(module);\nmodule[method].apply(module,args);\nBridgeProfiling.profileEnd();}},{key:'__invokeCallback',value:\n\n\nfunction __invokeCallback(cbID,args){\nBridgeProfiling.profile(\nfunction(){return 'MessageQueue.invokeCallback(' + cbID + ', ' + stringifySafe(args) + ')';});\nvar callback=this._callbacks[cbID];\nif(__DEV__){\nvar debug=this._debugInfo[cbID >> 1];\nvar _module=debug && this._remoteModuleTable[debug[0]];\nvar method=debug && this._remoteMethodTable[debug[0]][debug[1]];\nif(!callback){\nconsole.error('Callback with id ' + cbID + ': ' + _module + '.' + method + '() not found');}else \nif(SPY_MODE){\nconsole.log('N->JS : (' + JSON.stringify(args) + ')');}}\n\n\nthis._callbacks[cbID & ~1] = null;\nthis._callbacks[cbID | 1] = null;\ncallback.apply(null,args);\nBridgeProfiling.profileEnd();}},{key:'_genLookupTables',value:\n\n\n\n\n\nfunction _genLookupTables(localModules,moduleTable,methodTable){\nvar moduleNames=Object.keys(localModules);\nfor(var i=0,l=moduleNames.length;i < l;i++) {\nvar moduleName=moduleNames[i];\nvar methods=localModules[moduleName].methods;\nvar moduleID=localModules[moduleName].moduleID;\nmoduleTable[moduleID] = moduleName;\nmethodTable[moduleID] = {};\n\nvar methodNames=Object.keys(methods);\nfor(var j=0,k=methodNames.length;j < k;j++) {\nvar methodName=methodNames[j];\nvar methodConfig=methods[methodName];\nmethodTable[moduleID][methodConfig.methodID] = methodName;}}}},{key:'_genModules',value:\n\n\n\n\nfunction _genModules(remoteModules){\nvar moduleNames=Object.keys(remoteModules);\nfor(var i=0,l=moduleNames.length;i < l;i++) {\nvar moduleName=moduleNames[i];\nvar moduleConfig=remoteModules[moduleName];\nthis.RemoteModules[moduleName] = this._genModule({},moduleConfig);}}},{key:'_genModule',value:\n\n\n\nfunction _genModule(module,moduleConfig){\nvar methodNames=Object.keys(moduleConfig.methods);\nfor(var i=0,l=methodNames.length;i < l;i++) {\nvar methodName=methodNames[i];\nvar methodConfig=moduleConfig.methods[methodName];\nmodule[methodName] = this._genMethod(\nmoduleConfig.moduleID,methodConfig.methodID,methodConfig.type);}\n\nObject.assign(module,moduleConfig.constants);\nreturn module;}},{key:'_genMethod',value:\n\n\nfunction _genMethod(module,method,type){\nif(type === MethodTypes.local){\nreturn null;}\n\n\nvar self=this;\nif(type === MethodTypes.remoteAsync){\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nreturn new Promise(function(resolve,reject){\nself.__nativeCall(module,method,args,resolve,function(errorData){\nvar error=createErrorFromErrorData(errorData);\nreject(error);});});};}else \n\n\n\n{\nreturn function(){for(var _len2=arguments.length,args=Array(_len2),_key2=0;_key2 < _len2;_key2++) {args[_key2] = arguments[_key2];}\nvar lastArg=args.length > 0?args[args.length - 1]:null;\nvar secondLastArg=args.length > 1?args[args.length - 2]:null;\nvar hasSuccCB=typeof lastArg === 'function';\nvar hasErrorCB=typeof secondLastArg === 'function';\nhasErrorCB && invariant(\nhasSuccCB,\n'Cannot have a non-function arg after a function arg.');\n\nvar numCBs=hasSuccCB + hasErrorCB;\nvar onSucc=hasSuccCB?lastArg:null;\nvar onFail=hasErrorCB?secondLastArg:null;\nargs = args.slice(0,args.length - numCBs);\nreturn self.__nativeCall(module,method,args,onFail,onSucc);};}}}]);return MessageQueue;})();\n\n\n\n\n\n\nfunction createErrorFromErrorData(errorData){var \n\nmessage=\n\nerrorData.message;var extraErrorInfo=_objectWithoutProperties(errorData,['message']);\nvar error=new Error(message);\nerror.framesToPop = 1;\nreturn Object.assign(error,extraErrorInfo);}\n\n\nmodule.exports = MessageQueue;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule MessageQueue\n */\n\n/*eslint no-bitwise: 0*/\n\n'use strict';\n\nlet BridgeProfiling = require('BridgeProfiling');\nlet ErrorUtils = require('ErrorUtils');\nlet JSTimersExecution = require('JSTimersExecution');\nlet ReactUpdates = require('ReactUpdates');\n\nlet invariant = require('invariant');\nlet keyMirror = require('keyMirror');\nlet stringifySafe = require('stringifySafe');\n\nlet MODULE_IDS = 0;\nlet METHOD_IDS = 1;\nlet PARAMS = 2;\n\nlet SPY_MODE = false;\n\nlet MethodTypes = keyMirror({\n local: null,\n remote: null,\n remoteAsync: null,\n});\n\nvar guard = (fn) => {\n try {\n fn();\n } catch (error) {\n ErrorUtils.reportFatalError(error);\n }\n};\n\nclass MessageQueue {\n\n constructor(remoteModules, localModules, customRequire) {\n this.RemoteModules = {};\n\n this._require = customRequire || require;\n this._queue = [[],[],[]];\n this._moduleTable = {};\n this._methodTable = {};\n this._callbacks = [];\n this._callbackID = 0;\n\n [\n 'processBatch',\n 'invokeCallbackAndReturnFlushedQueue',\n 'callFunctionReturnFlushedQueue',\n 'flushedQueue',\n ].forEach((fn) => this[fn] = this[fn].bind(this));\n\n this._genModules(remoteModules);\n localModules && this._genLookupTables(\n localModules, this._moduleTable, this._methodTable);\n\n if (__DEV__) {\n this._debugInfo = {};\n this._remoteModuleTable = {};\n this._remoteMethodTable = {};\n this._genLookupTables(\n remoteModules, this._remoteModuleTable, this._remoteMethodTable);\n }\n }\n\n /**\n * Public APIs\n */\n processBatch(batch) {\n guard(() => {\n ReactUpdates.batchedUpdates(() => {\n batch.forEach((call) => {\n let method = call.method === 'callFunctionReturnFlushedQueue' ?\n '__callFunction' : '__invokeCallback';\n guard(() => this[method].apply(this, call.args));\n });\n BridgeProfiling.profile('ReactUpdates.batchedUpdates()');\n });\n BridgeProfiling.profileEnd();\n });\n return this.flushedQueue();\n }\n\n callFunctionReturnFlushedQueue(module, method, args) {\n guard(() => this.__callFunction(module, method, args));\n return this.flushedQueue();\n }\n\n invokeCallbackAndReturnFlushedQueue(cbID, args) {\n guard(() => this.__invokeCallback(cbID, args));\n return this.flushedQueue();\n }\n\n flushedQueue() {\n BridgeProfiling.profile('JSTimersExecution.callImmediates()');\n guard(() => JSTimersExecution.callImmediates());\n BridgeProfiling.profileEnd();\n let queue = this._queue;\n this._queue = [[],[],[]];\n return queue[0].length ? queue : null;\n }\n\n /**\n * \"Private\" methods\n */\n __nativeCall(module, method, params, onFail, onSucc) {\n if (onFail || onSucc) {\n if (__DEV__) {\n // eventually delete old debug info\n (this._callbackID > (1 << 5)) &&\n (this._debugInfo[this._callbackID >> 5] = null);\n\n this._debugInfo[this._callbackID >> 1] = [module, method];\n if (SPY_MODE && isFinite(module)) {\n console.log('JS->N : ' + this._remoteModuleTable[module] + '.' +\n this._remoteMethodTable[module][method] + '(' + JSON.stringify(params) + ')');\n }\n }\n onFail && params.push(this._callbackID);\n this._callbacks[this._callbackID++] = onFail;\n onSucc && params.push(this._callbackID);\n this._callbacks[this._callbackID++] = onSucc;\n }\n this._queue[MODULE_IDS].push(module);\n this._queue[METHOD_IDS].push(method);\n this._queue[PARAMS].push(params);\n }\n\n __callFunction(module, method, args) {\n BridgeProfiling.profile(() => `${module}.${method}(${stringifySafe(args)})`);\n if (isFinite(module)) {\n method = this._methodTable[module][method];\n module = this._moduleTable[module];\n }\n if (__DEV__ && SPY_MODE) {\n console.log('N->JS : ' + module + '.' + method + '(' + JSON.stringify(args) + ')');\n }\n module = this._require(module);\n module[method].apply(module, args);\n BridgeProfiling.profileEnd();\n }\n\n __invokeCallback(cbID, args) {\n BridgeProfiling.profile(\n () => `MessageQueue.invokeCallback(${cbID}, ${stringifySafe(args)})`);\n let callback = this._callbacks[cbID];\n if (__DEV__) {\n let debug = this._debugInfo[cbID >> 1];\n let module = debug && this._remoteModuleTable[debug[0]];\n let method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n if (!callback) {\n console.error(`Callback with id ${cbID}: ${module}.${method}() not found`);\n } else if (SPY_MODE) {\n console.log('N->JS : (' + JSON.stringify(args) + ')');\n }\n }\n this._callbacks[cbID & ~1] = null;\n this._callbacks[cbID | 1] = null;\n callback.apply(null, args);\n BridgeProfiling.profileEnd();\n }\n\n /**\n * Private helper methods\n */\n _genLookupTables(localModules, moduleTable, methodTable) {\n let moduleNames = Object.keys(localModules);\n for (var i = 0, l = moduleNames.length; i < l; i++) {\n let moduleName = moduleNames[i];\n let methods = localModules[moduleName].methods;\n let moduleID = localModules[moduleName].moduleID;\n moduleTable[moduleID] = moduleName;\n methodTable[moduleID] = {};\n\n let methodNames = Object.keys(methods);\n for (var j = 0, k = methodNames.length; j < k; j++) {\n let methodName = methodNames[j];\n let methodConfig = methods[methodName];\n methodTable[moduleID][methodConfig.methodID] = methodName;\n }\n }\n }\n\n _genModules(remoteModules) {\n let moduleNames = Object.keys(remoteModules);\n for (var i = 0, l = moduleNames.length; i < l; i++) {\n let moduleName = moduleNames[i];\n let moduleConfig = remoteModules[moduleName];\n this.RemoteModules[moduleName] = this._genModule({}, moduleConfig);\n }\n }\n\n _genModule(module, moduleConfig) {\n let methodNames = Object.keys(moduleConfig.methods);\n for (var i = 0, l = methodNames.length; i < l; i++) {\n let methodName = methodNames[i];\n let methodConfig = moduleConfig.methods[methodName];\n module[methodName] = this._genMethod(\n moduleConfig.moduleID, methodConfig.methodID, methodConfig.type);\n }\n Object.assign(module, moduleConfig.constants);\n return module;\n }\n\n _genMethod(module, method, type) {\n if (type === MethodTypes.local) {\n return null;\n }\n\n let self = this;\n if (type === MethodTypes.remoteAsync) {\n return function(...args) {\n return new Promise((resolve, reject) => {\n self.__nativeCall(module, method, args, resolve, (errorData) => {\n var error = createErrorFromErrorData(errorData);\n reject(error);\n });\n });\n };\n } else {\n return function(...args) {\n let lastArg = args.length > 0 ? args[args.length - 1] : null;\n let secondLastArg = args.length > 1 ? args[args.length - 2] : null;\n let hasSuccCB = typeof lastArg === 'function';\n let hasErrorCB = typeof secondLastArg === 'function';\n hasErrorCB && invariant(\n hasSuccCB,\n 'Cannot have a non-function arg after a function arg.'\n );\n let numCBs = hasSuccCB + hasErrorCB;\n let onSucc = hasSuccCB ? lastArg : null;\n let onFail = hasErrorCB ? secondLastArg : null;\n args = args.slice(0, args.length - numCBs);\n return self.__nativeCall(module, method, args, onFail, onSucc);\n };\n }\n }\n\n}\n\nfunction createErrorFromErrorData(errorData: ErrorData): Error {\n var {\n message,\n ...extraErrorInfo,\n } = errorData;\n var error = new Error(message);\n error.framesToPop = 1;\n return Object.assign(error, extraErrorInfo);\n}\n\nmodule.exports = MessageQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MessageQueue.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/BridgeProfiling.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar GLOBAL=GLOBAL || this;\n\nvar BridgeProfiling={\nprofile:function(profileName,args){\nif(GLOBAL.__BridgeProfilingIsProfiling){\nif(args){\ntry{\nargs = JSON.stringify(args);}\ncatch(err) {\nargs = err.message;}}\n\n\nprofileName = typeof profileName === 'function'?\nprofileName():profileName;\nconsole.profile(profileName,args);}},\n\n\n\nprofileEnd:function(profileName){\nif(GLOBAL.__BridgeProfilingIsProfiling){\nconsole.profileEnd(profileName);}},\n\n\n\nswizzleReactPerf:function(){\nvar ReactPerf=require('ReactPerf');\nvar originalMeasure=ReactPerf.measure;\nReactPerf.measure = function(objName,fnName,func){\nfunc = originalMeasure.call(ReactPerf,objName,fnName,func);\nreturn function(component){\nBridgeProfiling.profile();\nvar ret=func.apply(this,arguments);\nif(GLOBAL.__BridgeProfilingIsProfiling){\nvar name=this._instance && this._instance.constructor && (\nthis._instance.constructor.displayName || \nthis._instance.constructor.name);\nBridgeProfiling.profileEnd(objName + '.' + fnName + '(' + name + ')');}\n\nreturn ret;};};}};\n\n\n\n\n\nmodule.exports = BridgeProfiling;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BridgeProfiling\n * @flow\n */\n'use strict';\n\nvar GLOBAL = GLOBAL || this;\n\nvar BridgeProfiling = {\n profile(profileName?: any, args?: any) {\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n if (args) {\n try {\n args = JSON.stringify(args);\n } catch(err) {\n args = err.message;\n }\n }\n profileName = typeof profileName === 'function' ?\n profileName() : profileName;\n console.profile(profileName, args);\n }\n },\n\n profileEnd(profileName?: string) {\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n console.profileEnd(profileName);\n }\n },\n\n swizzleReactPerf() {\n var ReactPerf = require('ReactPerf');\n var originalMeasure = ReactPerf.measure;\n ReactPerf.measure = function (objName, fnName, func) {\n func = originalMeasure.call(ReactPerf, objName, fnName, func);\n return function (component) {\n BridgeProfiling.profile();\n var ret = func.apply(this, arguments);\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n var name = this._instance && this._instance.constructor &&\n (this._instance.constructor.displayName ||\n this._instance.constructor.name);\n BridgeProfiling.profileEnd(`${objName}.${fnName}(${name})`);\n }\n return ret;\n };\n };\n },\n};\n\nmodule.exports = BridgeProfiling;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/BridgeProfiling.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/ErrorUtils.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nGLOBAL=this;\n\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports = GLOBAL.ErrorUtils;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ErrorUtils\n */\n/* eslint-disable consistent-this, global-strict */\n\nvar GLOBAL = this;\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n *\n * However, we still want to treat ErrorUtils as a module so that other modules\n * that use it aren't just using a global variable, so simply export the global\n * variable here. ErrorUtils is originally defined in a file named error-guard.js.\n */\nmodule.exports = GLOBAL.ErrorUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/ErrorUtils.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimersExecution.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar performanceNow=require('performanceNow');\nvar warning=require('warning');\n\n\n\n\n\n\nvar JSTimersExecution={\nGUID:1,\nType:keyMirror({\nsetTimeout:null,\nsetInterval:null,\nrequestAnimationFrame:null,\nsetImmediate:null}),\n\n\n\ncallbacks:[],\ntypes:[],\ntimerIDs:[],\nimmediates:[],\n\n\n\n\n\n\ncallTimer:function(timerID){\nwarning(timerID <= JSTimersExecution.GUID,'Tried to call timer with ID ' + timerID + ' but no such timer exists');\nvar timerIndex=JSTimersExecution.timerIDs.indexOf(timerID);\n\n\n\n\n\nif(timerIndex === -1){\nreturn;}\n\nvar type=JSTimersExecution.types[timerIndex];\nvar callback=JSTimersExecution.callbacks[timerIndex];\n\n\nif(type === JSTimersExecution.Type.setTimeout || \ntype === JSTimersExecution.Type.setImmediate || \ntype === JSTimersExecution.Type.requestAnimationFrame){\nJSTimersExecution._clearIndex(timerIndex);}\n\n\ntry{\nif(type === JSTimersExecution.Type.setTimeout || \ntype === JSTimersExecution.Type.setInterval || \ntype === JSTimersExecution.Type.setImmediate){\ncallback();}else \nif(type === JSTimersExecution.Type.requestAnimationFrame){\nvar currentTime=performanceNow();\ncallback(currentTime);}else \n{\nconsole.error('Tried to call a callback with invalid type: ' + type);\nreturn;}}\n\ncatch(e) {\n\nJSTimersExecution.errors = JSTimersExecution.errors || [];\nJSTimersExecution.errors.push(e);}},\n\n\n\n\n\n\n\ncallTimers:function(timerIDs){\ninvariant(timerIDs.length !== 0,'Probably shouldn\\'t call \"callTimers\" with no timerIDs');\n\nJSTimersExecution.errors = null;\ntimerIDs.forEach(JSTimersExecution.callTimer);\n\nvar errors=JSTimersExecution.errors;\nif(errors){\nvar errorCount=errors.length;\nif(errorCount > 1){\n\n\nfor(var ii=1;ii < errorCount;ii++) {\nrequire('JSTimers').setTimeout(\n(function(error){throw error;}).bind(null,errors[ii]),\n0);}}\n\n\n\nthrow errors[0];}},\n\n\n\n\n\n\n\ncallImmediates:function(){\nJSTimersExecution.errors = null;\nwhile(JSTimersExecution.immediates.length !== 0) {\nJSTimersExecution.callTimer(JSTimersExecution.immediates.shift());}\n\nif(JSTimersExecution.errors){\nJSTimersExecution.errors.forEach(function(error){return (\nrequire('JSTimers').setTimeout(function(){throw error;},0));});}},\n\n\n\n\n_clearIndex:function(i){\nJSTimersExecution.timerIDs[i] = null;\nJSTimersExecution.callbacks[i] = null;\nJSTimersExecution.types[i] = null;}};\n\n\n\nmodule.exports = JSTimersExecution;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule JSTimersExecution\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar performanceNow = require('performanceNow');\nvar warning = require('warning');\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nvar JSTimersExecution = {\n GUID: 1,\n Type: keyMirror({\n setTimeout: null,\n setInterval: null,\n requestAnimationFrame: null,\n setImmediate: null,\n }),\n\n // Parallel arrays:\n callbacks: [],\n types: [],\n timerIDs: [],\n immediates: [],\n\n /**\n * Calls the callback associated with the ID. Also unregister that callback\n * if it was a one time timer (setTimeout), and not unregister it if it was\n * recurring (setInterval).\n */\n callTimer: function(timerID) {\n warning(timerID <= JSTimersExecution.GUID, 'Tried to call timer with ID ' + timerID + ' but no such timer exists');\n var timerIndex = JSTimersExecution.timerIDs.indexOf(timerID);\n // timerIndex of -1 means that no timer with that ID exists. There are\n // two situations when this happens, when a garbage timer ID was given\n // and when a previously existing timer was deleted before this callback\n // fired. In both cases we want to ignore the timer id, but in the former\n // case we warn as well.\n if (timerIndex === -1) {\n return;\n }\n var type = JSTimersExecution.types[timerIndex];\n var callback = JSTimersExecution.callbacks[timerIndex];\n\n // Clear the metadata\n if (type === JSTimersExecution.Type.setTimeout ||\n type === JSTimersExecution.Type.setImmediate ||\n type === JSTimersExecution.Type.requestAnimationFrame) {\n JSTimersExecution._clearIndex(timerIndex);\n }\n\n try {\n if (type === JSTimersExecution.Type.setTimeout ||\n type === JSTimersExecution.Type.setInterval ||\n type === JSTimersExecution.Type.setImmediate) {\n callback();\n } else if (type === JSTimersExecution.Type.requestAnimationFrame) {\n var currentTime = performanceNow();\n callback(currentTime);\n } else {\n console.error('Tried to call a callback with invalid type: ' + type);\n return;\n }\n } catch (e) {\n // Don't rethrow so that we can run every other timer.\n JSTimersExecution.errors = JSTimersExecution.errors || [];\n JSTimersExecution.errors.push(e);\n }\n },\n\n /**\n * This is called from the native side. We are passed an array of timerIDs,\n * and\n */\n callTimers: function(timerIDs) {\n invariant(timerIDs.length !== 0, 'Probably shouldn\\'t call \"callTimers\" with no timerIDs');\n\n JSTimersExecution.errors = null;\n timerIDs.forEach(JSTimersExecution.callTimer);\n\n var errors = JSTimersExecution.errors;\n if (errors) {\n var errorCount = errors.length;\n if (errorCount > 1) {\n // Throw all the other errors in a setTimeout, which will throw each\n // error one at a time\n for (var ii = 1; ii < errorCount; ii++) {\n require('JSTimers').setTimeout(\n ((error) => { throw error; }).bind(null, errors[ii]),\n 0\n );\n }\n }\n throw errors[0];\n }\n },\n\n /**\n * This is called after we execute any command we receive from native but\n * before we hand control back to native.\n */\n callImmediates: function() {\n JSTimersExecution.errors = null;\n while (JSTimersExecution.immediates.length !== 0) {\n JSTimersExecution.callTimer(JSTimersExecution.immediates.shift());\n }\n if (JSTimersExecution.errors) {\n JSTimersExecution.errors.forEach((error) =>\n require('JSTimers').setTimeout(() => { throw error; }, 0)\n );\n }\n },\n\n _clearIndex: function(i) {\n JSTimersExecution.timerIDs[i] = null;\n JSTimersExecution.callbacks[i] = null;\n JSTimersExecution.types[i] = null;\n },\n};\n\nmodule.exports = JSTimersExecution;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimersExecution.js"},"mtime":1435113427000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performanceNow.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nperformance=require('performance');\n\n\n\n\n\n\nif(!performance || !performance.now){\nperformance = Date;}\n\n\nvar performanceNow=performance.now.bind(performance);\n\nmodule.exports = performanceNow;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performanceNow\n * @typechecks\n */\n\nvar performance = require('performance');\n\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n * because of Facebook's testing infrastructure.\n */\nif (!performance || !performance.now) {\n performance = Date;\n}\n\nvar performanceNow = performance.now.bind(performance);\n\nmodule.exports = performanceNow;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performanceNow.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performance.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExecutionEnvironment=require('ExecutionEnvironment');\n\nvar performance;\n\nif(ExecutionEnvironment.canUseDOM){\nperformance = \nwindow.performance || \nwindow.msPerformance || \nwindow.webkitPerformance;}\n\n\nmodule.exports = performance || {};","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performance\n * @typechecks\n */\n\n\"use strict\";\n\nvar ExecutionEnvironment = require('ExecutionEnvironment');\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n performance =\n window.performance ||\n window.msPerformance ||\n window.webkitPerformance;\n}\n\nmodule.exports = performance || {};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performance.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/vendor/core/ExecutionEnvironment.ios.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar canUseDOM=false;\n\n\n\n\n\n\n\nvar ExecutionEnvironment={\n\ncanUseDOM:canUseDOM,\n\ncanUseWorkers:typeof Worker !== 'undefined',\n\ncanUseEventListeners:\ncanUseDOM && !!(window.addEventListener || window.attachEvent),\n\ncanUseViewport:canUseDOM && !!window.screen,\n\nisInWorker:!canUseDOM};\n\n\n\nmodule.exports = ExecutionEnvironment;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ExecutionEnvironment\n *\n * Stubs SignedSource<<7afee88a05412d0c4eef54817419648e>>\n */\n\n/*jslint evil: true */\n\n\"use strict\";\n\nvar canUseDOM = false;\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/vendor/core/ExecutionEnvironment.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimers.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTTiming=require('NativeModules').Timing;\nvar JSTimersExecution=require('JSTimersExecution');\n\n\n\n\n\n\nvar JSTimers={\nTypes:JSTimersExecution.Types,\n\n\n\n\n\n_getFreeIndex:function(){\nvar freeIndex=JSTimersExecution.timerIDs.indexOf(null);\nif(freeIndex === -1){\nfreeIndex = JSTimersExecution.timerIDs.length;}\n\nreturn freeIndex;},\n\n\n\n\n\n\nsetTimeout:function(func,duration){for(var _len=arguments.length,args=Array(_len > 2?_len - 2:0),_key=2;_key < _len;_key++) {args[_key - 2] = arguments[_key];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setTimeout;\nRCTTiming.createTimer(newID,duration,Date.now(),false);\nreturn newID;},\n\n\n\n\n\n\nsetInterval:function(func,duration){for(var _len2=arguments.length,args=Array(_len2 > 2?_len2 - 2:0),_key2=2;_key2 < _len2;_key2++) {args[_key2 - 2] = arguments[_key2];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setInterval;\nRCTTiming.createTimer(newID,duration,Date.now(),true);\nreturn newID;},\n\n\n\n\n\n\nsetImmediate:function(func){for(var _len3=arguments.length,args=Array(_len3 > 1?_len3 - 1:0),_key3=1;_key3 < _len3;_key3++) {args[_key3 - 1] = arguments[_key3];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setImmediate;\nJSTimersExecution.immediates.push(newID);\nreturn newID;},\n\n\n\n\n\nrequestAnimationFrame:function(func){\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = func;\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.requestAnimationFrame;\nRCTTiming.createTimer(newID,1,Date.now(),false);\nreturn newID;},\n\n\nclearTimeout:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearInterval:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearImmediate:function(timerID){\nJSTimers._clearTimerID(timerID);\nJSTimersExecution.immediates.splice(\nJSTimersExecution.immediates.indexOf(timerID),\n1);},\n\n\n\ncancelAnimationFrame:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\n_clearTimerID:function(timerID){\n\n\nif(timerID == null){\nreturn;}\n\n\nvar index=JSTimersExecution.timerIDs.indexOf(timerID);\n\nif(index !== -1){\nJSTimersExecution._clearIndex(index);\nif(JSTimersExecution.types[index] !== JSTimersExecution.Type.setImmediate){\nRCTTiming.deleteTimer(timerID);}}}};\n\n\n\n\n\nmodule.exports = JSTimers;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule JSTimers\n */\n'use strict';\n\n// Note that the module JSTimers is split into two in order to solve a cycle\n// in dependencies. NativeModules > BatchedBridge > MessageQueue > JSTimersExecution\nvar RCTTiming = require('NativeModules').Timing;\nvar JSTimersExecution = require('JSTimersExecution');\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nvar JSTimers = {\n Types: JSTimersExecution.Types,\n\n /**\n * Returns a free index if one is available, and the next consecutive index\n * otherwise.\n */\n _getFreeIndex: function() {\n var freeIndex = JSTimersExecution.timerIDs.indexOf(null);\n if (freeIndex === -1) {\n freeIndex = JSTimersExecution.timerIDs.length;\n }\n return freeIndex;\n },\n\n /**\n * @param {function} func Callback to be invoked after `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setTimeout: function(func, duration, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setTimeout;\n RCTTiming.createTimer(newID, duration, Date.now(), /** recurring */ false);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked every `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setInterval: function(func, duration, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setInterval;\n RCTTiming.createTimer(newID, duration, Date.now(), /** recurring */ true);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked before the end of the\n * current JavaScript execution loop.\n */\n setImmediate: function(func, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setImmediate;\n JSTimersExecution.immediates.push(newID);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked every frame.\n */\n requestAnimationFrame: function(func) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = func;\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.requestAnimationFrame;\n RCTTiming.createTimer(newID, 1, Date.now(), /** recurring */ false);\n return newID;\n },\n\n clearTimeout: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n clearInterval: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n clearImmediate: function(timerID) {\n JSTimers._clearTimerID(timerID);\n JSTimersExecution.immediates.splice(\n JSTimersExecution.immediates.indexOf(timerID),\n 1\n );\n },\n\n cancelAnimationFrame: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n _clearTimerID: function(timerID) {\n // JSTimersExecution.timerIDs contains nulls after timers have been removed;\n // ignore nulls upfront so indexOf doesn't find them\n if (timerID == null) {\n return;\n }\n\n var index = JSTimersExecution.timerIDs.indexOf(timerID);\n // See corresponding comment in `callTimers` for reasoning behind this\n if (index !== -1) {\n JSTimersExecution._clearIndex(index);\n if (JSTimersExecution.types[index] !== JSTimersExecution.Type.setImmediate) {\n RCTTiming.deleteTimer(timerID);\n }\n }\n },\n};\n\nmodule.exports = JSTimers;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimers.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/stringifySafe.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction stringifySafe(arg){\nvar ret;\nvar type=typeof arg;\nif(arg === undefined){\nret = 'undefined';}else \nif(arg === null){\nret = 'null';}else \nif(type === 'string'){\nret = '\"' + arg + '\"';}else \nif(type === 'function'){\ntry{\nret = arg.toString();}\ncatch(e) {\nret = '[function unknown]';}}else \n\n{\n\n\ntry{\nret = JSON.stringify(arg);}\ncatch(e) {\nif(typeof arg.toString === 'function'){\ntry{\nret = arg.toString();}\ncatch(E) {}}}}\n\n\n\nreturn ret || '[\"' + type + '\" failed to stringify]';}\n\n\nmodule.exports = stringifySafe;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule stringifySafe\n * @flow\n */\n'use strict';\n\n/**\n * Tries to stringify with JSON.stringify and toString, but catches exceptions\n * (e.g. from circular objects) and always returns a string and never throws.\n */\nfunction stringifySafe(arg: any): string {\n var ret;\n var type = typeof arg;\n if (arg === undefined) {\n ret = 'undefined';\n } else if (arg === null) {\n ret = 'null';\n } else if (type === 'string') {\n ret = '\"' + arg + '\"';\n } else if (type === 'function') {\n try {\n ret = arg.toString();\n } catch (e) {\n ret = '[function unknown]';\n }\n } else {\n // Perform a try catch, just in case the object has a circular\n // reference or stringify throws for some other reason.\n try {\n ret = JSON.stringify(arg);\n } catch (e) {\n if (typeof arg.toString === 'function') {\n try {\n ret = arg.toString();\n } catch (E) {}\n }\n }\n }\n return ret || '[\"' + type + '\" failed to stringify]';\n}\n\nmodule.exports = stringifySafe;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/stringifySafe.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/nativeModulePrefixNormalizer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction nativeModulePrefixNormalizer(\nmodules)\n{\nObject.keys(modules).forEach(function(moduleName){\nvar strippedName=moduleName.replace(/^(RCT|RK)/,'');\nif(modules['RCT' + strippedName] && modules['RK' + strippedName]){\nthrow new Error(\n'Module cannot be registered as both RCT and RK: ' + moduleName);}\n\n\nif(strippedName !== moduleName){\nmodules[strippedName] = modules[moduleName];\ndelete modules[moduleName];}});}\n\n\n\n\nmodule.exports = nativeModulePrefixNormalizer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule nativeModulePrefixNormalizer\n * @flow\n */\n'use strict';\n\n// Dirty hack to support old (RK) and new (RCT) native module name conventions\nfunction nativeModulePrefixNormalizer(\n modules: {[key: string]: any}\n): void {\n Object.keys(modules).forEach((moduleName) => {\n var strippedName = moduleName.replace(/^(RCT|RK)/, '');\n if (modules['RCT' + strippedName] && modules['RK' + strippedName]) {\n throw new Error(\n 'Module cannot be registered as both RCT and RK: ' + moduleName\n );\n }\n if (strippedName !== moduleName) {\n modules[strippedName] = modules[moduleName];\n delete modules[moduleName];\n }\n });\n}\n\nmodule.exports = nativeModulePrefixNormalizer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/nativeModulePrefixNormalizer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorUtils.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nfunction traverseOwnerTreeUp(hierarchy,instance){\nif(instance){\nhierarchy.unshift(instance);\ntraverseOwnerTreeUp(hierarchy,instance._currentElement._owner);}}\n\n\n\nfunction findInstance(component,targetID){\nif(targetID === findRootNodeID(component)){\nreturn component;}\n\nif(component._renderedComponent){\nreturn findInstance(component._renderedComponent,targetID);}else \n{\nfor(var key in component._renderedChildren) {\nvar child=component._renderedChildren[key];\nif(ReactInstanceHandles.isAncestorIDOf(findRootNodeID(child),targetID)){\nvar instance=findInstance(child,targetID);\nif(instance){\nreturn instance;}}}}}\n\n\n\n\n\n\nfunction findRootNodeID(component){\nvar internalInstance=ReactInstanceMap.get(component);\nreturn internalInstance?internalInstance._rootNodeID:component._rootNodeID;}\n\n\nfunction findInstanceByNativeTag(rootTag,nativeTag){\nvar containerID=ReactNativeTagHandles.tagToRootNodeID[rootTag];\nvar rootInstance=ReactNativeMount._instancesByContainerID[containerID];\nvar targetID=ReactNativeTagHandles.tagToRootNodeID[nativeTag];\nif(!targetID){\nreturn undefined;}\n\nreturn findInstance(rootInstance,targetID);}\n\n\nfunction getOwnerHierarchy(instance){\nvar hierarchy=[];\ntraverseOwnerTreeUp(hierarchy,instance);\nreturn hierarchy;}\n\n\nmodule.exports = {findInstanceByNativeTag:findInstanceByNativeTag,getOwnerHierarchy:getOwnerHierarchy};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorUtils\n */\n'use strict';\n\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nfunction traverseOwnerTreeUp(hierarchy, instance) {\n if (instance) {\n hierarchy.unshift(instance);\n traverseOwnerTreeUp(hierarchy, instance._currentElement._owner);\n }\n}\n\nfunction findInstance(component, targetID) {\n if (targetID === findRootNodeID(component)) {\n return component;\n }\n if (component._renderedComponent) {\n return findInstance(component._renderedComponent, targetID);\n } else {\n for (var key in component._renderedChildren) {\n var child = component._renderedChildren[key];\n if (ReactInstanceHandles.isAncestorIDOf(findRootNodeID(child), targetID)) {\n var instance = findInstance(child, targetID);\n if (instance) {\n return instance;\n }\n }\n }\n }\n}\n\nfunction findRootNodeID(component) {\n var internalInstance = ReactInstanceMap.get(component);\n return internalInstance ? internalInstance._rootNodeID : component._rootNodeID;\n}\n\nfunction findInstanceByNativeTag(rootTag, nativeTag) {\n var containerID = ReactNativeTagHandles.tagToRootNodeID[rootTag];\n var rootInstance = ReactNativeMount._instancesByContainerID[containerID];\n var targetID = ReactNativeTagHandles.tagToRootNodeID[nativeTag];\n if (!targetID) {\n return undefined;\n }\n return findInstance(rootInstance, targetID);\n}\n\nfunction getOwnerHierarchy(instance) {\n var hierarchy = [];\n traverseOwnerTreeUp(hierarchy, instance);\n return hierarchy;\n}\n\nmodule.exports = {findInstanceByNativeTag, getOwnerHierarchy};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorUtils.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeMount.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\nvar ReactUpdates=require('ReactUpdates');\n\nvar emptyObject=require('emptyObject');\nvar instantiateReactComponent=require('instantiateReactComponent');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\n\nfunction instanceNumberToChildRootID(rootNodeID,instanceNumber){\nreturn rootNodeID + '[' + instanceNumber + ']';}\n\n\n\n\n\n\n\n\n\n\nfunction mountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer,\ntransaction){\nvar markup=ReactReconciler.mountComponent(\ncomponentInstance,rootID,transaction,emptyObject);\n\ncomponentInstance._isTopLevel = true;\nReactNativeMount._mountImageIntoNode(markup,container);}\n\n\n\n\n\n\n\n\n\nfunction batchedMountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer){\nvar transaction=ReactUpdates.ReactReconcileTransaction.getPooled();\ntransaction.perform(\nmountComponentIntoNode,\nnull,\ncomponentInstance,\nrootID,\ncontainer,\ntransaction);\n\nReactUpdates.ReactReconcileTransaction.release(transaction);}\n\n\n\n\n\n\nvar ReactNativeMount={\ninstanceCount:0,\n\n_instancesByContainerID:{},\n\n\n\n\n\nrenderComponent:function(\nnextElement,\ncontainerTag,\ncallback)\n{\nvar topRootNodeID=ReactNativeTagHandles.tagToRootNodeID[containerTag];\nif(topRootNodeID){\nvar prevComponent=ReactNativeMount._instancesByContainerID[topRootNodeID];\nif(prevComponent){\nvar prevElement=prevComponent._currentElement;\nif(shouldUpdateReactComponent(prevElement,nextElement)){\nReactUpdateQueue.enqueueElementInternal(prevComponent,nextElement);\nif(callback){\nReactUpdateQueue.enqueueCallbackInternal(prevComponent,callback);}\n\nreturn prevComponent;}else \n{\nReactNativeMount.unmountComponentAtNode(containerTag);}}}\n\n\n\n\nif(!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)){\nconsole.error('You cannot render into anything but a top root');\nreturn;}\n\n\nvar topRootNodeID=ReactNativeTagHandles.allocateRootNodeIDForTag(containerTag);\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\ntopRootNodeID,\ncontainerTag);\n\n\nvar instance=instantiateReactComponent(nextElement);\nReactNativeMount._instancesByContainerID[topRootNodeID] = instance;\n\nvar childRootNodeID=instanceNumberToChildRootID(\ntopRootNodeID,\nReactNativeMount.instanceCount++);\n\n\n\n\n\n\nReactUpdates.batchedUpdates(\nbatchedMountComponentIntoNode,\ninstance,\nchildRootNodeID,\ntopRootNodeID);\n\nvar component=instance.getPublicInstance();\nif(callback){\ncallback.call(component);}\n\nreturn component;},\n\n\n\n\n\n\n_mountImageIntoNode:ReactPerf.measure(\n\n'ReactComponentBrowserEnvironment',\n'mountImageIntoNode',\nfunction(mountImage,containerID){\n\n\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\nmountImage.rootNodeID,\nmountImage.tag);\n\nvar addChildTags=[mountImage.tag];\nvar addAtIndices=[0];\nRCTUIManager.manageChildren(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID),\nnull,\nnull,\naddChildTags,\naddAtIndices,\nnull);}),\n\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentAtNodeAndRemoveContainer:function(\ncontainerTag)\n{\nReactNativeMount.unmountComponentAtNode(containerTag);\n\nRCTUIManager.removeRootView(containerTag);},\n\n\n\n\n\n\n\nunmountComponentAtNode:function(containerTag){\nif(!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)){\nconsole.error('You cannot render into anything but a top root');\nreturn false;}\n\n\nvar containerID=ReactNativeTagHandles.tagToRootNodeID[containerTag];\nvar instance=ReactNativeMount._instancesByContainerID[containerID];\nif(!instance){\nreturn false;}\n\nReactNativeMount.unmountComponentFromNode(instance,containerID);\ndelete ReactNativeMount._instancesByContainerID[containerID];\nreturn true;},\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentFromNode:function(\ninstance,\ncontainerID)\n{\n\nReactReconciler.unmountComponent(instance);\nvar containerTag=\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID);\nRCTUIManager.removeSubviewsFromContainerWithID(containerTag);},\n\n\ngetNode:function(id){\nreturn id;}};\n\n\n\nReactNativeMount.renderComponent = ReactPerf.measure(\n'ReactMount',\n'_renderNewRootComponent',\nReactNativeMount.renderComponent);\n\n\nmodule.exports = ReactNativeMount;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeMount\n * @flow\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\nvar ReactUpdates = require('ReactUpdates');\n\nvar emptyObject = require('emptyObject');\nvar instantiateReactComponent = require('instantiateReactComponent');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\n\nfunction instanceNumberToChildRootID(rootNodeID, instanceNumber) {\n return rootNodeID + '[' + instanceNumber + ']';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {number} rootID ID of the root node.\n * @param {number} container container element to mount into.\n * @param {ReactReconcileTransaction} transaction\n */\nfunction mountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n transaction) {\n var markup = ReactReconciler.mountComponent(\n componentInstance, rootID, transaction, emptyObject\n );\n componentInstance._isTopLevel = true;\n ReactNativeMount._mountImageIntoNode(markup, container);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {number} rootID ID of the root node.\n * @param {number} container container element to mount into.\n */\nfunction batchedMountComponentIntoNode(\n componentInstance,\n rootID,\n container) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n transaction.perform(\n mountComponentIntoNode,\n null,\n componentInstance,\n rootID,\n container,\n transaction\n );\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * As soon as `ReactMount` is refactored to not rely on the DOM, we can share\n * code between the two. For now, we'll hard code the ID logic.\n */\nvar ReactNativeMount = {\n instanceCount: 0,\n\n _instancesByContainerID: {},\n\n /**\n * @param {ReactComponent} instance Instance to render.\n * @param {containerTag} containerView Handle to native view tag\n */\n renderComponent: function(\n nextElement: ReactElement,\n containerTag: number,\n callback?: ?(() => void)\n ): ?ReactComponent {\n var topRootNodeID = ReactNativeTagHandles.tagToRootNodeID[containerTag];\n if (topRootNodeID) {\n var prevComponent = ReactNativeMount._instancesByContainerID[topRootNodeID];\n if (prevComponent) {\n var prevElement = prevComponent._currentElement;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n return prevComponent;\n } else {\n ReactNativeMount.unmountComponentAtNode(containerTag);\n }\n }\n }\n\n if (!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)) {\n console.error('You cannot render into anything but a top root');\n return;\n }\n\n var topRootNodeID = ReactNativeTagHandles.allocateRootNodeIDForTag(containerTag);\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n topRootNodeID,\n containerTag\n );\n\n var instance = instantiateReactComponent(nextElement);\n ReactNativeMount._instancesByContainerID[topRootNodeID] = instance;\n\n var childRootNodeID = instanceNumberToChildRootID(\n topRootNodeID,\n ReactNativeMount.instanceCount++\n );\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(\n batchedMountComponentIntoNode,\n instance,\n childRootNodeID,\n topRootNodeID\n );\n var component = instance.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * @param {View} view View tree image.\n * @param {number} containerViewID View to insert sub-view into.\n */\n _mountImageIntoNode: ReactPerf.measure(\n // FIXME(frantic): #4441289 Hack to avoid modifying react-tools\n 'ReactComponentBrowserEnvironment',\n 'mountImageIntoNode',\n function(mountImage, containerID) {\n // Since we now know that the `mountImage` has been mounted, we can\n // mark it as such.\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n mountImage.rootNodeID,\n mountImage.tag\n );\n var addChildTags = [mountImage.tag];\n var addAtIndices = [0];\n RCTUIManager.manageChildren(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID),\n null, // moveFromIndices\n null, // moveToIndices\n addChildTags,\n addAtIndices,\n null // removeAtIndices\n );\n }\n ),\n\n /**\n * Standard unmounting of the component that is rendered into `containerID`,\n * but will also execute a command to remove the actual container view\n * itself. This is useful when a client is cleaning up a React tree, and also\n * knows that the container will no longer be needed. When executing\n * asynchronously, it's easier to just have this method be the one that calls\n * for removal of the view.\n */\n unmountComponentAtNodeAndRemoveContainer: function(\n containerTag: number\n ) {\n ReactNativeMount.unmountComponentAtNode(containerTag);\n // call back into native to remove all of the subviews from this container\n RCTUIManager.removeRootView(containerTag);\n },\n\n /**\n * Unmount component at container ID by iterating through each child component\n * that has been rendered and unmounting it. There should just be one child\n * component at this time.\n */\n unmountComponentAtNode: function(containerTag: number): boolean {\n if (!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)) {\n console.error('You cannot render into anything but a top root');\n return false;\n }\n\n var containerID = ReactNativeTagHandles.tagToRootNodeID[containerTag];\n var instance = ReactNativeMount._instancesByContainerID[containerID];\n if (!instance) {\n return false;\n }\n ReactNativeMount.unmountComponentFromNode(instance, containerID);\n delete ReactNativeMount._instancesByContainerID[containerID];\n return true;\n },\n\n /**\n * Unmounts a component and sends messages back to iOS to remove its subviews.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {string} containerID ID of container we're removing from.\n * @final\n * @internal\n * @see {ReactNativeMount.unmountComponentAtNode}\n */\n unmountComponentFromNode: function(\n instance: ReactComponent,\n containerID: string\n ) {\n // Call back into native to remove all of the subviews from this container\n ReactReconciler.unmountComponent(instance);\n var containerTag =\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID);\n RCTUIManager.removeSubviewsFromContainerWithID(containerTag);\n },\n\n getNode: function(id: T): T {\n return id;\n }\n};\n\nReactNativeMount.renderComponent = ReactPerf.measure(\n 'ReactMount',\n '_renderNewRootComponent',\n ReactNativeMount.renderComponent\n);\n\nmodule.exports = ReactNativeMount;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeMount.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTagHandles.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar INITIAL_TAG_COUNT=1;\nvar NATIVE_TOP_ROOT_ID_SEPARATOR='{TOP_LEVEL}';\nvar ReactNativeTagHandles={\ntagsStartAt:INITIAL_TAG_COUNT,\ntagCount:INITIAL_TAG_COUNT,\n\nallocateTag:function(){\n\nwhile(this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) {\nReactNativeTagHandles.tagCount++;}\n\nvar tag=ReactNativeTagHandles.tagCount;\nReactNativeTagHandles.tagCount++;\nreturn tag;},\n\n\n\n\n\n\n\n\n\n\n\nassociateRootNodeIDWithMountedNodeHandle:function(\nrootNodeID,\ntag)\n{\nwarning(rootNodeID && tag,'Root node or tag is null when associating');\nif(rootNodeID && tag){\nReactNativeTagHandles.tagToRootNodeID[tag] = rootNodeID;\nReactNativeTagHandles.rootNodeIDToTag[rootNodeID] = tag;}},\n\n\n\nallocateRootNodeIDForTag:function(tag){\ninvariant(\nthis.reactTagIsNativeTopRootID(tag),\n'Expect a native root tag, instead got ',tag);\n\nreturn '.r[' + tag + ']' + NATIVE_TOP_ROOT_ID_SEPARATOR;},\n\n\nreactTagIsNativeTopRootID:function(reactTag){\n\nreturn reactTag % 10 === 1;},\n\n\ngetNativeTopRootIDFromNodeID:function(nodeID){\nif(!nodeID){\nreturn null;}\n\nvar index=nodeID.indexOf(NATIVE_TOP_ROOT_ID_SEPARATOR);\nif(index === -1){\nreturn null;}\n\nreturn nodeID.substr(0,index + NATIVE_TOP_ROOT_ID_SEPARATOR.length);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmostRecentMountedNodeHandleForRootNodeID:function(\nrootNodeID)\n{\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];},\n\n\ntagToRootNodeID:[],\n\nrootNodeIDToTag:{}};\n\n\nmodule.exports = ReactNativeTagHandles;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeTagHandles\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * Keeps track of allocating and associating native \"tags\" which are numeric,\n * unique view IDs. All the native tags are negative numbers, to avoid\n * collisions, but in the JS we keep track of them as positive integers to store\n * them effectively in Arrays. So we must refer to them as \"inverses\" of the\n * native tags (that are * normally negative).\n *\n * It *must* be the case that every `rootNodeID` always maps to the exact same\n * `tag` forever. The easiest way to accomplish this is to never delete\n * anything from this table.\n * Why: Because `dangerouslyReplaceNodeWithMarkupByID` relies on being able to\n * unmount a component with a `rootNodeID`, then mount a new one in its place,\n */\nvar INITIAL_TAG_COUNT = 1;\nvar NATIVE_TOP_ROOT_ID_SEPARATOR = '{TOP_LEVEL}';\nvar ReactNativeTagHandles = {\n tagsStartAt: INITIAL_TAG_COUNT,\n tagCount: INITIAL_TAG_COUNT,\n\n allocateTag: function(): number {\n // Skip over root IDs as those are reserved for native\n while (this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) {\n ReactNativeTagHandles.tagCount++;\n }\n var tag = ReactNativeTagHandles.tagCount;\n ReactNativeTagHandles.tagCount++;\n return tag;\n },\n\n /**\n * This associates the *last* observed *native* mounting between `rootNodeID`\n * and some `tag`. This association doesn't imply that `rootNodeID` is still\n * natively mounted as `tag`. The only reason why we don't clear the\n * association when the `rootNodeID` is unmounted, is that we don't have a\n * convenient time to disassociate them (otherwise we would).\n * `unmountComponent` isn't the correct time because that doesn't imply that\n * the native node has been natively unmounted.\n */\n associateRootNodeIDWithMountedNodeHandle: function(\n rootNodeID: ?string,\n tag: ?number\n ) {\n warning(rootNodeID && tag, 'Root node or tag is null when associating');\n if (rootNodeID && tag) {\n ReactNativeTagHandles.tagToRootNodeID[tag] = rootNodeID;\n ReactNativeTagHandles.rootNodeIDToTag[rootNodeID] = tag;\n }\n },\n\n allocateRootNodeIDForTag: function(tag: number): string {\n invariant(\n this.reactTagIsNativeTopRootID(tag),\n 'Expect a native root tag, instead got ', tag\n );\n return '.r[' + tag + ']' + NATIVE_TOP_ROOT_ID_SEPARATOR;\n },\n\n reactTagIsNativeTopRootID: function(reactTag: number): bool {\n // We reserve all tags that are 1 mod 10 for native root views\n return reactTag % 10 === 1;\n },\n\n getNativeTopRootIDFromNodeID: function(nodeID: ?string): ?string {\n if (!nodeID) {\n return null;\n }\n var index = nodeID.indexOf(NATIVE_TOP_ROOT_ID_SEPARATOR);\n if (index === -1) {\n return null;\n }\n return nodeID.substr(0, index + NATIVE_TOP_ROOT_ID_SEPARATOR.length);\n },\n\n /**\n * Returns the native `nodeHandle` (`tag`) that was most recently *natively*\n * mounted at the `rootNodeID`. Just because a React component has been\n * mounted, that doesn't mean that its native node has been mounted. The\n * native node is mounted when we actually make the call to insert the\n * `nodeHandle` (`tag`) into the native hierarchy.\n *\n * @param {string} rootNodeID Root node ID to find most recently mounted tag\n * for. Again, this doesn't imply that it is still currently mounted.\n * @return {number} Tag ID of native view for most recent mounting of\n * `rootNodeID`.\n */\n mostRecentMountedNodeHandleForRootNodeID: function(\n rootNodeID: string\n ): number {\n return ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];\n },\n\n tagToRootNodeID: ([] : Array),\n\n rootNodeIDToTag: ({} : {[key: string]: number})\n};\n\nmodule.exports = ReactNativeTagHandles;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTagHandles.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/instantiateReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCompositeComponent=require('ReactCompositeComponent');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactNativeComponent=require('ReactNativeComponent');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\nvar ReactCompositeComponentWrapper=function(){};\nassign(\nReactCompositeComponentWrapper.prototype,\nReactCompositeComponent.Mixin,\n{\n_instantiateReactComponent:instantiateReactComponent});\n\n\n\n\n\n\n\n\n\n\nfunction isInternalComponentType(type){\nreturn (\ntypeof type === 'function' && \ntypeof type.prototype !== 'undefined' && \ntypeof type.prototype.mountComponent === 'function' && \ntypeof type.prototype.receiveComponent === 'function');}\n\n\n\n\n\n\n\n\n\n\n\nfunction instantiateReactComponent(node,parentCompositeType){\nvar instance;\n\nif(node === null || node === false){\nnode = ReactEmptyComponent.emptyElement;}\n\n\nif(typeof node === 'object'){\nvar element=node;\nif(__DEV__){\nwarning(\nelement && (typeof element.type === 'function' || \ntypeof element.type === 'string'),\n'Only functions or strings can be mounted as React components.');}\n\n\n\n\nif(parentCompositeType === element.type && \ntypeof element.type === 'string'){\n\ninstance = ReactNativeComponent.createInternalComponent(element);}else \n\n\nif(isInternalComponentType(element.type)){\n\n\n\ninstance = new element.type(element);}else \n{\ninstance = new ReactCompositeComponentWrapper();}}else \n\nif(typeof node === 'string' || typeof node === 'number'){\ninstance = ReactNativeComponent.createInstanceForText(node);}else \n{\ninvariant(\nfalse,\n'Encountered invalid React node of type %s',\ntypeof node);}\n\n\n\nif(__DEV__){\nwarning(\ntypeof instance.construct === 'function' && \ntypeof instance.mountComponent === 'function' && \ntypeof instance.receiveComponent === 'function' && \ntypeof instance.unmountComponent === 'function',\n'Only React Components can be mounted.');}\n\n\n\n\ninstance.construct(node);\n\n\n\n\ninstance._mountIndex = 0;\ninstance._mountImage = null;\n\nif(__DEV__){\ninstance._isOwnerNecessary = false;\ninstance._warnedAboutRefsInRender = false;}\n\n\n\n\nif(__DEV__){\nif(Object.preventExtensions){\nObject.preventExtensions(instance);}}\n\n\n\nreturn instance;}\n\n\nmodule.exports = instantiateReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule instantiateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactCompositeComponent = require('ReactCompositeComponent');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactNativeComponent = require('ReactNativeComponent');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function() { };\nassign(\n ReactCompositeComponentWrapper.prototype,\n ReactCompositeComponent.Mixin,\n {\n _instantiateReactComponent: instantiateReactComponent\n }\n);\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return (\n typeof type === 'function' &&\n typeof type.prototype !== 'undefined' &&\n typeof type.prototype.mountComponent === 'function' &&\n typeof type.prototype.receiveComponent === 'function'\n );\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {*} parentCompositeType The composite type that resolved this.\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, parentCompositeType) {\n var instance;\n\n if (node === null || node === false) {\n node = ReactEmptyComponent.emptyElement;\n }\n\n if (typeof node === 'object') {\n var element = node;\n if (__DEV__) {\n warning(\n element && (typeof element.type === 'function' ||\n typeof element.type === 'string'),\n 'Only functions or strings can be mounted as React components.'\n );\n }\n\n // Special case string values\n if (parentCompositeType === element.type &&\n typeof element.type === 'string') {\n // Avoid recursion if the wrapper renders itself.\n instance = ReactNativeComponent.createInternalComponent(element);\n // All native components are currently wrapped in a composite so we're\n // safe to assume that this is what we should instantiate.\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // represenations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n } else {\n instance = new ReactCompositeComponentWrapper();\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactNativeComponent.createInstanceForText(node);\n } else {\n invariant(\n false,\n 'Encountered invalid React node of type %s',\n typeof node\n );\n }\n\n if (__DEV__) {\n warning(\n typeof instance.construct === 'function' &&\n typeof instance.mountComponent === 'function' &&\n typeof instance.receiveComponent === 'function' &&\n typeof instance.unmountComponent === 'function',\n 'Only React Components can be mounted.'\n );\n }\n\n // Sets up the instance. This can probably just move into the constructor now.\n instance.construct(node);\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (__DEV__) {\n instance._isOwnerNecessary = false;\n instance._warnedAboutRefsInRender = false;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (__DEV__) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/instantiateReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCompositeComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactNativeComponent=require('ReactNativeComponent');\nvar ReactPerf=require('ReactPerf');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdates=require('ReactUpdates');\n\nvar assign=require('Object.assign');\nvar emptyObject=require('emptyObject');\nvar invariant=require('invariant');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\nvar warning=require('warning');\n\nfunction getDeclarationErrorAddendum(component){\nvar owner=component._currentElement._owner || null;\nif(owner){\nvar name=owner.getName();\nif(name){\nreturn ' Check the render method of `' + name + '`.';}}\n\n\nreturn '';}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar nextMountID=1;\n\n\n\n\nvar ReactCompositeComponentMixin={\n\n\n\n\n\n\n\n\nconstruct:function(element){\nthis._currentElement = element;\nthis._rootNodeID = null;\nthis._instance = null;\n\n\nthis._pendingElement = null;\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\n\nthis._renderedComponent = null;\n\nthis._context = null;\nthis._mountOrder = 0;\nthis._isTopLevel = false;\n\n\nthis._pendingCallbacks = null;},\n\n\n\n\n\n\n\n\n\n\n\nmountComponent:function(rootID,transaction,context){\nthis._context = context;\nthis._mountOrder = nextMountID++;\nthis._rootNodeID = rootID;\n\nvar publicProps=this._processProps(this._currentElement.props);\nvar publicContext=this._processContext(this._currentElement._context);\n\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\n\n\nvar inst=new Component(publicProps,publicContext);\n\nif(__DEV__){\n\n\nwarning(\ninst.render != null,\n'%s(...): No `render` method found on the returned component ' + \n'instance: you may have forgotten to define `render` in your ' + \n'component or you may have accidentally tried to render an element ' + \n'whose type is a function that isn\\'t a React component.',\nComponent.displayName || Component.name || 'Component');}\n\n\n\n\n\ninst.props = publicProps;\ninst.context = publicContext;\ninst.refs = emptyObject;\n\nthis._instance = inst;\n\n\nReactInstanceMap.set(inst,this);\n\nif(__DEV__){\nthis._warnIfContextsDiffer(this._currentElement._context,context);}\n\n\nif(__DEV__){\n\n\n\nwarning(\n!inst.getInitialState || \ninst.getInitialState.isReactClassApproved,\n'getInitialState was defined on %s, a plain JavaScript class. ' + \n'This is only supported for classes created using React.createClass. ' + \n'Did you mean to define a state property instead?',\nthis.getName() || 'a component');\n\nwarning(\n!inst.getDefaultProps || \ninst.getDefaultProps.isReactClassApproved,\n'getDefaultProps was defined on %s, a plain JavaScript class. ' + \n'This is only supported for classes created using React.createClass. ' + \n'Use a static property to define defaultProps instead.',\nthis.getName() || 'a component');\n\nwarning(\n!inst.propTypes,\n'propTypes was defined as an instance property on %s. Use a static ' + \n'property to define propTypes instead.',\nthis.getName() || 'a component');\n\nwarning(\n!inst.contextTypes,\n'contextTypes was defined as an instance property on %s. Use a ' + \n'static property to define contextTypes instead.',\nthis.getName() || 'a component');\n\nwarning(\ntypeof inst.componentShouldUpdate !== 'function',\n'%s has a method called ' + \n'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + \n'The name is phrased as a question because the function is ' + \n'expected to return a value.',\nthis.getName() || 'A component');}\n\n\n\nvar initialState=inst.state;\nif(initialState === undefined){\ninst.state = initialState = null;}\n\ninvariant(\ntypeof initialState === 'object' && !Array.isArray(initialState),\n'%s.state: must be set to an object or null',\nthis.getName() || 'ReactCompositeComponent');\n\n\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\n\nvar renderedElement;\n\nvar previouslyMounting=ReactLifeCycle.currentlyMountingInstance;\nReactLifeCycle.currentlyMountingInstance = this;\ntry{\nif(inst.componentWillMount){\ninst.componentWillMount();\n\n\nif(this._pendingStateQueue){\ninst.state = this._processPendingState(inst.props,inst.context);}}\n\n\n\nrenderedElement = this._renderValidatedComponent();}finally \n{\nReactLifeCycle.currentlyMountingInstance = previouslyMounting;}\n\n\nthis._renderedComponent = this._instantiateReactComponent(\nrenderedElement,\nthis._currentElement.type);\n\n\nvar markup=ReactReconciler.mountComponent(\nthis._renderedComponent,\nrootID,\ntransaction,\nthis._processChildContext(context));\n\nif(inst.componentDidMount){\ntransaction.getReactMountReady().enqueue(inst.componentDidMount,inst);}\n\n\nreturn markup;},\n\n\n\n\n\n\n\n\nunmountComponent:function(){\nvar inst=this._instance;\n\nif(inst.componentWillUnmount){\nvar previouslyUnmounting=ReactLifeCycle.currentlyUnmountingInstance;\nReactLifeCycle.currentlyUnmountingInstance = this;\ntry{\ninst.componentWillUnmount();}finally \n{\nReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;}}\n\n\n\nReactReconciler.unmountComponent(this._renderedComponent);\nthis._renderedComponent = null;\n\n\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\nthis._pendingCallbacks = null;\nthis._pendingElement = null;\n\n\n\nthis._context = null;\nthis._rootNodeID = null;\n\n\n\n\nReactInstanceMap.remove(inst);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_setPropsInternal:function(partialProps,callback){\n\n\nvar element=this._pendingElement || this._currentElement;\nthis._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nassign({},element.props,partialProps));\n\nReactUpdates.enqueueUpdate(this,callback);},\n\n\n\n\n\n\n\n\n\n\n_maskContext:function(context){\nvar maskedContext=null;\n\n\nif(typeof this._currentElement.type === 'string'){\nreturn emptyObject;}\n\nvar contextTypes=this._currentElement.type.contextTypes;\nif(!contextTypes){\nreturn emptyObject;}\n\nmaskedContext = {};\nfor(var contextName in contextTypes) {\nmaskedContext[contextName] = context[contextName];}\n\nreturn maskedContext;},\n\n\n\n\n\n\n\n\n\n\n_processContext:function(context){\nvar maskedContext=this._maskContext(context);\nif(__DEV__){\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\nif(Component.contextTypes){\nthis._checkPropTypes(\nComponent.contextTypes,\nmaskedContext,\nReactPropTypeLocations.context);}}\n\n\n\nreturn maskedContext;},\n\n\n\n\n\n\n\n_processChildContext:function(currentContext){\nvar inst=this._instance;\nvar childContext=inst.getChildContext && inst.getChildContext();\nif(childContext){\ninvariant(\ntypeof inst.constructor.childContextTypes === 'object',\n'%s.getChildContext(): childContextTypes must be defined in order to ' + \n'use getChildContext().',\nthis.getName() || 'ReactCompositeComponent');\n\nif(__DEV__){\nthis._checkPropTypes(\ninst.constructor.childContextTypes,\nchildContext,\nReactPropTypeLocations.childContext);}\n\n\nfor(var name in childContext) {\ninvariant(\nname in inst.constructor.childContextTypes,\n'%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\nthis.getName() || 'ReactCompositeComponent',\nname);}\n\n\nreturn assign({},currentContext,childContext);}\n\nreturn currentContext;},\n\n\n\n\n\n\n\n\n\n\n\n_processProps:function(newProps){\nif(__DEV__){\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\nif(Component.propTypes){\nthis._checkPropTypes(\nComponent.propTypes,\nnewProps,\nReactPropTypeLocations.prop);}}\n\n\n\nreturn newProps;},\n\n\n\n\n\n\n\n\n\n\n_checkPropTypes:function(propTypes,props,location){\n\n\nvar componentName=this.getName();\nfor(var propName in propTypes) {\nif(propTypes.hasOwnProperty(propName)){\nvar error;\ntry{\n\n\ninvariant(\ntypeof propTypes[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually ' + \n'from React.PropTypes.',\ncomponentName || 'React class',\nReactPropTypeLocationNames[location],\npropName);\n\nerror = propTypes[propName](props,propName,componentName,location);}\ncatch(ex) {\nerror = ex;}\n\nif(error instanceof Error){\n\n\n\nvar addendum=getDeclarationErrorAddendum(this);\n\nif(location === ReactPropTypeLocations.prop){\n\nwarning(\nfalse,\n'Failed Composite propType: %s%s',\nerror.message,\naddendum);}else \n\n{\nwarning(\nfalse,\n'Failed Context Types: %s%s',\nerror.message,\naddendum);}}}}},\n\n\n\n\n\n\n\nreceiveComponent:function(nextElement,transaction,nextContext){\nvar prevElement=this._currentElement;\nvar prevContext=this._context;\n\nthis._pendingElement = null;\n\nthis.updateComponent(\ntransaction,\nprevElement,\nnextElement,\nprevContext,\nnextContext);},\n\n\n\n\n\n\n\n\n\n\nperformUpdateIfNecessary:function(transaction){\nif(this._pendingElement != null){\nReactReconciler.receiveComponent(\nthis,\nthis._pendingElement || this._currentElement,\ntransaction,\nthis._context);}\n\n\n\nif(this._pendingStateQueue !== null || this._pendingForceUpdate){\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(\nthis._currentElement);}\n\n\n\nthis.updateComponent(\ntransaction,\nthis._currentElement,\nthis._currentElement,\nthis._context,\nthis._context);}},\n\n\n\n\n\n\n\n\n_warnIfContextsDiffer:function(ownerBasedContext,parentBasedContext){\nownerBasedContext = this._maskContext(ownerBasedContext);\nparentBasedContext = this._maskContext(parentBasedContext);\nvar parentKeys=Object.keys(parentBasedContext).sort();\nvar displayName=this.getName() || 'ReactCompositeComponent';\nfor(var i=0;i < parentKeys.length;i++) {\nvar key=parentKeys[i];\nwarning(\nownerBasedContext[key] === parentBasedContext[key],\n'owner-based and parent-based contexts differ ' + \n'(values: `%s` vs `%s`) for key (%s) while mounting %s ' + \n'(see: http://fb.me/react-context-by-parent)',\nownerBasedContext[key],\nparentBasedContext[key],\nkey,\ndisplayName);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nupdateComponent:function(\ntransaction,\nprevParentElement,\nnextParentElement,\nprevUnmaskedContext,\nnextUnmaskedContext)\n{\nvar inst=this._instance;\n\nvar nextContext=inst.context;\nvar nextProps=inst.props;\n\n\nif(prevParentElement !== nextParentElement){\nnextContext = this._processContext(nextParentElement._context);\nnextProps = this._processProps(nextParentElement.props);\n\nif(__DEV__){\nif(nextUnmaskedContext != null){\nthis._warnIfContextsDiffer(\nnextParentElement._context,\nnextUnmaskedContext);}}\n\n\n\n\n\n\n\n\nif(inst.componentWillReceiveProps){\ninst.componentWillReceiveProps(nextProps,nextContext);}}\n\n\n\nvar nextState=this._processPendingState(nextProps,nextContext);\n\nvar shouldUpdate=\nthis._pendingForceUpdate || \n!inst.shouldComponentUpdate || \ninst.shouldComponentUpdate(nextProps,nextState,nextContext);\n\nif(__DEV__){\nwarning(\ntypeof shouldUpdate !== 'undefined',\n'%s.shouldComponentUpdate(): Returned undefined instead of a ' + \n'boolean value. Make sure to return true or false.',\nthis.getName() || 'ReactCompositeComponent');}\n\n\n\nif(shouldUpdate){\nthis._pendingForceUpdate = false;\n\nthis._performComponentUpdate(\nnextParentElement,\nnextProps,\nnextState,\nnextContext,\ntransaction,\nnextUnmaskedContext);}else \n\n{\n\n\nthis._currentElement = nextParentElement;\nthis._context = nextUnmaskedContext;\ninst.props = nextProps;\ninst.state = nextState;\ninst.context = nextContext;}},\n\n\n\n_processPendingState:function(props,context){\nvar inst=this._instance;\nvar queue=this._pendingStateQueue;\nvar replace=this._pendingReplaceState;\nthis._pendingReplaceState = false;\nthis._pendingStateQueue = null;\n\nif(!queue){\nreturn inst.state;}\n\n\nvar nextState=assign({},replace?queue[0]:inst.state);\nfor(var i=replace?1:0;i < queue.length;i++) {\nvar partial=queue[i];\nassign(\nnextState,\ntypeof partial === 'function'?\npartial.call(inst,nextState,props,context):\npartial);}\n\n\n\nreturn nextState;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_performComponentUpdate:function(\nnextElement,\nnextProps,\nnextState,\nnextContext,\ntransaction,\nunmaskedContext)\n{\nvar inst=this._instance;\n\nvar prevProps=inst.props;\nvar prevState=inst.state;\nvar prevContext=inst.context;\n\nif(inst.componentWillUpdate){\ninst.componentWillUpdate(nextProps,nextState,nextContext);}\n\n\nthis._currentElement = nextElement;\nthis._context = unmaskedContext;\ninst.props = nextProps;\ninst.state = nextState;\ninst.context = nextContext;\n\nthis._updateRenderedComponent(transaction,unmaskedContext);\n\nif(inst.componentDidUpdate){\ntransaction.getReactMountReady().enqueue(\ninst.componentDidUpdate.bind(inst,prevProps,prevState,prevContext),\ninst);}},\n\n\n\n\n\n\n\n\n\n\n_updateRenderedComponent:function(transaction,context){\nvar prevComponentInstance=this._renderedComponent;\nvar prevRenderedElement=prevComponentInstance._currentElement;\nvar nextRenderedElement=this._renderValidatedComponent();\nif(shouldUpdateReactComponent(prevRenderedElement,nextRenderedElement)){\nReactReconciler.receiveComponent(\nprevComponentInstance,\nnextRenderedElement,\ntransaction,\nthis._processChildContext(context));}else \n\n{\n\nvar thisID=this._rootNodeID;\nvar prevComponentID=prevComponentInstance._rootNodeID;\nReactReconciler.unmountComponent(prevComponentInstance);\n\nthis._renderedComponent = this._instantiateReactComponent(\nnextRenderedElement,\nthis._currentElement.type);\n\nvar nextMarkup=ReactReconciler.mountComponent(\nthis._renderedComponent,\nthisID,\ntransaction,\nthis._processChildContext(context));\n\nthis._replaceNodeWithMarkupByID(prevComponentID,nextMarkup);}},\n\n\n\n\n\n\n_replaceNodeWithMarkupByID:function(prevComponentID,nextMarkup){\nReactComponentEnvironment.replaceNodeWithMarkupByID(\nprevComponentID,\nnextMarkup);},\n\n\n\n\n\n\n_renderValidatedComponentWithoutOwnerOrContext:function(){\nvar inst=this._instance;\nvar renderedComponent=inst.render();\nif(__DEV__){\n\nif(typeof renderedComponent === 'undefined' && \ninst.render._isMockFunction){\n\n\nrenderedComponent = null;}}\n\n\n\nreturn renderedComponent;},\n\n\n\n\n\n_renderValidatedComponent:function(){\nvar renderedComponent;\nvar previousContext=ReactContext.current;\nReactContext.current = this._processChildContext(\nthis._currentElement._context);\n\nReactCurrentOwner.current = this;\ntry{\nrenderedComponent = \nthis._renderValidatedComponentWithoutOwnerOrContext();}finally \n{\nReactContext.current = previousContext;\nReactCurrentOwner.current = null;}\n\ninvariant(\n\nrenderedComponent === null || renderedComponent === false || \nReactElement.isValidElement(renderedComponent),\n'%s.render(): A valid ReactComponent must be returned. You may have ' + \n'returned undefined, an array or some other invalid object.',\nthis.getName() || 'ReactCompositeComponent');\n\nreturn renderedComponent;},\n\n\n\n\n\n\n\n\n\n\nattachRef:function(ref,component){\nvar inst=this.getPublicInstance();\nvar refs=inst.refs === emptyObject?inst.refs = {}:inst.refs;\nrefs[ref] = component.getPublicInstance();},\n\n\n\n\n\n\n\n\n\ndetachRef:function(ref){\nvar refs=this.getPublicInstance().refs;\ndelete refs[ref];},\n\n\n\n\n\n\n\n\ngetName:function(){\nvar type=this._currentElement.type;\nvar constructor=this._instance && this._instance.constructor;\nreturn (\ntype.displayName || constructor && constructor.displayName || \ntype.name || constructor && constructor.name || \nnull);},\n\n\n\n\n\n\n\n\n\n\n\ngetPublicInstance:function(){\nreturn this._instance;},\n\n\n\n_instantiateReactComponent:null};\n\n\n\nReactPerf.measureMethods(\nReactCompositeComponentMixin,\n'ReactCompositeComponent',\n{\nmountComponent:'mountComponent',\nupdateComponent:'updateComponent',\n_renderValidatedComponent:'_renderValidatedComponent'});\n\n\n\nvar ReactCompositeComponent={\n\nMixin:ReactCompositeComponentMixin};\n\n\n\nmodule.exports = ReactCompositeComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCompositeComponent\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactNativeComponent = require('ReactNativeComponent');\nvar ReactPerf = require('ReactPerf');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdates = require('ReactUpdates');\n\nvar assign = require('Object.assign');\nvar emptyObject = require('emptyObject');\nvar invariant = require('invariant');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\nvar warning = require('warning');\n\nfunction getDeclarationErrorAddendum(component) {\n var owner = component._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponentMixin = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function(element) {\n this._currentElement = element;\n this._rootNodeID = null;\n this._instance = null;\n\n // See ReactUpdateQueue\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedComponent = null;\n\n this._context = null;\n this._mountOrder = 0;\n this._isTopLevel = false;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(rootID, transaction, context) {\n this._context = context;\n this._mountOrder = nextMountID++;\n this._rootNodeID = rootID;\n\n var publicProps = this._processProps(this._currentElement.props);\n var publicContext = this._processContext(this._currentElement._context);\n\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n\n // Initialize the public class\n var inst = new Component(publicProps, publicContext);\n\n if (__DEV__) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n warning(\n inst.render != null,\n '%s(...): No `render` method found on the returned component ' +\n 'instance: you may have forgotten to define `render` in your ' +\n 'component or you may have accidentally tried to render an element ' +\n 'whose type is a function that isn\\'t a React component.',\n Component.displayName || Component.name || 'Component'\n );\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (__DEV__) {\n this._warnIfContextsDiffer(this._currentElement._context, context);\n }\n\n if (__DEV__) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n warning(\n !inst.getInitialState ||\n inst.getInitialState.isReactClassApproved,\n 'getInitialState was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Did you mean to define a state property instead?',\n this.getName() || 'a component'\n );\n warning(\n !inst.getDefaultProps ||\n inst.getDefaultProps.isReactClassApproved,\n 'getDefaultProps was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Use a static property to define defaultProps instead.',\n this.getName() || 'a component'\n );\n warning(\n !inst.propTypes,\n 'propTypes was defined as an instance property on %s. Use a static ' +\n 'property to define propTypes instead.',\n this.getName() || 'a component'\n );\n warning(\n !inst.contextTypes,\n 'contextTypes was defined as an instance property on %s. Use a ' +\n 'static property to define contextTypes instead.',\n this.getName() || 'a component'\n );\n warning(\n typeof inst.componentShouldUpdate !== 'function',\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n (this.getName() || 'A component')\n );\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.state: must be set to an object or null',\n this.getName() || 'ReactCompositeComponent'\n );\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var renderedElement;\n\n var previouslyMounting = ReactLifeCycle.currentlyMountingInstance;\n ReactLifeCycle.currentlyMountingInstance = this;\n try {\n if (inst.componentWillMount) {\n inst.componentWillMount();\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n renderedElement = this._renderValidatedComponent();\n } finally {\n ReactLifeCycle.currentlyMountingInstance = previouslyMounting;\n }\n\n this._renderedComponent = this._instantiateReactComponent(\n renderedElement,\n this._currentElement.type // The wrapping type\n );\n\n var markup = ReactReconciler.mountComponent(\n this._renderedComponent,\n rootID,\n transaction,\n this._processChildContext(context)\n );\n if (inst.componentDidMount) {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function() {\n var inst = this._instance;\n\n if (inst.componentWillUnmount) {\n var previouslyUnmounting = ReactLifeCycle.currentlyUnmountingInstance;\n ReactLifeCycle.currentlyUnmountingInstance = this;\n try {\n inst.componentWillUnmount();\n } finally {\n ReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;\n }\n }\n\n ReactReconciler.unmountComponent(this._renderedComponent);\n this._renderedComponent = null;\n\n // Reset pending fields\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Schedule a partial update to the props. Only used for internal testing.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @internal\n */\n _setPropsInternal: function(partialProps, callback) {\n // This is a deoptimized path. We optimize for always having an element.\n // This creates an extra internal element.\n var element = this._pendingElement || this._currentElement;\n this._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n assign({}, element.props, partialProps)\n );\n ReactUpdates.enqueueUpdate(this, callback);\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function(context) {\n var maskedContext = null;\n // This really should be getting the component class for the element,\n // but we know that we're not going to need it for built-ins.\n if (typeof this._currentElement.type === 'string') {\n return emptyObject;\n }\n var contextTypes = this._currentElement.type.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function(context) {\n var maskedContext = this._maskContext(context);\n if (__DEV__) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.contextTypes) {\n this._checkPropTypes(\n Component.contextTypes,\n maskedContext,\n ReactPropTypeLocations.context\n );\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function(currentContext) {\n var inst = this._instance;\n var childContext = inst.getChildContext && inst.getChildContext();\n if (childContext) {\n invariant(\n typeof inst.constructor.childContextTypes === 'object',\n '%s.getChildContext(): childContextTypes must be defined in order to ' +\n 'use getChildContext().',\n this.getName() || 'ReactCompositeComponent'\n );\n if (__DEV__) {\n this._checkPropTypes(\n inst.constructor.childContextTypes,\n childContext,\n ReactPropTypeLocations.childContext\n );\n }\n for (var name in childContext) {\n invariant(\n name in inst.constructor.childContextTypes,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n this.getName() || 'ReactCompositeComponent',\n name\n );\n }\n return assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Processes props by setting default values for unspecified props and\n * asserting that the props are valid. Does not mutate its argument; returns\n * a new props object with defaults merged in.\n *\n * @param {object} newProps\n * @return {object}\n * @private\n */\n _processProps: function(newProps) {\n if (__DEV__) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.propTypes) {\n this._checkPropTypes(\n Component.propTypes,\n newProps,\n ReactPropTypeLocations.prop\n );\n }\n }\n return newProps;\n },\n\n /**\n * Assert that the props are valid\n *\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkPropTypes: function(propTypes, props, location) {\n // TODO: Stop validating prop types here and only use the element\n // validation.\n var componentName = this.getName();\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually ' +\n 'from React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n );\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error) {\n // We may want to extend this logic for similar errors in\n // React.render calls, so I'm abstracting it away into\n // a function to minimize refactoring in the future\n var addendum = getDeclarationErrorAddendum(this);\n\n if (location === ReactPropTypeLocations.prop) {\n // Preface gives us something to blacklist in warning module\n warning(\n false,\n 'Failed Composite propType: %s%s',\n error.message,\n addendum\n );\n } else {\n warning(\n false,\n 'Failed Context Types: %s%s',\n error.message,\n addendum\n );\n }\n }\n }\n }\n },\n\n receiveComponent: function(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(\n transaction,\n prevElement,\n nextElement,\n prevContext,\n nextContext\n );\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(\n this,\n this._pendingElement || this._currentElement,\n transaction,\n this._context\n );\n }\n\n if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n this._currentElement\n );\n }\n\n this.updateComponent(\n transaction,\n this._currentElement,\n this._currentElement,\n this._context,\n this._context\n );\n }\n },\n\n /**\n * Compare two contexts, warning if they are different\n * TODO: Remove this check when owner-context is removed\n */\n _warnIfContextsDiffer: function(ownerBasedContext, parentBasedContext) {\n ownerBasedContext = this._maskContext(ownerBasedContext);\n parentBasedContext = this._maskContext(parentBasedContext);\n var parentKeys = Object.keys(parentBasedContext).sort();\n var displayName = this.getName() || 'ReactCompositeComponent';\n for (var i = 0; i < parentKeys.length; i++) {\n var key = parentKeys[i];\n warning(\n ownerBasedContext[key] === parentBasedContext[key],\n 'owner-based and parent-based contexts differ ' +\n '(values: `%s` vs `%s`) for key (%s) while mounting %s ' +\n '(see: http://fb.me/react-context-by-parent)',\n ownerBasedContext[key],\n parentBasedContext[key],\n key,\n displayName\n );\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function(\n transaction,\n prevParentElement,\n nextParentElement,\n prevUnmaskedContext,\n nextUnmaskedContext\n ) {\n var inst = this._instance;\n\n var nextContext = inst.context;\n var nextProps = inst.props;\n\n // Distinguish between a props update versus a simple state update\n if (prevParentElement !== nextParentElement) {\n nextContext = this._processContext(nextParentElement._context);\n nextProps = this._processProps(nextParentElement.props);\n\n if (__DEV__) {\n if (nextUnmaskedContext != null) {\n this._warnIfContextsDiffer(\n nextParentElement._context,\n nextUnmaskedContext\n );\n }\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n\n if (inst.componentWillReceiveProps) {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n\n var shouldUpdate =\n this._pendingForceUpdate ||\n !inst.shouldComponentUpdate ||\n inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\n if (__DEV__) {\n warning(\n typeof shouldUpdate !== 'undefined',\n '%s.shouldComponentUpdate(): Returned undefined instead of a ' +\n 'boolean value. Make sure to return true or false.',\n this.getName() || 'ReactCompositeComponent'\n );\n }\n\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(\n nextParentElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n nextUnmaskedContext\n );\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n var nextState = assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n assign(\n nextState,\n typeof partial === 'function' ?\n partial.call(inst, nextState, props, context) :\n partial\n );\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function(\n nextElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n unmaskedContext\n ) {\n var inst = this._instance;\n\n var prevProps = inst.props;\n var prevState = inst.state;\n var prevContext = inst.context;\n\n if (inst.componentWillUpdate) {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (inst.componentDidUpdate) {\n transaction.getReactMountReady().enqueue(\n inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext),\n inst\n );\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(\n prevComponentInstance,\n nextRenderedElement,\n transaction,\n this._processChildContext(context)\n );\n } else {\n // These two IDs are actually the same! But nothing should rely on that.\n var thisID = this._rootNodeID;\n var prevComponentID = prevComponentInstance._rootNodeID;\n ReactReconciler.unmountComponent(prevComponentInstance);\n\n this._renderedComponent = this._instantiateReactComponent(\n nextRenderedElement,\n this._currentElement.type\n );\n var nextMarkup = ReactReconciler.mountComponent(\n this._renderedComponent,\n thisID,\n transaction,\n this._processChildContext(context)\n );\n this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup);\n }\n },\n\n /**\n * @protected\n */\n _replaceNodeWithMarkupByID: function(prevComponentID, nextMarkup) {\n ReactComponentEnvironment.replaceNodeWithMarkupByID(\n prevComponentID,\n nextMarkup\n );\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function() {\n var inst = this._instance;\n var renderedComponent = inst.render();\n if (__DEV__) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof renderedComponent === 'undefined' &&\n inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedComponent = null;\n }\n }\n\n return renderedComponent;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function() {\n var renderedComponent;\n var previousContext = ReactContext.current;\n ReactContext.current = this._processChildContext(\n this._currentElement._context\n );\n ReactCurrentOwner.current = this;\n try {\n renderedComponent =\n this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactContext.current = previousContext;\n ReactCurrentOwner.current = null;\n }\n invariant(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false ||\n ReactElement.isValidElement(renderedComponent),\n '%s.render(): A valid ReactComponent must be returned. You may have ' +\n 'returned undefined, an array or some other invalid object.',\n this.getName() || 'ReactCompositeComponent'\n );\n return renderedComponent;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function(ref, component) {\n var inst = this.getPublicInstance();\n var refs = inst.refs === emptyObject ? (inst.refs = {}) : inst.refs;\n refs[ref] = component.getPublicInstance();\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return (\n type.displayName || (constructor && constructor.displayName) ||\n type.name || (constructor && constructor.name) ||\n null\n );\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by React.render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function() {\n return this._instance;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nReactPerf.measureMethods(\n ReactCompositeComponentMixin,\n 'ReactCompositeComponent',\n {\n mountComponent: 'mountComponent',\n updateComponent: 'updateComponent',\n _renderValidatedComponent: '_renderValidatedComponent'\n }\n);\n\nvar ReactCompositeComponent = {\n\n Mixin: ReactCompositeComponentMixin\n\n};\n\nmodule.exports = ReactCompositeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCompositeComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactComponentEnvironment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar injected=false;\n\nvar ReactComponentEnvironment={\n\n\n\n\n\n\nunmountIDFromEnvironment:null,\n\n\n\n\n\nreplaceNodeWithMarkupByID:null,\n\n\n\n\n\nprocessChildrenUpdates:null,\n\ninjection:{\ninjectEnvironment:function(environment){\ninvariant(\n!injected,\n'ReactCompositeComponent: injectEnvironment() can only be called once.');\n\nReactComponentEnvironment.unmountIDFromEnvironment = \nenvironment.unmountIDFromEnvironment;\nReactComponentEnvironment.replaceNodeWithMarkupByID = \nenvironment.replaceNodeWithMarkupByID;\nReactComponentEnvironment.processChildrenUpdates = \nenvironment.processChildrenUpdates;\ninjected = true;}}};\n\n\n\n\n\nmodule.exports = ReactComponentEnvironment;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentEnvironment\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable environment dependent cleanup hook. (server vs.\n * browser etc). Example: A browser system caches DOM nodes based on component\n * ID and must remove that cache entry when this instance is unmounted.\n */\n unmountIDFromEnvironment: null,\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkupByID: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function(environment) {\n invariant(\n !injected,\n 'ReactCompositeComponent: injectEnvironment() can only be called once.'\n );\n ReactComponentEnvironment.unmountIDFromEnvironment =\n environment.unmountIDFromEnvironment;\n ReactComponentEnvironment.replaceNodeWithMarkupByID =\n environment.replaceNodeWithMarkupByID;\n ReactComponentEnvironment.processChildrenUpdates =\n environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactComponentEnvironment.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/shouldUpdateReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction shouldUpdateReactComponent(prevElement,nextElement){\nif(prevElement != null && nextElement != null){\nvar prevType=typeof prevElement;\nvar nextType=typeof nextElement;\nif(prevType === 'string' || prevType === 'number'){\nreturn nextType === 'string' || nextType === 'number';}else \n{\nif(nextType === 'object' && \nprevElement.type === nextElement.type && \nprevElement.key === nextElement.key){\nvar ownersMatch=prevElement._owner === nextElement._owner;\nvar prevName=null;\nvar nextName=null;\nvar nextDisplayName=null;\nif(__DEV__){\nif(!ownersMatch){\nif(prevElement._owner != null && \nprevElement._owner.getPublicInstance() != null && \nprevElement._owner.getPublicInstance().constructor != null){\nprevName = \nprevElement._owner.getPublicInstance().constructor.displayName;}\n\nif(nextElement._owner != null && \nnextElement._owner.getPublicInstance() != null && \nnextElement._owner.getPublicInstance().constructor != null){\nnextName = \nnextElement._owner.getPublicInstance().constructor.displayName;}\n\nif(nextElement.type != null && \nnextElement.type.displayName != null){\nnextDisplayName = nextElement.type.displayName;}\n\nif(nextElement.type != null && typeof nextElement.type === 'string'){\nnextDisplayName = nextElement.type;}\n\nif(typeof nextElement.type !== 'string' || \nnextElement.type === 'input' || \nnextElement.type === 'textarea'){\nif(prevElement._owner != null && \nprevElement._owner._isOwnerNecessary === false || \nnextElement._owner != null && \nnextElement._owner._isOwnerNecessary === false){\nif(prevElement._owner != null){\nprevElement._owner._isOwnerNecessary = true;}\n\nif(nextElement._owner != null){\nnextElement._owner._isOwnerNecessary = true;}\n\nwarning(\nfalse,\n'<%s /> is being rendered by both %s and %s using the same ' + \n'key (%s) in the same place. Currently, this means that ' + \n'they don\\'t preserve state. This behavior should be very ' + \n'rare so we\\'re considering deprecating it. Please contact ' + \n'the React team and explain your use case so that we can ' + \n'take that into consideration.',\nnextDisplayName || 'Unknown Component',\nprevName || '[Unknown]',\nnextName || '[Unknown]',\nprevElement.key);}}}}\n\n\n\n\n\nreturn ownersMatch;}}}\n\n\n\nreturn false;}\n\n\nmodule.exports = shouldUpdateReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shouldUpdateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar warning = require('warning');\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n if (prevElement != null && nextElement != null) {\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return (nextType === 'string' || nextType === 'number');\n } else {\n if (nextType === 'object' &&\n prevElement.type === nextElement.type &&\n prevElement.key === nextElement.key) {\n var ownersMatch = prevElement._owner === nextElement._owner;\n var prevName = null;\n var nextName = null;\n var nextDisplayName = null;\n if (__DEV__) {\n if (!ownersMatch) {\n if (prevElement._owner != null &&\n prevElement._owner.getPublicInstance() != null &&\n prevElement._owner.getPublicInstance().constructor != null) {\n prevName =\n prevElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement._owner != null &&\n nextElement._owner.getPublicInstance() != null &&\n nextElement._owner.getPublicInstance().constructor != null) {\n nextName =\n nextElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement.type != null &&\n nextElement.type.displayName != null) {\n nextDisplayName = nextElement.type.displayName;\n }\n if (nextElement.type != null && typeof nextElement.type === 'string') {\n nextDisplayName = nextElement.type;\n }\n if (typeof nextElement.type !== 'string' ||\n nextElement.type === 'input' ||\n nextElement.type === 'textarea') {\n if ((prevElement._owner != null &&\n prevElement._owner._isOwnerNecessary === false) ||\n (nextElement._owner != null &&\n nextElement._owner._isOwnerNecessary === false)) {\n if (prevElement._owner != null) {\n prevElement._owner._isOwnerNecessary = true;\n }\n if (nextElement._owner != null) {\n nextElement._owner._isOwnerNecessary = true;\n }\n warning(\n false,\n '<%s /> is being rendered by both %s and %s using the same ' +\n 'key (%s) in the same place. Currently, this means that ' +\n 'they don\\'t preserve state. This behavior should be very ' +\n 'rare so we\\'re considering deprecating it. Please contact ' +\n 'the React team and explain your use case so that we can ' +\n 'take that into consideration.',\n nextDisplayName || 'Unknown Component',\n prevName || '[Unknown]',\n nextName || '[Unknown]',\n prevElement.key\n );\n }\n }\n }\n }\n return ownersMatch;\n }\n }\n }\n return false;\n}\n\nmodule.exports = shouldUpdateReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/shouldUpdateReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEmptyComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactInstanceMap=require('ReactInstanceMap');\n\nvar invariant=require('invariant');\n\nvar component;\n\n\nvar nullComponentIDsRegistry={};\n\nvar ReactEmptyComponentInjection={\ninjectEmptyComponent:function(emptyComponent){\ncomponent = ReactElement.createFactory(emptyComponent);}};\n\n\n\nvar ReactEmptyComponentType=function(){};\nReactEmptyComponentType.prototype.componentDidMount = function(){\nvar internalInstance=ReactInstanceMap.get(this);\n\n\n\n\nif(!internalInstance){\nreturn;}\n\nregisterNullComponentID(internalInstance._rootNodeID);};\n\nReactEmptyComponentType.prototype.componentWillUnmount = function(){\nvar internalInstance=ReactInstanceMap.get(this);\n\nif(!internalInstance){\nreturn;}\n\nderegisterNullComponentID(internalInstance._rootNodeID);};\n\nReactEmptyComponentType.prototype.render = function(){\ninvariant(\ncomponent,\n'Trying to return null from a render, but no null placeholder component ' + \n'was injected.');\n\nreturn component();};\n\n\nvar emptyElement=ReactElement.createElement(ReactEmptyComponentType);\n\n\n\n\n\nfunction registerNullComponentID(id){\nnullComponentIDsRegistry[id] = true;}\n\n\n\n\n\n\nfunction deregisterNullComponentID(id){\ndelete nullComponentIDsRegistry[id];}\n\n\n\n\n\n\nfunction isNullComponentID(id){\nreturn !!nullComponentIDsRegistry[id];}\n\n\nvar ReactEmptyComponent={\nemptyElement:emptyElement,\ninjection:ReactEmptyComponentInjection,\nisNullComponentID:isNullComponentID};\n\n\nmodule.exports = ReactEmptyComponent;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEmptyComponent\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactInstanceMap = require('ReactInstanceMap');\n\nvar invariant = require('invariant');\n\nvar component;\n// This registry keeps track of the React IDs of the components that rendered to\n// `null` (in reality a placeholder such as `noscript`)\nvar nullComponentIDsRegistry = {};\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponent: function(emptyComponent) {\n component = ReactElement.createFactory(emptyComponent);\n }\n};\n\nvar ReactEmptyComponentType = function() {};\nReactEmptyComponentType.prototype.componentDidMount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Make sure we run these methods in the correct order, we shouldn't\n // need this check. We're going to assume if we're here it means we ran\n // componentWillUnmount already so there is no internal instance (it gets\n // removed as part of the unmounting process).\n if (!internalInstance) {\n return;\n }\n registerNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.componentWillUnmount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Get rid of this check. See TODO in componentDidMount.\n if (!internalInstance) {\n return;\n }\n deregisterNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.render = function() {\n invariant(\n component,\n 'Trying to return null from a render, but no null placeholder component ' +\n 'was injected.'\n );\n return component();\n};\n\nvar emptyElement = ReactElement.createElement(ReactEmptyComponentType);\n\n/**\n * Mark the component as having rendered to null.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction registerNullComponentID(id) {\n nullComponentIDsRegistry[id] = true;\n}\n\n/**\n * Unmark the component as having rendered to null: it renders to something now.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction deregisterNullComponentID(id) {\n delete nullComponentIDsRegistry[id];\n}\n\n/**\n * @param {string} id Component's `_rootNodeID`.\n * @return {boolean} True if the component is rendered to null.\n */\nfunction isNullComponentID(id) {\n return !!nullComponentIDsRegistry[id];\n}\n\nvar ReactEmptyComponent = {\n emptyElement: emptyElement,\n injection: ReactEmptyComponentInjection,\n isNullComponentID: isNullComponentID\n};\n\nmodule.exports = ReactEmptyComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEmptyComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Device/RCTDeviceEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\n\nvar RCTDeviceEventEmitter=new EventEmitter();\n\nmodule.exports = RCTDeviceEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTDeviceEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\n\nvar RCTDeviceEventEmitter = new EventEmitter();\n\nmodule.exports = RCTDeviceEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Device/RCTDeviceEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js":{"data":{"code":"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');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EmitterSubscription=require('EmitterSubscription');\nvar ErrorUtils=require('ErrorUtils');\nvar EventSubscriptionVendor=require('EventSubscriptionVendor');\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitter=(function(){\n\n\n\nfunction EventEmitter(){_classCallCheck(this,EventEmitter);\nthis._subscriber = new EventSubscriptionVendor();}_createClass(EventEmitter,[{key:'addListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addListener(\neventType,listener,context){\nreturn this._subscriber.addSubscription(\neventType,\nnew EmitterSubscription(this._subscriber,listener,context));}},{key:'once',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction once(eventType,listener,context){\nvar emitter=this;\nreturn this.addListener(eventType,function(){\nemitter.removeCurrentListener();\nlistener.apply(context,arguments);});}},{key:'removeAllListeners',value:\n\n\n\n\n\n\n\n\n\n\nfunction removeAllListeners(eventType){\nthis._subscriber.removeAllSubscriptions(eventType);}},{key:'removeCurrentListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction removeCurrentListener(){\ninvariant(\n!!this._currentSubscription,\n'Not in an emitting cycle; there is no current subscription');\n\nthis._subscriber.removeSubscription(this._currentSubscription);}},{key:'listeners',value:\n\n\n\n\n\n\n\n\n\nfunction listeners(eventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nreturn subscriptions?\nsubscriptions.filter(emptyFunction.thatReturnsTrue).map(\nfunction(subscription){\nreturn subscription.listener;}):\n\n[];}},{key:'emit',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction emit(eventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nif(subscriptions){\nvar keys=Object.keys(subscriptions);\nfor(var ii=0;ii < keys.length;ii++) {\nvar key=keys[ii];\nvar subscription=subscriptions[key];\n\n\nif(subscription){\nthis._currentSubscription = subscription;\n\nErrorUtils.applyWithGuard(\nsubscription.listener,\nsubscription.context,\nArray.prototype.slice.call(arguments,1),\nnull,\n'EventEmitter:' + eventType);}}\n\n\n\nthis._currentSubscription = null;}}}]);return EventEmitter;})();\n\n\n\n\nmodule.exports = EventEmitter;","sourceCode":"/**\n * @generated SignedSource<<494e66dea72a3e90b763a5ec50b1e0ca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventEmitter\n * @typechecks\n */\n\nvar EmitterSubscription = require('EmitterSubscription');\nvar ErrorUtils = require('ErrorUtils');\nvar EventSubscriptionVendor = require('EventSubscriptionVendor');\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\n\n/**\n * @class EventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\nclass EventEmitter {\n /**\n * @constructor\n */\n constructor() {\n this._subscriber = new EventSubscriptionVendor();\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n addListener(\n eventType: String, listener, context: ?Object): EmitterSubscription {\n return this._subscriber.addSubscription(\n eventType,\n new EmitterSubscription(this._subscriber, listener, context));\n }\n\n /**\n * Similar to addListener, except that the listener is removed after it is\n * invoked once.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke only once when the\n * specified event is emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n once(eventType: String, listener, context: ?Object): EmitterSubscription {\n var emitter = this;\n return this.addListener(eventType, function() {\n emitter.removeCurrentListener();\n listener.apply(context, arguments);\n });\n }\n\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n removeAllListeners(eventType: ?String) {\n this._subscriber.removeAllSubscriptions(eventType);\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to remove the\n * last listener that was invoked. This allows a developer to provide an event\n * object that can remove the listener (or listener map) during the\n * invocation.\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n *\n * @example\n * var subscription = emitter.addListenerMap({\n * someEvent: function(data, event) {\n * console.log(data);\n * emitter.removeCurrentListener();\n * }\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n * emitter.emit('someEvent', 'def'); // does not log anything\n */\n removeCurrentListener() {\n invariant(\n !!this._currentSubscription,\n 'Not in an emitting cycle; there is no current subscription'\n );\n this._subscriber.removeSubscription(this._currentSubscription);\n }\n\n /**\n * Returns an array of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @returns {array}\n */\n listeners(eventType: String): Array /* TODO: Array */ {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n return subscriptions\n ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(\n function(subscription) {\n return subscription.listener;\n })\n : [];\n }\n\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n emit(eventType: String) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n if (subscriptions) {\n var keys = Object.keys(subscriptions);\n for (var ii = 0; ii < keys.length; ii++) {\n var key = keys[ii];\n var subscription = subscriptions[key];\n\n // The subscription may have been removed during this event loop.\n if (subscription) {\n this._currentSubscription = subscription;\n\n ErrorUtils.applyWithGuard(\n subscription.listener,\n subscription.context,\n Array.prototype.slice.call(arguments, 1),\n null,\n 'EventEmitter:' + eventType\n );\n }\n }\n this._currentSubscription = null;\n }\n }\n}\n\nmodule.exports = EventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js":{"data":{"code":"'use strict';var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}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;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventSubscription=require('EventSubscription');var \n\n\n\n\nEmitterSubscription=(function(_EventSubscription){_inherits(EmitterSubscription,_EventSubscription);\n\n\n\n\n\n\n\n\n\nfunction EmitterSubscription(subscriber,listener,context){_classCallCheck(this,EmitterSubscription);\n_get(Object.getPrototypeOf(EmitterSubscription.prototype),'constructor',this).call(this,subscriber);\nthis.listener = listener;\nthis.context = context;}return EmitterSubscription;})(EventSubscription);\n\n\n\nmodule.exports = EmitterSubscription;","sourceCode":"/**\n * @generated SignedSource<>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EmitterSubscription\n * @typechecks\n */\n'use strict';\n\nvar EventSubscription = require('EventSubscription');\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\nclass EmitterSubscription extends EventSubscription {\n\n /**\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n constructor(subscriber: EventSubscriptionVendor, listener, context: ?Object) {\n super(subscriber);\n this.listener = listener;\n this.context = context;\n }\n}\n\nmodule.exports = EmitterSubscription;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js":{"data":{"code":"'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 \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventSubscription=(function(){\n\n\n\n\n\nfunction EventSubscription(subscriber){_classCallCheck(this,EventSubscription);\nthis.subscriber = subscriber;}_createClass(EventSubscription,[{key:'remove',value:\n\n\n\n\n\nfunction remove(){\nthis.subscriber.removeSubscription(this);}}]);return EventSubscription;})();\n\n\n\nmodule.exports = EventSubscription;","sourceCode":"/**\n * @generated SignedSource<<92108a17b1f3eee4b7e3dd7d484aa17a>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventSubscription\n * @typechecks\n */\n'use strict';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\nclass EventSubscription {\n\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n constructor(subscriber: EventSubscriptionVendor) {\n this.subscriber = subscriber;\n }\n\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n remove() {\n this.subscriber.removeSubscription(this);\n }\n}\n\nmodule.exports = EventSubscription;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js":{"data":{"code":"'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');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');var \n\n\n\n\n\nEventSubscriptionVendor=(function(){\n\nfunction EventSubscriptionVendor(){_classCallCheck(this,EventSubscriptionVendor);\nthis._subscriptionsForType = {};\nthis._currentSubscription = null;}_createClass(EventSubscriptionVendor,[{key:'addSubscription',value:\n\n\n\n\n\n\n\n\nfunction addSubscription(\neventType,subscription){\ninvariant(\nsubscription.subscriber === this,\n'The subscriber of the subscription is incorrectly set.');\nif(!this._subscriptionsForType[eventType]){\nthis._subscriptionsForType[eventType] = [];}\n\nvar key=this._subscriptionsForType[eventType].length;\nthis._subscriptionsForType[eventType].push(subscription);\nsubscription.eventType = eventType;\nsubscription.key = key;\nreturn subscription;}},{key:'removeAllSubscriptions',value:\n\n\n\n\n\n\n\n\nfunction removeAllSubscriptions(eventType){\nif(eventType === undefined){\nthis._subscriptionsForType = {};}else \n{\ndelete this._subscriptionsForType[eventType];}}},{key:'removeSubscription',value:\n\n\n\n\n\n\n\n\n\nfunction removeSubscription(subscription){\nvar eventType=subscription.eventType;\nvar key=subscription.key;\n\nvar subscriptionsForType=this._subscriptionsForType[eventType];\nif(subscriptionsForType){\ndelete subscriptionsForType[key];}}},{key:'getSubscriptionsForType',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getSubscriptionsForType(eventType){\nreturn this._subscriptionsForType[eventType];}}]);return EventSubscriptionVendor;})();\n\n\n\nmodule.exports = EventSubscriptionVendor;","sourceCode":"/**\n * @generated SignedSource<<24d5cc1cdd24704296686faf89dd36cf>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventSubscriptionVendor\n * @typechecks\n */\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\nclass EventSubscriptionVendor {\n\n constructor() {\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n addSubscription(\n eventType: String, subscription: EventSubscription): EventSubscription {\n invariant(\n subscription.subscriber === this,\n 'The subscriber of the subscription is incorrectly set.');\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n var key = this._subscriptionsForType[eventType].length;\n this._subscriptionsForType[eventType].push(subscription);\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n }\n\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n removeAllSubscriptions(eventType: ?String) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n }\n\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n removeSubscription(subscription: Object) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n\n var subscriptionsForType = this._subscriptionsForType[eventType];\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n }\n\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @returns {?array}\n */\n getSubscriptionsForType(eventType: String): ?Array {\n return this._subscriptionsForType[eventType];\n }\n}\n\nmodule.exports = EventSubscriptionVendor;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar performanceNow=require('performanceNow');\n\nvar timespans={};\n\n\n\n\n\nvar PerformanceLogger={\naddTimespan:function(key,lengthInMs,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to add a timespan that already exists');}\n\n\nreturn;}\n\n\ntimespans[key] = {\ndescription:description,\ntotalTime:lengthInMs};},\n\n\n\nstartTimespan:function(key,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to start a timespan that already exists');}\n\n\nreturn;}\n\n\ntimespans[key] = {\ndescription:description,\nstartTime:performanceNow()};},\n\n\n\nstopTimespan:function(key){\nif(!timespans[key] || !timespans[key].startTime){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to end a timespan that has not started');}\n\n\nreturn;}\n\n\ntimespans[key].endTime = performanceNow();\ntimespans[key].totalTime = \ntimespans[key].endTime - timespans[key].startTime;},\n\n\nclearTimespans:function(){\ntimespans = {};},\n\n\ngetTimespans:function(){\nreturn timespans;},\n\n\nlogTimespans:function(){\nfor(var key in timespans) {\nconsole.log(key + ': ' + timespans[key].totalTime + 'ms');}},\n\n\n\naddTimespans:function(newTimespans,labels){\nfor(var i=0,l=newTimespans.length;i < l;i += 2) {\nvar label=labels[i / 2];\nPerformanceLogger.addTimespan(\nlabel,\nnewTimespans[i + 1] - newTimespans[i],\nlabel);}}};\n\n\n\n\n\nmodule.exports = PerformanceLogger;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PerformanceLogger\n */\n'use strict';\n\n\nvar performanceNow = require('performanceNow');\n\nvar timespans = {};\n\n/**\n * This is meant to collect and log performance data in production, which means\n * it needs to have minimal overhead.\n */\nvar PerformanceLogger = {\n addTimespan(key, lengthInMs, description) {\n if (timespans[key]) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to add a timespan that already exists'\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n totalTime: lengthInMs,\n };\n },\n\n startTimespan(key, description) {\n if (timespans[key]) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to start a timespan that already exists'\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n startTime: performanceNow(),\n };\n },\n\n stopTimespan(key) {\n if (!timespans[key] || !timespans[key].startTime) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to end a timespan that has not started'\n );\n }\n return;\n }\n\n timespans[key].endTime = performanceNow();\n timespans[key].totalTime =\n timespans[key].endTime - timespans[key].startTime;\n },\n\n clearTimespans() {\n timespans = {};\n },\n\n getTimespans() {\n return timespans;\n },\n\n logTimespans() {\n for (var key in timespans) {\n console.log(key + ': ' + timespans[key].totalTime + 'ms');\n }\n },\n\n addTimespans(newTimespans, labels) {\n for (var i = 0, l = newTimespans.length; i < l; i += 2) {\n var label = labels[i / 2];\n PerformanceLogger.addTimespan(\n label,\n (newTimespans[i + 1] - newTimespans[i]),\n label\n );\n }\n }\n};\n\nmodule.exports = PerformanceLogger;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTExceptionsManager=require('NativeModules').ExceptionsManager;\n\nvar loadSourceMap=require('loadSourceMap');\nvar parseErrorStack=require('parseErrorStack');\nvar stringifySafe=require('stringifySafe');\n\nvar sourceMapPromise;\n\n\n\n\n\n\n\nfunction reportException(e,isFatal,stack){\nif(RCTExceptionsManager){\nif(!stack){\nstack = parseErrorStack(e);}\n\nif(isFatal){\nRCTExceptionsManager.reportFatalException(e.message,stack);}else \n{\nRCTExceptionsManager.reportSoftException(e.message,stack);}\n\nif(__DEV__){\n(sourceMapPromise = sourceMapPromise || loadSourceMap()).\nthen(function(map){\nvar prettyStack=parseErrorStack(e,map);\nRCTExceptionsManager.updateExceptionMessage(e.message,prettyStack);}).\n\ncatch(function(error){\n\n\nconsole.warn('Unable to load source map: ' + error.message);});}}}\n\n\n\n\n\nfunction handleException(e,isFatal){\nvar stack=parseErrorStack(e);\nvar msg=\n'Error: ' + e.message + \n'\\n stack: \\n' + stackToString(stack) + \n'\\n URL: ' + e.sourceURL + \n'\\n line: ' + e.line + \n'\\n message: ' + e.message;\nif(console.errorOriginal){\nconsole.errorOriginal(msg);}else \n{\nconsole.error(msg);}\n\nreportException(e,isFatal,stack);}\n\n\n\n\n\n\nfunction installConsoleErrorReporter(){\nif(console.reportException){\nreturn;}\n\nconsole.reportException = reportException;\nconsole.errorOriginal = console.error.bind(console);\nconsole.error = function reactConsoleError(){\nconsole.errorOriginal.apply(null,arguments);\nif(!console.reportErrorsAsExceptions){\nreturn;}\n\nvar str=Array.prototype.map.call(arguments,stringifySafe).join(', ');\nvar error=new Error('console.error: ' + str);\nerror.framesToPop = 1;\nreportException(error,false);};\n\nif(console.reportErrorsAsExceptions === undefined){\nconsole.reportErrorsAsExceptions = true;}}\n\n\n\nfunction stackToString(stack){\nvar maxLength=Math.max.apply(null,stack.map(function(frame){return frame.methodName.length;}));\nreturn stack.map(function(frame){return stackFrameToString(frame,maxLength);}).join('\\n');}\n\n\nfunction stackFrameToString(stackFrame,maxLength){\nvar fileNameParts=stackFrame.file.split('/');\nvar fileName=fileNameParts[fileNameParts.length - 1];\n\nif(fileName.length > 18){\nfileName = fileName.substr(0,17) + '\\u2026';}\n\n\nvar spaces=fillSpaces(maxLength - stackFrame.methodName.length);\nreturn ' ' + stackFrame.methodName + spaces + ' ' + fileName + ':' + stackFrame.lineNumber;}\n\n\nfunction fillSpaces(n){\nreturn new Array(n + 1).join(' ');}\n\n\nmodule.exports = {handleException:handleException,installConsoleErrorReporter:installConsoleErrorReporter};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExceptionsManager\n * @flow\n */\n'use strict';\n\nvar RCTExceptionsManager = require('NativeModules').ExceptionsManager;\n\nvar loadSourceMap = require('loadSourceMap');\nvar parseErrorStack = require('parseErrorStack');\nvar stringifySafe = require('stringifySafe');\n\nvar sourceMapPromise;\n\ntype Exception = {\n sourceURL: string;\n line: number;\n message: string;\n}\n\nfunction reportException(e: Exception, isFatal: bool, stack?: any) {\n if (RCTExceptionsManager) {\n if (!stack) {\n stack = parseErrorStack(e);\n }\n if (isFatal) {\n RCTExceptionsManager.reportFatalException(e.message, stack);\n } else {\n RCTExceptionsManager.reportSoftException(e.message, stack);\n }\n if (__DEV__) {\n (sourceMapPromise = sourceMapPromise || loadSourceMap())\n .then(map => {\n var prettyStack = parseErrorStack(e, map);\n RCTExceptionsManager.updateExceptionMessage(e.message, prettyStack);\n })\n .catch(error => {\n // This can happen in a variety of normal situations, such as\n // Network module not being available, or when running locally\n console.warn('Unable to load source map: ' + error.message);\n });\n }\n }\n}\n\nfunction handleException(e: Exception, isFatal: boolean) {\n var stack = parseErrorStack(e);\n var msg =\n 'Error: ' + e.message +\n '\\n stack: \\n' + stackToString(stack) +\n '\\n URL: ' + e.sourceURL +\n '\\n line: ' + e.line +\n '\\n message: ' + e.message;\n if (console.errorOriginal) {\n console.errorOriginal(msg);\n } else {\n console.error(msg);\n }\n reportException(e, isFatal, stack);\n}\n\n/**\n * Shows a redbox with stacktrace for all console.error messages. Disable by\n * setting `console.reportErrorsAsExceptions = false;` in your app.\n */\nfunction installConsoleErrorReporter() {\n if (console.reportException) {\n return; // already installed\n }\n console.reportException = reportException;\n console.errorOriginal = console.error.bind(console);\n console.error = function reactConsoleError() {\n console.errorOriginal.apply(null, arguments);\n if (!console.reportErrorsAsExceptions) {\n return;\n }\n var str = Array.prototype.map.call(arguments, stringifySafe).join(', ');\n var error: any = new Error('console.error: ' + str);\n error.framesToPop = 1;\n reportException(error, /* isFatal */ false);\n };\n if (console.reportErrorsAsExceptions === undefined) {\n console.reportErrorsAsExceptions = true; // Individual apps can disable this\n }\n}\n\nfunction stackToString(stack) {\n var maxLength = Math.max.apply(null, stack.map(frame => frame.methodName.length));\n return stack.map(frame => stackFrameToString(frame, maxLength)).join('\\n');\n}\n\nfunction stackFrameToString(stackFrame, maxLength) {\n var fileNameParts = stackFrame.file.split('/');\n var fileName = fileNameParts[fileNameParts.length - 1];\n\n if (fileName.length > 18) {\n fileName = fileName.substr(0, 17) + '\\u2026' /* ... */;\n }\n\n var spaces = fillSpaces(maxLength - stackFrame.methodName.length);\n return ' ' + stackFrame.methodName + spaces + ' ' + fileName + ':' + stackFrame.lineNumber;\n}\n\nfunction fillSpaces(n) {\n return new Array(n + 1).join(' ');\n}\n\nmodule.exports = { handleException, installConsoleErrorReporter };\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/loadSourceMap.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Promise=require('Promise');\nvar NativeModules=require('NativeModules');\nvar SourceMapConsumer=require('SourceMap').SourceMapConsumer;\nvar SourceMapURL=require('./source-map-url');\n\nvar RCTSourceCode=NativeModules.SourceCode;\nvar RCTNetworking=NativeModules.Networking;\n\nfunction loadSourceMap(){\nreturn fetchSourceMap().\nthen(function(map){return new SourceMapConsumer(map);});}\n\n\nfunction fetchSourceMap(){\nif(global.RAW_SOURCE_MAP){\nreturn Promise.resolve(global.RAW_SOURCE_MAP);}\n\n\nif(!RCTSourceCode){\nreturn Promise.reject(new Error('RCTSourceCode module is not available'));}\n\n\nif(!RCTNetworking){\n\nreturn Promise.reject(new Error('RCTNetworking module is not available'));}\n\n\nreturn new Promise(RCTSourceCode.getScriptText).\nthen(extractSourceMapURL).\nthen(function(url){\nif(url === null){\nreturn Promise.reject(new Error('No source map URL found. May be running from bundled file.'));}\n\nreturn Promise.resolve(url);}).\n\nthen(fetch).\nthen(function(response){return response.text();});}\n\n\nfunction extractSourceMapURL(_ref){var url=_ref.url;var text=_ref.text;var fullSourceMappingURL=_ref.fullSourceMappingURL;\nif(fullSourceMappingURL){\nreturn fullSourceMappingURL;}\n\nvar mapURL=SourceMapURL.getFrom(text);\nif(!mapURL){\nreturn null;}\n\nvar baseURL=url.match(/(.+:\\/\\/.*?)\\//)[1];\nreturn baseURL + mapURL;}\n\n\nmodule.exports = loadSourceMap;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule loadSourceMap\n * @flow\n */\n\n'use strict';\n\nvar Promise = require('Promise');\nvar NativeModules = require('NativeModules');\nvar SourceMapConsumer = require('SourceMap').SourceMapConsumer;\nvar SourceMapURL = require('./source-map-url');\n\nvar RCTSourceCode = NativeModules.SourceCode;\nvar RCTNetworking = NativeModules.Networking;\n\nfunction loadSourceMap(): Promise {\n return fetchSourceMap()\n .then(map => new SourceMapConsumer(map));\n}\n\nfunction fetchSourceMap(): Promise {\n if (global.RAW_SOURCE_MAP) {\n return Promise.resolve(global.RAW_SOURCE_MAP);\n }\n\n if (!RCTSourceCode) {\n return Promise.reject(new Error('RCTSourceCode module is not available'));\n }\n\n if (!RCTNetworking) {\n // Used internally by fetch\n return Promise.reject(new Error('RCTNetworking module is not available'));\n }\n\n return new Promise(RCTSourceCode.getScriptText)\n .then(extractSourceMapURL)\n .then((url) => {\n if (url === null) {\n return Promise.reject(new Error('No source map URL found. May be running from bundled file.'));\n }\n return Promise.resolve(url);\n })\n .then(fetch)\n .then(response => response.text())\n}\n\nfunction extractSourceMapURL({url, text, fullSourceMappingURL}): ?string {\n if (fullSourceMappingURL) {\n return fullSourceMappingURL;\n }\n var mapURL = SourceMapURL.getFrom(text);\n if (!mapURL) {\n return null;\n }\n var baseURL = url.match(/(.+:\\/\\/.*?)\\//)[1];\n return baseURL + mapURL;\n}\n\nmodule.exports = loadSourceMap;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/loadSourceMap.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Promise.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nglobal.setImmediate = require('setImmediate');\nvar Promise=require('promise/setimmediate/es6-extensions');\nrequire('promise/setimmediate/done');\n\n\n\n\nPromise.prototype.finally = function(onSettled){\nreturn this.then(onSettled,onSettled);};\n\n\n\nmodule.exports = Promise;","sourceCode":"/**\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule Promise\n *\n * This module wraps and augments the minimally ES6-compliant Promise\n * implementation provided by the promise npm package.\n */\n\n'use strict';\n\nglobal.setImmediate = require('setImmediate');\nvar Promise = require('promise/setimmediate/es6-extensions');\nrequire('promise/setimmediate/done');\n\n/**\n * Handle either fulfillment or rejection with the same callback.\n */\nPromise.prototype.finally = function(onSettled) {\n return this.then(onSettled, onSettled);\n};\n\n\nmodule.exports = Promise;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Promise.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/setImmediate.js":{"data":{"code":"module.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports = global.setImmediate || \nrequire('ImmediateImplementation').setImmediate;","sourceCode":"/**\n * @generated SignedSource<<9715e66cd259f4d1a1c3d39c97cd0b92>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule setImmediate\n */\n\nmodule.exports = global.setImmediate ||\n require('ImmediateImplementation').setImmediate;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/setImmediate.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/immediate/setImmediate.js":{"data":{"code":"/**\n * @generated SignedSource<<57d0446bbd1186485d372efe6b323dca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic\n * Denicola\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n * @providesModule ImmediateImplementation\n */\n\n(function(global,undefined){\n\"use strict\";\n\nvar nextHandle=1;\nvar tasksByHandle={};\nvar queueHead={};\nvar queueTail=queueHead;\nvar currentlyRunningATask=false;\nvar doc=global.document;\nvar setImmediate;\n\nfunction addFromSetImmediateArguments(args){\nvar handler=args[0];\nargs = Array.prototype.slice.call(args,1);\ntasksByHandle[nextHandle] = function(){\nhandler.apply(undefined,args);};\n\nqueueTail = queueTail.next = {handle:nextHandle++};\nreturn queueTail.handle;}\n\n\nfunction flushQueue(){\nvar next,task;\nwhile(!currentlyRunningATask && (next = queueHead.next)) {\nqueueHead = next;\nif(task = tasksByHandle[next.handle]){\ncurrentlyRunningATask = true;\ntry{\ntask();\ncurrentlyRunningATask = false;}finally \n{\nclearImmediate(next.handle);\nif(currentlyRunningATask){\ncurrentlyRunningATask = false;\n\n\n\n\n\n\nif(queueHead.next){\nsetImmediate(flushQueue);}}}}}}\n\n\n\n\n\n\n\nfunction clearImmediate(handle){\ndelete tasksByHandle[handle];}\n\n\nfunction canUsePostMessage(){\n\n\nif(global.postMessage && !global.importScripts){\nvar postMessageIsAsynchronous=true;\n\nvar onMessage=function(){\npostMessageIsAsynchronous = false;\nif(global.removeEventListener){\nglobal.removeEventListener(\"message\",onMessage,false);}else \n{\nglobal.detachEvent(\"onmessage\",onMessage);}};\n\n\n\nif(global.addEventListener){\nglobal.addEventListener(\"message\",onMessage,false);}else \nif(global.attachEvent){\nglobal.attachEvent(\"onmessage\",onMessage);}else \n{\nreturn false;}\n\n\nglobal.postMessage(\"\",\"*\");\nreturn postMessageIsAsynchronous;}}\n\n\n\nfunction installPostMessageImplementation(){\n\n\nvar messagePrefix=\"setImmediate$\" + Math.random() + \"$\";\nvar onGlobalMessage=function(event){\nif(event.source === global && \ntypeof event.data === \"string\" && \nevent.data.indexOf(messagePrefix) === 0){\nflushQueue();}};\n\n\n\nif(global.addEventListener){\nglobal.addEventListener(\"message\",onGlobalMessage,false);}else \n{\nglobal.attachEvent(\"onmessage\",onGlobalMessage);}\n\n\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\nglobal.postMessage(messagePrefix + handle,\"*\");\nreturn handle;};}\n\n\n\nfunction installMessageChannelImplementation(){\nvar channel=new MessageChannel();\nchannel.port1.onmessage = flushQueue;\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\nchannel.port2.postMessage(handle);\nreturn handle;};}\n\n\n\nfunction installReadyStateChangeImplementation(){\nvar html=doc.documentElement;\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\n\n\nvar script=doc.createElement(\"script\");\nscript.onreadystatechange = function(){\nscript.onreadystatechange = null;\nhtml.removeChild(script);\nscript = null;\nflushQueue();};\n\nhtml.appendChild(script);\nreturn handle;};}\n\n\n\nfunction installSetTimeoutImplementation(){\nsetImmediate = function(){\nsetTimeout(flushQueue,0);\nreturn addFromSetImmediateArguments(arguments);};}\n\n\n\nif(canUsePostMessage()){\n\ninstallPostMessageImplementation();}else \n\nif(global.MessageChannel){\n\ninstallMessageChannelImplementation();}else \n\nif(doc && \"onreadystatechange\" in doc.createElement(\"script\")){\n\ninstallReadyStateChangeImplementation();}else \n\n{\n\ninstallSetTimeoutImplementation();}\n\n\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;})(\nFunction(\"return this\")());","sourceCode":"/**\n * @generated SignedSource<<57d0446bbd1186485d372efe6b323dca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic\n * Denicola\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n * @providesModule ImmediateImplementation\n */\n\n(function(global, undefined) {\n \"use strict\";\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var queueHead = {};\n var queueTail = queueHead;\n var currentlyRunningATask = false;\n var doc = global.document;\n var setImmediate;\n\n function addFromSetImmediateArguments(args) {\n var handler = args[0];\n args = Array.prototype.slice.call(args, 1);\n tasksByHandle[nextHandle] = function() {\n handler.apply(undefined, args);\n };\n queueTail = (queueTail.next = { handle: nextHandle++ });\n return queueTail.handle;\n }\n\n function flushQueue() {\n var next, task;\n while (!currentlyRunningATask && (next = queueHead.next)) {\n queueHead = next; // If this task fails, don't retry it.\n if ((task = tasksByHandle[next.handle])) {\n currentlyRunningATask = true;\n try {\n task();\n currentlyRunningATask = false;\n } finally {\n clearImmediate(next.handle);\n if (currentlyRunningATask) {\n currentlyRunningATask = false;\n // The call to task() must have thrown an\n // exception if we reach this point, so, just in\n // case there are tasks remaining to be executed,\n // we schedule another flushQueue in a later tick\n // of the event loop, and let the exception\n // propagate uncaught.\n if (queueHead.next) {\n setImmediate(flushQueue);\n }\n }\n }\n }\n }\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n\n var onMessage = function() {\n postMessageIsAsynchronous = false;\n if (global.removeEventListener) {\n global.removeEventListener(\"message\", onMessage, false);\n } else {\n global.detachEvent(\"onmessage\", onMessage);\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onMessage, false);\n } else if (global.attachEvent) {\n global.attachEvent(\"onmessage\", onMessage);\n } else {\n return false;\n }\n\n global.postMessage(\"\", \"*\");\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n flushQueue();\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n global.postMessage(messagePrefix + handle, \"*\");\n return handle;\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flushQueue;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n channel.port2.postMessage(handle);\n return handle;\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n // Create a \n// \n//\n// Here's how it works.\n//\n// ```\n// // Get a reference to the logo element.\n// var el = document.getElementById('logo');\n//\n// // create a SpringSystem and a Spring with a bouncy config.\n// var springSystem = new rebound.SpringSystem();\n// var spring = springSystem.createSpring(50, 3);\n//\n// // Add a listener to the spring. Every time the physics\n// // solver updates the Spring's value onSpringUpdate will\n// // be called.\n// spring.addListener({\n// onSpringUpdate: function(spring) {\n// var val = spring.getCurrentValue();\n// val = rebound.MathUtil\n// .mapValueInRange(val, 0, 1, 1, 0.5);\n// scale(el, val);\n// }\n// });\n//\n// // Listen for mouse down/up/out and toggle the\n// //springs endValue from 0 to 1.\n// el.addEventListener('mousedown', function() {\n// spring.setEndValue(1);\n// });\n//\n// el.addEventListener('mouseout', function() {\n// spring.setEndValue(0);\n// });\n//\n// el.addEventListener('mouseup', function() {\n// spring.setEndValue(0);\n// });\n//\n// // Helper for scaling an element with css transforms.\n// function scale(el, val) {\n// el.style.mozTransform =\n// el.style.msTransform =\n// el.style.webkitTransform =\n// el.style.transform = 'scale3d(' +\n// val + ', ' + val + ', 1)';\n// }\n// ```\n\n(function() {\n var rebound = {};\n var util = rebound.util = {};\n var concat = Array.prototype.concat;\n var slice = Array.prototype.slice;\n\n // Bind a function to a context object.\n util.bind = function bind(func, context) {\n var args = slice.call(arguments, 2);\n return function() {\n func.apply(context, concat.call(args, slice.call(arguments)));\n };\n };\n\n // Add all the properties in the source to the target.\n util.extend = function extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n };\n\n // SpringSystem\n // ------------\n // **SpringSystem** is a set of Springs that all run on the same physics\n // timing loop. To get started with a Rebound animation you first\n // create a new SpringSystem and then add springs to it.\n var SpringSystem = rebound.SpringSystem = function SpringSystem(looper) {\n this._springRegistry = {};\n this._activeSprings = [];\n this.listeners = [];\n this._idleSpringIndices = [];\n this.looper = looper || new AnimationLooper();\n this.looper.springSystem = this;\n };\n\n util.extend(SpringSystem.prototype, {\n\n _springRegistry: null,\n\n _isIdle: true,\n\n _lastTimeMillis: -1,\n\n _activeSprings: null,\n\n listeners: null,\n\n _idleSpringIndices: null,\n\n // A SpringSystem is iterated by a looper. The looper is responsible\n // for executing each frame as the SpringSystem is resolved to idle.\n // There are three types of Loopers described below AnimationLooper,\n // SimulationLooper, and SteppingSimulationLooper. AnimationLooper is\n // the default as it is the most useful for common UI animations.\n setLooper: function(looper) {\n this.looper = looper;\n looper.springSystem = this;\n },\n\n // Add a new spring to this SpringSystem. This Spring will now be solved for\n // during the physics iteration loop. By default the spring will use the\n // default Origami spring config with 40 tension and 7 friction, but you can\n // also provide your own values here.\n createSpring: function(tension, friction) {\n var springConfig;\n if (tension === undefined || friction === undefined) {\n springConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;\n } else {\n springConfig =\n SpringConfig.fromOrigamiTensionAndFriction(tension, friction);\n }\n return this.createSpringWithConfig(springConfig);\n },\n\n // Add a spring with a specified bounciness and speed. To replicate Origami\n // compositions based on PopAnimation patches, use this factory method to\n // create matching springs.\n createSpringWithBouncinessAndSpeed: function(bounciness, speed) {\n var springConfig;\n if (bounciness === undefined || speed === undefined) {\n springConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;\n } else {\n springConfig =\n SpringConfig.fromBouncinessAndSpeed(bounciness, speed);\n }\n return this.createSpringWithConfig(springConfig);\n },\n\n // Add a spring with the provided SpringConfig.\n createSpringWithConfig: function(springConfig) {\n var spring = new Spring(this);\n this.registerSpring(spring);\n spring.setSpringConfig(springConfig);\n return spring;\n },\n\n // You can check if a SpringSystem is idle or active by calling\n // getIsIdle. If all of the Springs in the SpringSystem are at rest,\n // i.e. the physics forces have reached equilibrium, then this\n // method will return true.\n getIsIdle: function() {\n return this._isIdle;\n },\n\n // Retrieve a specific Spring from the SpringSystem by id. This\n // can be useful for inspecting the state of a spring before\n // or after an integration loop in the SpringSystem executes.\n getSpringById: function (id) {\n return this._springRegistry[id];\n },\n\n // Get a listing of all the springs registered with this\n // SpringSystem.\n getAllSprings: function() {\n var vals = [];\n for (var id in this._springRegistry) {\n if (this._springRegistry.hasOwnProperty(id)) {\n vals.push(this._springRegistry[id]);\n }\n }\n return vals;\n },\n\n // registerSpring is called automatically as soon as you create\n // a Spring with SpringSystem#createSpring. This method sets the\n // spring up in the registry so that it can be solved in the\n // solver loop.\n registerSpring: function(spring) {\n this._springRegistry[spring.getId()] = spring;\n },\n\n // Deregister a spring with this SpringSystem. The SpringSystem will\n // no longer consider this Spring during its integration loop once\n // this is called. This is normally done automatically for you when\n // you call Spring#destroy.\n deregisterSpring: function(spring) {\n removeFirst(this._activeSprings, spring);\n delete this._springRegistry[spring.getId()];\n },\n\n advance: function(time, deltaTime) {\n while(this._idleSpringIndices.length > 0) this._idleSpringIndices.pop();\n for (var i = 0, len = this._activeSprings.length; i < len; i++) {\n var spring = this._activeSprings[i];\n if (spring.systemShouldAdvance()) {\n spring.advance(time / 1000.0, deltaTime / 1000.0);\n } else {\n this._idleSpringIndices.push(this._activeSprings.indexOf(spring));\n }\n }\n while(this._idleSpringIndices.length > 0) {\n var idx = this._idleSpringIndices.pop();\n idx >= 0 && this._activeSprings.splice(idx, 1);\n }\n },\n\n // This is our main solver loop called to move the simulation\n // forward through time. Before each pass in the solver loop\n // onBeforeIntegrate is called on an any listeners that have\n // registered themeselves with the SpringSystem. This gives you\n // an opportunity to apply any constraints or adjustments to\n // the springs that should be enforced before each iteration\n // loop. Next the advance method is called to move each Spring in\n // the systemShouldAdvance forward to the current time. After the\n // integration step runs in advance, onAfterIntegrate is called\n // on any listeners that have registered themselves with the\n // SpringSystem. This gives you an opportunity to run any post\n // integration constraints or adjustments on the Springs in the\n // SpringSystem.\n loop: function(currentTimeMillis) {\n var listener;\n if (this._lastTimeMillis === -1) {\n this._lastTimeMillis = currentTimeMillis -1;\n }\n var ellapsedMillis = currentTimeMillis - this._lastTimeMillis;\n this._lastTimeMillis = currentTimeMillis;\n\n var i = 0, len = this.listeners.length;\n for (i = 0; i < len; i++) {\n listener = this.listeners[i];\n listener.onBeforeIntegrate && listener.onBeforeIntegrate(this);\n }\n\n this.advance(currentTimeMillis, ellapsedMillis);\n if (this._activeSprings.length === 0) {\n this._isIdle = true;\n this._lastTimeMillis = -1;\n }\n\n for (i = 0; i < len; i++) {\n listener = this.listeners[i];\n listener.onAfterIntegrate && listener.onAfterIntegrate(this);\n }\n\n if (!this._isIdle) {\n this.looper.run();\n }\n },\n\n // activateSpring is used to notify the SpringSystem that a Spring\n // has become displaced. The system responds by starting its solver\n // loop up if it is currently idle.\n activateSpring: function(springId) {\n var spring = this._springRegistry[springId];\n if (this._activeSprings.indexOf(spring) == -1) {\n this._activeSprings.push(spring);\n }\n if (this.getIsIdle()) {\n this._isIdle = false;\n this.looper.run();\n }\n },\n\n // Add a listener to the SpringSystem so that you can receive\n // before/after integration notifications allowing Springs to be\n // constrained or adjusted.\n addListener: function(listener) {\n this.listeners.push(listener);\n },\n\n // Remove a previously added listener on the SpringSystem.\n removeListener: function(listener) {\n removeFirst(this.listeners, listener);\n },\n\n // Remove all previously added listeners on the SpringSystem.\n removeAllListeners: function() {\n this.listeners = [];\n }\n\n });\n\n // Spring\n // ------\n // **Spring** provides a model of a classical spring acting to\n // resolve a body to equilibrium. Springs have configurable\n // tension which is a force multipler on the displacement of the\n // spring from its rest point or `endValue` as defined by [Hooke's\n // law](http://en.wikipedia.org/wiki/Hooke's_law). Springs also have\n // configurable friction, which ensures that they do not oscillate\n // infinitely. When a Spring is displaced by updating it's resting\n // or `currentValue`, the SpringSystems that contain that Spring\n // will automatically start looping to solve for equilibrium. As each\n // timestep passes, `SpringListener` objects attached to the Spring\n // will be notified of the updates providing a way to drive an\n // animation off of the spring's resolution curve.\n var Spring = rebound.Spring = function Spring(springSystem) {\n this._id = 's' + Spring._ID++;\n this._springSystem = springSystem;\n this.listeners = [];\n this._currentState = new PhysicsState();\n this._previousState = new PhysicsState();\n this._tempState = new PhysicsState();\n };\n\n util.extend(Spring, {\n _ID: 0,\n\n MAX_DELTA_TIME_SEC: 0.064,\n\n SOLVER_TIMESTEP_SEC: 0.001\n\n });\n\n util.extend(Spring.prototype, {\n\n _id: 0,\n\n _springConfig: null,\n\n _overshootClampingEnabled: false,\n\n _currentState: null,\n\n _previousState: null,\n\n _tempState: null,\n\n _startValue: 0,\n\n _endValue: 0,\n\n _wasAtRest: true,\n\n _restSpeedThreshold: 0.001,\n\n _displacementFromRestThreshold: 0.001,\n\n listeners: null,\n\n _timeAccumulator: 0,\n\n _springSystem: null,\n\n // Remove a Spring from simulation and clear its listeners.\n destroy: function() {\n this.listeners = [];\n this.frames = [];\n this._springSystem.deregisterSpring(this);\n },\n\n // Get the id of the spring, which can be used to retrieve it from\n // the SpringSystems it participates in later.\n getId: function() {\n return this._id;\n },\n\n // Set the configuration values for this Spring. A SpringConfig\n // contains the tension and friction values used to solve for the\n // equilibrium of the Spring in the physics loop.\n setSpringConfig: function(springConfig) {\n this._springConfig = springConfig;\n return this;\n },\n\n // Retrieve the SpringConfig used by this Spring.\n getSpringConfig: function() {\n return this._springConfig;\n },\n\n // Set the current position of this Spring. Listeners will be updated\n // with this value immediately. If the rest or `endValue` is not\n // updated to match this value, then the spring will be dispalced and\n // the SpringSystem will start to loop to restore the spring to the\n // `endValue`.\n //\n // A common pattern is to move a Spring around without animation by\n // calling.\n //\n // ```\n // spring.setCurrentValue(n).setAtRest();\n // ```\n //\n // This moves the Spring to a new position `n`, sets the endValue\n // to `n`, and removes any velocity from the `Spring`. By doing\n // this you can allow the `SpringListener` to manage the position\n // of UI elements attached to the spring even when moving without\n // animation. For example, when dragging an element you can\n // update the position of an attached view through a spring\n // by calling `spring.setCurrentValue(x)`. When\n // the gesture ends you can update the Springs\n // velocity and endValue\n // `spring.setVelocity(gestureEndVelocity).setEndValue(flingTarget)`\n // to cause it to naturally animate the UI element to the resting\n // position taking into account existing velocity. The codepaths for\n // synchronous movement and spring driven animation can\n // be unified using this technique.\n setCurrentValue: function(currentValue, skipSetAtRest) {\n this._startValue = currentValue;\n this._currentState.position = currentValue;\n if (!skipSetAtRest) {\n this.setAtRest();\n }\n this.notifyPositionUpdated(false, false);\n return this;\n },\n\n // Get the position that the most recent animation started at. This\n // can be useful for determining the number off oscillations that\n // have occurred.\n getStartValue: function() {\n return this._startValue;\n },\n\n // Retrieve the current value of the Spring.\n getCurrentValue: function() {\n return this._currentState.position;\n },\n\n // Get the absolute distance of the Spring from it's resting endValue\n // position.\n getCurrentDisplacementDistance: function() {\n return this.getDisplacementDistanceForState(this._currentState);\n },\n\n getDisplacementDistanceForState: function(state) {\n return Math.abs(this._endValue - state.position);\n },\n\n // Set the endValue or resting position of the spring. If this\n // value is different than the current value, the SpringSystem will\n // be notified and will begin running its solver loop to resolve\n // the Spring to equilibrium. Any listeners that are registered\n // for onSpringEndStateChange will also be notified of this update\n // immediately.\n setEndValue: function(endValue) {\n if (this._endValue == endValue && this.isAtRest()) {\n return this;\n }\n this._startValue = this.getCurrentValue();\n this._endValue = endValue;\n this._springSystem.activateSpring(this.getId());\n for (var i = 0, len = this.listeners.length; i < len; i++) {\n var listener = this.listeners[i];\n var onChange = listener.onSpringEndStateChange;\n onChange && onChange(this);\n }\n return this;\n },\n\n // Retrieve the endValue or resting position of this spring.\n getEndValue: function() {\n return this._endValue;\n },\n\n // Set the current velocity of the Spring. As previously mentioned,\n // this can be useful when you are performing a direct manipulation\n // gesture. When a UI element is released you may call setVelocity\n // on its animation Spring so that the Spring continues with the\n // same velocity as the gesture ended with. The friction, tension,\n // and displacement of the Spring will then govern its motion to\n // return to rest on a natural feeling curve.\n setVelocity: function(velocity) {\n if (velocity === this._currentState.velocity) {\n return this;\n }\n this._currentState.velocity = velocity;\n this._springSystem.activateSpring(this.getId());\n return this;\n },\n\n // Get the current velocity of the Spring.\n getVelocity: function() {\n return this._currentState.velocity;\n },\n\n // Set a threshold value for the movement speed of the Spring below\n // which it will be considered to be not moving or resting.\n setRestSpeedThreshold: function(restSpeedThreshold) {\n this._restSpeedThreshold = restSpeedThreshold;\n return this;\n },\n\n // Retrieve the rest speed threshold for this Spring.\n getRestSpeedThreshold: function() {\n return this._restSpeedThreshold;\n },\n\n // Set a threshold value for displacement below which the Spring\n // will be considered to be not displaced i.e. at its resting\n // `endValue`.\n setRestDisplacementThreshold: function(displacementFromRestThreshold) {\n this._displacementFromRestThreshold = displacementFromRestThreshold;\n },\n\n // Retrieve the rest displacement threshold for this spring.\n getRestDisplacementThreshold: function() {\n return this._displacementFromRestThreshold;\n },\n\n // Enable overshoot clamping. This means that the Spring will stop\n // immediately when it reaches its resting position regardless of\n // any existing momentum it may have. This can be useful for certain\n // types of animations that should not oscillate such as a scale\n // down to 0 or alpha fade.\n setOvershootClampingEnabled: function(enabled) {\n this._overshootClampingEnabled = enabled;\n return this;\n },\n\n // Check if overshoot clamping is enabled for this spring.\n isOvershootClampingEnabled: function() {\n return this._overshootClampingEnabled;\n },\n\n // Check if the Spring has gone past its end point by comparing\n // the direction it was moving in when it started to the current\n // position and end value.\n isOvershooting: function() {\n var start = this._startValue;\n var end = this._endValue;\n return this._springConfig.tension > 0 &&\n ((start < end && this.getCurrentValue() > end) ||\n (start > end && this.getCurrentValue() < end));\n },\n\n // Spring.advance is the main solver method for the Spring. It takes\n // the current time and delta since the last time step and performs\n // an RK4 integration to get the new position and velocity state\n // for the Spring based on the tension, friction, velocity, and\n // displacement of the Spring.\n advance: function(time, realDeltaTime) {\n var isAtRest = this.isAtRest();\n\n if (isAtRest && this._wasAtRest) {\n return;\n }\n\n var adjustedDeltaTime = realDeltaTime;\n if (realDeltaTime > Spring.MAX_DELTA_TIME_SEC) {\n adjustedDeltaTime = Spring.MAX_DELTA_TIME_SEC;\n }\n\n this._timeAccumulator += adjustedDeltaTime;\n\n var tension = this._springConfig.tension,\n friction = this._springConfig.friction,\n\n position = this._currentState.position,\n velocity = this._currentState.velocity,\n tempPosition = this._tempState.position,\n tempVelocity = this._tempState.velocity,\n\n aVelocity, aAcceleration,\n bVelocity, bAcceleration,\n cVelocity, cAcceleration,\n dVelocity, dAcceleration,\n\n dxdt, dvdt;\n\n while(this._timeAccumulator >= Spring.SOLVER_TIMESTEP_SEC) {\n\n this._timeAccumulator -= Spring.SOLVER_TIMESTEP_SEC;\n\n if (this._timeAccumulator < Spring.SOLVER_TIMESTEP_SEC) {\n this._previousState.position = position;\n this._previousState.velocity = velocity;\n }\n\n aVelocity = velocity;\n aAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * velocity;\n\n tempPosition = position + aVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + aAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n bVelocity = tempVelocity;\n bAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n tempPosition = position + bVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + bAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n cVelocity = tempVelocity;\n cAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n tempPosition = position + cVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + cAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n dVelocity = tempVelocity;\n dAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n dxdt =\n 1.0/6.0 * (aVelocity + 2.0 * (bVelocity + cVelocity) + dVelocity);\n dvdt = 1.0/6.0 * (\n aAcceleration + 2.0 * (bAcceleration + cAcceleration) + dAcceleration\n );\n\n position += dxdt * Spring.SOLVER_TIMESTEP_SEC;\n velocity += dvdt * Spring.SOLVER_TIMESTEP_SEC;\n }\n\n this._tempState.position = tempPosition;\n this._tempState.velocity = tempVelocity;\n\n this._currentState.position = position;\n this._currentState.velocity = velocity;\n\n if (this._timeAccumulator > 0) {\n this.interpolate(this._timeAccumulator / Spring.SOLVER_TIMESTEP_SEC);\n }\n\n if (this.isAtRest() ||\n this._overshootClampingEnabled && this.isOvershooting()) {\n\n if (this._springConfig.tension > 0) {\n this._startValue = this._endValue;\n this._currentState.position = this._endValue;\n } else {\n this._endValue = this._currentState.position;\n this._startValue = this._endValue;\n }\n this.setVelocity(0);\n isAtRest = true;\n }\n\n var notifyActivate = false;\n if (this._wasAtRest) {\n this._wasAtRest = false;\n notifyActivate = true;\n }\n\n var notifyAtRest = false;\n if (isAtRest) {\n this._wasAtRest = true;\n notifyAtRest = true;\n }\n\n this.notifyPositionUpdated(notifyActivate, notifyAtRest);\n },\n\n notifyPositionUpdated: function(notifyActivate, notifyAtRest) {\n for (var i = 0, len = this.listeners.length; i < len; i++) {\n var listener = this.listeners[i];\n if (notifyActivate && listener.onSpringActivate) {\n listener.onSpringActivate(this);\n }\n\n if (listener.onSpringUpdate) {\n listener.onSpringUpdate(this);\n }\n\n if (notifyAtRest && listener.onSpringAtRest) {\n listener.onSpringAtRest(this);\n }\n }\n },\n\n\n // Check if the SpringSystem should advance. Springs are advanced\n // a final frame after they reach equilibrium to ensure that the\n // currentValue is exactly the requested endValue regardless of the\n // displacement threshold.\n systemShouldAdvance: function() {\n return !this.isAtRest() || !this.wasAtRest();\n },\n\n wasAtRest: function() {\n return this._wasAtRest;\n },\n\n // Check if the Spring is atRest meaning that it's currentValue and\n // endValue are the same and that it has no velocity. The previously\n // described thresholds for speed and displacement define the bounds\n // of this equivalence check. If the Spring has 0 tension, then it will\n // be considered at rest whenever its absolute velocity drops below the\n // restSpeedThreshold.\n isAtRest: function() {\n return Math.abs(this._currentState.velocity) < this._restSpeedThreshold &&\n (this.getDisplacementDistanceForState(this._currentState) <=\n this._displacementFromRestThreshold ||\n this._springConfig.tension === 0);\n },\n\n // Force the spring to be at rest at its current position. As\n // described in the documentation for setCurrentValue, this method\n // makes it easy to do synchronous non-animated updates to ui\n // elements that are attached to springs via SpringListeners.\n setAtRest: function() {\n this._endValue = this._currentState.position;\n this._tempState.position = this._currentState.position;\n this._currentState.velocity = 0;\n return this;\n },\n\n interpolate: function(alpha) {\n this._currentState.position = this._currentState.position *\n alpha + this._previousState.position * (1 - alpha);\n this._currentState.velocity = this._currentState.velocity *\n alpha + this._previousState.velocity * (1 - alpha);\n },\n\n getListeners: function() {\n return this.listeners;\n },\n\n addListener: function(newListener) {\n this.listeners.push(newListener);\n return this;\n },\n\n removeListener: function(listenerToRemove) {\n removeFirst(this.listeners, listenerToRemove);\n return this;\n },\n\n removeAllListeners: function() {\n this.listeners = [];\n return this;\n },\n\n currentValueIsApproximately: function(value) {\n return Math.abs(this.getCurrentValue() - value) <=\n this.getRestDisplacementThreshold();\n }\n\n });\n\n // PhysicsState\n // ------------\n // **PhysicsState** consists of a position and velocity. A Spring uses\n // this internally to keep track of its current and prior position and\n // velocity values.\n var PhysicsState = function PhysicsState() {};\n\n util.extend(PhysicsState.prototype, {\n position: 0,\n velocity: 0\n });\n\n // SpringConfig\n // ------------\n // **SpringConfig** maintains a set of tension and friction constants\n // for a Spring. You can use fromOrigamiTensionAndFriction to convert\n // values from the [Origami](http://facebook.github.io/origami/)\n // design tool directly to Rebound spring constants.\n var SpringConfig = rebound.SpringConfig =\n function SpringConfig(tension, friction) {\n this.tension = tension;\n this.friction = friction;\n };\n\n // Loopers\n // -------\n // **AnimationLooper** plays each frame of the SpringSystem on animation\n // timing loop. This is the default type of looper for a new spring system\n // as it is the most common when developing UI.\n var AnimationLooper = rebound.AnimationLooper = function AnimationLooper() {\n this.springSystem = null;\n var _this = this;\n var _run = function() {\n _this.springSystem.loop(Date.now());\n };\n\n this.run = function() {\n util.onFrame(_run);\n };\n };\n\n // **SimulationLooper** resolves the SpringSystem to a resting state in a\n // tight and blocking loop. This is useful for synchronously generating\n // pre-recorded animations that can then be played on a timing loop later.\n // Sometimes this lead to better performance to pre-record a single spring\n // curve and use it to drive many animations; however, it can make dynamic\n // response to user input a bit trickier to implement.\n rebound.SimulationLooper = function SimulationLooper(timestep) {\n this.springSystem = null;\n var time = 0;\n var running = false;\n timestep=timestep || 16.667;\n\n this.run = function() {\n if (running) {\n return;\n }\n running = true;\n while(!this.springSystem.getIsIdle()) {\n this.springSystem.loop(time+=timestep);\n }\n running = false;\n };\n };\n\n // **SteppingSimulationLooper** resolves the SpringSystem one step at a\n // time controlled by an outside loop. This is useful for testing and\n // verifying the behavior of a SpringSystem or if you want to control your own\n // timing loop for some reason e.g. slowing down or speeding up the\n // simulation.\n rebound.SteppingSimulationLooper = function(timestep) {\n this.springSystem = null;\n var time = 0;\n\n // this.run is NOOP'd here to allow control from the outside using\n // this.step.\n this.run = function(){};\n\n // Perform one step toward resolving the SpringSystem.\n this.step = function(timestep) {\n this.springSystem.loop(time+=timestep);\n };\n };\n\n // Math for converting from\n // [Origami](http://facebook.github.io/origami/) to\n // [Rebound](http://facebook.github.io/rebound).\n // You mostly don't need to worry about this, just use\n // SpringConfig.fromOrigamiTensionAndFriction(v, v);\n var OrigamiValueConverter = rebound.OrigamiValueConverter = {\n tensionFromOrigamiValue: function(oValue) {\n return (oValue - 30.0) * 3.62 + 194.0;\n },\n\n origamiValueFromTension: function(tension) {\n return (tension - 194.0) / 3.62 + 30.0;\n },\n\n frictionFromOrigamiValue: function(oValue) {\n return (oValue - 8.0) * 3.0 + 25.0;\n },\n\n origamiFromFriction: function(friction) {\n return (friction - 25.0) / 3.0 + 8.0;\n }\n };\n\n // BouncyConversion provides math for converting from Origami PopAnimation\n // config values to regular Origami tension and friction values. If you are\n // trying to replicate prototypes made with PopAnimation patches in Origami,\n // then you should create your springs with\n // SpringSystem.createSpringWithBouncinessAndSpeed, which uses this Math\n // internally to create a spring to match the provided PopAnimation\n // configuration from Origami.\n var BouncyConversion = rebound.BouncyConversion = function(bounciness, speed){\n this.bounciness = bounciness;\n this.speed = speed;\n var b = this.normalize(bounciness / 1.7, 0, 20.0);\n b = this.projectNormal(b, 0.0, 0.8);\n var s = this.normalize(speed / 1.7, 0, 20.0);\n this.bouncyTension = this.projectNormal(s, 0.5, 200)\n this.bouncyFriction = this.quadraticOutInterpolation(\n b,\n this.b3Nobounce(this.bouncyTension),\n 0.01);\n }\n\n util.extend(BouncyConversion.prototype, {\n\n normalize: function(value, startValue, endValue) {\n return (value - startValue) / (endValue - startValue);\n },\n\n projectNormal: function(n, start, end) {\n return start + (n * (end - start));\n },\n\n linearInterpolation: function(t, start, end) {\n return t * end + (1.0 - t) * start;\n },\n\n quadraticOutInterpolation: function(t, start, end) {\n return this.linearInterpolation(2*t - t*t, start, end);\n },\n\n b3Friction1: function(x) {\n return (0.0007 * Math.pow(x, 3)) -\n (0.031 * Math.pow(x, 2)) + 0.64 * x + 1.28;\n },\n\n b3Friction2: function(x) {\n return (0.000044 * Math.pow(x, 3)) -\n (0.006 * Math.pow(x, 2)) + 0.36 * x + 2.;\n },\n\n b3Friction3: function(x) {\n return (0.00000045 * Math.pow(x, 3)) -\n (0.000332 * Math.pow(x, 2)) + 0.1078 * x + 5.84;\n },\n\n b3Nobounce: function(tension) {\n var friction = 0;\n if (tension <= 18) {\n friction = this.b3Friction1(tension);\n } else if (tension > 18 && tension <= 44) {\n friction = this.b3Friction2(tension);\n } else {\n friction = this.b3Friction3(tension);\n }\n return friction;\n }\n });\n\n util.extend(SpringConfig, {\n // Convert an origami Spring tension and friction to Rebound spring\n // constants. If you are prototyping a design with Origami, this\n // makes it easy to make your springs behave exactly the same in\n // Rebound.\n fromOrigamiTensionAndFriction: function(tension, friction) {\n return new SpringConfig(\n OrigamiValueConverter.tensionFromOrigamiValue(tension),\n OrigamiValueConverter.frictionFromOrigamiValue(friction));\n },\n\n // Convert an origami PopAnimation Spring bounciness and speed to Rebound\n // spring constants. If you are using PopAnimation patches in Origami, this\n // utility will provide springs that match your prototype.\n fromBouncinessAndSpeed: function(bounciness, speed) {\n var bouncyConversion = new rebound.BouncyConversion(bounciness, speed);\n return this.fromOrigamiTensionAndFriction(\n bouncyConversion.bouncyTension,\n bouncyConversion.bouncyFriction);\n },\n\n // Create a SpringConfig with no tension or a coasting spring with some\n // amount of Friction so that it does not coast infininitely.\n coastingConfigWithOrigamiFriction: function(friction) {\n return new SpringConfig(\n 0,\n OrigamiValueConverter.frictionFromOrigamiValue(friction)\n );\n }\n });\n\n SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG =\n SpringConfig.fromOrigamiTensionAndFriction(40, 7);\n\n util.extend(SpringConfig.prototype, {friction: 0, tension: 0});\n\n // Here are a couple of function to convert colors between hex codes and RGB\n // component values. These are handy when performing color\n // tweening animations.\n var colorCache = {};\n util.hexToRGB = function(color) {\n if (colorCache[color]) {\n return colorCache[color];\n }\n color = color.replace('#', '');\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n var parts = color.match(/.{2}/g);\n\n var ret = {\n r: parseInt(parts[0], 16),\n g: parseInt(parts[1], 16),\n b: parseInt(parts[2], 16)\n };\n\n colorCache[color] = ret;\n return ret;\n };\n\n util.rgbToHex = function(r, g, b) {\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n r = r.length < 2 ? '0' + r : r;\n g = g.length < 2 ? '0' + g : g;\n b = b.length < 2 ? '0' + b : b;\n return '#' + r + g + b;\n };\n\n var MathUtil = rebound.MathUtil = {\n // This helper function does a linear interpolation of a value from\n // one range to another. This can be very useful for converting the\n // motion of a Spring to a range of UI property values. For example a\n // spring moving from position 0 to 1 could be interpolated to move a\n // view from pixel 300 to 350 and scale it from 0.5 to 1. The current\n // position of the `Spring` just needs to be run through this method\n // taking its input range in the _from_ parameters with the property\n // animation range in the _to_ parameters.\n mapValueInRange: function(value, fromLow, fromHigh, toLow, toHigh) {\n var fromRangeSize = fromHigh - fromLow;\n var toRangeSize = toHigh - toLow;\n var valueScale = (value - fromLow) / fromRangeSize;\n return toLow + (valueScale * toRangeSize);\n },\n\n // Interpolate two hex colors in a 0 - 1 range or optionally provide a\n // custom range with fromLow,fromHight. The output will be in hex by default\n // unless asRGB is true in which case it will be returned as an rgb string.\n interpolateColor:\n function(val, startColor, endColor, fromLow, fromHigh, asRGB) {\n fromLow = fromLow === undefined ? 0 : fromLow;\n fromHigh = fromHigh === undefined ? 1 : fromHigh;\n startColor = util.hexToRGB(startColor);\n endColor = util.hexToRGB(endColor);\n var r = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.r, endColor.r)\n );\n var g = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.g, endColor.g)\n );\n var b = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.b, endColor.b)\n );\n if (asRGB) {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else {\n return util.rgbToHex(r, g, b);\n }\n },\n\n degreesToRadians: function(deg) {\n return (deg * Math.PI) / 180;\n },\n\n radiansToDegrees: function(rad) {\n return (rad * 180) / Math.PI;\n }\n\n }\n\n util.extend(util, MathUtil);\n\n\n // Utilities\n // ---------\n // Here are a few useful JavaScript utilities.\n\n // Lop off the first occurence of the reference in the Array.\n function removeFirst(array, item) {\n var idx = array.indexOf(item);\n idx != -1 && array.splice(idx, 1);\n }\n\n var _onFrame;\n if (typeof window !== 'undefined') {\n _onFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame;\n }\n if (!_onFrame && typeof process !== 'undefined' && process.title === 'node') {\n _onFrame = setImmediate;\n }\n\n // Cross browser/node timer functions.\n util.onFrame = function onFrame(func) {\n return _onFrame(func);\n };\n\n // Export the public api using exports for common js or the window for\n // normal browser inclusion.\n if (typeof exports != 'undefined') {\n util.extend(exports, rebound);\n } else if (typeof window != 'undefined') {\n window.rebound = rebound;\n }\n})();\n\n\n// Legal Stuff\n// -----------\n/**\n * Copyright (c) 2013, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/rebound/rebound.js"},"mtime":1426054614000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\nvar Image=require('Image');\nvar NavigationContext=require('NavigationContext');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTNavigatorManager=require('NativeModules').NavigatorManager;\nvar StyleSheet=require('StyleSheet');\nvar StaticContainer=require('StaticContainer.react');\nvar View=require('View');\n\nvar createReactNativeComponentClass=\nrequire('createReactNativeComponentClass');\nvar invariant=require('invariant');\nvar logError=require('logError');\nvar merge=require('merge');\n\nvar TRANSITIONER_REF='transitionerRef';\n\nvar PropTypes=React.PropTypes;\n\nvar __uid=0;\nfunction getuid(){\nreturn __uid++;}\n\n\nvar RCTNavigator=createReactNativeComponentClass({\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nrequestedTopOfStack:true}),\n\nuiViewClassName:'RCTNavigator'});\n\n\nvar RCTNavigatorItem=createReactNativeComponentClass({\nvalidAttributes:{\n\n\ntitle:true,\nbarTintColor:true,\nleftButtonIcon:true,\nleftButtonTitle:true,\nonNavLeftButtonTap:true,\nrightButtonIcon:true,\nrightButtonTitle:true,\nonNavRightButtonTap:true,\nbackButtonIcon:true,\nbackButtonTitle:true,\ntintColor:true,\ntranslucent:true,\nnavigationBarHidden:true,\ntitleTextColor:true,\nstyle:true},\n\nuiViewClassName:'RCTNavItem'});\n\n\nvar NavigatorTransitionerIOS=React.createClass({displayName:'NavigatorTransitionerIOS',\nrequestSchedulingNavigation:function(cb){\nRCTNavigatorManager.requestSchedulingJavaScriptNavigation(\nReact.findNodeHandle(this),\nlogError,\ncb);},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTNavigator,this.props));}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigatorIOS=React.createClass({displayName:'NavigatorIOS',\n\npropTypes:{\n\n\n\n\n\n\ninitialRoute:PropTypes.shape({\n\n\n\ncomponent:PropTypes.func.isRequired,\n\n\n\n\ntitle:PropTypes.string.isRequired,\n\n\n\n\n\npassProps:PropTypes.object,\n\n\n\n\n\n\nbackButtonIcon:Image.propTypes.source,\n\n\n\n\n\n\nbackButtonTitle:PropTypes.string,\n\n\n\n\nleftButtonIcon:Image.propTypes.source,\n\n\n\n\nleftButtonTitle:PropTypes.string,\n\n\n\n\nonLeftButtonPress:PropTypes.func,\n\n\n\n\nrightButtonIcon:Image.propTypes.source,\n\n\n\n\nrightButtonTitle:PropTypes.string,\n\n\n\n\nonRightButtonPress:PropTypes.func,\n\n\n\n\nwrapperStyle:View.propTypes.style}).\n\nisRequired,\n\n\n\n\nnavigationBarHidden:PropTypes.bool,\n\n\n\n\n\nitemWrapperStyle:View.propTypes.style,\n\n\n\n\ntintColor:PropTypes.string,\n\n\n\n\nbarTintColor:PropTypes.string,\n\n\n\n\ntitleTextColor:PropTypes.string,\n\n\n\n\ntranslucent:PropTypes.bool},\n\n\n\nnavigator:undefined,\nnavigationContext:new NavigationContext(),\n\ncomponentWillMount:function(){\n\n\nthis.navigator = {\npush:this.push,\npop:this.pop,\npopN:this.popN,\nreplace:this.replace,\nreplacePrevious:this.replacePrevious,\nreplacePreviousAndPop:this.replacePreviousAndPop,\nresetTo:this.resetTo,\npopToRoute:this.popToRoute,\npopToTop:this.popToTop,\nnavigationContext:this.navigationContext};\n\nthis._emitWillFocus(this.state.routeStack[this.state.observedTopOfStack]);},\n\n\ncomponentDidMount:function(){\nthis._emitDidFocus(this.state.routeStack[this.state.observedTopOfStack]);},\n\n\ncomponentWillUnmount:function(){\nthis.navigationContext.dispose();\nthis.navigationContext = new NavigationContext();},\n\n\ngetInitialState:function(){\nreturn {\nidStack:[getuid()],\nrouteStack:[this.props.initialRoute],\n\nrequestedTopOfStack:0,\n\n\n\n\n\n\nobservedTopOfStack:0,\nprogress:1,\nfromIndex:0,\ntoIndex:0,\n\n\nmakingNavigatorRequest:false,\n\n\n\nupdatingAllIndicesAtOrBeyond:0};},\n\n\n\n_toFocusOnNavigationComplete:undefined,\n\n_handleFocusRequest:function(item){\nif(this.state.makingNavigatorRequest){\nthis._toFocusOnNavigationComplete = item;}else \n{\nthis._getFocusEmitter().emit('focus',item);}},\n\n\n\n_focusEmitter:undefined,\n\n_getFocusEmitter:function(){\n\nvar focusEmitter=this._focusEmitter;\nif(!focusEmitter){\nfocusEmitter = new EventEmitter();\nthis._focusEmitter = focusEmitter;}\n\nreturn focusEmitter;},\n\n\ngetChildContext:function()\n\n\n{\nreturn {\nonFocusRequested:this._handleFocusRequest,\nfocusEmitter:this._getFocusEmitter()};},\n\n\n\nchildContextTypes:{\nonFocusRequested:React.PropTypes.func,\nfocusEmitter:React.PropTypes.instanceOf(EventEmitter)},\n\n\n_tryLockNavigator:function(cb){\nthis.refs[TRANSITIONER_REF].requestSchedulingNavigation(\nfunction(acquiredLock){return acquiredLock && cb();});},\n\n\n\n_handleNavigatorStackChanged:function(e){\nvar newObservedTopOfStack=e.nativeEvent.stackLength - 1;\nthis._emitDidFocus(this.state.routeStack[newObservedTopOfStack]);\n\ninvariant(\nnewObservedTopOfStack <= this.state.requestedTopOfStack,\n'No navigator item should be pushed without JS knowing about it %s %s',newObservedTopOfStack,this.state.requestedTopOfStack);\n\nvar wasWaitingForConfirmation=\nthis.state.requestedTopOfStack !== this.state.observedTopOfStack;\nif(wasWaitingForConfirmation){\ninvariant(\nnewObservedTopOfStack === this.state.requestedTopOfStack,\n'If waiting for observedTopOfStack to reach requestedTopOfStack, ' + \n'the only valid observedTopOfStack should be requestedTopOfStack.');}\n\n\n\n\n\n\n\n\n\n\n\nvar nextState={\nobservedTopOfStack:newObservedTopOfStack,\nmakingNavigatorRequest:false,\nupdatingAllIndicesAtOrBeyond:null,\nprogress:1,\ntoIndex:newObservedTopOfStack,\nfromIndex:newObservedTopOfStack};\n\nthis.setState(nextState,this._eliminateUnneededChildren);},\n\n\n_eliminateUnneededChildren:function(){\n\n\n\nvar updatingAllIndicesAtOrBeyond=\nthis.state.routeStack.length > this.state.observedTopOfStack + 1?\nthis.state.observedTopOfStack + 1:\nnull;\nthis.setState({\nidStack:this.state.idStack.slice(0,this.state.observedTopOfStack + 1),\nrouteStack:this.state.routeStack.slice(0,this.state.observedTopOfStack + 1),\n\nrequestedTopOfStack:this.state.observedTopOfStack,\nmakingNavigatorRequest:true,\nupdatingAllIndicesAtOrBeyond:updatingAllIndicesAtOrBeyond});},\n\n\n\n_emitDidFocus:function(route){\nthis.navigationContext.emit('didfocus',{route:route});},\n\n\n_emitWillFocus:function(route){\nthis.navigationContext.emit('willfocus',{route:route});},\n\n\npush:function(route){var _this=this;\ninvariant(!!route,'Must supply route to push');\n\nif(this.state.requestedTopOfStack === this.state.observedTopOfStack){\nthis._tryLockNavigator(function(){\n_this._emitWillFocus(route);\n\nvar nextStack=_this.state.routeStack.concat([route]);\nvar nextIDStack=_this.state.idStack.concat([getuid()]);\n_this.setState({\n\n\nidStack:nextIDStack,\nrouteStack:nextStack,\nrequestedTopOfStack:nextStack.length - 1,\nmakingNavigatorRequest:true,\nupdatingAllIndicesAtOrBeyond:nextStack.length - 1});});}},\n\n\n\n\n\npopN:function(n){var _this2=this;\nif(n === 0){\nreturn;}\n\n\nif(this.state.requestedTopOfStack === this.state.observedTopOfStack){\nif(this.state.requestedTopOfStack > 0){\nthis._tryLockNavigator(function(){\nvar newRequestedTopOfStack=_this2.state.requestedTopOfStack - n;\ninvariant(newRequestedTopOfStack >= 0,'Cannot pop below 0');\n_this2._emitWillFocus(_this2.state.routeStack[newRequestedTopOfStack]);\n_this2.setState({\nrequestedTopOfStack:newRequestedTopOfStack,\nmakingNavigatorRequest:true,\n\n\nupdatingAllIndicesAtOrBeyond:null});});}}},\n\n\n\n\n\n\npop:function(){\nthis.popN(1);},\n\n\n\n\n\n\n\n\nreplaceAtIndex:function(route,index){\ninvariant(!!route,'Must supply route to replace');\nif(index < 0){\nindex += this.state.routeStack.length;}\n\n\nif(this.state.routeStack.length <= index){\nreturn;}\n\n\n\n\nvar nextIDStack=this.state.idStack.slice();\nvar nextRouteStack=this.state.routeStack.slice();\nnextIDStack[index] = getuid();\nnextRouteStack[index] = route;\n\nthis.setState({\nidStack:nextIDStack,\nrouteStack:nextRouteStack,\nmakingNavigatorRequest:false,\nupdatingAllIndicesAtOrBeyond:index});\n\n\nthis._emitWillFocus(route);\nthis._emitDidFocus(route);},\n\n\n\n\n\nreplace:function(route){\nthis.replaceAtIndex(route,-1);},\n\n\n\n\n\nreplacePrevious:function(route){\nthis.replaceAtIndex(route,-2);},\n\n\npopToTop:function(){\nthis.popToRoute(this.state.routeStack[0]);},\n\n\npopToRoute:function(route){\nvar indexOfRoute=this.state.routeStack.indexOf(route);\ninvariant(\nindexOfRoute !== -1,\n'Calling pop to route for a route that doesn\\'t exist!');\n\nvar numToPop=this.state.routeStack.length - indexOfRoute - 1;\nthis.popN(numToPop);},\n\n\nreplacePreviousAndPop:function(route){var _this3=this;\n\nif(this.state.requestedTopOfStack !== this.state.observedTopOfStack){\nreturn;}\n\nif(this.state.routeStack.length < 2){\nreturn;}\n\nthis._tryLockNavigator(function(){\n_this3.replacePrevious(route);\n_this3.setState({\nrequestedTopOfStack:_this3.state.requestedTopOfStack - 1,\nmakingNavigatorRequest:true});});},\n\n\n\n\nresetTo:function(route){\ninvariant(!!route,'Must supply route to push');\n\nif(this.state.requestedTopOfStack !== this.state.observedTopOfStack){\nreturn;}\n\nthis.replaceAtIndex(route,0);\nthis.popToRoute(route);},\n\n\nhandleNavigationComplete:function(e){\nif(this._toFocusOnNavigationComplete){\nthis._getFocusEmitter().emit('focus',this._toFocusOnNavigationComplete);\nthis._toFocusOnNavigationComplete = null;}\n\nthis._handleNavigatorStackChanged(e);},\n\n\n_routeToStackItem:function(route,i){\nvar Component=route.component;\nvar shouldUpdateChild=this.state.updatingAllIndicesAtOrBeyond !== null && \nthis.state.updatingAllIndicesAtOrBeyond >= i;\n\nreturn (\nReact.createElement(StaticContainer,{key:'nav' + i,shouldUpdate:shouldUpdateChild},\nReact.createElement(RCTNavigatorItem,{\ntitle:route.title,\nstyle:[\nstyles.stackItem,\nthis.props.itemWrapperStyle,\nroute.wrapperStyle],\n\nbackButtonIcon:this._imageNameFromSource(route.backButtonIcon),\nbackButtonTitle:route.backButtonTitle,\nleftButtonIcon:this._imageNameFromSource(route.leftButtonIcon),\nleftButtonTitle:route.leftButtonTitle,\nonNavLeftButtonTap:route.onLeftButtonPress,\nrightButtonIcon:this._imageNameFromSource(route.rightButtonIcon),\nrightButtonTitle:route.rightButtonTitle,\nonNavRightButtonTap:route.onRightButtonPress,\nnavigationBarHidden:this.props.navigationBarHidden,\ntintColor:this.props.tintColor,\nbarTintColor:this.props.barTintColor,\ntranslucent:this.props.translucent !== false,\ntitleTextColor:this.props.titleTextColor},\nReact.createElement(Component,_extends({\nnavigator:this.navigator,\nroute:route},\nroute.passProps)))));},\n\n\n\n\n\n\n_imageNameFromSource:function(source){\nreturn source?source.uri:undefined;},\n\n\nrenderNavigationStackItems:function(){\nvar shouldRecurseToNavigator=\nthis.state.makingNavigatorRequest || \nthis.state.updatingAllIndicesAtOrBeyond !== null;\n\n\nvar items=shouldRecurseToNavigator?\nthis.state.routeStack.map(this._routeToStackItem):null;\nreturn (\nReact.createElement(StaticContainer,{shouldUpdate:shouldRecurseToNavigator},\nReact.createElement(NavigatorTransitionerIOS,{\nref:TRANSITIONER_REF,\nstyle:styles.transitioner,\nvertical:this.props.vertical,\nrequestedTopOfStack:this.state.requestedTopOfStack,\nonNavigationComplete:this.handleNavigationComplete},\nitems)));},\n\n\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:this.props.style},\nthis.renderNavigationStackItems()));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nstackItem:{\nbackgroundColor:'white',\noverflow:'hidden',\nposition:'absolute',\ntop:0,\nleft:0,\nright:0,\nbottom:0},\n\ntransitioner:{\nflex:1}});\n\n\n\nmodule.exports = NavigatorIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NavigatorIOS\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\nvar Image = require('Image');\nvar NavigationContext = require('NavigationContext');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTNavigatorManager = require('NativeModules').NavigatorManager;\nvar StyleSheet = require('StyleSheet');\nvar StaticContainer = require('StaticContainer.react');\nvar View = require('View');\n\nvar createReactNativeComponentClass =\n require('createReactNativeComponentClass');\nvar invariant = require('invariant');\nvar logError = require('logError');\nvar merge = require('merge');\n\nvar TRANSITIONER_REF = 'transitionerRef';\n\nvar PropTypes = React.PropTypes;\n\nvar __uid = 0;\nfunction getuid() {\n return __uid++;\n}\n\nvar RCTNavigator = createReactNativeComponentClass({\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n requestedTopOfStack: true\n }),\n uiViewClassName: 'RCTNavigator',\n});\n\nvar RCTNavigatorItem = createReactNativeComponentClass({\n validAttributes: {\n // TODO: Remove or fix the attributes that are not fully functional.\n // NavigatorIOS does not use them all, because some are problematic\n title: true,\n barTintColor: true,\n leftButtonIcon: true,\n leftButtonTitle: true,\n onNavLeftButtonTap: true,\n rightButtonIcon: true,\n rightButtonTitle: true,\n onNavRightButtonTap: true,\n backButtonIcon: true,\n backButtonTitle: true,\n tintColor: true,\n translucent: true,\n navigationBarHidden: true,\n titleTextColor: true,\n style: true,\n },\n uiViewClassName: 'RCTNavItem',\n});\n\nvar NavigatorTransitionerIOS = React.createClass({\n requestSchedulingNavigation: function(cb) {\n RCTNavigatorManager.requestSchedulingJavaScriptNavigation(\n React.findNodeHandle(this),\n logError,\n cb\n );\n },\n\n render: function() {\n return (\n \n );\n },\n});\n\ntype Route = {\n component: Function;\n title: string;\n passProps?: Object;\n backButtonTitle?: string;\n backButtonIcon?: Object;\n leftButtonTitle?: string;\n leftButtonIcon?: Object;\n onLeftButtonPress?: Function;\n rightButtonTitle?: string;\n rightButtonIcon?: Object;\n onRightButtonPress?: Function;\n wrapperStyle?: any;\n};\n\ntype State = {\n idStack: Array;\n routeStack: Array;\n requestedTopOfStack: number;\n observedTopOfStack: number;\n progress: number;\n fromIndex: number;\n toIndex: number;\n makingNavigatorRequest: boolean;\n updatingAllIndicesAtOrBeyond: number;\n}\n\ntype Event = Object;\n\n/**\n * Think of `` as simply a component that renders an\n * `RCTNavigator`, and moves the `RCTNavigator`'s `requestedTopOfStack` pointer\n * forward and backward. The `RCTNavigator` interprets changes in\n * `requestedTopOfStack` to be pushes and pops of children that are rendered.\n * `` always ensures that whenever the `requestedTopOfStack`\n * pointer is moved, that we've also rendered enough children so that the\n * `RCTNavigator` can carry out the push/pop with those children.\n * `` also removes children that will no longer be needed\n * (after the pop of a child has been fully completed/animated out).\n */\n\n/**\n * NavigatorIOS wraps UIKit navigation and allows you to add back-swipe\n * functionality across your app.\n *\n * #### Routes\n * A route is an object used to describe each page in the navigator. The first\n * route is provided to NavigatorIOS as `initialRoute`:\n *\n * ```\n * render: function() {\n * return (\n * \n * );\n * },\n * ```\n *\n * Now MyView will be rendered by the navigator. It will recieve the route\n * object in the `route` prop, a navigator, and all of the props specified in\n * `passProps`.\n *\n * See the initialRoute propType for a complete definition of a route.\n *\n * #### Navigator\n *\n * A `navigator` is an object of navigation functions that a view can call. It\n * is passed as a prop to any component rendered by NavigatorIOS.\n *\n * ```\n * var MyView = React.createClass({\n * _handleBackButtonPress: function() {\n * this.props.navigator.pop();\n * },\n * _handleNextButtonPress: function() {\n * this.props.navigator.push(nextRoute);\n * },\n * ...\n * });\n * ```\n *\n * A navigation object contains the following functions:\n *\n * - `push(route)` - Navigate forward to a new route\n * - `pop()` - Go back one page\n * - `popN(n)` - Go back N pages at once. When N=1, behavior matches `pop()`\n * - `replace(route)` - Replace the route for the current page and immediately\n * load the view for the new route\n * - `replacePrevious(route)` - Replace the route/view for the previous page\n * - `replacePreviousAndPop(route)` - Replaces the previous route/view and\n * transitions back to it\n * - `resetTo(route)` - Replaces the top item and popToTop\n * - `popToRoute(route)` - Go back to the item for a particular route object\n * - `popToTop()` - Go back to the top item\n *\n * Navigator functions are also available on the NavigatorIOS component:\n *\n * ```\n * var MyView = React.createClass({\n * _handleNavigationRequest: function() {\n * this.refs.nav.push(otherRoute);\n * },\n * render: () => (\n * \n * ),\n * });\n * ```\n *\n */\nvar NavigatorIOS = React.createClass({\n\n propTypes: {\n\n /**\n * NavigatorIOS uses \"route\" objects to identify child views, their props,\n * and navigation bar configuration. \"push\" and all the other navigation\n * operations expect routes to be like this:\n */\n initialRoute: PropTypes.shape({\n /**\n * The React Class to render for this route\n */\n component: PropTypes.func.isRequired,\n\n /**\n * The title displayed in the nav bar and back button for this route\n */\n title: PropTypes.string.isRequired,\n\n /**\n * Specify additional props passed to the component. NavigatorIOS will\n * automatically provide \"route\" and \"navigator\" components\n */\n passProps: PropTypes.object,\n\n /**\n * If set, the left header button image will appear with this source. Note\n * that this doesn't apply for the header of the current view, but the\n * ones of the views that are pushed afterward.\n */\n backButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the left header button will appear with this name. Note that\n * this doesn't apply for the header of the current view, but the ones\n * of the views that are pushed afterward.\n */\n backButtonTitle: PropTypes.string,\n\n /**\n * If set, the left header button image will appear with this source\n */\n leftButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the left header button will appear with this name\n */\n leftButtonTitle: PropTypes.string,\n\n /**\n * Called when the left header button is pressed\n */\n onLeftButtonPress: PropTypes.func,\n\n /**\n * If set, the right header button image will appear with this source\n */\n rightButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the right header button will appear with this name\n */\n rightButtonTitle: PropTypes.string,\n\n /**\n * Called when the right header button is pressed\n */\n onRightButtonPress: PropTypes.func,\n\n /**\n * Styles for the navigation item containing the component\n */\n wrapperStyle: View.propTypes.style,\n\n }).isRequired,\n\n /**\n * A Boolean value that indicates whether the navigation bar is hidden\n */\n navigationBarHidden: PropTypes.bool,\n\n /**\n * The default wrapper style for components in the navigator.\n * A common use case is to set the backgroundColor for every page\n */\n itemWrapperStyle: View.propTypes.style,\n\n /**\n * The color used for buttons in the navigation bar\n */\n tintColor: PropTypes.string,\n\n /**\n * The background color of the navigation bar\n */\n barTintColor: PropTypes.string,\n\n /**\n * The text color of the navigation bar title\n */\n titleTextColor: PropTypes.string,\n\n /**\n * A Boolean value that indicates whether the navigation bar is translucent\n */\n translucent: PropTypes.bool,\n\n },\n\n navigator: (undefined: ?Object),\n navigationContext: new NavigationContext(),\n\n componentWillMount: function() {\n // Precompute a pack of callbacks that's frequently generated and passed to\n // instances.\n this.navigator = {\n push: this.push,\n pop: this.pop,\n popN: this.popN,\n replace: this.replace,\n replacePrevious: this.replacePrevious,\n replacePreviousAndPop: this.replacePreviousAndPop,\n resetTo: this.resetTo,\n popToRoute: this.popToRoute,\n popToTop: this.popToTop,\n navigationContext: this.navigationContext,\n };\n this._emitWillFocus(this.state.routeStack[this.state.observedTopOfStack]);\n },\n\n componentDidMount: function() {\n this._emitDidFocus(this.state.routeStack[this.state.observedTopOfStack]);\n },\n\n componentWillUnmount: function() {\n this.navigationContext.dispose();\n this.navigationContext = new NavigationContext();\n },\n\n getInitialState: function(): State {\n return {\n idStack: [getuid()],\n routeStack: [this.props.initialRoute],\n // The navigation index that we wish to push/pop to.\n requestedTopOfStack: 0,\n // The last index that native has sent confirmation of completed push/pop\n // for. At this point, we can discard any views that are beyond the\n // `requestedTopOfStack`. A value of `null` means we have not received\n // any confirmation, ever. We may receive an `observedTopOfStack` without\n // ever requesting it - native can instigate pops of its own with the\n // backswipe gesture.\n observedTopOfStack: 0,\n progress: 1,\n fromIndex: 0,\n toIndex: 0,\n // Whether or not we are making a navigator request to push/pop. (Used\n // for performance optimization).\n makingNavigatorRequest: false,\n // Whether or not we are updating children of navigator and if so (not\n // `null`) which index marks the beginning of all updates. Used for\n // performance optimization.\n updatingAllIndicesAtOrBeyond: 0,\n };\n },\n\n _toFocusOnNavigationComplete: (undefined: any),\n\n _handleFocusRequest: function(item: any) {\n if (this.state.makingNavigatorRequest) {\n this._toFocusOnNavigationComplete = item;\n } else {\n this._getFocusEmitter().emit('focus', item);\n }\n },\n\n _focusEmitter: (undefined: ?EventEmitter),\n\n _getFocusEmitter: function(): EventEmitter {\n // Flow not yet tracking assignments to instance fields.\n var focusEmitter = this._focusEmitter;\n if (!focusEmitter) {\n focusEmitter = new EventEmitter();\n this._focusEmitter = focusEmitter;\n }\n return focusEmitter;\n },\n\n getChildContext: function(): {\n onFocusRequested: Function;\n focusEmitter: EventEmitter;\n } {\n return {\n onFocusRequested: this._handleFocusRequest,\n focusEmitter: this._getFocusEmitter(),\n };\n },\n\n childContextTypes: {\n onFocusRequested: React.PropTypes.func,\n focusEmitter: React.PropTypes.instanceOf(EventEmitter),\n },\n\n _tryLockNavigator: function(cb: () => void) {\n this.refs[TRANSITIONER_REF].requestSchedulingNavigation(\n (acquiredLock) => acquiredLock && cb()\n );\n },\n\n _handleNavigatorStackChanged: function(e: Event) {\n var newObservedTopOfStack = e.nativeEvent.stackLength - 1;\n this._emitDidFocus(this.state.routeStack[newObservedTopOfStack]);\n\n invariant(\n newObservedTopOfStack <= this.state.requestedTopOfStack,\n 'No navigator item should be pushed without JS knowing about it %s %s', newObservedTopOfStack, this.state.requestedTopOfStack\n );\n var wasWaitingForConfirmation =\n this.state.requestedTopOfStack !== this.state.observedTopOfStack;\n if (wasWaitingForConfirmation) {\n invariant(\n newObservedTopOfStack === this.state.requestedTopOfStack,\n 'If waiting for observedTopOfStack to reach requestedTopOfStack, ' +\n 'the only valid observedTopOfStack should be requestedTopOfStack.'\n );\n }\n // Mark the most recent observation regardless of if we can lock the\n // navigator. `observedTopOfStack` merely represents what we've observed\n // and this first `setState` is only executed to update debugging\n // overlays/navigation bar.\n // Also reset progress, toIndex, and fromIndex as they might not end\n // in the correct states for a two possible reasons:\n // Progress isn't always 0 or 1 at the end, the system rounds\n // If the Navigator is offscreen these values won't be updated\n // TOOD: Revisit this decision when no longer relying on native navigator.\n var nextState = {\n observedTopOfStack: newObservedTopOfStack,\n makingNavigatorRequest: false,\n updatingAllIndicesAtOrBeyond: null,\n progress: 1,\n toIndex: newObservedTopOfStack,\n fromIndex: newObservedTopOfStack,\n };\n this.setState(nextState, this._eliminateUnneededChildren);\n },\n\n _eliminateUnneededChildren: function() {\n // Updating the indices that we're deleting and that's all. (Truth: Nothing\n // even uses the indices in this case, but let's make this describe the\n // truth anyways).\n var updatingAllIndicesAtOrBeyond =\n this.state.routeStack.length > this.state.observedTopOfStack + 1 ?\n this.state.observedTopOfStack + 1 :\n null;\n this.setState({\n idStack: this.state.idStack.slice(0, this.state.observedTopOfStack + 1),\n routeStack: this.state.routeStack.slice(0, this.state.observedTopOfStack + 1),\n // Now we rerequest the top of stack that we observed.\n requestedTopOfStack: this.state.observedTopOfStack,\n makingNavigatorRequest: true,\n updatingAllIndicesAtOrBeyond: updatingAllIndicesAtOrBeyond,\n });\n },\n\n _emitDidFocus: function(route: Route) {\n this.navigationContext.emit('didfocus', {route: route});\n },\n\n _emitWillFocus: function(route: Route) {\n this.navigationContext.emit('willfocus', {route: route});\n },\n\n push: function(route: Route) {\n invariant(!!route, 'Must supply route to push');\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack === this.state.observedTopOfStack) {\n this._tryLockNavigator(() => {\n this._emitWillFocus(route);\n\n var nextStack = this.state.routeStack.concat([route]);\n var nextIDStack = this.state.idStack.concat([getuid()]);\n this.setState({\n // We have to make sure that we've also supplied enough views to\n // satisfy our request to adjust the `requestedTopOfStack`.\n idStack: nextIDStack,\n routeStack: nextStack,\n requestedTopOfStack: nextStack.length - 1,\n makingNavigatorRequest: true,\n updatingAllIndicesAtOrBeyond: nextStack.length - 1,\n });\n });\n }\n },\n\n popN: function(n: number) {\n if (n === 0) {\n return;\n }\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack === this.state.observedTopOfStack) {\n if (this.state.requestedTopOfStack > 0) {\n this._tryLockNavigator(() => {\n var newRequestedTopOfStack = this.state.requestedTopOfStack - n;\n invariant(newRequestedTopOfStack >= 0, 'Cannot pop below 0');\n this._emitWillFocus(this.state.routeStack[newRequestedTopOfStack]);\n this.setState({\n requestedTopOfStack: newRequestedTopOfStack,\n makingNavigatorRequest: true,\n // Not actually updating the indices yet until we get the native\n // `onNavigationComplete`.\n updatingAllIndicesAtOrBeyond: null,\n });\n });\n }\n }\n },\n\n pop: function() {\n this.popN(1);\n },\n\n /**\n * Replace a route in the navigation stack.\n *\n * `index` specifies the route in the stack that should be replaced.\n * If it's negative, it counts from the back.\n */\n replaceAtIndex: function(route: Route, index: number) {\n invariant(!!route, 'Must supply route to replace');\n if (index < 0) {\n index += this.state.routeStack.length;\n }\n\n if (this.state.routeStack.length <= index) {\n return;\n }\n\n // I don't believe we need to lock for a replace since there's no\n // navigation actually happening\n var nextIDStack = this.state.idStack.slice();\n var nextRouteStack = this.state.routeStack.slice();\n nextIDStack[index] = getuid();\n nextRouteStack[index] = route;\n\n this.setState({\n idStack: nextIDStack,\n routeStack: nextRouteStack,\n makingNavigatorRequest: false,\n updatingAllIndicesAtOrBeyond: index,\n });\n\n this._emitWillFocus(route);\n this._emitDidFocus(route);\n },\n\n /**\n * Replaces the top of the navigation stack.\n */\n replace: function(route: Route) {\n this.replaceAtIndex(route, -1);\n },\n\n /**\n * Replace the current route's parent.\n */\n replacePrevious: function(route: Route) {\n this.replaceAtIndex(route, -2);\n },\n\n popToTop: function() {\n this.popToRoute(this.state.routeStack[0]);\n },\n\n popToRoute: function(route: Route) {\n var indexOfRoute = this.state.routeStack.indexOf(route);\n invariant(\n indexOfRoute !== -1,\n 'Calling pop to route for a route that doesn\\'t exist!'\n );\n var numToPop = this.state.routeStack.length - indexOfRoute - 1;\n this.popN(numToPop);\n },\n\n replacePreviousAndPop: function(route: Route) {\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack !== this.state.observedTopOfStack) {\n return;\n }\n if (this.state.routeStack.length < 2) {\n return;\n }\n this._tryLockNavigator(() => {\n this.replacePrevious(route);\n this.setState({\n requestedTopOfStack: this.state.requestedTopOfStack - 1,\n makingNavigatorRequest: true,\n });\n });\n },\n\n resetTo: function(route: Route) {\n invariant(!!route, 'Must supply route to push');\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack !== this.state.observedTopOfStack) {\n return;\n }\n this.replaceAtIndex(route, 0);\n this.popToRoute(route);\n },\n\n handleNavigationComplete: function(e: Event) {\n if (this._toFocusOnNavigationComplete) {\n this._getFocusEmitter().emit('focus', this._toFocusOnNavigationComplete);\n this._toFocusOnNavigationComplete = null;\n }\n this._handleNavigatorStackChanged(e);\n },\n\n _routeToStackItem: function(route: Route, i: number) {\n var Component = route.component;\n var shouldUpdateChild = this.state.updatingAllIndicesAtOrBeyond !== null &&\n this.state.updatingAllIndicesAtOrBeyond >= i;\n\n return (\n \n \n \n \n \n );\n },\n\n _imageNameFromSource: function(source: ?Object) {\n return source ? source.uri : undefined;\n },\n\n renderNavigationStackItems: function() {\n var shouldRecurseToNavigator =\n this.state.makingNavigatorRequest ||\n this.state.updatingAllIndicesAtOrBeyond !== null;\n // If not recursing update to navigator at all, may as well avoid\n // computation of navigator children.\n var items = shouldRecurseToNavigator ?\n this.state.routeStack.map(this._routeToStackItem) : null;\n return (\n \n \n {items}\n \n \n );\n },\n\n render: function() {\n return (\n \n {this.renderNavigationStackItems()}\n \n );\n },\n});\n\nvar styles = StyleSheet.create({\n stackItem: {\n backgroundColor: 'white',\n overflow: 'hidden',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n transitioner: {\n flex: 1,\n },\n});\n\nmodule.exports = NavigatorIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Picker/PickerIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar React=require('React');\nvar ReactChildren=require('ReactChildren');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTPickerIOSConsts=require('NativeModules').UIManager.RCTPicker.Constants;\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar merge=require('merge');\n\nvar PICKER='picker';\n\nvar PickerIOS=React.createClass({displayName:'PickerIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\nonValueChange:React.PropTypes.func,\nselectedValue:React.PropTypes.any},\n\n\ngetInitialState:function(){\nreturn this._stateFromProps(this.props);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nthis.setState(this._stateFromProps(nextProps));},\n\n\n\n_stateFromProps:function(props){\nvar selectedIndex=0;\nvar items=[];\nReactChildren.forEach(props.children,function(child,index){\nif(child.props.value === props.selectedValue){\nselectedIndex = index;}\n\nitems.push({value:child.props.value,label:child.props.label});});\n\nreturn {selectedIndex:selectedIndex,items:items};},\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:this.props.style},\nReact.createElement(RCTPickerIOS,{\nref:PICKER,\nstyle:styles.pickerIOS,\nitems:this.state.items,\nselectedIndex:this.state.selectedIndex,\nonChange:this._onChange})));},\n\n\n\n\n\n_onChange:function(event){\nif(this.props.onChange){\nthis.props.onChange(event);}\n\nif(this.props.onValueChange){\nthis.props.onValueChange(event.nativeEvent.newValue);}\n\n\n\n\n\n\n\n\nif(this.state.selectedIndex !== event.nativeEvent.newIndex){\nthis.refs[PICKER].setNativeProps({\nselectedIndex:this.state.selectedIndex});}}});\n\n\n\n\n\nPickerIOS.Item = React.createClass({displayName:'Item',\npropTypes:{\nvalue:React.PropTypes.any,\nlabel:React.PropTypes.string},\n\n\nrender:function(){\n\nreturn null;}});\n\n\n\nvar styles=StyleSheet.create({\npickerIOS:{\n\n\n\nheight:RCTPickerIOSConsts.ComponentHeight}});\n\n\n\nvar RCTPickerIOS=requireNativeComponent('RCTPicker',null);\n\nmodule.exports = PickerIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PickerIOS\n *\n * This is a controlled component version of RCTPickerIOS\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar React = require('React');\nvar ReactChildren = require('ReactChildren');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTPickerIOSConsts = require('NativeModules').UIManager.RCTPicker.Constants;\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar merge = require('merge');\n\nvar PICKER = 'picker';\n\nvar PickerIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n onValueChange: React.PropTypes.func,\n selectedValue: React.PropTypes.any, // string or integer basically\n },\n\n getInitialState: function() {\n return this._stateFromProps(this.props);\n },\n\n componentWillReceiveProps: function(nextProps) {\n this.setState(this._stateFromProps(nextProps));\n },\n\n // Translate PickerIOS prop and children into stuff that RCTPickerIOS understands.\n _stateFromProps: function(props) {\n var selectedIndex = 0;\n var items = [];\n ReactChildren.forEach(props.children, function (child, index) {\n if (child.props.value === props.selectedValue) {\n selectedIndex = index;\n }\n items.push({value: child.props.value, label: child.props.label});\n });\n return {selectedIndex, items};\n },\n\n render: function() {\n return (\n \n \n \n );\n },\n\n _onChange: function(event) {\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(event.nativeEvent.newValue);\n }\n\n // The picker is a controlled component. This means we expect the\n // on*Change handlers to be in charge of updating our\n // `selectedValue` prop. That way they can also\n // disallow/undo/mutate the selection of certain values. In other\n // words, the embedder of this component should be the source of\n // truth, not the native component.\n if (this.state.selectedIndex !== event.nativeEvent.newIndex) {\n this.refs[PICKER].setNativeProps({\n selectedIndex: this.state.selectedIndex\n });\n }\n },\n});\n\nPickerIOS.Item = React.createClass({\n propTypes: {\n value: React.PropTypes.any, // string or integer basically\n label: React.PropTypes.string,\n },\n\n render: function() {\n // These items don't get rendered directly.\n return null;\n },\n});\n\nvar styles = StyleSheet.create({\n pickerIOS: {\n // The picker will conform to whatever width is given, but we do\n // have to set the component's height explicitly on the\n // surrounding view to ensure it gets rendered.\n height: RCTPickerIOSConsts.ComponentHeight,\n },\n});\n\nvar RCTPickerIOS = requireNativeComponent('RCTPicker', null);\n\nmodule.exports = PickerIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Picker/PickerIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\n\n\n\nvar ProgressViewIOS=React.createClass({displayName:'ProgressViewIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nprogressViewStyle:PropTypes.oneOf(['default','bar']),\n\n\n\n\nprogress:PropTypes.number,\n\n\n\n\nprogressTintColor:PropTypes.string,\n\n\n\n\ntrackTintColor:PropTypes.string,\n\n\n\n\nprogressImage:Image.propTypes.source,\n\n\n\n\ntrackImage:Image.propTypes.source},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTProgressView,_extends({},\nthis.props,{\nstyle:[styles.progressView,this.props.style]})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nprogressView:{\nheight:NativeModules.ProgressViewManager.ComponentHeight}});\n\n\n\nvar RCTProgressView=requireNativeComponent(\n'RCTProgressView',\nProgressViewIOS);\n\n\nmodule.exports = ProgressViewIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ProgressViewIOS\n * @flow\n */\n'use strict';\n\nvar Image = require('Image');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\n/**\n * Use `ProgressViewIOS` to render a UIProgressView on iOS.\n */\nvar ProgressViewIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The progress bar style.\n */\n progressViewStyle: PropTypes.oneOf(['default', 'bar']),\n\n /**\n * The progress value (between 0 and 1).\n */\n progress: PropTypes.number,\n\n /**\n * The tint color of the progress bar itself.\n */\n progressTintColor: PropTypes.string,\n\n /**\n * The tint color of the progress bar track.\n */\n trackTintColor: PropTypes.string,\n\n /**\n * A stretchable image to display as the progress bar.\n */\n progressImage: Image.propTypes.source,\n\n /**\n * A stretchable image to display behind the progress bar.\n */\n trackImage: Image.propTypes.source,\n },\n\n render: function() {\n return (\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n progressView: {\n height: NativeModules.ProgressViewManager.ComponentHeight\n },\n});\n\nvar RCTProgressView = requireNativeComponent(\n 'RCTProgressView',\n ProgressViewIOS\n);\n\nmodule.exports = ProgressViewIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\n\n\n\n\n\nvar SEGMENTED_CONTROL_REFERENCE='segmentedcontrol';\n\n\n\n\n\n\nvar SegmentedControlIOS=React.createClass({displayName:'SegmentedControlIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nvalues:PropTypes.arrayOf(PropTypes.string),\n\n\n\n\nselectedIndex:PropTypes.number,\n\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonChange:PropTypes.func,\n\n\n\n\n\nenabled:PropTypes.bool,\n\n\n\n\ntintColor:PropTypes.string,\n\n\n\n\n\nmomentary:PropTypes.bool},\n\n\ngetDefaultProps:function(){\nreturn {\nvalues:[],\nenabled:true};},\n\n\n\n_onChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nthis.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSegmentedControl,_extends({},\nthis.props,{\nref:SEGMENTED_CONTROL_REFERENCE,\nstyle:[styles.segmentedControl,this.props.style],\nonChange:this._onChange})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nsegmentedControl:{\nheight:NativeModules.SegmentedControlManager.ComponentHeight}});\n\n\n\nvar RCTSegmentedControl=requireNativeComponent(\n'RCTSegmentedControl',\nSegmentedControlIOS);\n\n\nmodule.exports = SegmentedControlIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SegmentedControlIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\ntype DefaultProps = {\n values: Array;\n enabled: boolean;\n};\n\nvar SEGMENTED_CONTROL_REFERENCE = 'segmentedcontrol';\n\ntype Event = Object;\n\n/**\n * Use `SegmentedControlIOS` to render a UISegmentedControl iOS.\n */\nvar SegmentedControlIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The labels for the control's segment buttons, in order.\n */\n values: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * The index in `props.values` of the segment to be pre-selected\n */\n selectedIndex: PropTypes.number,\n\n /**\n * Callback that is called when the user taps a segment;\n * passes the segment's value as an argument\n */\n onValueChange: PropTypes.func,\n\n /**\n * Callback that is called when the user taps a segment;\n * passes the event as an argument\n */\n onChange: PropTypes.func,\n\n /**\n * If false the user won't be able to interact with the control.\n * Default value is true.\n */\n enabled: PropTypes.bool,\n\n /**\n * Accent color of the control.\n */\n tintColor: PropTypes.string,\n\n /**\n * If true, then selecting a segment won't persist visually.\n * The `onValueChange` callback will still work as expected.\n */\n momentary: PropTypes.bool\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n values: [],\n enabled: true\n };\n },\n\n _onChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n },\n\n render: function() {\n return (\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n segmentedControl: {\n height: NativeModules.SegmentedControlManager.ComponentHeight\n },\n});\n\nvar RCTSegmentedControl = requireNativeComponent(\n 'RCTSegmentedControl',\n SegmentedControlIOS\n);\n\nmodule.exports = SegmentedControlIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\nvar SliderIOS=React.createClass({displayName:'SliderIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\n\nvalue:PropTypes.number,\n\n\n\n\nminimumValue:PropTypes.number,\n\n\n\n\nmaximumValue:PropTypes.number,\n\n\n\n\n\nminimumTrackTintColor:PropTypes.string,\n\n\n\n\n\nmaximumTrackTintColor:PropTypes.string,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonSlidingComplete:PropTypes.func},\n\n\n_onValueChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nif(event.nativeEvent.continuous){\nthis.props.onValueChange && \nthis.props.onValueChange(event.nativeEvent.value);}else \n{\nthis.props.onSlidingComplete && event.nativeEvent.value !== undefined && \nthis.props.onSlidingComplete(event.nativeEvent.value);}},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSlider,{\nstyle:[styles.slider,this.props.style],\nvalue:this.props.value,\nmaximumValue:this.props.maximumValue,\nminimumValue:this.props.minimumValue,\nminimumTrackTintColor:this.props.minimumTrackTintColor,\nmaximumTrackTintColor:this.props.maximumTrackTintColor,\nonChange:this._onValueChange}));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nslider:{\nheight:40}});\n\n\n\nvar RCTSlider=requireNativeComponent('RCTSlider',SliderIOS);\n\nmodule.exports = SliderIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SliderIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\ntype Event = Object;\n\nvar SliderIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * Used to style and layout the `Slider`. See `StyleSheet.js` and\n * `ViewStylePropTypes.js` for more info.\n */\n style: View.propTypes.style,\n\n /**\n * Initial value of the slider. The value should be between minimumValue\n * and maximumValue, which default to 0 and 1 respectively.\n * Default value is 0.\n *\n * *This is not a controlled component*, e.g. if you don't update\n * the value, the component won't be reset to its inital value.\n */\n value: PropTypes.number,\n\n /**\n * Initial minimum value of the slider. Default value is 0.\n */\n minimumValue: PropTypes.number,\n\n /**\n * Initial maximum value of the slider. Default value is 1.\n */\n maximumValue: PropTypes.number,\n\n /**\n * The color used for the track to the left of the button. Overrides the\n * default blue gradient image.\n */\n minimumTrackTintColor: PropTypes.string,\n\n /**\n * The color used for the track to the right of the button. Overrides the\n * default blue gradient image.\n */\n maximumTrackTintColor: PropTypes.string,\n\n /**\n * Callback continuously called while the user is dragging the slider.\n */\n onValueChange: PropTypes.func,\n\n /**\n * Callback called when the user finishes changing the value (e.g. when\n * the slider is released).\n */\n onSlidingComplete: PropTypes.func,\n },\n\n _onValueChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n if (event.nativeEvent.continuous) {\n this.props.onValueChange &&\n this.props.onValueChange(event.nativeEvent.value);\n } else {\n this.props.onSlidingComplete && event.nativeEvent.value !== undefined &&\n this.props.onSlidingComplete(event.nativeEvent.value);\n }\n },\n\n render: function() {\n return (\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n slider: {\n height: 40,\n },\n});\n\nvar RCTSlider = requireNativeComponent('RCTSlider', SliderIOS);\n\nmodule.exports = SliderIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar SWITCH='switch';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SwitchIOS=React.createClass({displayName:'SwitchIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\nvalue:PropTypes.bool,\n\n\n\n\n\ndisabled:PropTypes.bool,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\nonTintColor:PropTypes.string,\n\n\n\n\nthumbTintColor:PropTypes.string,\n\n\n\n\ntintColor:PropTypes.string},\n\n\ngetDefaultProps:function(){\nreturn {\nvalue:false,\ndisabled:false};},\n\n\n\n_onChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nthis.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n\n\n\nthis.refs[SWITCH].setNativeProps({value:this.props.value});},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSwitch,_extends({},\nthis.props,{\nref:SWITCH,\nonChange:this._onChange,\nstyle:[styles.rkSwitch,this.props.style]})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nrkSwitch:{\nheight:31,\nwidth:51}});\n\n\n\nvar RCTSwitch=requireNativeComponent('RCTSwitch',SwitchIOS);\n\nmodule.exports = SwitchIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SwitchIOS\n * @flow\n *\n * This is a controlled component version of RCTSwitch.\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar SWITCH = 'switch';\n\ntype DefaultProps = {\n value: boolean;\n disabled: boolean;\n};\n\ntype Event = Object;\n\n/**\n * Use `SwitchIOS` to render a boolean input on iOS. This is\n * a controlled component, so you must hook in to the `onValueChange` callback\n * and update the `value` prop in order for the component to update, otherwise\n * the user's change will be reverted immediately to reflect `props.value` as the\n * source of truth.\n */\nvar SwitchIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The value of the switch, if true the switch will be turned on.\n * Default value is false.\n */\n value: PropTypes.bool,\n\n /**\n * If true the user won't be able to toggle the switch.\n * Default value is false.\n */\n disabled: PropTypes.bool,\n\n /**\n * Callback that is called when the user toggles the switch.\n */\n onValueChange: PropTypes.func,\n\n /**\n * Background color when the switch is turned on.\n */\n onTintColor: PropTypes.string,\n\n /**\n * Background color for the switch round button.\n */\n thumbTintColor: PropTypes.string,\n\n /**\n * Background color when the switch is turned off.\n */\n tintColor: PropTypes.string,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n value: false,\n disabled: false,\n };\n },\n\n _onChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n\n // The underlying switch might have changed, but we're controlled,\n // and so want to ensure it represents our value.\n this.refs[SWITCH].setNativeProps({value: this.props.value});\n },\n\n render: function() {\n return (\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n rkSwitch: {\n height: 31,\n width: 51,\n },\n});\n\nvar RCTSwitch = requireNativeComponent('RCTSwitch', SwitchIOS);\n\nmodule.exports = SwitchIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar TabBarItemIOS=require('TabBarItemIOS');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar TabBarIOS=React.createClass({displayName:'TabBarIOS',\nstatics:{\nItem:TabBarItemIOS},\n\n\npropTypes:{\nstyle:View.propTypes.style,\n\n\n\ntintColor:React.PropTypes.string,\n\n\n\nbarTintColor:React.PropTypes.string},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTTabBar,{\nstyle:[styles.tabGroup,this.props.style],\ntintColor:this.props.tintColor,\nbarTintColor:this.props.barTintColor},\nthis.props.children));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ntabGroup:{\nflex:1}});\n\n\n\nvar RCTTabBar=requireNativeComponent('RCTTabBar',TabBarIOS);\n\nmodule.exports = TabBarIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TabBarIOS\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar TabBarItemIOS = require('TabBarItemIOS');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar TabBarIOS = React.createClass({\n statics: {\n Item: TabBarItemIOS,\n },\n\n propTypes: {\n style: View.propTypes.style,\n /**\n * Color of the currently selected tab icon\n */\n tintColor: React.PropTypes.string,\n /**\n * Background color of the tab bar\n */\n barTintColor: React.PropTypes.string\n },\n\n render: function() {\n return (\n \n {this.props.children}\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n tabGroup: {\n flex: 1,\n }\n});\n\nvar RCTTabBar = requireNativeComponent('RCTTabBar', TabBarIOS);\n\nmodule.exports = TabBarIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\nvar React=require('React');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar TabBarItemIOS=React.createClass({displayName:'TabBarItemIOS',\npropTypes:{\n\n\n\nbadge:React.PropTypes.oneOfType([\nReact.PropTypes.string,\nReact.PropTypes.number]),\n\n\n\n\n\n\nsystemIcon:React.PropTypes.oneOf([\n'bookmarks',\n'contacts',\n'downloads',\n'favorites',\n'featured',\n'history',\n'more',\n'most-recent',\n'most-viewed',\n'recents',\n'search',\n'top-rated']),\n\n\n\n\nicon:Image.propTypes.source,\n\n\n\n\nselectedIcon:Image.propTypes.source,\n\n\n\n\nonPress:React.PropTypes.func,\n\n\n\n\nselected:React.PropTypes.bool,\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\ntitle:React.PropTypes.string},\n\n\ngetInitialState:function(){\nreturn {\nhasBeenSelected:false};},\n\n\n\ncomponentWillMount:function(){\nif(this.props.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\ncomponentWillReceiveProps:function(nextProps){\nif(this.state.hasBeenSelected || nextProps.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\nrender:function(){\nvar tabContents=null;\n\n\nif(this.state.hasBeenSelected){\ntabContents = \nReact.createElement(StaticContainer,{shouldUpdate:this.props.selected},\nthis.props.children);}else \n\n{\ntabContents = React.createElement(View,null);}\n\n\nvar icon=this.props.systemIcon || \nthis.props.icon && this.props.icon.uri;\n\n\nvar badge=typeof this.props.badge === 'number'?\n'' + this.props.badge:\nthis.props.badge;\n\nreturn (\nReact.createElement(RCTTabBarItem,{\nicon:icon,\nselectedIcon:this.props.selectedIcon && this.props.selectedIcon.uri,\nonPress:this.props.onPress,\nselected:this.props.selected,\nbadge:badge,\ntitle:this.props.title,\nstyle:[styles.tab,this.props.style]},\ntabContents));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ntab:{\nposition:'absolute',\ntop:0,\nright:0,\nbottom:0,\nleft:0}});\n\n\n\nvar RCTTabBarItem=requireNativeComponent('RCTTabBarItem',TabBarItemIOS);\n\nmodule.exports = TabBarItemIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TabBarItemIOS\n * @flow\n */\n'use strict';\n\nvar Image = require('Image');\nvar React = require('React');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar TabBarItemIOS = React.createClass({\n propTypes: {\n /**\n * Little red bubble that sits at the top right of the icon.\n */\n badge: React.PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n /**\n * Items comes with a few predefined system icons. Note that if you are\n * using them, the title and selectedIcon will be overriden with the\n * system ones.\n */\n systemIcon: React.PropTypes.oneOf([\n 'bookmarks',\n 'contacts',\n 'downloads',\n 'favorites',\n 'featured',\n 'history',\n 'more',\n 'most-recent',\n 'most-viewed',\n 'recents',\n 'search',\n 'top-rated',\n ]),\n /**\n * A custom icon for the tab. It is ignored when a system icon is defined.\n */\n icon: Image.propTypes.source,\n /**\n * A custom icon when the tab is selected. It is ignored when a system\n * icon is defined. If left empty, the icon will be tinted in blue.\n */\n selectedIcon: Image.propTypes.source,\n /**\n * Callback when this tab is being selected, you should change the state of your\n * component to set selected={true}.\n */\n onPress: React.PropTypes.func,\n /**\n * It specifies whether the children are visible or not. If you see a\n * blank content, you probably forgot to add a selected one.\n */\n selected: React.PropTypes.bool,\n /**\n * React style object.\n */\n style: View.propTypes.style,\n /**\n * Text that appears under the icon. It is ignored when a system icon\n * is defined.\n */\n title: React.PropTypes.string,\n },\n\n getInitialState: function() {\n return {\n hasBeenSelected: false,\n };\n },\n\n componentWillMount: function() {\n if (this.props.selected) {\n this.setState({hasBeenSelected: true});\n }\n },\n\n componentWillReceiveProps: function(nextProps: { selected?: boolean }) {\n if (this.state.hasBeenSelected || nextProps.selected) {\n this.setState({hasBeenSelected: true});\n }\n },\n\n render: function() {\n var tabContents = null;\n // if the tab has already been shown once, always continue to show it so we\n // preserve state between tab transitions\n if (this.state.hasBeenSelected) {\n tabContents =\n \n {this.props.children}\n ;\n } else {\n tabContents = ;\n }\n\n var icon = this.props.systemIcon || (\n this.props.icon && this.props.icon.uri\n );\n\n var badge = typeof this.props.badge === 'number' ?\n '' + this.props.badge :\n this.props.badge;\n\n return (\n \n {tabContents}\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n tab: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n }\n});\n\nvar RCTTabBarItem = requireNativeComponent('RCTTabBarItem', TabBarItemIOS);\n\nmodule.exports = TabBarItemIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/Text.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar Touchable=require('Touchable');\n\nvar createReactNativeComponentClass=\nrequire('createReactNativeComponentClass');\nvar merge=require('merge');\n\nvar stylePropType=StyleSheetPropType(TextStylePropTypes);\n\nvar viewConfig={\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nisHighlighted:true,\nnumberOfLines:true}),\n\nuiViewClassName:'RCTText'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Text=React.createClass({displayName:'Text',\n\nmixins:[Touchable.Mixin,NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\n\nnumberOfLines:React.PropTypes.number,\n\n\n\n\n\nonPress:React.PropTypes.func,\n\n\n\n\nsuppressHighlighting:React.PropTypes.bool,\nstyle:stylePropType,\n\n\n\ntestID:React.PropTypes.string,\n\n\n\n\n\nonLayout:React.PropTypes.func},\n\n\nviewConfig:viewConfig,\n\ngetInitialState:function(){\nreturn merge(this.touchableGetInitialState(),{\nisHighlighted:false});},\n\n\n\nonStartShouldSetResponder:function(){\nvar shouldSetFromProps=this.props.onStartShouldSetResponder && \nthis.props.onStartShouldSetResponder();\nreturn shouldSetFromProps || !!this.props.onPress;},\n\n\n\n\n\nhandleResponderTerminationRequest:function(){\n\n\nvar allowTermination=this.touchableHandleResponderTerminationRequest();\nif(allowTermination && this.props.onResponderTerminationRequest){\nallowTermination = this.props.onResponderTerminationRequest();}\n\nreturn allowTermination;},\n\n\nhandleResponderGrant:function(e,dispatchID){\nthis.touchableHandleResponderGrant(e,dispatchID);\nthis.props.onResponderGrant && \nthis.props.onResponderGrant.apply(this,arguments);},\n\n\nhandleResponderMove:function(e){\nthis.touchableHandleResponderMove(e);\nthis.props.onResponderMove && \nthis.props.onResponderMove.apply(this,arguments);},\n\n\nhandleResponderRelease:function(e){\nthis.touchableHandleResponderRelease(e);\nthis.props.onResponderRelease && \nthis.props.onResponderRelease.apply(this,arguments);},\n\n\nhandleResponderTerminate:function(e){\nthis.touchableHandleResponderTerminate(e);\nthis.props.onResponderTerminate && \nthis.props.onResponderTerminate.apply(this,arguments);},\n\n\ntouchableHandleActivePressIn:function(){\nif(this.props.suppressHighlighting || !this.props.onPress){\nreturn;}\n\nthis.setState({\nisHighlighted:true});},\n\n\n\ntouchableHandleActivePressOut:function(){\nif(this.props.suppressHighlighting || !this.props.onPress){\nreturn;}\n\nthis.setState({\nisHighlighted:false});},\n\n\n\ntouchableHandlePress:function(){\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ngetChildContext:function(){\nreturn {isInAParentText:true};},\n\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\nrender:function(){\nvar props={};\nfor(var key in this.props) {\nprops[key] = this.props[key];}\n\n\nif(props.accessible !== false){\nprops.accessible = true;}\n\nprops.isHighlighted = this.state.isHighlighted;\nprops.onStartShouldSetResponder = this.onStartShouldSetResponder;\nprops.onResponderTerminationRequest = \nthis.handleResponderTerminationRequest;\nprops.onResponderGrant = this.handleResponderGrant;\nprops.onResponderMove = this.handleResponderMove;\nprops.onResponderRelease = this.handleResponderRelease;\nprops.onResponderTerminate = this.handleResponderTerminate;\n\n\nvar context=ReactInstanceMap.get(this)._context;\nif(context.isInAParentText){\nreturn React.createElement(RCTVirtualText,props);}else \n{\nreturn React.createElement(RCTText,props);}}});\n\n\n\n\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\nvar RCTText=createReactNativeComponentClass(viewConfig);\nvar RCTVirtualText=RCTText;\n\nif(Platform.OS === 'android'){\nRCTVirtualText = createReactNativeComponentClass({\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nisHighlighted:true}),\n\nuiViewClassName:'RCTVirtualText'});}\n\n\n\nmodule.exports = Text;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Text\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar Platform = require('Platform');\nvar React = require('React');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar Touchable = require('Touchable');\n\nvar createReactNativeComponentClass =\n require('createReactNativeComponentClass');\nvar merge = require('merge');\n\nvar stylePropType = StyleSheetPropType(TextStylePropTypes);\n\nvar viewConfig = {\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n isHighlighted: true,\n numberOfLines: true,\n }),\n uiViewClassName: 'RCTText',\n};\n\n/**\n * A React component for displaying text which supports nesting,\n * styling, and touch handling. In the following example, the nested title and\n * body text will inherit the `fontFamily` from `styles.baseText`, but the title\n * provides its own additional styles. The title and body will stack on top of\n * each other on account of the literal newlines:\n *\n * ```\n * renderText: function() {\n * return (\n * \n * \n * {this.state.titleText + '\\n\\n'}\n * \n * \n * {this.state.bodyText}\n * \n * \n * );\n * },\n * ...\n * var styles = StyleSheet.create({\n * baseText: {\n * fontFamily: 'Cochin',\n * },\n * titleText: {\n * fontSize: 20,\n * fontWeight: 'bold',\n * },\n * };\n * ```\n */\n\nvar Text = React.createClass({\n\n mixins: [Touchable.Mixin, NativeMethodsMixin],\n\n propTypes: {\n /**\n * Used to truncate the text with an elipsis after computing the text\n * layout, including line wrapping, such that the total number of lines does\n * not exceed this number.\n */\n numberOfLines: React.PropTypes.number,\n /**\n * This function is called on press. Text intrinsically supports press\n * handling with a default highlight state (which can be disabled with\n * `suppressHighlighting`).\n */\n onPress: React.PropTypes.func,\n /**\n * When true, no visual change is made when text is pressed down. By\n * default, a gray oval highlights the text on press down.\n */\n suppressHighlighting: React.PropTypes.bool,\n style: stylePropType,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: React.PropTypes.string,\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: {layout: {x, y, width, height}}}.\n */\n onLayout: React.PropTypes.func,\n },\n\n viewConfig: viewConfig,\n\n getInitialState: function() {\n return merge(this.touchableGetInitialState(), {\n isHighlighted: false,\n });\n },\n\n onStartShouldSetResponder: function(): bool {\n var shouldSetFromProps = this.props.onStartShouldSetResponder &&\n this.props.onStartShouldSetResponder();\n return shouldSetFromProps || !!this.props.onPress;\n },\n\n /*\n * Returns true to allow responder termination\n */\n handleResponderTerminationRequest: function(): bool {\n // Allow touchable or props.onResponderTerminationRequest to deny\n // the request\n var allowTermination = this.touchableHandleResponderTerminationRequest();\n if (allowTermination && this.props.onResponderTerminationRequest) {\n allowTermination = this.props.onResponderTerminationRequest();\n }\n return allowTermination;\n },\n\n handleResponderGrant: function(e: SyntheticEvent, dispatchID: string) {\n this.touchableHandleResponderGrant(e, dispatchID);\n this.props.onResponderGrant &&\n this.props.onResponderGrant.apply(this, arguments);\n },\n\n handleResponderMove: function(e: SyntheticEvent) {\n this.touchableHandleResponderMove(e);\n this.props.onResponderMove &&\n this.props.onResponderMove.apply(this, arguments);\n },\n\n handleResponderRelease: function(e: SyntheticEvent) {\n this.touchableHandleResponderRelease(e);\n this.props.onResponderRelease &&\n this.props.onResponderRelease.apply(this, arguments);\n },\n\n handleResponderTerminate: function(e: SyntheticEvent) {\n this.touchableHandleResponderTerminate(e);\n this.props.onResponderTerminate &&\n this.props.onResponderTerminate.apply(this, arguments);\n },\n\n touchableHandleActivePressIn: function() {\n if (this.props.suppressHighlighting || !this.props.onPress) {\n return;\n }\n this.setState({\n isHighlighted: true,\n });\n },\n\n touchableHandleActivePressOut: function() {\n if (this.props.suppressHighlighting || !this.props.onPress) {\n return;\n }\n this.setState({\n isHighlighted: false,\n });\n },\n\n touchableHandlePress: function() {\n this.props.onPress && this.props.onPress();\n },\n\n touchableGetPressRectOffset: function(): RectOffset {\n return PRESS_RECT_OFFSET;\n },\n\n getChildContext: function(): Object {\n return {isInAParentText: true};\n },\n\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n\n render: function() {\n var props = {};\n for (var key in this.props) {\n props[key] = this.props[key];\n }\n // Text is accessible by default\n if (props.accessible !== false) {\n props.accessible = true;\n }\n props.isHighlighted = this.state.isHighlighted;\n props.onStartShouldSetResponder = this.onStartShouldSetResponder;\n props.onResponderTerminationRequest =\n this.handleResponderTerminationRequest;\n props.onResponderGrant = this.handleResponderGrant;\n props.onResponderMove = this.handleResponderMove;\n props.onResponderRelease = this.handleResponderRelease;\n props.onResponderTerminate = this.handleResponderTerminate;\n\n // TODO: Switch to use contextTypes and this.context after React upgrade\n var context = ReactInstanceMap.get(this)._context;\n if (context.isInAParentText) {\n return ;\n } else {\n return ;\n }\n },\n});\n\ntype RectOffset = {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}\n\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nvar RCTText = createReactNativeComponentClass(viewConfig);\nvar RCTVirtualText = RCTText;\n\nif (Platform.OS === 'android') {\n RCTVirtualText = createReactNativeComponentClass({\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n isHighlighted: true,\n }),\n uiViewClassName: 'RCTVirtualText',\n });\n}\n\nmodule.exports = Text;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/Text.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/interactions/Touchable/Touchable.js":{"data":{"code":"'use strict';\n\n\n\n\n\nvar BoundingDimensions=require('BoundingDimensions');\nvar Position=require('Position');\nvar TouchEventUtils=require('TouchEventUtils');\n\nvar keyMirror=require('keyMirror');\nvar queryLayoutByID=require('queryLayoutByID');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar States=keyMirror({\nNOT_RESPONDER:null,\nRESPONDER_INACTIVE_PRESS_IN:null,\nRESPONDER_INACTIVE_PRESS_OUT:null,\nRESPONDER_ACTIVE_PRESS_IN:null,\nRESPONDER_ACTIVE_PRESS_OUT:null,\nRESPONDER_ACTIVE_LONG_PRESS_IN:null,\nRESPONDER_ACTIVE_LONG_PRESS_OUT:null,\nERROR:null});\n\n\n\n\n\nvar IsActive={\nRESPONDER_ACTIVE_PRESS_OUT:true,\nRESPONDER_ACTIVE_PRESS_IN:true};\n\n\n\n\n\n\nvar IsPressingIn={\nRESPONDER_INACTIVE_PRESS_IN:true,\nRESPONDER_ACTIVE_PRESS_IN:true,\nRESPONDER_ACTIVE_LONG_PRESS_IN:true};\n\n\nvar IsLongPressingIn={\nRESPONDER_ACTIVE_LONG_PRESS_IN:true};\n\n\n\n\n\nvar Signals=keyMirror({\nDELAY:null,\nRESPONDER_GRANT:null,\nRESPONDER_RELEASE:null,\nRESPONDER_TERMINATED:null,\nENTER_PRESS_RECT:null,\nLEAVE_PRESS_RECT:null,\nLONG_PRESS_DETECTED:null});\n\n\n\n\n\nvar Transitions={\nNOT_RESPONDER:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN,\nRESPONDER_RELEASE:States.ERROR,\nRESPONDER_TERMINATED:States.ERROR,\nENTER_PRESS_RECT:States.ERROR,\nLEAVE_PRESS_RECT:States.ERROR,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_INACTIVE_PRESS_IN:{\nDELAY:States.RESPONDER_ACTIVE_PRESS_IN,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_INACTIVE_PRESS_OUT:{\nDELAY:States.RESPONDER_ACTIVE_PRESS_OUT,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_ACTIVE_PRESS_IN:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN},\n\nRESPONDER_ACTIVE_PRESS_OUT:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_ACTIVE_LONG_PRESS_IN:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\nLONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN},\n\nRESPONDER_ACTIVE_LONG_PRESS_OUT:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nerror:{\nDELAY:States.NOT_RESPONDER,\nRESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.NOT_RESPONDER,\nLEAVE_PRESS_RECT:States.NOT_RESPONDER,\nLONG_PRESS_DETECTED:States.NOT_RESPONDER}};\n\n\n\n\n\n\nvar HIGHLIGHT_DELAY_MS=130;\n\nvar PRESS_EXPAND_PX=20;\n\nvar LONG_PRESS_THRESHOLD=500;\n\nvar LONG_PRESS_DELAY_MS=LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nvar LONG_PRESS_ALLOWED_MOVEMENT=10;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableMixin={\n\n\n\n\n\n\n\ntouchableGetInitialState:function(){\nreturn {\ntouchable:{touchState:undefined,responderID:null}};},\n\n\n\n\n\n\n\ntouchableHandleResponderTerminationRequest:function(){\nreturn !this.props.rejectResponderTermination;},\n\n\n\n\n\ntouchableHandleStartShouldSetResponder:function(){\nreturn true;},\n\n\n\n\n\ntouchableLongPressCancelsPress:function(){\nreturn true;},\n\n\n\n\n\n\n\n\ntouchableHandleResponderGrant:function(e,dispatchID){\n\n\n\ne.persist();\n\nthis.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\nthis.pressOutDelayTimeout = null;\n\nthis.state.touchable.touchState = States.NOT_RESPONDER;\nthis.state.touchable.responderID = dispatchID;\nthis._receiveSignal(Signals.RESPONDER_GRANT,e);\nvar delayMS=\nthis.touchableGetHighlightDelayMS !== undefined?\nMath.max(this.touchableGetHighlightDelayMS(),0):HIGHLIGHT_DELAY_MS;\ndelayMS = isNaN(delayMS)?HIGHLIGHT_DELAY_MS:delayMS;\nif(delayMS !== 0){\nthis.touchableDelayTimeout = setTimeout(\nthis._handleDelay.bind(this,e),\ndelayMS);}else \n\n{\nthis._handleDelay(e);}\n\n\nvar longDelayMS=\nthis.touchableGetLongPressDelayMS !== undefined?\nMath.max(this.touchableGetLongPressDelayMS(),10):LONG_PRESS_DELAY_MS;\nlongDelayMS = isNaN(longDelayMS)?LONG_PRESS_DELAY_MS:longDelayMS;\nthis.longPressDelayTimeout = setTimeout(\nthis._handleLongDelay.bind(this,e),\nlongDelayMS + delayMS);},\n\n\n\n\n\n\ntouchableHandleResponderRelease:function(e){\nthis._receiveSignal(Signals.RESPONDER_RELEASE,e);},\n\n\n\n\n\ntouchableHandleResponderTerminate:function(e){\nthis._receiveSignal(Signals.RESPONDER_TERMINATED,e);},\n\n\n\n\n\ntouchableHandleResponderMove:function(e){\n\n\nif(this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN){\nreturn;}\n\n\n\nif(!this.state.touchable.positionOnActivate){\nreturn;}\n\n\nvar positionOnActivate=this.state.touchable.positionOnActivate;\nvar dimensionsOnActivate=this.state.touchable.dimensionsOnActivate;\nvar pressRectOffset=this.touchableGetPressRectOffset?\nthis.touchableGetPressRectOffset():null;\nvar pressExpandLeft=\npressRectOffset.left != null?pressRectOffset.left:PRESS_EXPAND_PX;\nvar pressExpandTop=\npressRectOffset.top != null?pressRectOffset.top:PRESS_EXPAND_PX;\nvar pressExpandRight=\npressRectOffset.right != null?pressRectOffset.right:PRESS_EXPAND_PX;\nvar pressExpandBottom=\npressRectOffset.bottom != null?pressRectOffset.bottom:PRESS_EXPAND_PX;\n\nvar touch=TouchEventUtils.extractSingleTouch(e.nativeEvent);\nvar pageX=touch && touch.pageX;\nvar pageY=touch && touch.pageY;\n\nif(this.pressInLocation){\nvar movedDistance=this._getDistanceBetweenPoints(pageX,pageY,this.pressInLocation.pageX,this.pressInLocation.pageY);\nif(movedDistance > LONG_PRESS_ALLOWED_MOVEMENT){\nthis._cancelLongPressDelayTimeout();}}\n\n\n\nvar isTouchWithinActive=\npageX > positionOnActivate.left - pressExpandLeft && \npageY > positionOnActivate.top - pressExpandTop && \npageX < \npositionOnActivate.left + \ndimensionsOnActivate.width + \npressExpandRight && \npageY < \npositionOnActivate.top + \ndimensionsOnActivate.height + \npressExpandBottom;\nif(isTouchWithinActive){\nthis._receiveSignal(Signals.ENTER_PRESS_RECT,e);}else \n{\nthis._cancelLongPressDelayTimeout();\nthis._receiveSignal(Signals.LEAVE_PRESS_RECT,e);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_remeasureMetricsOnActivation:function(){\nqueryLayoutByID(\nthis.state.touchable.responderID,\nnull,\nthis._handleQueryLayout);},\n\n\n\n_handleQueryLayout:function(l,t,w,h,globalX,globalY){\nthis.state.touchable.positionOnActivate && \nPosition.release(this.state.touchable.positionOnActivate);\nthis.state.touchable.dimensionsOnActivate && \nBoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\nthis.state.touchable.positionOnActivate = Position.getPooled(globalX,globalY);\nthis.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w,h);},\n\n\n_handleDelay:function(e){\nthis.touchableDelayTimeout = null;\nthis._receiveSignal(Signals.DELAY,e);},\n\n\n_handleLongDelay:function(e){\nthis.longPressDelayTimeout = null;\nthis._receiveSignal(Signals.LONG_PRESS_DETECTED,e);},\n\n\n\n\n\n\n\n\n\n\n_receiveSignal:function(signal,e){\nvar curState=this.state.touchable.touchState;\nif(!(Transitions[curState] && Transitions[curState][signal])){\nthrow new Error(\n'Unrecognized signal `' + signal + '` or state `' + curState + \n'` for Touchable responder `' + this.state.touchable.responderID + '`');}\n\n\nvar nextState=Transitions[curState][signal];\nif(nextState === States.ERROR){\nthrow new Error(\n'Touchable cannot transition from `' + curState + '` to `' + signal + \n'` for responder `' + this.state.touchable.responderID + '`');}\n\n\nif(curState !== nextState){\nthis._performSideEffectsForTransition(curState,nextState,signal,e);\nthis.state.touchable.touchState = nextState;}},\n\n\n\n_cancelLongPressDelayTimeout:function(){\nthis.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\nthis.longPressDelayTimeout = null;},\n\n\n_isHighlight:function(state){\nreturn state === States.RESPONDER_ACTIVE_PRESS_IN || \nstate === States.RESPONDER_ACTIVE_LONG_PRESS_IN;},\n\n\n_savePressInLocation:function(e){\nvar touch=TouchEventUtils.extractSingleTouch(e.nativeEvent);\nvar pageX=touch && touch.pageX;\nvar pageY=touch && touch.pageY;\nthis.pressInLocation = {pageX:pageX,pageY:pageY};},\n\n\n_getDistanceBetweenPoints:function(aX,aY,bX,bY){\nvar deltaX=aX - bX;\nvar deltaY=aY - bY;\nreturn Math.sqrt(deltaX * deltaX + deltaY * deltaY);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n_performSideEffectsForTransition:function(curState,nextState,signal,e){\nvar curIsHighlight=this._isHighlight(curState);\nvar newIsHighlight=this._isHighlight(nextState);\n\nvar isFinalSignal=\nsignal === Signals.RESPONDER_TERMINATED || \nsignal === Signals.RESPONDER_RELEASE;\n\nif(isFinalSignal){\nthis._cancelLongPressDelayTimeout();}\n\n\nif(!IsActive[curState] && IsActive[nextState]){\nthis._remeasureMetricsOnActivation();}\n\n\nif(IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED){\nthis.touchableHandleLongPress && this.touchableHandleLongPress();}\n\n\nif(newIsHighlight && !curIsHighlight){\nthis._savePressInLocation(e);\nthis.touchableHandleActivePressIn && this.touchableHandleActivePressIn();}else \nif(!newIsHighlight && curIsHighlight && this.touchableHandleActivePressOut){\nif(this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()){\nthis.pressOutDelayTimeout = this.setTimeout(function(){\nthis.touchableHandleActivePressOut();},\nthis.touchableGetPressOutDelayMS());}else \n{\nthis.touchableHandleActivePressOut();}}\n\n\n\nif(IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE){\nvar hasLongPressHandler=!!this.props.onLongPress;\nvar pressIsLongButStillCallOnPress=\nIsLongPressingIn[curState] && (\n!hasLongPressHandler || \n!this.touchableLongPressCancelsPress());\n\n\nvar shouldInvokePress=!IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\nif(shouldInvokePress && this.touchableHandlePress){\nthis.touchableHandlePress(e);}}\n\n\n\nthis.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\nthis.touchableDelayTimeout = null;}};\n\n\n\n\nvar Touchable={\nMixin:TouchableMixin};\n\n\nmodule.exports = Touchable;","sourceCode":"/**\n * @providesModule Touchable\n */\n\n'use strict';\n\nvar BoundingDimensions = require('BoundingDimensions');\nvar Position = require('Position');\nvar TouchEventUtils = require('TouchEventUtils');\n\nvar keyMirror = require('keyMirror');\nvar queryLayoutByID = require('queryLayoutByID');\n\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n * of the element, and no other element (like scroller) has \"stolen\" touch\n * lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the elemement, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n * getInitialState: function() {\n * return merge(this.touchableGetInitialState(), yourComponentState);\n * }\n *\n * - Choose the rendered component who's touches should start the interactive\n * sequence. On that rendered node, forward all `Touchable` responder\n * handlers. You can choose any rendered node you like. Choose a node who's\n * hit target you'd like to instigate the interaction sequence:\n *\n * // In render function:\n * return (\n * \n *
\n * Even though the hit detection/interactions are triggered by the\n * wrapping (typically larger) node, we usually end up implementing\n * custom logic that highlights this inner one.\n *
\n * \n * );\n *\n * - You may set up your own handlers for each of these events, so long as you\n * also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n * feedback to the user. See documentation for each of these class methods\n * that you should implement.\n *\n * touchableHandlePress: function() {\n * this.performBounceAnimation(); // or whatever you want to do.\n * },\n * touchableHandleActivePressIn: function() {\n * this.beginHighlighting(...); // Whatever you like to convey activation\n * },\n * touchableHandleActivePressOut: function() {\n * this.endHighlighting(...); // Whatever you like to convey deactivation\n * },\n *\n * - There are more advanced methods you can implement (see documentation below):\n * touchableGetHighlightDelayMS: function() {\n * return 20;\n * }\n * // In practice, *always* use a predeclared constant (conserve memory).\n * touchableGetPressRectOffset: function() {\n * return {top: 20, left: 20, right: 20, bottom: 100};\n * }\n */\n\n/**\n * Touchable states.\n */\nvar States = keyMirror({\n NOT_RESPONDER: null, // Not the responder\n RESPONDER_INACTIVE_PRESS_IN: null, // Responder, inactive, in the `PressRect`\n RESPONDER_INACTIVE_PRESS_OUT: null, // Responder, inactive, out of `PressRect`\n RESPONDER_ACTIVE_PRESS_IN: null, // Responder, active, in the `PressRect`\n RESPONDER_ACTIVE_PRESS_OUT: null, // Responder, active, out of `PressRect`\n RESPONDER_ACTIVE_LONG_PRESS_IN: null, // Responder, active, in the `PressRect`, after long press threshold\n RESPONDER_ACTIVE_LONG_PRESS_OUT: null, // Responder, active, out of `PressRect`, after long press threshold\n ERROR: null\n});\n\n/**\n * Quick lookup map for states that are considered to be \"active\"\n */\nvar IsActive = {\n RESPONDER_ACTIVE_PRESS_OUT: true,\n RESPONDER_ACTIVE_PRESS_IN: true\n};\n\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\nvar IsPressingIn = {\n RESPONDER_INACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nvar IsLongPressingIn = {\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\n/**\n * Inputs to the state machine.\n */\nvar Signals = keyMirror({\n DELAY: null,\n RESPONDER_GRANT: null,\n RESPONDER_RELEASE: null,\n RESPONDER_TERMINATED: null,\n ENTER_PRESS_RECT: null,\n LEAVE_PRESS_RECT: null,\n LONG_PRESS_DETECTED: null,\n});\n\n/**\n * Mapping from States x Signals => States\n */\nvar Transitions = {\n NOT_RESPONDER: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.ERROR,\n RESPONDER_TERMINATED: States.ERROR,\n ENTER_PRESS_RECT: States.ERROR,\n LEAVE_PRESS_RECT: States.ERROR,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n error: {\n DELAY: States.NOT_RESPONDER,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.NOT_RESPONDER,\n LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n LONG_PRESS_DETECTED: States.NOT_RESPONDER,\n }\n};\n\n// ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\nvar HIGHLIGHT_DELAY_MS = 130;\n\nvar PRESS_EXPAND_PX = 20;\n\nvar LONG_PRESS_THRESHOLD = 500;\n\nvar LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nvar LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n// Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * +--------------------------+\n * | | - \"Start\" events in `HitRect` cause `HitRect`\n * | +--------------------+ | to become the responder.\n * | | +--------------+ | | - `HitRect` is typically expanded around\n * | | | | | | the `VisualRect`, but shifted downward.\n * | | | VisualRect | | | - After pressing down, after some delay,\n * | | | | | | and before letting up, the Visual React\n * | | +--------------+ | | will become \"active\". This makes it eligible\n * | | HitRect | | for being highlighted (so long as the\n * | +--------------------+ | press remains in the `PressRect`).\n * | PressRect o |\n * +----------------------|---+\n * Out Region |\n * +-----+ This gap between the `HitRect` and\n * `PressRect` allows a touch to move far away\n * from the original hit rect, and remain\n * highlighted, and eligible for a \"Press\".\n * Customize this via\n * `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n * +\n * | RESPONDER_GRANT (HitRect)\n * v\n * +---------------------------+ DELAY +-------------------------+ T + DELAY +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+ +-------------------------+ +------------------------------+\n * + ^ + ^ + ^\n * |LEAVE_ |ENTER_ |LEAVE_ |ENTER_ |LEAVE_ |ENTER_\n * |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT\n * | | | | | |\n * v + v + v +\n * +----------------------------+ DELAY +--------------------------+ +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT| |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+ +--------------------------+ +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\nvar TouchableMixin = {\n /**\n * It's prefer that mixins determine state in this way, having the class\n * explicitly mix the state in the one and only `getInitialState` method.\n *\n * @return {object} State object to be placed inside of\n * `this.state.touchable`.\n */\n touchableGetInitialState: function() {\n return {\n touchable: {touchState: undefined, responderID: null}\n };\n },\n\n // ==== Hooks to Gesture Responder system ====\n /**\n * Must return true if embedded in a native platform scroll view.\n */\n touchableHandleResponderTerminationRequest: function() {\n return !this.props.rejectResponderTermination;\n },\n\n /**\n * Must return true to start the process of `Touchable`.\n */\n touchableHandleStartShouldSetResponder: function() {\n return true;\n },\n\n /**\n * Return true to cancel press on long press.\n */\n touchableLongPressCancelsPress: function () {\n return true;\n },\n\n /**\n * Place as callback for a DOM element's `onResponderGrant` event.\n * @param {SyntheticEvent} e Synthetic event from event system.\n * @param {string} dispatchID ID of node that e was dispatched to.\n *\n */\n touchableHandleResponderGrant: function(e, dispatchID) {\n // Since e is used in a callback invoked on another event loop\n // (as in setTimeout etc), we need to call e.persist() on the\n // event to make sure it doesn't get reused in the event object pool.\n e.persist();\n\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n this.pressOutDelayTimeout = null;\n\n this.state.touchable.touchState = States.NOT_RESPONDER;\n this.state.touchable.responderID = dispatchID;\n this._receiveSignal(Signals.RESPONDER_GRANT, e);\n var delayMS =\n this.touchableGetHighlightDelayMS !== undefined ?\n Math.max(this.touchableGetHighlightDelayMS(), 0) : HIGHLIGHT_DELAY_MS;\n delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n if (delayMS !== 0) {\n this.touchableDelayTimeout = setTimeout(\n this._handleDelay.bind(this, e),\n delayMS\n );\n } else {\n this._handleDelay(e);\n }\n\n var longDelayMS =\n this.touchableGetLongPressDelayMS !== undefined ?\n Math.max(this.touchableGetLongPressDelayMS(), 10) : LONG_PRESS_DELAY_MS;\n longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n this.longPressDelayTimeout = setTimeout(\n this._handleLongDelay.bind(this, e),\n longDelayMS + delayMS\n );\n },\n\n /**\n * Place as callback for a DOM element's `onResponderRelease` event.\n */\n touchableHandleResponderRelease: function(e) {\n this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderTerminate` event.\n */\n touchableHandleResponderTerminate: function(e) {\n this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderMove` event.\n */\n touchableHandleResponderMove: function(e) {\n // Not enough time elapsed yet, wait for highlight -\n // this is just a perf optimization.\n if (this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN) {\n return;\n }\n\n // Measurement may not have returned yet.\n if (!this.state.touchable.positionOnActivate) {\n return;\n }\n\n var positionOnActivate = this.state.touchable.positionOnActivate;\n var dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n var pressRectOffset = this.touchableGetPressRectOffset ?\n this.touchableGetPressRectOffset() : null;\n var pressExpandLeft =\n pressRectOffset.left != null ? pressRectOffset.left : PRESS_EXPAND_PX;\n var pressExpandTop =\n pressRectOffset.top != null ? pressRectOffset.top : PRESS_EXPAND_PX;\n var pressExpandRight =\n pressRectOffset.right != null ? pressRectOffset.right : PRESS_EXPAND_PX;\n var pressExpandBottom =\n pressRectOffset.bottom != null ? pressRectOffset.bottom : PRESS_EXPAND_PX;\n\n var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n\n if (this.pressInLocation) {\n var movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this.pressInLocation.pageX, this.pressInLocation.pageY);\n if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n var isTouchWithinActive =\n pageX > positionOnActivate.left - pressExpandLeft &&\n pageY > positionOnActivate.top - pressExpandTop &&\n pageX <\n positionOnActivate.left +\n dimensionsOnActivate.width +\n pressExpandRight &&\n pageY <\n positionOnActivate.top +\n dimensionsOnActivate.height +\n pressExpandBottom;\n if (isTouchWithinActive) {\n this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n } else {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n }\n },\n\n // ==== Abstract Application Callbacks ====\n\n /**\n * Invoked when the item should be highlighted. Mixers should implement this\n * to visually distinguish the `VisualRect` so that the user knows that\n * releasing a touch will result in a \"selection\" (analog to click).\n *\n * @abstract\n * touchableHandleActivePressIn: function,\n */\n\n /**\n * Invoked when the item is \"active\" (in that it is still eligible to become\n * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n * again and the mixer should probably highlight the `VisualRect` again. This\n * event will not fire on an `touchEnd/mouseUp` event, only move events while\n * the user is depressing the mouse/touch.\n *\n * @abstract\n * touchableHandleActivePressOut: function\n */\n\n /**\n * Invoked when the item is \"selected\" - meaning the interaction ended by\n * letting up while the item was either in the state\n * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n *\n * @abstract\n * touchableHandlePress: function\n */\n\n /**\n * Invoked when the item is long pressed - meaning the interaction ended by\n * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n * be called as it normally is. If `touchableHandleLongPress` is provided, by\n * default any `touchableHandlePress` callback will not be invoked. To\n * override this default behavior, override `touchableLongPressCancelsPress`\n * to return false. As a result, `touchableHandlePress` will be called when\n * lifting up, even if `touchableHandleLongPress` has also been called.\n *\n * @abstract\n * touchableHandleLongPress: function\n */\n\n /**\n * Returns the number of millis to wait before triggering a highlight.\n *\n * @abstract\n * touchableGetHighlightDelayMS: function\n */\n\n /**\n * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n * numbers mean the size expands outwards.\n *\n * @abstract\n * touchableGetPressRectOffset: function\n */\n\n\n\n // ==== Internal Logic ====\n\n /**\n * Measures the `HitRect` node on activation. The Bounding rectangle is with\n * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n * should result in points that are in the same coordinate system as an\n * event's `globalX/globalY` data values.\n *\n * - Consider caching this for the lifetime of the component, or possibly\n * being able to share this cache between any `ScrollMap` view.\n *\n * @sideeffects\n * @private\n */\n _remeasureMetricsOnActivation: function() {\n queryLayoutByID(\n this.state.touchable.responderID,\n null,\n this._handleQueryLayout\n );\n },\n\n _handleQueryLayout: function(l, t, w, h, globalX, globalY) {\n this.state.touchable.positionOnActivate &&\n Position.release(this.state.touchable.positionOnActivate);\n this.state.touchable.dimensionsOnActivate &&\n BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n this.state.touchable.positionOnActivate = Position.getPooled(globalX, globalY);\n this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n },\n\n _handleDelay: function(e) {\n this.touchableDelayTimeout = null;\n this._receiveSignal(Signals.DELAY, e);\n },\n\n _handleLongDelay: function(e) {\n this.longPressDelayTimeout = null;\n this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n },\n\n /**\n * Receives a state machine signal, performs side effects of the transition\n * and stores the new state. Validates the transition as well.\n *\n * @param {Signals} signal State machine signal.\n * @throws Error if invalid state transition or unrecognized signal.\n * @sideeffects\n */\n _receiveSignal: function(signal, e) {\n var curState = this.state.touchable.touchState;\n if (!(Transitions[curState] && Transitions[curState][signal])) {\n throw new Error(\n 'Unrecognized signal `' + signal + '` or state `' + curState +\n '` for Touchable responder `' + this.state.touchable.responderID + '`'\n );\n }\n var nextState = Transitions[curState][signal];\n if (nextState === States.ERROR) {\n throw new Error(\n 'Touchable cannot transition from `' + curState + '` to `' + signal +\n '` for responder `' + this.state.touchable.responderID + '`'\n );\n }\n if (curState !== nextState) {\n this._performSideEffectsForTransition(curState, nextState, signal, e);\n this.state.touchable.touchState = nextState;\n }\n },\n\n _cancelLongPressDelayTimeout: function () {\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.longPressDelayTimeout = null;\n },\n\n _isHighlight: function (state) {\n return state === States.RESPONDER_ACTIVE_PRESS_IN ||\n state === States.RESPONDER_ACTIVE_LONG_PRESS_IN;\n },\n\n _savePressInLocation: function(e) {\n var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n this.pressInLocation = {pageX: pageX, pageY: pageY};\n },\n\n _getDistanceBetweenPoints: function (aX, aY, bX, bY) {\n var deltaX = aX - bX;\n var deltaY = aY - bY;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n },\n\n /**\n * Will perform a transition between touchable states, and identify any\n * highlighting or unhighlighting that must be performed for this particular\n * transition.\n *\n * @param {States} curState Current Touchable state.\n * @param {States} nextState Next Touchable state.\n * @param {Signal} signal Signal that triggered the transition.\n * @param {Event} e Native event.\n * @sideeffects\n */\n _performSideEffectsForTransition: function(curState, nextState, signal, e) {\n var curIsHighlight = this._isHighlight(curState);\n var newIsHighlight = this._isHighlight(nextState);\n\n var isFinalSignal =\n signal === Signals.RESPONDER_TERMINATED ||\n signal === Signals.RESPONDER_RELEASE;\n\n if (isFinalSignal) {\n this._cancelLongPressDelayTimeout();\n }\n\n if (!IsActive[curState] && IsActive[nextState]) {\n this._remeasureMetricsOnActivation();\n }\n\n if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n this.touchableHandleLongPress && this.touchableHandleLongPress();\n }\n\n if (newIsHighlight && !curIsHighlight) {\n this._savePressInLocation(e);\n this.touchableHandleActivePressIn && this.touchableHandleActivePressIn();\n } else if (!newIsHighlight && curIsHighlight && this.touchableHandleActivePressOut) {\n if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) {\n this.pressOutDelayTimeout = this.setTimeout(function() {\n this.touchableHandleActivePressOut();\n }, this.touchableGetPressOutDelayMS());\n } else {\n this.touchableHandleActivePressOut();\n }\n }\n\n if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n var hasLongPressHandler = !!this.props.onLongPress;\n var pressIsLongButStillCallOnPress =\n IsLongPressingIn[curState] && ( // We *are* long pressing..\n !hasLongPressHandler || // But either has no long handler\n !this.touchableLongPressCancelsPress() // or we're told to ignore it.\n );\n\n var shouldInvokePress = !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n if (shouldInvokePress && this.touchableHandlePress) {\n this.touchableHandlePress(e);\n }\n }\n\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.touchableDelayTimeout = null;\n }\n\n};\n\nvar Touchable = {\n Mixin: TouchableMixin\n};\n\nmodule.exports = Touchable;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/interactions/Touchable/Touchable.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/BoundingDimensions.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\n\n\n\n\n\n\n\n\nfunction BoundingDimensions(width,height){\nthis.width = width;\nthis.height = height;}\n\n\n\n\n\n\nBoundingDimensions.getPooledFromElement = function(element){\nreturn BoundingDimensions.getPooled(\nelement.offsetWidth,\nelement.offsetHeight);};\n\n\n\nPooledClass.addPoolingTo(BoundingDimensions,twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;","sourceCode":"/**\n * @providesModule BoundingDimensions\n */\n\n\"use strict\";\n\nvar PooledClass = require('PooledClass');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * PooledClass representing the bounding rectangle of a region.\n *\n * @param {number} width Width of bounding rectangle.\n * @param {number} height Height of bounding rectangle.\n * @constructor BoundingDimensions\n */\nfunction BoundingDimensions(width, height) {\n this.width = width;\n this.height = height;\n}\n\n/**\n * @param {HTMLElement} element Element to return `BoundingDimensions` for.\n * @return {BoundingDimensions} Bounding dimensions of `element`.\n */\nBoundingDimensions.getPooledFromElement = function(element) {\n return BoundingDimensions.getPooled(\n element.offsetWidth,\n element.offsetHeight\n );\n};\n\nPooledClass.addPoolingTo(BoundingDimensions, twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/BoundingDimensions.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/Position.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\n\n\n\n\n\n\n\n\n\nfunction Position(left,top){\nthis.left = left;\nthis.top = top;}\n\n\nPooledClass.addPoolingTo(Position,twoArgumentPooler);\n\nmodule.exports = Position;","sourceCode":"/**\n * @providesModule Position\n */\n\n\"use strict\";\n\nvar PooledClass = require('PooledClass');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * Position does not expose methods for construction via an `HTMLDOMElement`,\n * because it isn't meaningful to construct such a thing without first defining\n * a frame of refrence.\n *\n * @param {number} windowStartKey Key that window starts at.\n * @param {number} windowEndKey Key that window ends at.\n */\nfunction Position(left, top) {\n this.left = left;\n this.top = top;\n}\n\nPooledClass.addPoolingTo(Position, twoArgumentPooler);\n\nmodule.exports = Position;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/Position.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/TouchEventUtils.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nTouchEventUtils={\n\n\n\n\n\n\n\n\n\n\nextractSingleTouch:function(nativeEvent){\nvar touches=nativeEvent.touches;\nvar changedTouches=nativeEvent.changedTouches;\nvar hasTouches=touches && touches.length > 0;\nvar hasChangedTouches=changedTouches && changedTouches.length > 0;\n\nreturn !hasTouches && hasChangedTouches?changedTouches[0]:\nhasTouches?touches[0]:\nnativeEvent;}};\n\n\n\nmodule.exports = TouchEventUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchEventUtils\n */\n\nvar TouchEventUtils = {\n /**\n * Utility function for common case of extracting out the primary touch from a\n * touch event.\n * - `touchEnd` events usually do not have the `touches` property.\n * http://stackoverflow.com/questions/3666929/\n * mobile-sarai-touchend-event-not-firing-when-last-touch-is-removed\n *\n * @param {Event} nativeEvent Native event that may or may not be a touch.\n * @return {TouchesObject?} an object with pageX and pageY or null.\n */\n extractSingleTouch: function(nativeEvent) {\n var touches = nativeEvent.touches;\n var changedTouches = nativeEvent.changedTouches;\n var hasTouches = touches && touches.length > 0;\n var hasChangedTouches = changedTouches && changedTouches.length > 0;\n\n return !hasTouches && hasChangedTouches ? changedTouches[0] :\n hasTouches ? touches[0] :\n nativeEvent;\n }\n};\n\nmodule.exports = TouchEventUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/TouchEventUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/RKBackendNode/queryLayoutByID.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar RCTUIManager=require('NativeModules').UIManager;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar queryLayoutByID=function(\nrootNodeID,\nonError,\nonSuccess)\n{\n\nRCTUIManager.measure(\nReactNativeTagHandles.rootNodeIDToTag[rootNodeID],\nonSuccess);};\n\n\n\nmodule.exports = queryLayoutByID;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule queryLayoutByID\n * @flow\n */\n'use strict';\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar RCTUIManager = require('NativeModules').UIManager;\n\ntype OnSuccessCallback = (\n left: number,\n top: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n) => void\n\n// I don't know what type error is...\ntype OnErrorCallback = (error: any) => void\n\n/**\n * Queries the layout of a view. The layout does not reflect the element as\n * seen by the user, rather it reflects the position within the layout system,\n * before any transforms are applied.\n *\n * The only other requirement is that the `pageX, pageY` values be in the same\n * coordinate system that events' `pageX/Y` are reported. That means that for\n * the web, `pageXOffset/pageYOffset` should be added to to\n * getBoundingClientRect to make consistent with touches.\n *\n * var pageXOffset = window.pageXOffset;\n * var pageYOffset = window.pageYOffset;\n *\n * This is an IOS specific implementation.\n *\n * @param {string} rootNodeID ID of the platform specific node to be measured.\n * @param {function} onError `func(error)`\n * @param {function} onSuccess `func(left, top, width, height, pageX, pageY)`\n */\nvar queryLayoutByID = function(\n rootNodeID: string,\n onError: OnErrorCallback,\n onSuccess: OnSuccessCallback\n): void {\n // Native bridge doesn't *yet* surface errors.\n RCTUIManager.measure(\n ReactNativeTagHandles.rootNodeIDToTag[rootNodeID],\n onSuccess\n );\n};\n\nmodule.exports = queryLayoutByID;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/RKBackendNode/queryLayoutByID.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInput.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar DocumentSelectionState=require('DocumentSelectionState');\nvar EventEmitter=require('EventEmitter');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar Platform=require('Platform');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar ReactChildren=require('ReactChildren');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TextInputState=require('TextInputState');\nvar TimerMixin=require('react-timer-mixin');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar onlyMultiline={\nonSelectionChange:true,\nonTextInput:true,\nchildren:true};\n\n\nvar notMultiline={\nonSubmitEditing:true};\n\n\nvar AndroidTextInputAttributes={\nautoCapitalize:true,\nautoCorrect:true,\nautoFocus:true,\ntextAlign:true,\ntextAlignVertical:true,\nkeyboardType:true,\nmultiline:true,\npassword:true,\nplaceholder:true,\nplaceholderTextColor:true,\ntext:true,\ntestID:true,\nunderlineColorAndroid:true};\n\n\nvar viewConfigAndroid={\nuiViewClassName:'AndroidTextInput',\nvalidAttributes:AndroidTextInputAttributes};\n\n\nvar RCTTextView=requireNativeComponent('RCTTextView',null);\nvar RCTTextField=requireNativeComponent('RCTTextField',null);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TextInput=React.createClass({displayName:'TextInput',\npropTypes:{\n\n\n\n\n\n\n\n\nautoCapitalize:PropTypes.oneOf([\n'none',\n'sentences',\n'words',\n'characters']),\n\n\n\n\nautoCorrect:PropTypes.bool,\n\n\n\nautoFocus:PropTypes.bool,\n\n\n\ntextAlign:PropTypes.oneOf([\n'start',\n'center',\n'end']),\n\ntextAlignVertical:PropTypes.oneOf([\n'top',\n'center',\n'bottom']),\n\n\n\n\neditable:PropTypes.bool,\n\n\n\nkeyboardType:PropTypes.oneOf([\n\n'default',\n'numeric',\n'email-address',\n\n'ascii-capable',\n'numbers-and-punctuation',\n'url',\n'number-pad',\n'phone-pad',\n'name-phone-pad',\n'decimal-pad',\n'twitter',\n'web-search']),\n\n\n\n\nreturnKeyType:PropTypes.oneOf([\n'default',\n'go',\n'google',\n'join',\n'next',\n'route',\n'search',\n'send',\n'yahoo',\n'done',\n'emergency-call']),\n\n\n\n\n\nenablesReturnKeyAutomatically:PropTypes.bool,\n\n\n\nmultiline:PropTypes.bool,\n\n\n\nonBlur:PropTypes.func,\n\n\n\nonFocus:PropTypes.func,\n\n\n\nonChange:PropTypes.func,\n\n\n\n\nonChangeText:PropTypes.func,\n\n\n\nonEndEditing:PropTypes.func,\n\n\n\nonSubmitEditing:PropTypes.func,\n\n\n\nonLayout:PropTypes.func,\n\n\n\n\npassword:PropTypes.bool,\n\n\n\nplaceholder:PropTypes.string,\n\n\n\nplaceholderTextColor:PropTypes.string,\n\n\n\n\nselectionState:PropTypes.instanceOf(DocumentSelectionState),\n\n\n\nvalue:PropTypes.string,\n\n\n\n\n\n\nbufferDelay:PropTypes.number,\n\n\n\n\n\ncontrolled:PropTypes.bool,\n\n\n\nclearButtonMode:PropTypes.oneOf([\n'never',\n'while-editing',\n'unless-editing',\n'always']),\n\n\n\n\nclearTextOnFocus:PropTypes.bool,\n\n\n\nselectTextOnFocus:PropTypes.bool,\n\n\n\nstyle:Text.propTypes.style,\n\n\n\ntestID:PropTypes.string,\n\n\n\nunderlineColorAndroid:PropTypes.string},\n\n\n\n\n\n\nmixins:[NativeMethodsMixin,TimerMixin],\n\nviewConfig:Platform.OS === 'ios'?RCTTextField.viewConfig:\nPlatform.OS === 'android'?viewConfigAndroid:{},\n\nisFocused:function(){\nreturn TextInputState.currentlyFocusedField() === \nReact.findNodeHandle(this.refs.input);},\n\n\ngetDefaultProps:function(){\nreturn {\nbufferDelay:100};},\n\n\n\ngetInitialState:function(){\nreturn {\nmostRecentEventCounter:0,\nbufferedValue:this.props.value};},\n\n\n\ncontextTypes:{\nonFocusRequested:React.PropTypes.func,\nfocusEmitter:React.PropTypes.instanceOf(EventEmitter)},\n\n\n_focusSubscription:undefined,\n\ncomponentDidMount:function(){var _this=this;\nif(!this.context.focusEmitter){\nif(this.props.autoFocus){\nthis.requestAnimationFrame(this.focus);}\n\nreturn;}\n\nthis._focusSubscription = this.context.focusEmitter.addListener(\n'focus',\nfunction(el){\nif(_this === el){\n_this.requestAnimationFrame(_this.focus);}else \nif(_this.isFocused()){\n_this.blur();}});\n\n\n\nif(this.props.autoFocus){\nthis.context.onFocusRequested(this);}},\n\n\n\ncomponentWillUnmount:function(){\nthis._focusSubscription && this._focusSubscription.remove();\nif(this.isFocused()){\nthis.blur();}},\n\n\n\n_bufferTimeout:undefined,\n\ncomponentWillReceiveProps:function(newProps){var _this2=this;\nif(newProps.value !== this.props.value){\nif(!this.isFocused()){\n\n\nthis.setState({bufferedValue:newProps.value});}else \n{\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nthis.clearTimeout(this._bufferTimeout);\nthis._bufferTimeout = this.setTimeout(\nfunction(){return _this2.setState({bufferedValue:newProps.value});},\nthis.props.bufferDelay);}}},\n\n\n\n\n\ngetChildContext:function(){\nreturn {isInAParentText:true};},\n\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\nrender:function(){\nif(Platform.OS === 'ios'){\nreturn this._renderIOS();}else \nif(Platform.OS === 'android'){\nreturn this._renderAndroid();}},\n\n\n\n_renderIOS:function(){\nvar textContainer;\n\nvar props=Object.assign({},this.props);\nprops.style = [styles.input,this.props.style];\n\nif(!props.multiline){\nfor(var propKey in onlyMultiline) {\nif(props[propKey]){\nthrow new Error(\n'TextInput prop `' + propKey + '` is only supported with multiline.');}}\n\n\n\ntextContainer = \nReact.createElement(RCTTextField,_extends({\nref:'input'},\nprops,{\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChangeShouldSetResponder:function(){return true;},\ntext:this.state.bufferedValue}));}else \n\n{\nfor(var propKey in notMultiline) {\nif(props[propKey]){\nthrow new Error(\n'TextInput prop `' + propKey + '` cannot be used with multiline.');}}\n\n\n\n\nvar children=props.children;\nvar childCount=0;\nReactChildren.forEach(children,function(){return ++childCount;});\ninvariant(\n!(props.value && childCount),\n'Cannot specify both value and children.');\n\nif(childCount > 1){\nchildren = React.createElement(Text,null,children);}\n\nif(props.inputView){\nchildren = [children,props.inputView];}\n\ntextContainer = \nReact.createElement(RCTTextView,_extends({\nref:'input'},\nprops,{\nchildren:children,\nmostRecentEventCounter:this.state.mostRecentEventCounter,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChange:this._onSelectionChange,\nonTextInput:this._onTextInput,\nonSelectionChangeShouldSetResponder:emptyFunction.thatReturnsTrue,\ntext:this.state.bufferedValue}));}\n\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\nrejectResponderTermination:true,\ntestID:props.testID},\ntextContainer));},\n\n\n\n\n_renderAndroid:function(){\nvar autoCapitalize=RCTUIManager.UIText.AutocapitalizationType[this.props.autoCapitalize];\nvar textAlign=\nRCTUIManager.AndroidTextInput.Constants.TextAlign[this.props.textAlign];\nvar textAlignVertical=\nRCTUIManager.AndroidTextInput.Constants.TextAlignVertical[this.props.textAlignVertical];\nvar children=this.props.children;\nvar childCount=0;\nReactChildren.forEach(children,function(){return ++childCount;});\ninvariant(\n!(this.props.value && childCount),\n'Cannot specify both value and children.');\n\nif(childCount > 1){\nchildren = React.createElement(Text,null,children);}\n\nvar textContainer=\nReact.createElement(AndroidTextInput,{\nref:'input',\nstyle:[this.props.style],\nautoCapitalize:autoCapitalize,\nautoCorrect:this.props.autoCorrect,\ntextAlign:textAlign,\ntextAlignVertical:textAlignVertical,\nkeyboardType:this.props.keyboardType,\nmultiline:this.props.multiline,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonTextInput:this._onTextInput,\nonEndEditing:this.props.onEndEditing,\nonSubmitEditing:this.props.onSubmitEditing,\nonLayout:this.props.onLayout,\npassword:this.props.password || this.props.secureTextEntry,\nplaceholder:this.props.placeholder,\nplaceholderTextColor:this.props.placeholderTextColor,\ntext:this.state.bufferedValue,\nunderlineColorAndroid:this.props.underlineColorAndroid,\nchildren:children});\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\ntestID:this.props.testID},\ntextContainer));},\n\n\n\n\n_onFocus:function(event){\nif(this.props.onFocus){\nthis.props.onFocus(event);}},\n\n\n\n_onPress:function(event){\nthis.focus();},\n\n\n_onChange:function(event){\nif(this.props.controlled && event.nativeEvent.text !== this.props.value){\nthis.refs.input.setNativeProps({text:this.props.value});}\n\nthis.props.onChange && this.props.onChange(event);\nthis.props.onChangeText && this.props.onChangeText(event.nativeEvent.text);},\n\n\n_onBlur:function(event){\nthis.blur();\nif(this.props.onBlur){\nthis.props.onBlur(event);}},\n\n\n\n_onSelectionChange:function(event){\nif(this.props.selectionState){\nvar selection=event.nativeEvent.selection;\nthis.props.selectionState.update(selection.start,selection.end);}\n\nthis.props.onSelectionChange && this.props.onSelectionChange(event);},\n\n\n_onTextInput:function(event){\nthis.props.onTextInput && this.props.onTextInput(event);\nvar counter=event.nativeEvent.eventCounter;\nif(counter > this.state.mostRecentEventCounter){\nthis.setState({mostRecentEventCounter:counter});}}});\n\n\n\n\nvar styles=StyleSheet.create({\ninput:{\nalignSelf:'stretch'}});\n\n\n\nvar AndroidTextInput=createReactNativeComponentClass({\nvalidAttributes:AndroidTextInputAttributes,\nuiViewClassName:'AndroidTextInput'});\n\n\nmodule.exports = TextInput;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TextInput\n * @flow\n */\n'use strict';\n\nvar DocumentSelectionState = require('DocumentSelectionState');\nvar EventEmitter = require('EventEmitter');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar Platform = require('Platform');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar ReactChildren = require('ReactChildren');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TextInputState = require('TextInputState');\nvar TimerMixin = require('react-timer-mixin');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar onlyMultiline = {\n onSelectionChange: true,\n onTextInput: true,\n children: true,\n};\n\nvar notMultiline = {\n onSubmitEditing: true,\n};\n\nvar AndroidTextInputAttributes = {\n autoCapitalize: true,\n autoCorrect: true,\n autoFocus: true,\n textAlign: true,\n textAlignVertical: true,\n keyboardType: true,\n multiline: true,\n password: true,\n placeholder: true,\n placeholderTextColor: true,\n text: true,\n testID: true,\n underlineColorAndroid: true,\n};\n\nvar viewConfigAndroid = {\n uiViewClassName: 'AndroidTextInput',\n validAttributes: AndroidTextInputAttributes,\n};\n\nvar RCTTextView = requireNativeComponent('RCTTextView', null);\nvar RCTTextField = requireNativeComponent('RCTTextField', null);\n\ntype DefaultProps = {\n bufferDelay: number;\n};\n\ntype Event = Object;\n\n/**\n * A foundational component for inputting text into the app via a\n * keyboard. Props provide configurability for several features, such as\n * auto-correction, auto-capitalization, placeholder text, and different keyboard\n * types, such as a numeric keypad.\n *\n * The simplest use case is to plop down a `TextInput` and subscribe to the\n * `onChangeText` events to read the user input. There are also other events, such\n * as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple\n * example:\n *\n * ```\n * \n * this.setState({input: text})}\n * />\n * {'user input: ' + this.state.input}\n * \n * ```\n *\n * The `value` prop can be used to set the value of the input in order to make\n * the state of the component clear, but does not behave as a true\n * controlled component by default because all operations are asynchronous.\n * Setting `value` once is like setting the default value, but you can change it\n * continuously based on `onChangeText` events as well. If you really want to\n * force the component to always revert to the value you are setting, you can\n * set `controlled={true}`.\n *\n * The `multiline` prop is not supported in all releases, and some props are\n * multiline only.\n */\n\nvar TextInput = React.createClass({\n propTypes: {\n /**\n * Can tell TextInput to automatically capitalize certain characters.\n *\n * - characters: all characters,\n * - words: first letter of each word\n * - sentences: first letter of each sentence (default)\n * - none: don't auto capitalize anything\n */\n autoCapitalize: PropTypes.oneOf([\n 'none',\n 'sentences',\n 'words',\n 'characters',\n ]),\n /**\n * If false, disables auto-correct. Default value is true.\n */\n autoCorrect: PropTypes.bool,\n /**\n * If true, focuses the input on componentDidMount. Default value is false.\n */\n autoFocus: PropTypes.bool,\n /**\n * Set the position of the cursor from where editing will begin.\n */\n textAlign: PropTypes.oneOf([\n 'start',\n 'center',\n 'end',\n ]),\n textAlignVertical: PropTypes.oneOf([\n 'top',\n 'center',\n 'bottom',\n ]),\n /**\n * If false, text is not editable. Default value is true.\n */\n editable: PropTypes.bool,\n /**\n * Determines which keyboard to open, e.g.`numeric`.\n */\n keyboardType: PropTypes.oneOf([\n // Cross-platform\n 'default',\n 'numeric',\n 'email-address',\n // iOS-only\n 'ascii-capable',\n 'numbers-and-punctuation',\n 'url',\n 'number-pad',\n 'phone-pad',\n 'name-phone-pad',\n 'decimal-pad',\n 'twitter',\n 'web-search',\n ]),\n /**\n * Determines how the return key should look.\n */\n returnKeyType: PropTypes.oneOf([\n 'default',\n 'go',\n 'google',\n 'join',\n 'next',\n 'route',\n 'search',\n 'send',\n 'yahoo',\n 'done',\n 'emergency-call',\n ]),\n /**\n * If true, the keyboard disables the return key when there is no text and\n * automatically enables it when there is text. Default value is false.\n */\n enablesReturnKeyAutomatically: PropTypes.bool,\n /**\n * If true, the text input can be multiple lines. Default value is false.\n */\n multiline: PropTypes.bool,\n /**\n * Callback that is called when the text input is blurred\n */\n onBlur: PropTypes.func,\n /**\n * Callback that is called when the text input is focused\n */\n onFocus: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n */\n onChange: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n * Changed text is passed as an argument to the callback handler.\n */\n onChangeText: PropTypes.func,\n /**\n * Callback that is called when text input ends.\n */\n onEndEditing: PropTypes.func,\n /**\n * Callback that is called when the text input's submit button is pressed.\n */\n onSubmitEditing: PropTypes.func,\n /**\n * Invoked on mount and layout changes with {x, y, width, height}.\n */\n onLayout: PropTypes.func,\n /**\n * If true, the text input obscures the text entered so that sensitive text\n * like passwords stay secure. Default value is false.\n */\n password: PropTypes.bool,\n /**\n * The string that will be rendered before text input has been entered\n */\n placeholder: PropTypes.string,\n /**\n * The text color of the placeholder string\n */\n placeholderTextColor: PropTypes.string,\n /**\n * See DocumentSelectionState.js, some state that is responsible for\n * maintaining selection information for a document\n */\n selectionState: PropTypes.instanceOf(DocumentSelectionState),\n /**\n * The default value for the text input\n */\n value: PropTypes.string,\n /**\n * This helps avoid drops characters due to race conditions between JS and\n * the native text input. The default should be fine, but if you're\n * potentially doing very slow operations on every keystroke then you may\n * want to try increasing this.\n */\n bufferDelay: PropTypes.number,\n /**\n * If you really want this to behave as a controlled component, you can set\n * this true, but you will probably see flickering, dropped keystrokes,\n * and/or laggy typing, depending on how you process onChange events.\n */\n controlled: PropTypes.bool,\n /**\n * When the clear button should appear on the right side of the text view\n */\n clearButtonMode: PropTypes.oneOf([\n 'never',\n 'while-editing',\n 'unless-editing',\n 'always',\n ]),\n /**\n * If true, clears the text field automatically when editing begins\n */\n clearTextOnFocus: PropTypes.bool,\n /**\n * If true, selected the text automatically when editing begins\n */\n selectTextOnFocus: PropTypes.bool,\n /**\n * Styles\n */\n style: Text.propTypes.style,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n /**\n * The color of the textInput underline. Is only supported on Android.\n */\n underlineColorAndroid: PropTypes.string,\n },\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n mixins: [NativeMethodsMixin, TimerMixin],\n\n viewConfig: ((Platform.OS === 'ios' ? RCTTextField.viewConfig :\n (Platform.OS === 'android' ? viewConfigAndroid : {})) : Object),\n\n isFocused: function(): boolean {\n return TextInputState.currentlyFocusedField() ===\n React.findNodeHandle(this.refs.input);\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n bufferDelay: 100,\n };\n },\n\n getInitialState: function() {\n return {\n mostRecentEventCounter: 0,\n bufferedValue: this.props.value,\n };\n },\n\n contextTypes: {\n onFocusRequested: React.PropTypes.func,\n focusEmitter: React.PropTypes.instanceOf(EventEmitter),\n },\n\n _focusSubscription: (undefined: ?Function),\n\n componentDidMount: function() {\n if (!this.context.focusEmitter) {\n if (this.props.autoFocus) {\n this.requestAnimationFrame(this.focus);\n }\n return;\n }\n this._focusSubscription = this.context.focusEmitter.addListener(\n 'focus',\n (el) => {\n if (this === el) {\n this.requestAnimationFrame(this.focus);\n } else if (this.isFocused()) {\n this.blur();\n }\n }\n );\n if (this.props.autoFocus) {\n this.context.onFocusRequested(this);\n }\n },\n\n componentWillUnmount: function() {\n this._focusSubscription && this._focusSubscription.remove();\n if (this.isFocused()) {\n this.blur();\n }\n },\n\n _bufferTimeout: (undefined: ?number),\n\n componentWillReceiveProps: function(newProps: {value: any}) {\n if (newProps.value !== this.props.value) {\n if (!this.isFocused()) {\n // Set the value immediately if the input is not focused since that\n // means there is no risk of the user typing immediately.\n this.setState({bufferedValue: newProps.value});\n } else {\n // The following clear and setTimeout buffers the value such that if more\n // characters are typed in quick succession, generating new values, the\n // out of date values will get cancelled before they are ever sent to\n // native.\n //\n // If we don't do this, it's likely the out of date values will blow\n // away recently typed characters in the native input that JS was not\n // yet aware of (since it is informed asynchronously), then the next\n // character will be appended to the older value, dropping the\n // characters in between. Here is a potential sequence of events\n // (recall we have multiple independently serial, interleaved queues):\n //\n // 1) User types 'R' => send 'R' to JS queue.\n // 2) User types 'e' => send 'Re' to JS queue.\n // 3) JS processes 'R' and sends 'R' back to native.\n // 4) Native recieves 'R' and changes input from 'Re' back to 'R'.\n // 5) User types 'a' => send 'Ra' to JS queue.\n // 6) JS processes 'Re' and sends 'Re' back to native.\n // 7) Native recieves 'Re' and changes input from 'R' back to 'Re'.\n // 8) JS processes 'Ra' and sends 'Ra' back to native.\n // 9) Native recieves final 'Ra' from JS - 'e' has been dropped!\n //\n // This isn't 100% foolproop (e.g. if it takes longer than\n // `props.bufferDelay` ms to process one keystroke), and there are of\n // course other potential algorithms to deal with this, but this is a\n // simple solution that seems to reduce the chance of dropped characters\n // drastically without compromising native input responsiveness (e.g. by\n // introducing delay from a synchronization protocol).\n this.clearTimeout(this._bufferTimeout);\n this._bufferTimeout = this.setTimeout(\n () => this.setState({bufferedValue: newProps.value}),\n this.props.bufferDelay\n );\n }\n }\n },\n\n getChildContext: function(): Object {\n return {isInAParentText: true};\n },\n\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n\n render: function() {\n if (Platform.OS === 'ios') {\n return this._renderIOS();\n } else if (Platform.OS === 'android') {\n return this._renderAndroid();\n }\n },\n\n _renderIOS: function() {\n var textContainer;\n\n var props = Object.assign({},this.props);\n props.style = [styles.input, this.props.style];\n\n if (!props.multiline) {\n for (var propKey in onlyMultiline) {\n if (props[propKey]) {\n throw new Error(\n 'TextInput prop `' + propKey + '` is only supported with multiline.'\n );\n }\n }\n textContainer =\n true}\n text={this.state.bufferedValue}\n />;\n } else {\n for (var propKey in notMultiline) {\n if (props[propKey]) {\n throw new Error(\n 'TextInput prop `' + propKey + '` cannot be used with multiline.'\n );\n }\n }\n\n var children = props.children;\n var childCount = 0;\n ReactChildren.forEach(children, () => ++childCount);\n invariant(\n !(props.value && childCount),\n 'Cannot specify both value and children.'\n );\n if (childCount > 1) {\n children = {children};\n }\n if (props.inputView) {\n children = [children, props.inputView];\n }\n textContainer =\n ;\n }\n\n return (\n \n {textContainer}\n \n );\n },\n\n _renderAndroid: function() {\n var autoCapitalize = RCTUIManager.UIText.AutocapitalizationType[this.props.autoCapitalize];\n var textAlign =\n RCTUIManager.AndroidTextInput.Constants.TextAlign[this.props.textAlign];\n var textAlignVertical =\n RCTUIManager.AndroidTextInput.Constants.TextAlignVertical[this.props.textAlignVertical];\n var children = this.props.children;\n var childCount = 0;\n ReactChildren.forEach(children, () => ++childCount);\n invariant(\n !(this.props.value && childCount),\n 'Cannot specify both value and children.'\n );\n if (childCount > 1) {\n children = {children};\n }\n var textContainer =\n ;\n\n return (\n \n {textContainer}\n \n );\n },\n\n _onFocus: function(event: Event) {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n },\n\n _onPress: function(event: Event) {\n this.focus();\n },\n\n _onChange: function(event: Event) {\n if (this.props.controlled && event.nativeEvent.text !== this.props.value) {\n this.refs.input.setNativeProps({text: this.props.value});\n }\n this.props.onChange && this.props.onChange(event);\n this.props.onChangeText && this.props.onChangeText(event.nativeEvent.text);\n },\n\n _onBlur: function(event: Event) {\n this.blur();\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n },\n\n _onSelectionChange: function(event: Event) {\n if (this.props.selectionState) {\n var selection = event.nativeEvent.selection;\n this.props.selectionState.update(selection.start, selection.end);\n }\n this.props.onSelectionChange && this.props.onSelectionChange(event);\n },\n\n _onTextInput: function(event: Event) {\n this.props.onTextInput && this.props.onTextInput(event);\n var counter = event.nativeEvent.eventCounter;\n if (counter > this.state.mostRecentEventCounter) {\n this.setState({mostRecentEventCounter: counter});\n }\n },\n});\n\nvar styles = StyleSheet.create({\n input: {\n alignSelf: 'stretch',\n },\n});\n\nvar AndroidTextInput = createReactNativeComponentClass({\n validAttributes: AndroidTextInputAttributes,\n uiViewClassName: 'AndroidTextInput',\n});\n\nmodule.exports = TextInput;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInput.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js":{"data":{"code":"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');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mixInEventEmitter=require('mixInEventEmitter');var \n\n\n\n\n\n\n\n\n\n\nDocumentSelectionState=(function(){\n\n\n\n\nfunction DocumentSelectionState(anchor,focus){_classCallCheck(this,DocumentSelectionState);\nthis._anchorOffset = anchor;\nthis._focusOffset = focus;\nthis._hasFocus = false;}_createClass(DocumentSelectionState,[{key:'update',value:\n\n\n\n\n\n\n\n\n\nfunction update(anchor,focus){\nif(this._anchorOffset !== anchor || this._focusOffset !== focus){\nthis._anchorOffset = anchor;\nthis._focusOffset = focus;\nthis.emit('update');}}},{key:'constrainLength',value:\n\n\n\n\n\n\n\n\n\nfunction constrainLength(maxLength){\nthis.update(\nMath.min(this._anchorOffset,maxLength),\nMath.min(this._focusOffset,maxLength));}},{key:'focus',value:\n\n\n\nfunction focus(){\nif(!this._hasFocus){\nthis._hasFocus = true;\nthis.emit('focus');}}},{key:'blur',value:\n\n\n\nfunction blur(){\nif(this._hasFocus){\nthis._hasFocus = false;\nthis.emit('blur');}}},{key:'hasFocus',value:\n\n\n\n\n\n\nfunction hasFocus(){\nreturn this._hasFocus;}},{key:'isCollapsed',value:\n\n\n\n\n\nfunction isCollapsed(){\nreturn this._anchorOffset === this._focusOffset;}},{key:'isBackward',value:\n\n\n\n\n\nfunction isBackward(){\nreturn this._anchorOffset > this._focusOffset;}},{key:'getAnchorOffset',value:\n\n\n\n\n\nfunction getAnchorOffset(){\nreturn this._hasFocus?this._anchorOffset:null;}},{key:'getFocusOffset',value:\n\n\n\n\n\nfunction getFocusOffset(){\nreturn this._hasFocus?this._focusOffset:null;}},{key:'getStartOffset',value:\n\n\n\n\n\nfunction getStartOffset(){\nreturn (\nthis._hasFocus?Math.min(this._anchorOffset,this._focusOffset):null);}},{key:'getEndOffset',value:\n\n\n\n\n\n\nfunction getEndOffset(){\nreturn (\nthis._hasFocus?Math.max(this._anchorOffset,this._focusOffset):null);}},{key:'overlaps',value:\n\n\n\n\n\n\n\n\nfunction overlaps(start,end){\nreturn (\nthis.hasFocus() && \nthis.getStartOffset() <= end && start <= this.getEndOffset());}}]);return DocumentSelectionState;})();\n\n\n\n\nmixInEventEmitter(DocumentSelectionState,{\n'blur':true,\n'focus':true,\n'update':true});\n\n\nmodule.exports = DocumentSelectionState;","sourceCode":"/**\n * @generated SignedSource<<1f058815818e10d01d2ee1f2f70d0fb1>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule DocumentSelectionState\n * @typechecks\n */\n\nvar mixInEventEmitter = require('mixInEventEmitter');\n\n/**\n * DocumentSelectionState is responsible for maintaining selection information\n * for a document.\n *\n * It is intended for use by AbstractTextEditor-based components for\n * identifying the appropriate start/end positions to modify the\n * DocumentContent, and for programatically setting browser selection when\n * components re-render.\n */\nclass DocumentSelectionState {\n /**\n * @param {number} anchor\n * @param {number} focus\n */\n constructor(anchor, focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this._hasFocus = false;\n }\n\n /**\n * Apply an update to the state. If either offset value has changed,\n * set the values and emit the `change` event. Otherwise no-op.\n *\n * @param {number} anchor\n * @param {number} focus\n */\n update(anchor, focus) {\n if (this._anchorOffset !== anchor || this._focusOffset !== focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this.emit('update');\n }\n }\n\n /**\n * Given a max text length, constrain our selection offsets to ensure\n * that the selection remains strictly within the text range.\n *\n * @param {number} maxLength\n */\n constrainLength(maxLength) {\n this.update(\n Math.min(this._anchorOffset, maxLength),\n Math.min(this._focusOffset, maxLength)\n );\n }\n\n focus() {\n if (!this._hasFocus) {\n this._hasFocus = true;\n this.emit('focus');\n }\n }\n\n blur() {\n if (this._hasFocus) {\n this._hasFocus = false;\n this.emit('blur');\n }\n }\n\n /**\n * @return {boolean}\n */\n hasFocus() {\n return this._hasFocus;\n }\n\n /**\n * @return {boolean}\n */\n isCollapsed() {\n return this._anchorOffset === this._focusOffset;\n }\n\n /**\n * @return {boolean}\n */\n isBackward() {\n return this._anchorOffset > this._focusOffset;\n }\n\n /**\n * @return {?number}\n */\n getAnchorOffset() {\n return this._hasFocus ? this._anchorOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getFocusOffset() {\n return this._hasFocus ? this._focusOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getStartOffset() {\n return (\n this._hasFocus ? Math.min(this._anchorOffset, this._focusOffset) : null\n );\n }\n\n /**\n * @return {?number}\n */\n getEndOffset() {\n return (\n this._hasFocus ? Math.max(this._anchorOffset, this._focusOffset) : null\n );\n }\n\n /**\n * @param {number} start\n * @param {number} end\n * @return {boolean}\n */\n overlaps(start, end) {\n return (\n this.hasFocus() &&\n this.getStartOffset() <= end && start <= this.getEndOffset()\n );\n }\n}\n\nmixInEventEmitter(DocumentSelectionState, {\n 'blur': true,\n 'focus': true,\n 'update': true\n});\n\nmodule.exports = DocumentSelectionState;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitter=require('EventEmitter');\nvar EventEmitterWithHolding=require('EventEmitterWithHolding');\nvar EventHolder=require('EventHolder');\nvar EventValidator=require('EventValidator');\n\nvar copyProperties=require('copyProperties');\nvar invariant=require('invariant');\nvar keyOf=require('keyOf');\n\nvar TYPES_KEY=keyOf({__types:true});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction mixInEventEmitter(klass,types){\ninvariant(types,'Must supply set of valid event types');\ninvariant(!this.__eventEmitter,'An active emitter is already mixed in');\n\n\n\nvar target=klass.prototype || klass;\n\nvar ctor=klass.constructor;\nif(ctor){\ninvariant(\nctor === Object || ctor === Function,\n'Mix EventEmitter into a class, not an instance');}\n\n\n\n\n\nif(target.hasOwnProperty(TYPES_KEY)){\ncopyProperties(target.__types,types);}else \nif(target.__types){\ntarget.__types = copyProperties({},target.__types,types);}else \n{\ntarget.__types = types;}\n\ncopyProperties(target,EventEmitterMixin);}\n\n\nvar EventEmitterMixin={\nemit:function(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emit(eventType,a,b,c,d,e,_);},\n\n\nemitAndHold:function(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emitAndHold(eventType,a,b,c,d,e,_);},\n\n\naddListener:function(eventType,listener,context){\nreturn this.__getEventEmitter().addListener(eventType,listener,context);},\n\n\nonce:function(eventType,listener,context){\nreturn this.__getEventEmitter().once(eventType,listener,context);},\n\n\naddRetroactiveListener:function(eventType,listener,context){\nreturn this.__getEventEmitter().addRetroactiveListener(\neventType,\nlistener,\ncontext);},\n\n\n\naddListenerMap:function(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\naddRetroactiveListenerMap:function(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\nremoveAllListeners:function(){\nthis.__getEventEmitter().removeAllListeners();},\n\n\nremoveCurrentListener:function(){\nthis.__getEventEmitter().removeCurrentListener();},\n\n\nreleaseHeldEventType:function(eventType){\nthis.__getEventEmitter().releaseHeldEventType(eventType);},\n\n\n__getEventEmitter:function(){\nif(!this.__eventEmitter){\nvar emitter=new EventEmitter();\nemitter = EventValidator.addValidation(emitter,this.__types);\n\nvar holder=new EventHolder();\nthis.__eventEmitter = new EventEmitterWithHolding(emitter,holder);}\n\nreturn this.__eventEmitter;}};\n\n\n\nmodule.exports = mixInEventEmitter;","sourceCode":"/**\n * @generated SignedSource<>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule mixInEventEmitter\n */\n\nvar EventEmitter = require('EventEmitter');\nvar EventEmitterWithHolding = require('EventEmitterWithHolding');\nvar EventHolder = require('EventHolder');\nvar EventValidator = require('EventValidator');\n\nvar copyProperties = require('copyProperties');\nvar invariant = require('invariant');\nvar keyOf = require('keyOf');\n\nvar TYPES_KEY = keyOf({__types: true});\n\n/**\n * API to setup an object or constructor to be able to emit data events.\n *\n * @example\n * function Dog() { ...dog stuff... }\n * mixInEventEmitter(Dog, {bark: true});\n *\n * var puppy = new Dog();\n * puppy.addListener('bark', function (volume) {\n * console.log('Puppy', this, 'barked at volume:', volume);\n * });\n * puppy.emit('bark', 'quiet');\n * // Puppy barked at volume: quiet\n *\n *\n * // A \"singleton\" object may also be commissioned:\n *\n * var Singleton = {};\n * mixInEventEmitter(Singleton, {lonely: true});\n * Singleton.emit('lonely', true);\n */\nfunction mixInEventEmitter(klass, types) {\n invariant(types, 'Must supply set of valid event types');\n invariant(!this.__eventEmitter, 'An active emitter is already mixed in');\n\n // If this is a constructor, write to the prototype, otherwise write to the\n // singleton object.\n var target = klass.prototype || klass;\n\n var ctor = klass.constructor;\n if (ctor) {\n invariant(\n ctor === Object || ctor === Function,\n 'Mix EventEmitter into a class, not an instance'\n );\n }\n\n // Keep track of the provided types, union the types if they already exist,\n // which allows for prototype subclasses to provide more types.\n if (target.hasOwnProperty(TYPES_KEY)) {\n copyProperties(target.__types, types);\n } else if (target.__types) {\n target.__types = copyProperties({}, target.__types, types);\n } else {\n target.__types = types;\n }\n copyProperties(target, EventEmitterMixin);\n}\n\nvar EventEmitterMixin = {\n emit: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emit(eventType, a, b, c, d, e, _);\n },\n\n emitAndHold: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emitAndHold(eventType, a, b, c, d, e, _);\n },\n\n addListener: function(eventType, listener, context) {\n return this.__getEventEmitter().addListener(eventType, listener, context);\n },\n\n once: function(eventType, listener, context) {\n return this.__getEventEmitter().once(eventType, listener, context);\n },\n\n addRetroactiveListener: function(eventType, listener, context) {\n return this.__getEventEmitter().addRetroactiveListener(\n eventType,\n listener,\n context\n );\n },\n\n addListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n addRetroactiveListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n removeAllListeners: function() {\n this.__getEventEmitter().removeAllListeners();\n },\n\n removeCurrentListener: function() {\n this.__getEventEmitter().removeCurrentListener();\n },\n\n releaseHeldEventType: function(eventType) {\n this.__getEventEmitter().releaseHeldEventType(eventType);\n },\n\n __getEventEmitter: function() {\n if (!this.__eventEmitter) {\n var emitter = new EventEmitter();\n emitter = EventValidator.addValidation(emitter, this.__types);\n\n var holder = new EventHolder();\n this.__eventEmitter = new EventEmitterWithHolding(emitter, holder);\n }\n return this.__eventEmitter;\n }\n};\n\nmodule.exports = mixInEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js":{"data":{"code":"'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 \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitterWithHolding=(function(){\n\n\n\n\n\n\n\nfunction EventEmitterWithHolding(emitter,holder){_classCallCheck(this,EventEmitterWithHolding);\nthis._emitter = emitter;\nthis._eventHolder = holder;\nthis._currentEventToken = null;\nthis._emittingHeldEvents = false;}_createClass(EventEmitterWithHolding,[{key:'addListener',value:\n\n\n\n\n\nfunction addListener(eventType,listener,context){\nreturn this._emitter.addListener(eventType,listener,context);}},{key:'once',value:\n\n\n\n\n\nfunction once(eventType,listener,context){\nreturn this._emitter.once(eventType,listener,context);}},{key:'addRetroactiveListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addRetroactiveListener(\neventType,listener,context){\nvar subscription=this._emitter.addListener(eventType,listener,context);\n\nthis._emittingHeldEvents = true;\nthis._eventHolder.emitToListener(eventType,listener,context);\nthis._emittingHeldEvents = false;\n\nreturn subscription;}},{key:'removeAllListeners',value:\n\n\n\n\n\nfunction removeAllListeners(eventType){\nthis._emitter.removeAllListeners(eventType);}},{key:'removeCurrentListener',value:\n\n\n\n\n\nfunction removeCurrentListener(){\nthis._emitter.removeCurrentListener();}},{key:'listeners',value:\n\n\n\n\n\nfunction listeners(eventType){\nreturn this._emitter.listeners(eventType);}},{key:'emit',value:\n\n\n\n\n\nfunction emit(eventType,a,b,c,d,e,_){\nthis._emitter.emit(eventType,a,b,c,d,e,_);}},{key:'emitAndHold',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction emitAndHold(eventType,a,b,c,d,e,_){\nthis._currentEventToken = this._eventHolder.holdEvent(\neventType,\na,b,c,d,e,_);\n\nthis._emitter.emit(eventType,a,b,c,d,e,_);\nthis._currentEventToken = null;}},{key:'releaseCurrentEvent',value:\n\n\n\n\n\nfunction releaseCurrentEvent(){\nif(this._currentEventToken !== null){\nthis._eventHolder.releaseEvent(this._currentEventToken);}else \nif(this._emittingHeldEvents){\nthis._eventHolder.releaseCurrentEvent();}}},{key:'releaseHeldEventType',value:\n\n\n\n\n\n\n\nfunction releaseHeldEventType(eventType){\nthis._eventHolder.releaseEventType(eventType);}}]);return EventEmitterWithHolding;})();\n\n\n\nmodule.exports = EventEmitterWithHolding;","sourceCode":"/**\n * @generated SignedSource<>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventEmitterWithHolding\n * @typechecks\n */\n'use strict';\n\n/**\n * @class EventEmitterWithHolding\n * @description\n * An EventEmitterWithHolding decorates an event emitter and enables one to\n * \"hold\" or cache events and then have a handler register later to actually\n * handle them.\n *\n * This is separated into its own decorator so that only those who want to use\n * the holding functionality have to and others can just use an emitter. Since\n * it implements the emitter interface it can also be combined with anything\n * that uses an emitter.\n */\nclass EventEmitterWithHolding {\n /**\n * @constructor\n * @param {object} emitter - The object responsible for emitting the actual\n * events.\n * @param {object} holder - The event holder that is responsible for holding\n * and then emitting held events.\n */\n constructor(emitter, holder) {\n this._emitter = emitter;\n this._eventHolder = holder;\n this._currentEventToken = null;\n this._emittingHeldEvents = false;\n }\n\n /**\n * @see EventEmitter#addListener\n */\n addListener(eventType: String, listener, context: ?Object) {\n return this._emitter.addListener(eventType, listener, context);\n }\n\n /**\n * @see EventEmitter#once\n */\n once(eventType: String, listener, context: ?Object) {\n return this._emitter.once(eventType, listener, context);\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function. In addition to subscribing\n * to all subsequent events, this method will also handle any events that have\n * already been emitted, held, and not released.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n addRetroactiveListener(\n eventType: String, listener, context: ?Object): EmitterSubscription {\n var subscription = this._emitter.addListener(eventType, listener, context);\n\n this._emittingHeldEvents = true;\n this._eventHolder.emitToListener(eventType, listener, context);\n this._emittingHeldEvents = false;\n\n return subscription;\n }\n\n /**\n * @see EventEmitter#removeAllListeners\n */\n removeAllListeners(eventType: String) {\n this._emitter.removeAllListeners(eventType);\n }\n\n /**\n * @see EventEmitter#removeCurrentListener\n */\n removeCurrentListener() {\n this._emitter.removeCurrentListener();\n }\n\n /**\n * @see EventEmitter#listeners\n */\n listeners(eventType: String) /* TODO: Annotate return type here */ {\n return this._emitter.listeners(eventType);\n }\n\n /**\n * @see EventEmitter#emit\n */\n emit(eventType: String, a, b, c, d, e, _) {\n this._emitter.emit(eventType, a, b, c, d, e, _);\n }\n\n /**\n * Emits an event of the given type with the given data, and holds that event\n * in order to be able to dispatch it to a later subscriber when they say they\n * want to handle held events.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n emitAndHold(eventType: String, a, b, c, d, e, _) {\n this._currentEventToken = this._eventHolder.holdEvent(\n eventType,\n a, b, c, d, e, _\n );\n this._emitter.emit(eventType, a, b, c, d, e, _);\n this._currentEventToken = null;\n }\n\n /**\n * @see EventHolder#releaseCurrentEvent\n */\n releaseCurrentEvent() {\n if (this._currentEventToken !== null) {\n this._eventHolder.releaseEvent(this._currentEventToken);\n } else if (this._emittingHeldEvents) {\n this._eventHolder.releaseCurrentEvent();\n }\n }\n\n /**\n * @see EventHolder#releaseEventType\n * @param {string} eventType\n */\n releaseHeldEventType(eventType: String) {\n this._eventHolder.releaseEventType(eventType);\n }\n}\n\nmodule.exports = EventEmitterWithHolding;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js":{"data":{"code":"'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');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');var \n\nEventHolder=(function(){\nfunction EventHolder(){_classCallCheck(this,EventHolder);\nthis._heldEvents = {};\nthis._currentEventKey = null;}_createClass(EventHolder,[{key:'holdEvent',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction holdEvent(eventType,a,b,c,d,e,_){\nthis._heldEvents[eventType] = this._heldEvents[eventType] || [];\nvar eventsOfType=this._heldEvents[eventType];\nvar key={\neventType:eventType,\nindex:eventsOfType.length};\n\neventsOfType.push([a,b,c,d,e,_]);\nreturn key;}},{key:'emitToListener',value:\n\n\n\n\n\n\n\n\n\n\nfunction emitToListener(eventType,listener,context){var _this=this;\nvar eventsOfType=this._heldEvents[eventType];\nif(!eventsOfType){\nreturn;}\n\nvar origEventKey=this._currentEventKey;\neventsOfType.forEach(function(eventHeld,index){\nif(!eventHeld){\nreturn;}\n\n_this._currentEventKey = {\neventType:eventType,\nindex:index};\n\nlistener.apply(context,eventHeld);});\n\nthis._currentEventKey = origEventKey;}},{key:'releaseCurrentEvent',value:\n\n\n\n\n\n\n\n\n\n\nfunction releaseCurrentEvent(){\ninvariant(\nthis._currentEventKey !== null,\n'Not in an emitting cycle; there is no current event');\n\nthis.releaseEvent(this._currentEventKey);}},{key:'releaseEvent',value:\n\n\n\n\n\n\n\n\nfunction releaseEvent(token){\ndelete this._heldEvents[token.eventType][token.index];}},{key:'releaseEventType',value:\n\n\n\n\n\n\n\nfunction releaseEventType(type){\nthis._heldEvents[type] = [];}}]);return EventHolder;})();\n\n\n\nmodule.exports = EventHolder;","sourceCode":"/**\n * @generated SignedSource<<0591836c443c735d24e61782320d3d16>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventHolder\n * @typechecks\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nclass EventHolder {\n constructor() {\n this._heldEvents = {};\n this._currentEventKey = null;\n }\n\n /**\n * Holds a given event for processing later.\n *\n * TODO: Annotate return type better. The structural type of the return here\n * is pretty obvious.\n *\n * @param {string} eventType - Name of the event to hold and later emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n * @return {object} Token that can be used to release the held event\n *\n * @example\n *\n * holder.holdEvent({someEvent: 'abc'});\n *\n * holder.emitToHandler({\n * someEvent: function(data, event) {\n * console.log(data);\n * }\n * }); //logs 'abc'\n *\n */\n holdEvent(eventType: String, a, b, c, d, e, _) {\n this._heldEvents[eventType] = this._heldEvents[eventType] || [];\n var eventsOfType = this._heldEvents[eventType];\n var key = {\n eventType: eventType,\n index: eventsOfType.length\n };\n eventsOfType.push([a, b, c, d, e, _]);\n return key;\n }\n\n /**\n * Emits the held events of the specified type to the given listener.\n *\n * @param {?string} eventType - Optional name of the events to replay\n * @param {function} listener - The listener to which to dispatch the event\n * @param {?object} context - Optional context object to use when invoking\n * the listener\n */\n emitToListener(eventType: ?String , listener, context: ?Object) {\n var eventsOfType = this._heldEvents[eventType];\n if (!eventsOfType) {\n return;\n }\n var origEventKey = this._currentEventKey;\n eventsOfType.forEach((/*?array*/ eventHeld, /*number*/ index) => {\n if (!eventHeld) {\n return;\n }\n this._currentEventKey = {\n eventType: eventType,\n index: index\n };\n listener.apply(context, eventHeld);\n });\n this._currentEventKey = origEventKey;\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to release\n * the last event that was invoked, so that it is no longer \"held\".\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n */\n releaseCurrentEvent() {\n invariant(\n this._currentEventKey !== null,\n 'Not in an emitting cycle; there is no current event'\n );\n this.releaseEvent(this._currentEventKey);\n }\n\n /**\n * Releases the event corresponding to the handle that was returned when the\n * event was first held.\n *\n * @param {object} token - The token returned from holdEvent\n */\n releaseEvent(token: Object) {\n delete this._heldEvents[token.eventType][token.index];\n }\n\n /**\n * Releases all events of a certain type.\n *\n * @param {string} type\n */\n releaseEventType(type: String) {\n this._heldEvents[type] = [];\n }\n}\n\nmodule.exports = EventHolder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventValidator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar copyProperties=require('copyProperties');\n\n\n\n\n\n\n\n\n\n\nvar EventValidator={\n\n\n\n\n\n\n\n\n\n\naddValidation:function(emitter,types){\nvar eventTypes=Object.keys(types);\nvar emitterWithValidation=Object.create(emitter);\n\ncopyProperties(emitterWithValidation,{\nemit:function emit(type,a,b,c,d,e,_){\nassertAllowsEventType(type,eventTypes);\nreturn emitter.emit.call(this,type,a,b,c,d,e,_);}});\n\n\n\nreturn emitterWithValidation;}};\n\n\n\nfunction assertAllowsEventType(type,allowedTypes){\nif(allowedTypes.indexOf(type) === -1){\nthrow new TypeError(errorMessageFor(type,allowedTypes));}}\n\n\n\nfunction errorMessageFor(type,allowedTypes){\nvar message='Unknown event type \"' + type + '\". ';\nif(__DEV__){\nmessage += recommendationFor(type,allowedTypes);}\n\nmessage += 'Known event types: ' + allowedTypes.join(', ') + '.';\nreturn message;}\n\n\n\nif(__DEV__){\nvar recommendationFor=function(type,allowedTypes){\nvar closestTypeRecommendation=closestTypeFor(type,allowedTypes);\nif(isCloseEnough(closestTypeRecommendation,type)){\nreturn 'Did you mean \"' + closestTypeRecommendation.type + '\"? ';}else \n{\nreturn '';}};\n\n\n\nvar closestTypeFor=function(type,allowedTypes){\nvar typeRecommendations=allowedTypes.map(\ntypeRecommendationFor.bind(this,type));\n\nreturn typeRecommendations.sort(recommendationSort)[0];};\n\n\nvar typeRecommendationFor=function(type,recomendedType){\nreturn {\ntype:recomendedType,\ndistance:damerauLevenshteinDistance(type,recomendedType)};};\n\n\n\nvar recommendationSort=function(recommendationA,recommendationB){\nif(recommendationA.distance < recommendationB.distance){\nreturn -1;}else \nif(recommendationA.distance > recommendationB.distance){\nreturn 1;}else \n{\nreturn 0;}};\n\n\n\nvar isCloseEnough=function(closestType,actualType){\nreturn closestType.distance / actualType.length < 0.334;};\n\n\nvar damerauLevenshteinDistance=function(a,b){\nvar i,j;\nvar d=[];\n\nfor(i = 0;i <= a.length;i++) {\nd[i] = [i];}\n\n\nfor(j = 1;j <= b.length;j++) {\nd[0][j] = j;}\n\n\nfor(i = 1;i <= a.length;i++) {\nfor(j = 1;j <= b.length;j++) {\nvar cost=a.charAt(i - 1) === b.charAt(j - 1)?0:1;\n\nd[i][j] = Math.min(\nd[i - 1][j] + 1,\nd[i][j - 1] + 1,\nd[i - 1][j - 1] + cost);\n\n\nif(i > 1 && j > 1 && \na.charAt(i - 1) == b.charAt(j - 2) && \na.charAt(i - 2) == b.charAt(j - 1)){\nd[i][j] = Math.min(d[i][j],d[i - 2][j - 2] + cost);}}}\n\n\n\n\nreturn d[a.length][b.length];};}\n\n\n\nmodule.exports = EventValidator;","sourceCode":"/**\n * @generated SignedSource<<7149bdac6fb48595f245ad6e76938e44>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventValidator\n */\n'use strict';\n\nvar copyProperties = require('copyProperties');\n\n/**\n * EventValidator is designed to validate event types to make it easier to catch\n * common mistakes. It accepts a map of all of the different types of events\n * that the emitter can emit. Then, if a user attempts to emit an event that is\n * not one of those specified types the emitter will throw an error. Also, it\n * provides a relatively simple matcher so that if it thinks that you likely\n * mistyped the event name it will suggest what you might have meant to type in\n * the error message.\n */\nvar EventValidator = {\n /**\n * @param {Object} emitter - The object responsible for emitting the actual\n * events\n * @param {Object} types - The collection of valid types that will be used to\n * check for errors\n * @return {Object} A new emitter with event type validation\n * @example\n * var types = {someEvent: true, anotherEvent: true};\n * var emitter = EventValidator.addValidation(emitter, types);\n */\n addValidation: function(emitter: Object, types: Object) {\n var eventTypes = Object.keys(types);\n var emitterWithValidation = Object.create(emitter);\n\n copyProperties(emitterWithValidation, {\n emit: function emit(type, a, b, c, d, e, _) {\n assertAllowsEventType(type, eventTypes);\n return emitter.emit.call(this, type, a, b, c, d, e, _);\n }\n });\n\n return emitterWithValidation;\n }\n};\n\nfunction assertAllowsEventType(type, allowedTypes) {\n if (allowedTypes.indexOf(type) === -1) {\n throw new TypeError(errorMessageFor(type, allowedTypes));\n }\n}\n\nfunction errorMessageFor(type, allowedTypes) {\n var message = 'Unknown event type \"' + type + '\". ';\n if (__DEV__) {\n message += recommendationFor(type, allowedTypes);\n }\n message += 'Known event types: ' + allowedTypes.join(', ') + '.';\n return message;\n}\n\n// Allow for good error messages\nif (__DEV__) {\n var recommendationFor = function (type, allowedTypes) {\n var closestTypeRecommendation = closestTypeFor(type, allowedTypes);\n if (isCloseEnough(closestTypeRecommendation, type)) {\n return 'Did you mean \"' + closestTypeRecommendation.type + '\"? ';\n } else {\n return '';\n }\n };\n\n var closestTypeFor = function (type, allowedTypes) {\n var typeRecommendations = allowedTypes.map(\n typeRecommendationFor.bind(this, type)\n );\n return typeRecommendations.sort(recommendationSort)[0];\n };\n\n var typeRecommendationFor = function (type, recomendedType) {\n return {\n type: recomendedType,\n distance: damerauLevenshteinDistance(type, recomendedType)\n };\n };\n\n var recommendationSort = function (recommendationA, recommendationB) {\n if (recommendationA.distance < recommendationB.distance) {\n return -1;\n } else if (recommendationA.distance > recommendationB.distance) {\n return 1;\n } else {\n return 0;\n }\n };\n\n var isCloseEnough = function (closestType, actualType) {\n return (closestType.distance / actualType.length) < 0.334;\n };\n\n var damerauLevenshteinDistance = function (a, b) {\n var i, j;\n var d = [];\n\n for (i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= a.length; i++) {\n for (j = 1; j <= b.length; j++) {\n var cost = a.charAt(i - 1) === b.charAt(j - 1) ? 0 : 1;\n\n d[i][j] = Math.min(\n d[i - 1][j] + 1,\n d[i][j - 1] + 1,\n d[i - 1][j - 1] + cost\n );\n\n if (i > 1 && j > 1 &&\n a.charAt(i - 1) == b.charAt(j - 2) &&\n a.charAt(i - 2) == b.charAt(j - 1)) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[a.length][b.length];\n };\n}\n\nmodule.exports = EventValidator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventValidator.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/copyProperties.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncopyProperties(obj,a,b,c,d,e,f){\nobj = obj || {};\n\nif(__DEV__){\nif(f){\nthrow new Error('Too many arguments passed to copyProperties');}}\n\n\n\nvar args=[a,b,c,d,e];\nvar ii=0,v;\nwhile(args[ii]) {\nv = args[ii++];\nfor(var k in v) {\nobj[k] = v[k];}\n\n\n\n\nif(v.hasOwnProperty && v.hasOwnProperty('toString') && \ntypeof v.toString != 'undefined' && obj.toString !== v.toString){\nobj.toString = v.toString;}}\n\n\n\nreturn obj;}\n\n\nmodule.exports = copyProperties;","sourceCode":"/**\n * @generated SignedSource<>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule copyProperties\n */\n\n/**\n * Copy properties from one or more objects (up to 5) into the first object.\n * This is a shallow copy. It mutates the first object and also returns it.\n *\n * NOTE: `arguments` has a very significant performance penalty, which is why\n * we don't support unlimited arguments.\n */\nfunction copyProperties(obj, a, b, c, d, e, f) {\n obj = obj || {};\n\n if (__DEV__) {\n if (f) {\n throw new Error('Too many arguments passed to copyProperties');\n }\n }\n\n var args = [a, b, c, d, e];\n var ii = 0, v;\n while (args[ii]) {\n v = args[ii++];\n for (var k in v) {\n obj[k] = v[k];\n }\n\n // IE ignores toString in object iteration.. See:\n // webreflection.blogspot.com/2007/07/quick-fix-internet-explorer-and.html\n if (v.hasOwnProperty && v.hasOwnProperty('toString') &&\n (typeof v.toString != 'undefined') && (obj.toString !== v.toString)) {\n obj.toString = v.toString;\n }\n }\n\n return obj;\n}\n\nmodule.exports = copyProperties;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/copyProperties.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar onlyChild=require('onlyChild');\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\n\n\n\n\n\n\n\nvar TouchableWithoutFeedback=React.createClass({displayName:'TouchableWithoutFeedback',\nmixins:[TimerMixin,Touchable.Mixin],\n\npropTypes:{\n\n\n\n\naccessible:React.PropTypes.bool,\nonPress:React.PropTypes.func,\nonPressIn:React.PropTypes.func,\nonPressOut:React.PropTypes.func,\nonLongPress:React.PropTypes.func,\n\n\n\ndelayPressIn:React.PropTypes.number,\n\n\n\ndelayPressOut:React.PropTypes.number,\n\n\n\ndelayLongPress:React.PropTypes.number},\n\n\ngetInitialState:function(){\nreturn this.touchableGetInitialState();},\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\n\n\n\n\ntouchableHandlePress:function(e){\nthis.props.onPress && this.props.onPress(e);},\n\n\ntouchableHandleActivePressIn:function(){\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn || 0;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress === 0?0:\nthis.props.delayLongPress || 500;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut || 0;},\n\n\nrender:function(){\n\nreturn React.cloneElement(onlyChild(this.props.children),{\naccessible:this.props.accessible !== false,\ntestID:this.props.testID,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate});}});\n\n\n\n\nmodule.exports = TouchableWithoutFeedback;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableWithoutFeedback\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar onlyChild = require('onlyChild');\n\n/**\n * When the scroll view is disabled, this defines how far your touch may move\n * off of the button, before deactivating the button. Once deactivated, try\n * moving it back and you'll see that the button is once again reactivated!\n * Move it back and forth several times while the scroll view is disabled.\n */\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\ntype Event = Object;\n\n/**\n * Do not use unless you have a very good reason. All the elements that\n * respond to press should have a visual feedback when touched. This is\n * one of the primary reason a \"web\" app doesn't feel \"native\".\n */\nvar TouchableWithoutFeedback = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin],\n\n propTypes: {\n /**\n * Called when the touch is released, but not if cancelled (e.g. by a scroll\n * that steals the responder lock).\n */\n accessible: React.PropTypes.bool,\n onPress: React.PropTypes.func,\n onPressIn: React.PropTypes.func,\n onPressOut: React.PropTypes.func,\n onLongPress: React.PropTypes.func,\n /**\n * Delay in ms, from the start of the touch, before onPressIn is called.\n */\n delayPressIn: React.PropTypes.number,\n /**\n * Delay in ms, from the release of the touch, before onPressOut is called.\n */\n delayPressOut: React.PropTypes.number,\n /**\n * Delay in ms, from onPressIn, before onLongPress is called.\n */\n delayLongPress: React.PropTypes.number,\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n },\n\n componentWillReceiveProps: function(nextProps: Object) {\n ensurePositiveDelayProps(nextProps);\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandlePress: function(e: Event) {\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleActivePressIn: function() {\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function(): typeof PRESS_RECT_OFFSET {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function(): number {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function(): number {\n return this.props.delayLongPress === 0 ? 0 :\n this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function(): number {\n return this.props.delayPressOut || 0;\n },\n\n render: function(): ReactElement {\n // Note(avik): remove dynamic typecast once Flow has been upgraded\n return (React: any).cloneElement(onlyChild(this.props.children), {\n accessible: this.props.accessible !== false,\n testID: this.props.testID,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this.touchableHandleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate\n });\n }\n});\n\nmodule.exports = TouchableWithoutFeedback;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar ensurePositiveDelayProps=function(props){\ninvariant(\n!(props.delayPressIn < 0 || props.delayPressOut < 0 || \nprops.delayLongPress < 0),\n'Touchable components cannot have negative delay properties');};\n\n\n\nmodule.exports = ensurePositiveDelayProps;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ensurePositiveDelayProps\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar ensurePositiveDelayProps = function(props: any) {\n invariant(\n !(props.delayPressIn < 0 || props.delayPressOut < 0 ||\n props.delayLongPress < 0),\n 'Touchable components cannot have negative delay properties'\n );\n};\n\nmodule.exports = ensurePositiveDelayProps;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheet=require('StyleSheet');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\nvar View=require('View');\n\nvar cloneWithProps=require('cloneWithProps');\nvar ensureComponentIsNative=require('ensureComponentIsNative');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar keyOf=require('keyOf');\nvar merge=require('merge');\nvar onlyChild=require('onlyChild');\n\nvar DEFAULT_PROPS={\nactiveOpacity:0.8,\nunderlayColor:'black'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableHighlight=React.createClass({displayName:'TouchableHighlight',\npropTypes:_extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number,\n\n\n\n\nunderlayColor:React.PropTypes.string,\nstyle:View.propTypes.style,\n\n\n\nonShowUnderlay:React.PropTypes.func,\n\n\n\nonHideUnderlay:React.PropTypes.func}),\n\n\nmixins:[NativeMethodsMixin,TimerMixin,Touchable.Mixin],\n\ngetDefaultProps:function(){return DEFAULT_PROPS;},\n\n\ncomputeSyntheticState:function(props){\nreturn {\nactiveProps:{\nstyle:{\nopacity:props.activeOpacity}},\n\n\nactiveUnderlayProps:{\nstyle:{\nbackgroundColor:props.underlayColor}},\n\n\nunderlayStyle:[\nINACTIVE_UNDERLAY_PROPS.style,\nprops.style]};},\n\n\n\n\ngetInitialState:function(){\nreturn merge(\nthis.touchableGetInitialState(),this.computeSyntheticState(this.props));},\n\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentDidUpdate:function(){\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);\nif(nextProps.activeOpacity !== this.props.activeOpacity || \nnextProps.underlayColor !== this.props.underlayColor || \nnextProps.style !== this.props.style){\nthis.setState(this.computeSyntheticState(nextProps));}},\n\n\n\nviewConfig:{\nuiViewClassName:'RCTView',\nvalidAttributes:ReactNativeViewAttributes.RCTView},\n\n\n\n\n\n\ntouchableHandleActivePressIn:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nthis._showUnderlay();\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nif(!this._hideTimeout){\nthis._hideUnderlay();}\n\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandlePress:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._showUnderlay();\nthis._hideTimeout = this.setTimeout(this._hideUnderlay,\nthis.props.delayPressOut || 100);\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut;},\n\n\n_showUnderlay:function(){\nthis.refs[UNDERLAY_REF].setNativeProps(this.state.activeUnderlayProps);\nthis.refs[CHILD_REF].setNativeProps(this.state.activeProps);\nthis.props.onShowUnderlay && this.props.onShowUnderlay();},\n\n\n_hideUnderlay:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nif(this.refs[UNDERLAY_REF]){\nthis.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS);\nthis.refs[UNDERLAY_REF].setNativeProps(_extends({},\nINACTIVE_UNDERLAY_PROPS,{\nstyle:this.state.underlayStyle}));\n\nthis.props.onHideUnderlay && this.props.onHideUnderlay();}},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{\nref:UNDERLAY_REF,\nstyle:this.state.underlayStyle,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate},\ncloneWithProps(\nonlyChild(this.props.children),\n{\nref:CHILD_REF,\naccessible:true,\ntestID:this.props.testID})));}});\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\nvar CHILD_REF=keyOf({childRef:null});\nvar UNDERLAY_REF=keyOf({underlayRef:null});\nvar INACTIVE_CHILD_PROPS={\nstyle:StyleSheet.create({x:{opacity:1.0}}).x};\n\nvar INACTIVE_UNDERLAY_PROPS={\nstyle:StyleSheet.create({x:{backgroundColor:'transparent'}}).x};\n\n\nmodule.exports = TouchableHighlight;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableHighlight\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheet = require('StyleSheet');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nvar View = require('View');\n\nvar cloneWithProps = require('cloneWithProps');\nvar ensureComponentIsNative = require('ensureComponentIsNative');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar keyOf = require('keyOf');\nvar merge = require('merge');\nvar onlyChild = require('onlyChild');\n\nvar DEFAULT_PROPS = {\n activeOpacity: 0.8,\n underlayColor: 'black',\n};\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, which allows\n * the underlay color to show through, darkening or tinting the view. The\n * underlay comes from adding a view to the view hierarchy, which can sometimes\n * cause unwanted visual artifacts if not used correctly, for example if the\n * backgroundColor of the wrapped view isn't explicitly set to an opaque color.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * \n * \n * \n * );\n * },\n * ```\n */\n\nvar TouchableHighlight = React.createClass({\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active.\n */\n activeOpacity: React.PropTypes.number,\n /**\n * The color of the underlay that will show through when the touch is\n * active.\n */\n underlayColor: React.PropTypes.string,\n style: View.propTypes.style,\n /**\n * Called immediately after the underlay is shown\n */\n onShowUnderlay: React.PropTypes.func,\n /**\n * Called immediately after the underlay is hidden\n */\n onHideUnderlay: React.PropTypes.func,\n },\n\n mixins: [NativeMethodsMixin, TimerMixin, Touchable.Mixin],\n\n getDefaultProps: () => DEFAULT_PROPS,\n\n // Performance optimization to avoid constantly re-generating these objects.\n computeSyntheticState: function(props) {\n return {\n activeProps: {\n style: {\n opacity: props.activeOpacity,\n }\n },\n activeUnderlayProps: {\n style: {\n backgroundColor: props.underlayColor,\n }\n },\n underlayStyle: [\n INACTIVE_UNDERLAY_PROPS.style,\n props.style,\n ]\n };\n },\n\n getInitialState: function() {\n return merge(\n this.touchableGetInitialState(), this.computeSyntheticState(this.props)\n );\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentDidUpdate: function() {\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n if (nextProps.activeOpacity !== this.props.activeOpacity ||\n nextProps.underlayColor !== this.props.underlayColor ||\n nextProps.style !== this.props.style) {\n this.setState(this.computeSyntheticState(nextProps));\n }\n },\n\n viewConfig: {\n uiViewClassName: 'RCTView',\n validAttributes: ReactNativeViewAttributes.RCTView\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._showUnderlay();\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n if (!this._hideTimeout) {\n this._hideUnderlay();\n }\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandlePress: function() {\n this.clearTimeout(this._hideTimeout);\n this._showUnderlay();\n this._hideTimeout = this.setTimeout(this._hideUnderlay,\n this.props.delayPressOut || 100);\n this.props.onPress && this.props.onPress();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function() {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _showUnderlay: function() {\n this.refs[UNDERLAY_REF].setNativeProps(this.state.activeUnderlayProps);\n this.refs[CHILD_REF].setNativeProps(this.state.activeProps);\n this.props.onShowUnderlay && this.props.onShowUnderlay();\n },\n\n _hideUnderlay: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n if (this.refs[UNDERLAY_REF]) {\n this.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS);\n this.refs[UNDERLAY_REF].setNativeProps({\n ...INACTIVE_UNDERLAY_PROPS,\n style: this.state.underlayStyle,\n });\n this.props.onHideUnderlay && this.props.onHideUnderlay();\n }\n },\n\n render: function() {\n return (\n \n {cloneWithProps(\n onlyChild(this.props.children),\n {\n ref: CHILD_REF,\n accessible: true,\n testID: this.props.testID,\n }\n )}\n
\n );\n }\n});\n\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\nvar CHILD_REF = keyOf({childRef: null});\nvar UNDERLAY_REF = keyOf({underlayRef: null});\nvar INACTIVE_CHILD_PROPS = {\n style: StyleSheet.create({x: {opacity: 1.0}}).x,\n};\nvar INACTIVE_UNDERLAY_PROPS = {\n style: StyleSheet.create({x: {backgroundColor: 'transparent'}}).x,\n};\n\nmodule.exports = TouchableHighlight;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/cloneWithProps.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactPropTransferer=require('ReactPropTransferer');\n\nvar keyOf=require('keyOf');\nvar warning=require('warning');\n\nvar CHILDREN_PROP=keyOf({children:null});\n\n\n\n\n\n\n\n\n\n\nfunction cloneWithProps(child,props){\nif(__DEV__){\nwarning(\n!child.ref,\n'You are calling cloneWithProps() on a child with a ref. This is ' + \n'dangerous because you\\'re creating a new child which will not be ' + \n'added as a ref to its parent.');}\n\n\n\nvar newProps=ReactPropTransferer.mergeProps(props,child.props);\n\n\nif(!newProps.hasOwnProperty(CHILDREN_PROP) && \nchild.props.hasOwnProperty(CHILDREN_PROP)){\nnewProps.children = child.props.children;}\n\n\n\n\nreturn ReactElement.createElement(child.type,newProps);}\n\n\nmodule.exports = cloneWithProps;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks static-only\n * @providesModule cloneWithProps\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactPropTransferer = require('ReactPropTransferer');\n\nvar keyOf = require('keyOf');\nvar warning = require('warning');\n\nvar CHILDREN_PROP = keyOf({children: null});\n\n/**\n * Sometimes you want to change the props of a child passed to you. Usually\n * this is to add a CSS class.\n *\n * @param {ReactElement} child child element you'd like to clone\n * @param {object} props props you'd like to modify. className and style will be\n * merged automatically.\n * @return {ReactElement} a clone of child with props merged in.\n */\nfunction cloneWithProps(child, props) {\n if (__DEV__) {\n warning(\n !child.ref,\n 'You are calling cloneWithProps() on a child with a ref. This is ' +\n 'dangerous because you\\'re creating a new child which will not be ' +\n 'added as a ref to its parent.'\n );\n }\n\n var newProps = ReactPropTransferer.mergeProps(props, child.props);\n\n // Use `child.props.children` if it is provided.\n if (!newProps.hasOwnProperty(CHILDREN_PROP) &&\n child.props.hasOwnProperty(CHILDREN_PROP)) {\n newProps.children = child.props.children;\n }\n\n // The current API doesn't retain _owner and _context, which is why this\n // doesn't use ReactElement.cloneAndReplaceProps.\n return ReactElement.createElement(child.type, newProps);\n}\n\nmodule.exports = cloneWithProps;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/cloneWithProps.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactPropTransferer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar emptyFunction=require('emptyFunction');\nvar joinClasses=require('joinClasses');\n\n\n\n\n\n\n\n\nfunction createTransferStrategy(mergeStrategy){\nreturn function(props,key,value){\nif(!props.hasOwnProperty(key)){\nprops[key] = value;}else \n{\nprops[key] = mergeStrategy(props[key],value);}};}\n\n\n\n\nvar transferStrategyMerge=createTransferStrategy(function(a,b){\n\n\n\nreturn assign({},b,a);});\n\n\n\n\n\n\n\nvar TransferStrategies={\n\n\n\nchildren:emptyFunction,\n\n\n\nclassName:createTransferStrategy(joinClasses),\n\n\n\nstyle:transferStrategyMerge};\n\n\n\n\n\n\n\n\n\n\nfunction transferInto(props,newProps){\nfor(var thisKey in newProps) {\nif(!newProps.hasOwnProperty(thisKey)){\ncontinue;}\n\n\nvar transferStrategy=TransferStrategies[thisKey];\n\nif(transferStrategy && TransferStrategies.hasOwnProperty(thisKey)){\ntransferStrategy(props,thisKey,newProps[thisKey]);}else \nif(!props.hasOwnProperty(thisKey)){\nprops[thisKey] = newProps[thisKey];}}\n\n\nreturn props;}\n\n\n\n\n\n\n\n\nvar ReactPropTransferer={\n\n\n\n\n\n\n\n\nmergeProps:function(oldProps,newProps){\nreturn transferInto(assign({},oldProps),newProps);}};\n\n\n\n\nmodule.exports = ReactPropTransferer;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTransferer\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar emptyFunction = require('emptyFunction');\nvar joinClasses = require('joinClasses');\n\n/**\n * Creates a transfer strategy that will merge prop values using the supplied\n * `mergeStrategy`. If a prop was previously unset, this just sets it.\n *\n * @param {function} mergeStrategy\n * @return {function}\n */\nfunction createTransferStrategy(mergeStrategy) {\n return function(props, key, value) {\n if (!props.hasOwnProperty(key)) {\n props[key] = value;\n } else {\n props[key] = mergeStrategy(props[key], value);\n }\n };\n}\n\nvar transferStrategyMerge = createTransferStrategy(function(a, b) {\n // `merge` overrides the first object's (`props[key]` above) keys using the\n // second object's (`value`) keys. An object's style's existing `propA` would\n // get overridden. Flip the order here.\n return assign({}, b, a);\n});\n\n/**\n * Transfer strategies dictate how props are transferred by `transferPropsTo`.\n * NOTE: if you add any more exceptions to this list you should be sure to\n * update `cloneWithProps()` accordingly.\n */\nvar TransferStrategies = {\n /**\n * Never transfer `children`.\n */\n children: emptyFunction,\n /**\n * Transfer the `className` prop by merging them.\n */\n className: createTransferStrategy(joinClasses),\n /**\n * Transfer the `style` prop (which is an object) by merging them.\n */\n style: transferStrategyMerge\n};\n\n/**\n * Mutates the first argument by transferring the properties from the second\n * argument.\n *\n * @param {object} props\n * @param {object} newProps\n * @return {object}\n */\nfunction transferInto(props, newProps) {\n for (var thisKey in newProps) {\n if (!newProps.hasOwnProperty(thisKey)) {\n continue;\n }\n\n var transferStrategy = TransferStrategies[thisKey];\n\n if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) {\n transferStrategy(props, thisKey, newProps[thisKey]);\n } else if (!props.hasOwnProperty(thisKey)) {\n props[thisKey] = newProps[thisKey];\n }\n }\n return props;\n}\n\n/**\n * ReactPropTransferer are capable of transferring props to another component\n * using a `transferPropsTo` method.\n *\n * @class ReactPropTransferer\n */\nvar ReactPropTransferer = {\n\n /**\n * Merge two props objects using TransferStrategies.\n *\n * @param {object} oldProps original props (they take precedence)\n * @param {object} newProps new props to merge in\n * @return {object} a new object containing both sets of props merged.\n */\n mergeProps: function(oldProps, newProps) {\n return transferInto(assign({}, oldProps), newProps);\n }\n\n};\n\nmodule.exports = ReactPropTransferer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactPropTransferer.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/joinClasses.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction joinClasses(className){\nif(!className){\nclassName = '';}\n\nvar nextClass;\nvar argLength=arguments.length;\nif(argLength > 1){\nfor(var ii=1;ii < argLength;ii++) {\nnextClass = arguments[ii];\nif(nextClass){\nclassName = (className?className + ' ':'') + nextClass;}}}\n\n\n\nreturn className;}\n\n\nmodule.exports = joinClasses;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule joinClasses\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Combines multiple className strings into one.\n * http://jsperf.com/joinclasses-args-vs-array\n *\n * @param {...?string} classes\n * @return {string}\n */\nfunction joinClasses(className/*, ... */) {\n if (!className) {\n className = '';\n }\n var nextClass;\n var argLength = arguments.length;\n if (argLength > 1) {\n for (var ii = 1; ii < argLength; ii++) {\n nextClass = arguments[ii];\n if (nextClass) {\n className = (className ? className + ' ' : '') + nextClass;\n }\n }\n }\n return className;\n}\n\nmodule.exports = joinClasses;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/joinClasses.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar ensureComponentIsNative=function(component){\ninvariant(\ncomponent && typeof component.setNativeProps === 'function',\n'Touchable child must either be native or forward setNativeProps to a ' + \n'native component');};\n\n\n\nmodule.exports = ensureComponentIsNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ensureComponentIsNative\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar ensureComponentIsNative = function(component: any) {\n invariant(\n component && typeof component.setNativeProps === 'function',\n 'Touchable child must either be native or forward setNativeProps to a ' +\n 'native component'\n );\n};\n\nmodule.exports = ensureComponentIsNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar POPAnimationMixin=require('POPAnimationMixin');\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\n\nvar cloneWithProps=require('cloneWithProps');\nvar ensureComponentIsNative=require('ensureComponentIsNative');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar flattenStyle=require('flattenStyle');\nvar keyOf=require('keyOf');\nvar onlyChild=require('onlyChild');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableOpacity=React.createClass({displayName:'TouchableOpacity',\nmixins:[TimerMixin,Touchable.Mixin,NativeMethodsMixin,POPAnimationMixin],\n\npropTypes:_extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number}),\n\n\ngetDefaultProps:function(){\nreturn {\nactiveOpacity:0.2};},\n\n\n\ngetInitialState:function(){\nreturn this.touchableGetInitialState();},\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentDidUpdate:function(){\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\nsetOpacityTo:function(value){\nif(POPAnimationMixin){\n\nthis.stopAllAnimations();\nvar anim={\ntype:this.AnimationTypes.linear,\nproperty:this.AnimationProperties.opacity,\nduration:0.15,\ntoValue:value};\n\nthis.startAnimation(CHILD_REF,anim);}else \n{\n\nthis.refs[CHILD_REF].setNativeProps({\nopacity:value});}},\n\n\n\n\n\n\n\n\ntouchableHandleActivePressIn:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nthis._opacityActive();\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nif(!this._hideTimeout){\nthis._opacityInactive();}\n\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandlePress:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._opacityActive();\nthis._hideTimeout = this.setTimeout(\nthis._opacityInactive,\nthis.props.delayPressOut || 100);\n\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn || 0;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress === 0?0:\nthis.props.delayLongPress || 500;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut;},\n\n\n_opacityActive:function(){\nthis.setOpacityTo(this.props.activeOpacity);},\n\n\n_opacityInactive:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nvar child=onlyChild(this.props.children);\nvar childStyle=flattenStyle(child.props.style) || {};\nthis.setOpacityTo(\nchildStyle.opacity === undefined?1:childStyle.opacity);},\n\n\n\nrender:function(){\nreturn cloneWithProps(onlyChild(this.props.children),{\nref:CHILD_REF,\naccessible:true,\ntestID:this.props.testID,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate});}});\n\n\n\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\nvar CHILD_REF=keyOf({childRef:null});\n\nmodule.exports = TouchableOpacity;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableOpacity\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar POPAnimationMixin = require('POPAnimationMixin');\nvar React = require('React');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nvar cloneWithProps = require('cloneWithProps');\nvar ensureComponentIsNative = require('ensureComponentIsNative');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar flattenStyle = require('flattenStyle');\nvar keyOf = require('keyOf');\nvar onlyChild = require('onlyChild');\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, dimming it.\n * This is done without actually changing the view hierarchy, and in general is\n * easy to add to an app without weird side-effects.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * \n * \n * \n * );\n * },\n * ```\n * > **NOTE**: TouchableOpacity supports only one child\n * >\n * > If you wish to have to have several child components, wrap them in a View.\n */\n\nvar TouchableOpacity = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin, NativeMethodsMixin, POPAnimationMixin],\n\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active.\n */\n activeOpacity: React.PropTypes.number,\n },\n\n getDefaultProps: function() {\n return {\n activeOpacity: 0.2,\n };\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentDidUpdate: function() {\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n },\n\n setOpacityTo: function(value) {\n if (POPAnimationMixin) {\n // Reset with animation if POP is available\n this.stopAllAnimations();\n var anim = {\n type: this.AnimationTypes.linear,\n property: this.AnimationProperties.opacity,\n duration: 0.15,\n toValue: value,\n };\n this.startAnimation(CHILD_REF, anim);\n } else {\n // Reset immediately if POP is unavailable\n this.refs[CHILD_REF].setNativeProps({\n opacity: value\n });\n }\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._opacityActive();\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n if (!this._hideTimeout) {\n this._opacityInactive();\n }\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandlePress: function() {\n this.clearTimeout(this._hideTimeout);\n this._opacityActive();\n this._hideTimeout = this.setTimeout(\n this._opacityInactive,\n this.props.delayPressOut || 100\n );\n this.props.onPress && this.props.onPress();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function() {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress === 0 ? 0 :\n this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _opacityActive: function() {\n this.setOpacityTo(this.props.activeOpacity);\n },\n\n _opacityInactive: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n var child = onlyChild(this.props.children);\n var childStyle = flattenStyle(child.props.style) || {};\n this.setOpacityTo(\n childStyle.opacity === undefined ? 1 : childStyle.opacity\n );\n },\n\n render: function() {\n return cloneWithProps(onlyChild(this.props.children), {\n ref: CHILD_REF,\n accessible: true,\n testID: this.props.testID,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this.touchableHandleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate,\n });\n },\n});\n\n/**\n * When the scroll view is disabled, this defines how far your touch may move\n * off of the button, before deactivating the button. Once deactivated, try\n * moving it back and you'll see that the button is once again reactivated!\n * Move it back and forth several times while the scroll view is disabled.\n */\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nvar CHILD_REF = keyOf({childRef: null});\n\nmodule.exports = TouchableOpacity;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/POPAnimationMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar POPAnimationOrNull=require('POPAnimation');\nvar React=require('React');\n\nif(!POPAnimationOrNull){\n\n\nmodule.exports = null;}else \n{\n\n\n\nvar POPAnimation=POPAnimationOrNull;\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar POPAnimationMixin={\n\n\n\n\nAnimationTypes:POPAnimation.Types,\nAnimationProperties:POPAnimation.Properties,\n\ngetInitialState:function(){\nthis._popAnimationEnqueuedAnimationTimeouts = [];\nreturn {\n_currentAnimationsByNodeHandle:{}};},\n\n\n\n_ensureBookkeepingSetup:function(nodeHandle){\nif(!this.state._currentAnimationsByNodeHandle[nodeHandle]){\nthis.state._currentAnimationsByNodeHandle[nodeHandle] = [];}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nstartAnimation:function(\nrefKey,\nanim,\ndoneCallback)\n{\nvar animID=0;\nif(typeof anim === 'number'){\nanimID = anim;}else \n{\ninvariant(\nanim instanceof Object && \nanim.type !== undefined && \nanim.property !== undefined,\n'Animation definitions must specify a type of animation and a ' + \n'property to animate.');\n\nanimID = POPAnimation.createAnimation(anim.type,anim);}\n\ninvariant(\nthis.refs[refKey],\n'Invalid refKey ' + refKey + ' for anim:\\n' + JSON.stringify(anim) + \n'\\nvalid refs: ' + JSON.stringify(Object.keys(this.refs)));\n\nvar refNodeHandle=React.findNodeHandle(this.refs[refKey]);\nthis.startAnimationWithNodeHandle(refNodeHandle,animID,doneCallback);},\n\n\n\n\n\n\n\n\nstartAnimationWithNodeHandle:function(\nnodeHandle,\nanimID,\ndoneCallback)\n{var _this=this;\nthis._ensureBookkeepingSetup(nodeHandle);\nvar animations=this.state._currentAnimationsByNodeHandle[nodeHandle];\nvar animIndex=animations.length;\nanimations.push(animID);\nvar cleanupWrapper=function(finished){\nif(!_this.isMounted()){\nreturn;}\n\nanimations[animIndex] = 0;\nvar allDone=true;\nfor(var ii=0;ii < animations.length;ii++) {\nif(animations[ii]){\nallDone = false;\nbreak;}}\n\n\nif(allDone){\n_this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;}\n\ndoneCallback && doneCallback(finished);};\n\n\nvar animationTimeoutHandler=setTimeout(function(){\nPOPAnimation.addAnimation(nodeHandle,animID,cleanupWrapper);},\n1);\nthis._popAnimationEnqueuedAnimationTimeouts.push(animationTimeoutHandler);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nstartAnimations:function(\nanimations,\nonSuccess,\nonFailure)\n{var _this2=this;\nvar numReturned=0;\nvar numFinished=0;\nvar numAnimations=animations.length;\nvar metaCallback=function(finished){\nif(finished){\n++numFinished;}\n\nif(++numReturned === numAnimations){\nonSuccess && onSuccess(numFinished === numAnimations);}};\n\n\nanimations.forEach(function(anim){\nwarning(\nanim.ref != null || anim.nodeHandle != null && \n!anim.ref !== !anim.nodeHandle,\n'Animations must be specified with either ref xor nodeHandle');\n\nif(anim.ref){\n_this2.startAnimation(anim.ref,anim.anim,metaCallback);}else \nif(anim.nodeHandle){\n_this2.startAnimationWithNodeHandle(anim.nodeHandle,anim.anim,metaCallback);}});},\n\n\n\n\n\n\n\n\n\n\n\nstopNodeHandleAnimations:function(nodeHandle){\nif(!this.state._currentAnimationsByNodeHandle[nodeHandle]){\nreturn;}\n\nvar anims=this.state._currentAnimationsByNodeHandle[nodeHandle];\nfor(var i=0;i < anims.length;i++) {\nvar anim=anims[i];\nif(anim){\n\nPOPAnimation.removeAnimation(+nodeHandle,anim);}}\n\n\nthis.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;},\n\n\n\n\n\n\n\nstopAnimations:function(refKey){\ninvariant(this.refs[refKey],'invalid ref');\nthis.stopNodeHandleAnimations(React.findNodeHandle(this.refs[refKey]));},\n\n\n\n\n\n\nstopAllAnimations:function(){\nfor(var nodeHandle in this.state._currentAnimationsByNodeHandle) {\nthis.stopNodeHandleAnimations(nodeHandle);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nanimateToFrame:function(\nrefKey,\nframe,\ntype,\nvelocity,\ndoneCallback)\n{\nvar animFrame={\nx:frame.left + frame.width / 2,\ny:frame.top + frame.height / 2,\nw:frame.width,\nh:frame.height};\n\nvar posAnim=POPAnimation.createAnimation(type,{\nproperty:POPAnimation.Properties.position,\ntoValue:[animFrame.x,animFrame.y],\nvelocity:velocity || [0,0]});\n\nvar sizeAnim=POPAnimation.createAnimation(type,{\nproperty:POPAnimation.Properties.size,\ntoValue:[animFrame.w,animFrame.h]});\n\nthis.startAnimation(refKey,posAnim,doneCallback);\nthis.startAnimation(refKey,sizeAnim);},\n\n\n\ncomponentWillUnmount:function(){\nthis.stopAllAnimations();\nthis._popAnimationEnqueuedAnimationTimeouts.forEach(function(animationTimeoutHandler){\nclearTimeout(animationTimeoutHandler);});\n\nthis._popAnimationEnqueuedAnimationTimeouts = [];}};\n\n\n\nmodule.exports = POPAnimationMixin;}","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule POPAnimationMixin\n * @flow\n */\n'use strict';\n\nvar POPAnimationOrNull = require('POPAnimation');\nvar React = require('React');\n\nif (!POPAnimationOrNull) {\n // POP animation isn't available in the OSS fork - this is a temporary\n // workaround to enable its availability to be determined at runtime.\n module.exports = (null : ?{});\n} else {\n\n// At this point, POPAnimationOrNull is guaranteed to be\n// non-null. Bring it local to preserve type refinement.\nvar POPAnimation = POPAnimationOrNull;\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar POPAnimationMixin = {\n /**\n * Different ways to interpolate between beginning and end states\n * of properties during animation, such as spring, linear, and decay.\n */\n AnimationTypes: POPAnimation.Types,\n AnimationProperties: POPAnimation.Properties,\n\n getInitialState: function(): Object {\n this._popAnimationEnqueuedAnimationTimeouts = [];\n return {\n _currentAnimationsByNodeHandle: {},\n };\n },\n\n _ensureBookkeepingSetup: function(nodeHandle: any) {\n if (!this.state._currentAnimationsByNodeHandle[nodeHandle]) {\n this.state._currentAnimationsByNodeHandle[nodeHandle] = [];\n }\n },\n\n /**\n * Start animating the View with ref `refKey`.\n *\n * @param {key} refKey The key to reference the View to be animated.\n *\n * @param {number|Object} anim Either the identifier returned by\n * POPAnimation.create* or an object defining all the necessary\n * properties of the animation you wish to start (including type, matching\n * an entry in AnimationTypes).\n *\n * @param {func} doneCallback A callback fired when the animation is done, and\n * is passed a `finished` param that indicates whether the animation\n * completely finished, or was interrupted.\n */\n startAnimation: function(\n refKey: string,\n anim: number | {type: number; property: number;},\n doneCallback: (finished: bool) => void\n ) {\n var animID: number = 0;\n if (typeof anim === 'number') {\n animID = anim;\n } else {\n invariant(\n anim instanceof Object &&\n anim.type !== undefined &&\n anim.property !== undefined,\n 'Animation definitions must specify a type of animation and a ' +\n 'property to animate.'\n );\n animID = POPAnimation.createAnimation(anim.type, anim);\n }\n invariant(\n this.refs[refKey],\n 'Invalid refKey ' + refKey + ' for anim:\\n' + JSON.stringify(anim) +\n '\\nvalid refs: ' + JSON.stringify(Object.keys(this.refs))\n );\n var refNodeHandle = React.findNodeHandle(this.refs[refKey]);\n this.startAnimationWithNodeHandle(refNodeHandle, animID, doneCallback);\n },\n\n /**\n * Starts an animation on a native node.\n *\n * @param {NodeHandle} nodeHandle Handle to underlying native node.\n * @see `startAnimation`.\n */\n startAnimationWithNodeHandle: function(\n nodeHandle: any,\n animID: number,\n doneCallback: (finished: bool) => void\n ) {\n this._ensureBookkeepingSetup(nodeHandle);\n var animations = this.state._currentAnimationsByNodeHandle[nodeHandle];\n var animIndex = animations.length;\n animations.push(animID);\n var cleanupWrapper = (finished) => {\n if (!this.isMounted()) {\n return;\n }\n animations[animIndex] = 0; // zero it out so we don't try to stop it\n var allDone = true;\n for (var ii = 0; ii < animations.length; ii++) {\n if (animations[ii]) {\n allDone = false;\n break;\n }\n }\n if (allDone) {\n this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;\n }\n doneCallback && doneCallback(finished);\n };\n // Hack to aviod race condition in POP:\n var animationTimeoutHandler = setTimeout(() => {\n POPAnimation.addAnimation(nodeHandle, animID, cleanupWrapper);\n }, 1);\n this._popAnimationEnqueuedAnimationTimeouts.push(animationTimeoutHandler);\n },\n\n /**\n * Starts multiple animations with one shared callback that is called when all\n * animations complete.\n *\n * @param {Array(Object} animations Array of objects defining all the\n * animations to start, each with shape `{ref|nodeHandle, anim}`.\n * @param {func} onSuccess A callback fired when all animations have returned,\n * and is passed a finished arg that is true if all animations finished\n * completely.\n * @param {func} onFailure Not supported yet.\n */\n startAnimations: function(\n animations: Array,\n onSuccess: (finished: boolean) => void,\n onFailure: () => void\n ) {\n var numReturned = 0;\n var numFinished = 0;\n var numAnimations = animations.length;\n var metaCallback = (finished) => {\n if (finished) {\n ++numFinished;\n }\n if (++numReturned === numAnimations) {\n onSuccess && onSuccess(numFinished === numAnimations);\n }\n };\n animations.forEach((anim) => {\n warning(\n anim.ref != null || anim.nodeHandle != null &&\n !anim.ref !== !anim.nodeHandle,\n 'Animations must be specified with either ref xor nodeHandle'\n );\n if (anim.ref) {\n this.startAnimation(anim.ref, anim.anim, metaCallback);\n } else if (anim.nodeHandle) {\n this.startAnimationWithNodeHandle(anim.nodeHandle, anim.anim, metaCallback);\n }\n });\n },\n\n /**\n * Stop any and all animations operating on the View with native node handle\n * `nodeHandle`.\n *\n * @param {NodeHandle} component The instance to stop animations\n * on. Do not pass a composite component.\n */\n stopNodeHandleAnimations: function(nodeHandle: any) {\n if (!this.state._currentAnimationsByNodeHandle[nodeHandle]) {\n return;\n }\n var anims = this.state._currentAnimationsByNodeHandle[nodeHandle];\n for (var i = 0; i < anims.length; i++) {\n var anim = anims[i];\n if (anim) {\n // Note: Converting the string key to a number `nodeHandle`.\n POPAnimation.removeAnimation(+nodeHandle, anim);\n }\n }\n this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;\n },\n\n /**\n * Stop any and all animations operating on the View with ref `refKey`.\n *\n * @param {key} refKey The key to reference the View to be animated.\n */\n stopAnimations: function(refKey: string) {\n invariant(this.refs[refKey], 'invalid ref');\n this.stopNodeHandleAnimations(React.findNodeHandle(this.refs[refKey]));\n },\n\n /**\n * Stop any and all animations created by this component on itself and\n * subviews.\n */\n stopAllAnimations: function() {\n for (var nodeHandle in this.state._currentAnimationsByNodeHandle) {\n this.stopNodeHandleAnimations(nodeHandle);\n }\n },\n\n /**\n * Animates size and position of a view referenced by `refKey` to a specific\n * frame.\n *\n * @param {key} refKey ref key for view to animate.\n * @param {Object} frame The frame to animate the view to, specified as {left,\n * top, width, height}.\n * @param {const} type What type of interpolation to use, selected from\n * `inperpolationTypes`.\n * @param {Object} event Event encapsulating synthetic and native data that\n * may have triggered this animation. Velocity is extracted from it if\n * possible and applied to the animation.\n * @param {func} doneCallback A callback fired when the animation is done, and\n * is passed a `finished` param that indicates whether the animation\n * completely finished, or was interrupted.\n */\n animateToFrame: function(\n refKey: string,\n frame: {left: number; top: number; width: number; height: number;},\n type: number,\n velocity: number,\n doneCallback: (finished: boolean) => void\n ) {\n var animFrame = { // Animations use a centered coordinate system.\n x: frame.left + frame.width / 2,\n y: frame.top + frame.height / 2,\n w: frame.width,\n h: frame.height\n };\n var posAnim = POPAnimation.createAnimation(type, {\n property: POPAnimation.Properties.position,\n toValue: [animFrame.x, animFrame.y],\n velocity: velocity || [0, 0],\n });\n var sizeAnim = POPAnimation.createAnimation(type, {\n property: POPAnimation.Properties.size,\n toValue: [animFrame.w, animFrame.h]\n });\n this.startAnimation(refKey, posAnim, doneCallback);\n this.startAnimation(refKey, sizeAnim);\n },\n\n // Cleanup any potentially leaked animations.\n componentWillUnmount: function() {\n this.stopAllAnimations();\n this._popAnimationEnqueuedAnimationTimeouts.forEach(animationTimeoutHandler => {\n clearTimeout(animationTimeoutHandler);\n });\n this._popAnimationEnqueuedAnimationTimeouts = [];\n }\n};\n\nmodule.exports = POPAnimationMixin;\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/POPAnimationMixin.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/POPAnimation.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar RCTPOPAnimationManager=require('NativeModules').POPAnimationManager;\nif(!RCTPOPAnimationManager){\n\n\n\n\nmodule.exports = null;}else \n{\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar getObjectValues=require('getObjectValues');\nvar invariant=require('invariant');\nvar merge=require('merge');\n\nvar RCTTypes=RCTPOPAnimationManager.Types;\nvar RCTProperties=RCTPOPAnimationManager.Properties;\n\nvar Properties={\nbounds:RCTProperties.bounds,\nopacity:RCTProperties.opacity,\nposition:RCTProperties.position,\npositionX:RCTProperties.positionX,\npositionY:RCTProperties.positionY,\nzPosition:RCTProperties.zPosition,\nrotation:RCTProperties.rotation,\nrotationX:RCTProperties.rotationX,\nrotationY:RCTProperties.rotationY,\nscaleX:RCTProperties.scaleX,\nscaleXY:RCTProperties.scaleXY,\nscaleY:RCTProperties.scaleY,\nshadowColor:RCTProperties.shadowColor,\nshadowOffset:RCTProperties.shadowOffset,\nshadowOpacity:RCTProperties.shadowOpacity,\nshadowRadius:RCTProperties.shadowRadius,\nsize:RCTProperties.size,\nsubscaleXY:RCTProperties.subscaleXY,\nsubtranslationX:RCTProperties.subtranslationX,\nsubtranslationXY:RCTProperties.subtranslationXY,\nsubtranslationY:RCTProperties.subtranslationY,\nsubtranslationZ:RCTProperties.subtranslationZ,\ntranslationX:RCTProperties.translationX,\ntranslationXY:RCTProperties.translationXY,\ntranslationY:RCTProperties.translationY,\ntranslationZ:RCTProperties.translationZ};\n\n\nvar Types={\ndecay:RCTTypes.decay,\neaseIn:RCTTypes.easeIn,\neaseInEaseOut:RCTTypes.easeInEaseOut,\neaseOut:RCTTypes.easeOut,\nlinear:RCTTypes.linear,\nspring:RCTTypes.spring};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar POPAnimation={\nTypes:Types,\nProperties:Properties,\n\nattributeChecker:createStrictShapeTypeChecker({\ntype:ReactPropTypes.oneOf(getObjectValues(Types)),\nproperty:ReactPropTypes.oneOf(getObjectValues(Properties)),\nfromValue:ReactPropTypes.any,\ntoValue:ReactPropTypes.any,\nduration:ReactPropTypes.any,\nvelocity:ReactPropTypes.any,\ndeceleration:ReactPropTypes.any,\nspringBounciness:ReactPropTypes.any,\ndynamicsFriction:ReactPropTypes.any,\ndynamicsMass:ReactPropTypes.any,\ndynamicsTension:ReactPropTypes.any}),\n\n\nlastUsedTag:0,\nallocateTagForAnimation:function(){\nreturn ++this.lastUsedTag;},\n\n\ncreateAnimation:function(typeName,attrs){\nvar tag=this.allocateTagForAnimation();\n\nif(__DEV__){\nPOPAnimation.attributeChecker(\n{attrs:attrs},\n'attrs',\n'POPAnimation.createAnimation');\n\nPOPAnimation.attributeChecker(\n{attrs:{type:typeName}},\n'attrs',\n'POPAnimation.createAnimation');}\n\n\n\nRCTPOPAnimationManager.createAnimationInternal(tag,typeName,attrs);\nreturn tag;},\n\n\ncreateSpringAnimation:function(attrs){\nreturn this.createAnimation(this.Types.spring,attrs);},\n\n\ncreateDecayAnimation:function(attrs){\nreturn this.createAnimation(this.Types.decay,attrs);},\n\n\ncreateLinearAnimation:function(attrs){\nreturn this.createAnimation(this.Types.linear,attrs);},\n\n\ncreateEaseInAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeIn,attrs);},\n\n\ncreateEaseOutAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeOut,attrs);},\n\n\ncreateEaseInEaseOutAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeInEaseOut,attrs);},\n\n\naddAnimation:function(nodeHandle,anim,callback){\nRCTPOPAnimationManager.addAnimation(nodeHandle,anim,callback);},\n\n\nremoveAnimation:function(nodeHandle,anim){\nRCTPOPAnimationManager.removeAnimation(nodeHandle,anim);}};\n\n\n\n\n\nif(__DEV__){\nvar allProperties=merge(\nRCTPOPAnimationManager.Properties,\nRCTPOPAnimationManager.Properties);\n\nfor(var key in allProperties) {\ninvariant(\nPOPAnimation.Properties[key] === RCTPOPAnimationManager.Properties[key],\n'POPAnimation doesn\\'t copy property ' + key + ' correctly');}\n\n\n\nvar allTypes=merge(\nRCTPOPAnimationManager.Types,\nRCTPOPAnimationManager.Types);\n\nfor(var key in allTypes) {\ninvariant(\nPOPAnimation.Types[key] === RCTPOPAnimationManager.Types[key],\n'POPAnimation doesn\\'t copy type ' + key + ' correctly');}}\n\n\n\n\nmodule.exports = POPAnimation;}","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule POPAnimation\n */\n'use strict';\n\nvar RCTPOPAnimationManager = require('NativeModules').POPAnimationManager;\nif (!RCTPOPAnimationManager) {\n // POP animation isn't available in the OSS fork - this is a temporary\n // workaround to enable its availability to be determined at runtime.\n // For Flow let's pretend like we always export POPAnimation\n // so all our users don't need to do null checks\n module.exports = null;\n} else {\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar getObjectValues = require('getObjectValues');\nvar invariant = require('invariant');\nvar merge = require('merge');\n\nvar RCTTypes = RCTPOPAnimationManager.Types;\nvar RCTProperties = RCTPOPAnimationManager.Properties;\n\nvar Properties = {\n bounds: RCTProperties.bounds,\n opacity: RCTProperties.opacity,\n position: RCTProperties.position,\n positionX: RCTProperties.positionX,\n positionY: RCTProperties.positionY,\n zPosition: RCTProperties.zPosition,\n rotation: RCTProperties.rotation,\n rotationX: RCTProperties.rotationX,\n rotationY: RCTProperties.rotationY,\n scaleX: RCTProperties.scaleX,\n scaleXY: RCTProperties.scaleXY,\n scaleY: RCTProperties.scaleY,\n shadowColor: RCTProperties.shadowColor,\n shadowOffset: RCTProperties.shadowOffset,\n shadowOpacity: RCTProperties.shadowOpacity,\n shadowRadius: RCTProperties.shadowRadius,\n size: RCTProperties.size,\n subscaleXY: RCTProperties.subscaleXY,\n subtranslationX: RCTProperties.subtranslationX,\n subtranslationXY: RCTProperties.subtranslationXY,\n subtranslationY: RCTProperties.subtranslationY,\n subtranslationZ: RCTProperties.subtranslationZ,\n translationX: RCTProperties.translationX,\n translationXY: RCTProperties.translationXY,\n translationY: RCTProperties.translationY,\n translationZ: RCTProperties.translationZ,\n};\n\nvar Types = {\n decay: RCTTypes.decay,\n easeIn: RCTTypes.easeIn,\n easeInEaseOut: RCTTypes.easeInEaseOut,\n easeOut: RCTTypes.easeOut,\n linear: RCTTypes.linear,\n spring: RCTTypes.spring,\n};\n\ntype Attrs = {\n type?: $Enum;\n property?: $Enum;\n fromValue?: any;\n toValue?: any;\n duration?: any;\n velocity?: any;\n deceleration?: any;\n springBounciness?: any;\n dynamicsFriction?: any;\n dynamicsMass?: any;\n dynamicsTension?: any;\n}\n\nvar POPAnimation = {\n Types: Types,\n Properties: Properties,\n\n attributeChecker: createStrictShapeTypeChecker({\n type: ReactPropTypes.oneOf(getObjectValues(Types)),\n property: ReactPropTypes.oneOf(getObjectValues(Properties)),\n fromValue: ReactPropTypes.any,\n toValue: ReactPropTypes.any,\n duration: ReactPropTypes.any,\n velocity: ReactPropTypes.any,\n deceleration: ReactPropTypes.any,\n springBounciness: ReactPropTypes.any,\n dynamicsFriction: ReactPropTypes.any,\n dynamicsMass: ReactPropTypes.any,\n dynamicsTension: ReactPropTypes.any,\n }),\n\n lastUsedTag: 0,\n allocateTagForAnimation: function(): number {\n return ++this.lastUsedTag;\n },\n\n createAnimation: function(typeName: number, attrs: Attrs): number {\n var tag = this.allocateTagForAnimation();\n\n if (__DEV__) {\n POPAnimation.attributeChecker(\n {attrs},\n 'attrs',\n 'POPAnimation.createAnimation'\n );\n POPAnimation.attributeChecker(\n {attrs: {type: typeName}},\n 'attrs',\n 'POPAnimation.createAnimation'\n );\n }\n\n RCTPOPAnimationManager.createAnimationInternal(tag, typeName, attrs);\n return tag;\n },\n\n createSpringAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.spring, attrs);\n },\n\n createDecayAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.decay, attrs);\n },\n\n createLinearAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.linear, attrs);\n },\n\n createEaseInAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeIn, attrs);\n },\n\n createEaseOutAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeOut, attrs);\n },\n\n createEaseInEaseOutAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeInEaseOut, attrs);\n },\n\n addAnimation: function(nodeHandle: any, anim: number, callback: Function) {\n RCTPOPAnimationManager.addAnimation(nodeHandle, anim, callback);\n },\n\n removeAnimation: function(nodeHandle: any, anim: number) {\n RCTPOPAnimationManager.removeAnimation(nodeHandle, anim);\n },\n};\n\n// Make sure that we correctly propagate RCTPOPAnimationManager constants\n// to POPAnimation\nif (__DEV__) {\n var allProperties = merge(\n RCTPOPAnimationManager.Properties,\n RCTPOPAnimationManager.Properties\n );\n for (var key in allProperties) {\n invariant(\n POPAnimation.Properties[key] === RCTPOPAnimationManager.Properties[key],\n 'POPAnimation doesn\\'t copy property ' + key + ' correctly'\n );\n }\n\n var allTypes = merge(\n RCTPOPAnimationManager.Types,\n RCTPOPAnimationManager.Types\n );\n for (var key in allTypes) {\n invariant(\n POPAnimation.Types[key] === RCTPOPAnimationManager.Types[key],\n 'POPAnimation doesn\\'t copy type ' + key + ' correctly'\n );\n }\n}\n\nmodule.exports = POPAnimation;\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/POPAnimation.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/getObjectValues.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetObjectValues(obj){\nvar values=[];\nfor(var key in obj) {\nvalues.push(obj[key]);}\n\nreturn values;}\n\n\nmodule.exports = getObjectValues;","sourceCode":"/**\n * @generated SignedSource<>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule getObjectValues\n * @typechecks\n */\n\n/**\n * Retrieve an object's values as an array.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array} The object's values.\n */\nfunction getObjectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nmodule.exports = getObjectValues;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/getObjectValues.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ActivityIndicatorIOS=require('ActivityIndicatorIOS');\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar PropTypes=React.PropTypes;\nvar RCTWebViewManager=require('NativeModules').WebViewManager;\n\nvar BGWASH='rgba(255,255,255,0.8)';\nvar RCT_WEBVIEW_REF='webview';\n\nvar WebViewState=keyMirror({\nIDLE:null,\nLOADING:null,\nERROR:null});\n\n\nvar NavigationType={\nclick:RCTWebViewManager.NavigationType.LinkClicked,\nformsubmit:RCTWebViewManager.NavigationType.FormSubmitted,\nbackforward:RCTWebViewManager.NavigationType.BackForward,\nreload:RCTWebViewManager.NavigationType.Reload,\nformresubmit:RCTWebViewManager.NavigationType.FormResubmitted,\nother:RCTWebViewManager.NavigationType.Other};\n\n\nvar JSNavigationScheme=RCTWebViewManager.JSNavigationScheme;\n\n\n\n\n\n\n\n\n\nvar defaultRenderLoading=function(){return (\nReact.createElement(View,{style:styles.loadingView},\nReact.createElement(ActivityIndicatorIOS,null)));};\n\n\nvar defaultRenderError=function(errorDomain,errorCode,errorDesc){return (\nReact.createElement(View,{style:styles.errorContainer},\nReact.createElement(Text,{style:styles.errorTextTitle},'Error loading page'),\n\n\nReact.createElement(Text,{style:styles.errorText},\n'Domain: ' + errorDomain),\n\nReact.createElement(Text,{style:styles.errorText},\n'Error Code: ' + errorCode),\n\nReact.createElement(Text,{style:styles.errorText},\n'Description: ' + errorDesc)));};\n\n\n\n\nvar WebView=React.createClass({displayName:'WebView',\nstatics:{\nJSNavigationScheme:JSNavigationScheme,\nNavigationType:NavigationType},\n\n\npropTypes:{\nurl:PropTypes.string,\nhtml:PropTypes.string,\nrenderError:PropTypes.func,\nrenderLoading:PropTypes.func,\nbounces:PropTypes.bool,\nscrollEnabled:PropTypes.bool,\nautomaticallyAdjustContentInsets:PropTypes.bool,\ncontentInset:EdgeInsetsPropType,\nonNavigationStateChange:PropTypes.func,\nstartInLoadingState:PropTypes.bool,\nstyle:View.propTypes.style,\n\n\n\njavaScriptEnabledAndroid:PropTypes.bool,\n\n\n\ninjectedJavaScript:PropTypes.string,\n\n\n\n\n\nscalesPageToFit:PropTypes.bool},\n\n\ngetInitialState:function(){\nreturn {\nviewState:WebViewState.IDLE,\nlastErrorEvent:null,\nstartInLoadingState:true};},\n\n\n\ncomponentWillMount:function(){\nif(this.props.startInLoadingState){\nthis.setState({viewState:WebViewState.LOADING});}},\n\n\n\nrender:function(){\nvar otherView=null;\n\nif(this.state.viewState === WebViewState.LOADING){\notherView = (this.props.renderLoading || defaultRenderLoading)();}else \nif(this.state.viewState === WebViewState.ERROR){\nvar errorEvent=this.state.lastErrorEvent;\ninvariant(\nerrorEvent != null,\n'lastErrorEvent expected to be non-null');\n\notherView = (this.props.renderError || defaultRenderError)(\nerrorEvent.domain,\nerrorEvent.code,\nerrorEvent.description);}else \n\nif(this.state.viewState !== WebViewState.IDLE){\nconsole.error(\n'RCTWebView invalid state encountered: ' + this.state.loading);}\n\n\n\nvar webViewStyles=[styles.container,styles.webView,this.props.style];\nif(this.state.viewState === WebViewState.LOADING || \nthis.state.viewState === WebViewState.ERROR){\n\nwebViewStyles.push(styles.hidden);}\n\n\nvar webView=\nReact.createElement(RCTWebView,{\nref:RCT_WEBVIEW_REF,\nkey:'webViewKey',\nstyle:webViewStyles,\nurl:this.props.url,\nhtml:this.props.html,\ninjectedJavaScript:this.props.injectedJavaScript,\nbounces:this.props.bounces,\nscrollEnabled:this.props.scrollEnabled,\ncontentInset:this.props.contentInset,\nautomaticallyAdjustContentInsets:this.props.automaticallyAdjustContentInsets,\nonLoadingStart:this.onLoadingStart,\nonLoadingFinish:this.onLoadingFinish,\nonLoadingError:this.onLoadingError,\nscalesPageToFit:this.props.scalesPageToFit});\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\nwebView,\notherView));},\n\n\n\n\ngoForward:function(){\nRCTWebViewManager.goForward(this.getWebViewHandle());},\n\n\ngoBack:function(){\nRCTWebViewManager.goBack(this.getWebViewHandle());},\n\n\nreload:function(){\nRCTWebViewManager.reload(this.getWebViewHandle());},\n\n\n\n\n\n\nupdateNavigationState:function(event){\nif(this.props.onNavigationStateChange){\nthis.props.onNavigationStateChange(event.nativeEvent);}},\n\n\n\ngetWebViewHandle:function(){\nreturn React.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);},\n\n\nonLoadingStart:function(event){\nthis.updateNavigationState(event);},\n\n\nonLoadingError:function(event){\nevent.persist();\nconsole.error('Encountered an error loading page',event.nativeEvent);\n\nthis.setState({\nlastErrorEvent:event.nativeEvent,\nviewState:WebViewState.ERROR});},\n\n\n\nonLoadingFinish:function(event){\nthis.setState({\nviewState:WebViewState.IDLE});\n\nthis.updateNavigationState(event);}});\n\n\n\nvar RCTWebView=requireNativeComponent('RCTWebView',WebView);\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1},\n\nerrorContainer:{\nflex:1,\njustifyContent:'center',\nalignItems:'center',\nbackgroundColor:BGWASH},\n\nerrorText:{\nfontSize:14,\ntextAlign:'center',\nmarginBottom:2},\n\nerrorTextTitle:{\nfontSize:15,\nfontWeight:'500',\nmarginBottom:10},\n\nhidden:{\nheight:0,\nflex:0},\n\nloadingView:{\nbackgroundColor:BGWASH,\nflex:1,\njustifyContent:'center',\nalignItems:'center'},\n\nwebView:{\nbackgroundColor:'#ffffff'}});\n\n\n\nmodule.exports = WebView;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WebView\n * @flow\n */\n'use strict';\n\nvar ActivityIndicatorIOS = require('ActivityIndicatorIOS');\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar PropTypes = React.PropTypes;\nvar RCTWebViewManager = require('NativeModules').WebViewManager;\n\nvar BGWASH = 'rgba(255,255,255,0.8)';\nvar RCT_WEBVIEW_REF = 'webview';\n\nvar WebViewState = keyMirror({\n IDLE: null,\n LOADING: null,\n ERROR: null,\n});\n\nvar NavigationType = {\n click: RCTWebViewManager.NavigationType.LinkClicked,\n formsubmit: RCTWebViewManager.NavigationType.FormSubmitted,\n backforward: RCTWebViewManager.NavigationType.BackForward,\n reload: RCTWebViewManager.NavigationType.Reload,\n formresubmit: RCTWebViewManager.NavigationType.FormResubmitted,\n other: RCTWebViewManager.NavigationType.Other,\n};\n\nvar JSNavigationScheme = RCTWebViewManager.JSNavigationScheme;\n\ntype ErrorEvent = {\n domain: any;\n code: any;\n description: any;\n}\n\ntype Event = Object;\n\nvar defaultRenderLoading = () => (\n \n \n \n);\nvar defaultRenderError = (errorDomain, errorCode, errorDesc) => (\n \n \n Error loading page\n \n \n {'Domain: ' + errorDomain}\n \n \n {'Error Code: ' + errorCode}\n \n \n {'Description: ' + errorDesc}\n \n \n);\n\nvar WebView = React.createClass({\n statics: {\n JSNavigationScheme: JSNavigationScheme,\n NavigationType: NavigationType,\n },\n\n propTypes: {\n url: PropTypes.string,\n html: PropTypes.string,\n renderError: PropTypes.func, // view to show if there's an error\n renderLoading: PropTypes.func, // loading indicator to show\n bounces: PropTypes.bool,\n scrollEnabled: PropTypes.bool,\n automaticallyAdjustContentInsets: PropTypes.bool,\n contentInset: EdgeInsetsPropType,\n onNavigationStateChange: PropTypes.func,\n startInLoadingState: PropTypes.bool, // force WebView to show loadingView on first load\n style: View.propTypes.style,\n /**\n * Used for android only, JS is enabled by default for WebView on iOS\n */\n javaScriptEnabledAndroid: PropTypes.bool,\n /**\n * Sets the JS to be injected when the webpage loads.\n */\n injectedJavaScript: PropTypes.string,\n\n /**\n * Used for iOS only, sets whether the webpage scales to fit the view and the\n * user can change the scale\n */\n scalesPageToFit: PropTypes.bool,\n },\n\n getInitialState: function() {\n return {\n viewState: WebViewState.IDLE,\n lastErrorEvent: (null: ?ErrorEvent),\n startInLoadingState: true,\n };\n },\n\n componentWillMount: function() {\n if (this.props.startInLoadingState) {\n this.setState({viewState: WebViewState.LOADING});\n }\n },\n\n render: function() {\n var otherView = null;\n\n if (this.state.viewState === WebViewState.LOADING) {\n otherView = (this.props.renderLoading || defaultRenderLoading)();\n } else if (this.state.viewState === WebViewState.ERROR) {\n var errorEvent = this.state.lastErrorEvent;\n invariant(\n errorEvent != null,\n 'lastErrorEvent expected to be non-null'\n );\n otherView = (this.props.renderError || defaultRenderError)(\n errorEvent.domain,\n errorEvent.code,\n errorEvent.description\n );\n } else if (this.state.viewState !== WebViewState.IDLE) {\n console.error(\n 'RCTWebView invalid state encountered: ' + this.state.loading\n );\n }\n\n var webViewStyles = [styles.container, styles.webView, this.props.style];\n if (this.state.viewState === WebViewState.LOADING ||\n this.state.viewState === WebViewState.ERROR) {\n // if we're in either LOADING or ERROR states, don't show the webView\n webViewStyles.push(styles.hidden);\n }\n\n var webView =\n ;\n\n return (\n \n {webView}\n {otherView}\n \n );\n },\n\n goForward: function() {\n RCTWebViewManager.goForward(this.getWebViewHandle());\n },\n\n goBack: function() {\n RCTWebViewManager.goBack(this.getWebViewHandle());\n },\n\n reload: function() {\n RCTWebViewManager.reload(this.getWebViewHandle());\n },\n\n /**\n * We return an event with a bunch of fields including:\n * url, title, loading, canGoBack, canGoForward\n */\n updateNavigationState: function(event: Event) {\n if (this.props.onNavigationStateChange) {\n this.props.onNavigationStateChange(event.nativeEvent);\n }\n },\n\n getWebViewHandle: function(): any {\n return React.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);\n },\n\n onLoadingStart: function(event: Event) {\n this.updateNavigationState(event);\n },\n\n onLoadingError: function(event: Event) {\n event.persist(); // persist this event because we need to store it\n console.error('Encountered an error loading page', event.nativeEvent);\n\n this.setState({\n lastErrorEvent: event.nativeEvent,\n viewState: WebViewState.ERROR\n });\n },\n\n onLoadingFinish: function(event: Event) {\n this.setState({\n viewState: WebViewState.IDLE,\n });\n this.updateNavigationState(event);\n },\n});\n\nvar RCTWebView = requireNativeComponent('RCTWebView', WebView);\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n errorContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: BGWASH,\n },\n errorText: {\n fontSize: 14,\n textAlign: 'center',\n marginBottom: 2,\n },\n errorTextTitle: {\n fontSize: 15,\n fontWeight: '500',\n marginBottom: 10,\n },\n hidden: {\n height: 0,\n flex: 0, // disable 'flex:1' when hiding a View\n },\n loadingView: {\n backgroundColor: BGWASH,\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n webView: {\n backgroundColor: '#ffffff',\n }\n});\n\nmodule.exports = WebView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTActionSheetManager=require('NativeModules').ActionSheetManager;\n\nvar invariant=require('invariant');\n\nvar ActionSheetIOS={\nshowActionSheetWithOptions:function(options,callback){\ninvariant(\ntypeof options === 'object' && options !== null,\n'Options must a valid object');\n\ninvariant(\ntypeof callback === 'function',\n'Must provide a valid callback');\n\nRCTActionSheetManager.showActionSheetWithOptions(\noptions,\nfunction(){},\ncallback);},\n\n\n\nshowShareActionSheetWithOptions:function(\noptions,\nfailureCallback,\nsuccessCallback)\n{\ninvariant(\ntypeof options === 'object' && options !== null,\n'Options must a valid object');\n\ninvariant(\ntypeof failureCallback === 'function',\n'Must provide a valid failureCallback');\n\ninvariant(\ntypeof successCallback === 'function',\n'Must provide a valid successCallback');\n\nRCTActionSheetManager.showShareActionSheetWithOptions(\noptions,\nfailureCallback,\nsuccessCallback);}};\n\n\n\n\nmodule.exports = ActionSheetIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ActionSheetIOS\n * @flow\n */\n'use strict';\n\nvar RCTActionSheetManager = require('NativeModules').ActionSheetManager;\n\nvar invariant = require('invariant');\n\nvar ActionSheetIOS = {\n showActionSheetWithOptions(options: Object, callback: Function) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must a valid object'\n );\n invariant(\n typeof callback === 'function',\n 'Must provide a valid callback'\n );\n RCTActionSheetManager.showActionSheetWithOptions(\n options,\n () => {}, // RKActionSheet compatibility hack\n callback\n );\n },\n\n showShareActionSheetWithOptions(\n options: Object,\n failureCallback: Function,\n successCallback: Function\n ) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must a valid object'\n );\n invariant(\n typeof failureCallback === 'function',\n 'Must provide a valid failureCallback'\n );\n invariant(\n typeof successCallback === 'function',\n 'Must provide a valid successCallback'\n );\n RCTActionSheetManager.showShareActionSheetWithOptions(\n options,\n failureCallback,\n successCallback\n );\n }\n};\n\nmodule.exports = ActionSheetIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AdSupport/AdSupportIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar AdSupport=require('NativeModules').AdSupport;\n\nmodule.exports = {\ngetAdvertisingId:function(onSuccess,onFailure){\nAdSupport.getAdvertisingId(onSuccess,onFailure);},\n\n\ngetAdvertisingTrackingEnabled:function(onSuccess,onFailure){\nAdSupport.getAdvertisingTrackingEnabled(onSuccess,onFailure);}};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AdSupportIOS\n * @flow\n */\n'use strict';\n\nvar AdSupport = require('NativeModules').AdSupport;\n\nmodule.exports = {\n getAdvertisingId: function(onSuccess: Function, onFailure: Function) {\n AdSupport.getAdvertisingId(onSuccess, onFailure);\n },\n\n getAdvertisingTrackingEnabled: function(onSuccess: Function, onFailure: Function) {\n AdSupport.getAdvertisingTrackingEnabled(onSuccess, onFailure);\n },\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AdSupport/AdSupportIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/AlertIOS.js":{"data":{"code":"'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');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTAlertManager=require('NativeModules').AlertManager;\nvar invariant=require('invariant');\n\nvar DEFAULT_BUTTON_TEXT='OK';\nvar DEFAULT_BUTTON={\ntext:DEFAULT_BUTTON_TEXT,\nonPress:null};var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nAlertIOS=(function(){function AlertIOS(){_classCallCheck(this,AlertIOS);}_createClass(AlertIOS,null,[{key:'alert',value:\nfunction alert(\ntitle,\nmessage,\nbuttons,\n\n\n\ntype)\n{\nvar callbacks=[];\nvar buttonsSpec=[];\ntitle = title || '';\nmessage = message || '';\nbuttons = buttons || [DEFAULT_BUTTON];\ntype = type || '';\n\nbuttons.forEach(function(btn,index){\ncallbacks[index] = btn.onPress;\nvar btnDef={};\nbtnDef[index] = btn.text || DEFAULT_BUTTON_TEXT;\nbuttonsSpec.push(btnDef);});\n\nRCTAlertManager.alertWithArgs({\ntitle:title,\nmessage:message,\nbuttons:buttonsSpec,\ntype:type},\nfunction(id,value){\nvar cb=callbacks[id];\ncb && cb(value);});}},{key:'prompt',value:\n\n\n\nfunction prompt(\ntitle,\nvalue,\nbuttons,\n\n\n\ncallback)\n{\nif(arguments.length === 2){\nif(typeof value === 'object'){\nbuttons = value;\nvalue = undefined;}else \nif(typeof value === 'function'){\ncallback = value;\nvalue = undefined;}}else \n\nif(arguments.length === 3 && typeof buttons === 'function'){\ncallback = buttons;\nbuttons = undefined;}\n\n\ninvariant(\n!(callback && buttons) && (callback || buttons),\n'Must provide either a button list or a callback, but not both');\n\n\nif(!buttons){\nbuttons = [{\ntext:'Cancel'},\n{\ntext:'OK',\nonPress:callback}];}\n\n\nthis.alert(title,value,buttons,'plain-text');}}]);return AlertIOS;})();\n\n\n\nmodule.exports = AlertIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AlertIOS\n * @flow\n */\n'use strict';\n\nvar RCTAlertManager = require('NativeModules').AlertManager;\nvar invariant = require('invariant');\n\nvar DEFAULT_BUTTON_TEXT = 'OK';\nvar DEFAULT_BUTTON = {\n text: DEFAULT_BUTTON_TEXT,\n onPress: null,\n};\n\n/**\n * Launches an alert dialog with the specified title and message.\n *\n * Optionally provide a list of buttons. Tapping any button will fire the\n * respective onPress callback and dismiss the alert. By default, the only\n * button will be an 'OK' button\n *\n * The last button in the list will be considered the 'Primary' button and\n * it will appear bold.\n *\n * ```\n * AlertIOS.alert(\n * 'Foo Title',\n * 'My Alert Msg',\n * [\n * {text: 'Foo', onPress: () => console.log('Foo Pressed!')},\n * {text: 'Bar', onPress: () => console.log('Bar Pressed!')},\n * ]\n * )\n * ```\n */\n\nclass AlertIOS {\n static alert(\n title: ?string,\n message?: ?string,\n buttons?: Array<{\n text: ?string;\n onPress?: ?Function;\n }>,\n type?: ?string\n ): void {\n var callbacks = [];\n var buttonsSpec = [];\n title = title || '';\n message = message || '';\n buttons = buttons || [DEFAULT_BUTTON];\n type = type || '';\n\n buttons.forEach((btn, index) => {\n callbacks[index] = btn.onPress;\n var btnDef = {};\n btnDef[index] = btn.text || DEFAULT_BUTTON_TEXT;\n buttonsSpec.push(btnDef);\n });\n RCTAlertManager.alertWithArgs({\n title,\n message,\n buttons: buttonsSpec,\n type,\n }, (id, value) => {\n var cb = callbacks[id];\n cb && cb(value);\n });\n }\n\n static prompt(\n title: string,\n value?: string,\n buttons?: Array<{\n text: ?string;\n onPress?: ?Function;\n }>,\n callback?: ?Function\n ): void {\n if (arguments.length === 2) {\n if (typeof value === 'object') {\n buttons = value;\n value = undefined;\n } else if (typeof value === 'function') {\n callback = value;\n value = undefined;\n }\n } else if (arguments.length === 3 && typeof buttons === 'function') {\n callback = buttons;\n buttons = undefined;\n }\n\n invariant(\n !(callback && buttons) && (callback || buttons),\n 'Must provide either a button list or a callback, but not both'\n );\n\n if (!buttons) {\n buttons = [{\n text: 'Cancel',\n }, {\n text: 'OK',\n onPress: callback\n }];\n }\n this.alert(title, value, buttons, 'plain-text');\n }\n}\n\nmodule.exports = AlertIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/AlertIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Animated.js":{"data":{"code":"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 _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};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 _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;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n'use strict';\n\nvar Easing=require('Easing');\nvar Image=require('Image');\nvar InteractionManager=require('InteractionManager');\nvar Interpolation=require('Interpolation');\nvar React=require('React');\nvar Set=require('Set');\nvar Text=require('Text');\nvar View=require('View');\nvar invariant=require('invariant');\n\nvar flattenStyle=require('flattenStyle');\nvar rebound=require('rebound');\nvar requestAnimationFrame=require('requestAnimationFrame');var \n\n\n\n\n\n\n\n\nAnimated=(function(){function Animated(){_classCallCheck(this,Animated);}_createClass(Animated,[{key:'attach',value:\nfunction attach(){}},{key:'detach',value:\nfunction detach(){}},{key:'__getValue',value:\nfunction __getValue(){}},{key:'getAnimatedValue',value:\nfunction getAnimatedValue(){return this.__getValue();}},{key:'addChild',value:\nfunction addChild(child){}},{key:'removeChild',value:\nfunction removeChild(child){}},{key:'getChildren',value:\nfunction getChildren(){return [];}}]);return Animated;})();var \n\n\n\n\n\nAnimation=(function(){function Animation(){_classCallCheck(this,Animation);}_createClass(Animation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation)\n{}},{key:'stop',value:\nfunction stop(){}},{key:'__debouncedOnEnd',value:\n\nfunction __debouncedOnEnd(result){\nvar onEnd=this.__onEnd;\nthis.__onEnd = null;\nonEnd && onEnd(result);}}]);return Animation;})();var \n\n\n\nAnimatedWithChildren=(function(_Animated){_inherits(AnimatedWithChildren,_Animated);\n\n\nfunction AnimatedWithChildren(){_classCallCheck(this,AnimatedWithChildren);\n_get(Object.getPrototypeOf(AnimatedWithChildren.prototype),'constructor',this).call(this);\nthis._children = [];}_createClass(AnimatedWithChildren,[{key:'addChild',value:\n\n\nfunction addChild(child){\nif(this._children.length === 0){\nthis.attach();}\n\nthis._children.push(child);}},{key:'removeChild',value:\n\n\nfunction removeChild(child){\nvar index=this._children.indexOf(child);\nif(index === -1){\nconsole.warn('Trying to remove a child that doesn\\'t exist');\nreturn;}\n\nthis._children.splice(index,1);\nif(this._children.length === 0){\nthis.detach();}}},{key:'getChildren',value:\n\n\n\nfunction getChildren(){\nreturn this._children;}}]);return AnimatedWithChildren;})(Animated);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _flush(rootNode){\nvar animatedStyles=new Set();\nfunction findAnimatedStyles(node){\nif(typeof node.update === 'function'){\nanimatedStyles.add(node);}else \n{\nnode.getChildren().forEach(findAnimatedStyles);}}\n\n\nfindAnimatedStyles(rootNode);\nanimatedStyles.forEach(function(animatedStyle){return animatedStyle.update();});}\n\n\n\n\n\n\n\n\n\nvar easeInOut=Easing.inOut(Easing.ease);var \n\nTimingAnimation=(function(_Animation){_inherits(TimingAnimation,_Animation);\n\n\n\n\n\n\n\n\n\n\nfunction TimingAnimation(\nconfig)\n{_classCallCheck(this,TimingAnimation);\n_get(Object.getPrototypeOf(TimingAnimation.prototype),'constructor',this).call(this);\nthis._toValue = config.toValue;\nthis._easing = config.easing || easeInOut;\nthis._duration = config.duration !== undefined?config.duration:500;\nthis._delay = config.delay || 0;}_createClass(TimingAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd)\n{var _this=this;\nthis.__active = true;\nthis._fromValue = fromValue;\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\n\nvar start=function(){\nif(_this._duration === 0){\n_this._onUpdate(_this._toValue);\n_this.__debouncedOnEnd({finished:true});}else \n{\n_this._startTime = Date.now();\n_this._animationFrame = requestAnimationFrame(_this.onUpdate.bind(_this));}};\n\n\nif(this._delay){\nthis._timeout = setTimeout(start,this._delay);}else \n{\nstart();}}},{key:'onUpdate',value:\n\n\n\nfunction onUpdate(){\nvar now=Date.now();\nif(now >= this._startTime + this._duration){\nif(this._duration === 0){\nthis._onUpdate(this._toValue);}else \n{\nthis._onUpdate(\nthis._fromValue + this._easing(1) * (this._toValue - this._fromValue));}\n\n\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\n\nthis._onUpdate(\nthis._fromValue + \nthis._easing((now - this._startTime) / this._duration) * (\nthis._toValue - this._fromValue));\n\nif(this.__active){\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}}},{key:'stop',value:\n\n\n\nfunction stop(){\nthis.__active = false;\nclearTimeout(this._timeout);\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return TimingAnimation;})(Animation);var \n\n\n\n\n\n\n\n\n\n\n\n\n\nDecayAnimation=(function(_Animation2){_inherits(DecayAnimation,_Animation2);\n\n\n\n\n\n\n\n\nfunction DecayAnimation(\nconfig)\n{_classCallCheck(this,DecayAnimation);\n_get(Object.getPrototypeOf(DecayAnimation.prototype),'constructor',this).call(this);\nthis._deceleration = config.deceleration || 0.998;\nthis._velocity = config.velocity;}_createClass(DecayAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd)\n{\nthis.__active = true;\nthis._lastValue = fromValue;\nthis._fromValue = fromValue;\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\nthis._startTime = Date.now();\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}},{key:'onUpdate',value:\n\n\nfunction onUpdate(){\nvar now=Date.now();\n\nvar value=this._fromValue + \nthis._velocity / (1 - this._deceleration) * (\n1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\nthis._onUpdate(value);\n\nif(Math.abs(this._lastValue - value) < 0.1){\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\n\nthis._lastValue = value;\nif(this.__active){\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}}},{key:'stop',value:\n\n\n\nfunction stop(){\nthis.__active = false;\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return DecayAnimation;})(Animation);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction withDefault(value,defaultValue){\nif(value === undefined || value === null){\nreturn defaultValue;}\n\nreturn value;}var \n\n\nSpringAnimation=(function(_Animation3){_inherits(SpringAnimation,_Animation3);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SpringAnimation(\nconfig)\n{_classCallCheck(this,SpringAnimation);\n_get(Object.getPrototypeOf(SpringAnimation.prototype),'constructor',this).call(this);\n\nthis._overshootClamping = withDefault(config.overshootClamping,false);\nthis._restDisplacementThreshold = withDefault(config.restDisplacementThreshold,0.001);\nthis._restSpeedThreshold = withDefault(config.restSpeedThreshold,0.001);\nthis._initialVelocity = config.velocity;\nthis._lastVelocity = withDefault(config.velocity,0);\nthis._toValue = config.toValue;\n\nvar springConfig;\nif(config.bounciness !== undefined || config.speed !== undefined){\ninvariant(\nconfig.tension === undefined && config.friction === undefined,\n'You can only define bounciness/speed or tension/friction but not both');\n\nspringConfig = rebound.SpringConfig.fromBouncinessAndSpeed(\nwithDefault(config.bounciness,8),\nwithDefault(config.speed,12));}else \n\n{\nspringConfig = rebound.SpringConfig.fromOrigamiTensionAndFriction(\nwithDefault(config.tension,40),\nwithDefault(config.friction,7));}\n\n\nthis._tension = springConfig.tension;\nthis._friction = springConfig.friction;}_createClass(SpringAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation)\n{\nthis.__active = true;\nthis._startPosition = fromValue;\nthis._lastPosition = this._startPosition;\n\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\nthis._lastTime = Date.now();\n\nif(previousAnimation instanceof SpringAnimation){\nvar internalState=previousAnimation.getInternalState();\nthis._lastPosition = internalState.lastPosition;\nthis._lastVelocity = internalState.lastVelocity;\nthis._lastTime = internalState.lastTime;}\n\nif(this._initialVelocity !== undefined && \nthis._initialVelocity !== null){\nthis._lastVelocity = this._initialVelocity;}\n\nthis.onUpdate();}},{key:'getInternalState',value:\n\n\nfunction getInternalState(){\nreturn {\nlastPosition:this._lastPosition,\nlastVelocity:this._lastVelocity,\nlastTime:this._lastTime};}},{key:'onUpdate',value:\n\n\n\nfunction onUpdate(){\nvar position=this._lastPosition;\nvar velocity=this._lastVelocity;\n\nvar tempPosition=this._lastPosition;\nvar tempVelocity=this._lastVelocity;\n\n\n\n\n\nvar MAX_STEPS=64;\nvar now=Date.now();\nif(now > this._lastTime + MAX_STEPS){\nnow = this._lastTime + MAX_STEPS;}\n\n\n\n\n\nvar TIMESTEP_MSEC=1;\nvar numSteps=Math.floor((now - this._lastTime) / TIMESTEP_MSEC);\n\nfor(var i=0;i < numSteps;++i) {\n\nvar step=TIMESTEP_MSEC / 1000;\n\n\n\nvar aVelocity=velocity;\nvar aAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\nvar tempPosition=position + aVelocity * step / 2;\nvar tempVelocity=velocity + aAcceleration * step / 2;\n\nvar bVelocity=tempVelocity;\nvar bAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + bVelocity * step / 2;\ntempVelocity = velocity + bAcceleration * step / 2;\n\nvar cVelocity=tempVelocity;\nvar cAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + cVelocity * step / 2;\ntempVelocity = velocity + cAcceleration * step / 2;\n\nvar dVelocity=tempVelocity;\nvar dAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + cVelocity * step / 2;\ntempVelocity = velocity + cAcceleration * step / 2;\n\nvar dxdt=(aVelocity + 2 * (bVelocity + cVelocity) + dVelocity) / 6;\nvar dvdt=(aAcceleration + 2 * (bAcceleration + cAcceleration) + dAcceleration) / 6;\n\nposition += dxdt * step;\nvelocity += dvdt * step;}\n\n\nthis._lastTime = now;\nthis._lastPosition = position;\nthis._lastVelocity = velocity;\n\nthis._onUpdate(position);\nif(!this.__active){\nreturn;}\n\n\n\nvar isOvershooting=false;\nif(this._overshootClamping && this._tension !== 0){\nif(this._startPosition < this._toValue){\nisOvershooting = position > this._toValue;}else \n{\nisOvershooting = position < this._toValue;}}\n\n\nvar isVelocity=Math.abs(velocity) <= this._restSpeedThreshold;\nvar isDisplacement=true;\nif(this._tension !== 0){\nisDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold;}\n\nif(isOvershooting || isVelocity && isDisplacement){\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}},{key:'stop',value:\n\n\nfunction stop(){\nthis.__active = false;\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return SpringAnimation;})(Animation);\n\n\n\n\n\nvar _uniqueId=1;var \n\nAnimatedValue=(function(_AnimatedWithChildren){_inherits(AnimatedValue,_AnimatedWithChildren);\n\n\n\n\n\n\nfunction AnimatedValue(value){_classCallCheck(this,AnimatedValue);\n_get(Object.getPrototypeOf(AnimatedValue.prototype),'constructor',this).call(this);\nthis._value = value;\nthis._offset = 0;\nthis._animation = null;\nthis._listeners = {};}_createClass(AnimatedValue,[{key:'detach',value:\n\n\nfunction detach(){\nthis.stopAnimation();}},{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._value + this._offset;}},{key:'setValue',value:\n\n\nfunction setValue(value){\nif(this._animation){\nthis._animation.stop();\nthis._animation = null;}\n\nthis._updateValue(value);}},{key:'setOffset',value:\n\n\nfunction setOffset(offset){\nthis._offset = offset;}},{key:'flattenOffset',value:\n\n\nfunction flattenOffset(){\nthis._value += this._offset;\nthis._offset = 0;}},{key:'addListener',value:\n\n\nfunction addListener(callback){\nvar id=String(_uniqueId++);\nthis._listeners[id] = callback;\nreturn id;}},{key:'removeListener',value:\n\n\nfunction removeListener(id){\ndelete this._listeners[id];}},{key:'removeAllListeners',value:\n\n\nfunction removeAllListeners(){\nthis._listeners = {};}},{key:'animate',value:\n\n\nfunction animate(animation,callback){var _this2=this;\nvar handle=InteractionManager.createInteractionHandle();\nvar previousAnimation=this._animation;\nthis._animation && this._animation.stop();\nthis._animation = animation;\nanimation.start(\nthis._value,\nfunction(value){\n_this2._updateValue(value);},\n\nfunction(result){\n_this2._animation = null;\nInteractionManager.clearInteractionHandle(handle);\ncallback && callback(result);},\n\npreviousAnimation);}},{key:'stopAnimation',value:\n\n\n\nfunction stopAnimation(callback){\nthis.stopTracking();\nthis._animation && this._animation.stop();\nthis._animation = null;\ncallback && callback(this.__getValue());}},{key:'stopTracking',value:\n\n\nfunction stopTracking(){\nthis._tracking && this._tracking.detach();\nthis._tracking = null;}},{key:'track',value:\n\n\nfunction track(tracking){\nthis.stopTracking();\nthis._tracking = tracking;}},{key:'interpolate',value:\n\n\nfunction interpolate(config){\nreturn new AnimatedInterpolation(this,Interpolation.create(config));}},{key:'_updateValue',value:\n\n\nfunction _updateValue(value){\nthis._value = value;\n_flush(this);\nfor(var key in this._listeners) {\nthis._listeners[key]({value:this.__getValue()});}}}]);return AnimatedValue;})(AnimatedWithChildren);var \n\n\n\n\n\nAnimatedValueXY=(function(_AnimatedWithChildren2){_inherits(AnimatedValueXY,_AnimatedWithChildren2);\n\n\n\n\nfunction AnimatedValueXY(valueIn){_classCallCheck(this,AnimatedValueXY);\n_get(Object.getPrototypeOf(AnimatedValueXY.prototype),'constructor',this).call(this);\nvar value=valueIn || {x:0,y:0};\nif(typeof value.x === 'number' && typeof value.y === 'number'){\nthis.x = new AnimatedValue(value.x);\nthis.y = new AnimatedValue(value.y);}else \n{\ninvariant(\nvalue.x instanceof AnimatedValue && \nvalue.y instanceof AnimatedValue,\n'AnimatedValueXY must be initalized with an object of numbers or ' + \n'AnimatedValues.');\n\nthis.x = value.x;\nthis.y = value.y;}\n\nthis._listeners = {};}_createClass(AnimatedValueXY,[{key:'setValue',value:\n\n\nfunction setValue(value){\nthis.x.setValue(value.x);\nthis.y.setValue(value.y);}},{key:'setOffset',value:\n\n\nfunction setOffset(offset){\nthis.x.setOffset(offset.x);\nthis.y.setOffset(offset.y);}},{key:'flattenOffset',value:\n\n\nfunction flattenOffset(){\nthis.x.flattenOffset();\nthis.y.flattenOffset();}},{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn {\nx:this.x.__getValue(),\ny:this.y.__getValue()};}},{key:'stopAnimation',value:\n\n\n\nfunction stopAnimation(callback){\nthis.x.stopAnimation();\nthis.y.stopAnimation();\ncallback && callback(this.__getValue());}},{key:'addListener',value:\n\n\nfunction addListener(callback){var _this3=this;\nvar id=String(_uniqueId++);\nvar jointCallback=function(_ref){var number=_ref.value;\ncallback(_this3.__getValue());};\n\nthis._listeners[id] = {\nx:this.x.addListener(jointCallback),\ny:this.y.addListener(jointCallback)};\n\nreturn id;}},{key:'removeListener',value:\n\n\nfunction removeListener(id){\nthis.x.removeListener(this._listeners[id].x);\nthis.y.removeListener(this._listeners[id].y);\ndelete this._listeners[id];}},{key:'getLayout',value:\n\n\nfunction getLayout(){\nreturn {\nleft:this.x,\ntop:this.y};}},{key:'getTranslateTransform',value:\n\n\n\nfunction getTranslateTransform(){\nreturn [\n{translateX:this.x},\n{translateY:this.y}];}}]);return AnimatedValueXY;})(AnimatedWithChildren);var \n\n\n\n\nAnimatedInterpolation=(function(_AnimatedWithChildren3){_inherits(AnimatedInterpolation,_AnimatedWithChildren3);\n\n\n\nfunction AnimatedInterpolation(parent,interpolation){_classCallCheck(this,AnimatedInterpolation);\n_get(Object.getPrototypeOf(AnimatedInterpolation.prototype),'constructor',this).call(this);\nthis._parent = parent;\nthis._interpolation = interpolation;}_createClass(AnimatedInterpolation,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar parentValue=this._parent.__getValue();\ninvariant(\ntypeof parentValue === 'number',\n'Cannot interpolate an input which is not a number.');\n\nreturn this._interpolation(parentValue);}},{key:'interpolate',value:\n\n\nfunction interpolate(config){\nreturn new AnimatedInterpolation(this,Interpolation.create(config));}},{key:'attach',value:\n\n\nfunction attach(){\nthis._parent.addChild(this);}},{key:'detach',value:\n\n\nfunction detach(){\nthis._parent.removeChild(this);}}]);return AnimatedInterpolation;})(AnimatedWithChildren);var \n\n\n\nAnimatedTransform=(function(_AnimatedWithChildren4){_inherits(AnimatedTransform,_AnimatedWithChildren4);\n\n\nfunction AnimatedTransform(transforms){_classCallCheck(this,AnimatedTransform);\n_get(Object.getPrototypeOf(AnimatedTransform.prototype),'constructor',this).call(this);\nthis._transforms = transforms;}_createClass(AnimatedTransform,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._transforms.map(function(transform){\nvar result={};\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nresult[key] = value.__getValue();}else \n{\nresult[key] = value;}}\n\n\nreturn result;});}},{key:'getAnimatedValue',value:\n\n\n\nfunction getAnimatedValue(){\nreturn this._transforms.map(function(transform){\nvar result={};\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nresult[key] = value.getAnimatedValue();}else \n{\n\nresult[key] = value;}}\n\n\nreturn result;});}},{key:'attach',value:\n\n\n\nfunction attach(){var _this4=this;\nthis._transforms.forEach(function(transform){\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nvalue.addChild(_this4);}}});}},{key:'detach',value:\n\n\n\n\n\nfunction detach(){var _this5=this;\nthis._transforms.forEach(function(transform){\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nvalue.removeChild(_this5);}}});}}]);return AnimatedTransform;})(AnimatedWithChildren);var \n\n\n\n\n\n\nAnimatedStyle=(function(_AnimatedWithChildren5){_inherits(AnimatedStyle,_AnimatedWithChildren5);\n\n\nfunction AnimatedStyle(style){_classCallCheck(this,AnimatedStyle);\n_get(Object.getPrototypeOf(AnimatedStyle.prototype),'constructor',this).call(this);\nstyle = flattenStyle(style) || {};\nif(style.transform){\nstyle = _extends({},\nstyle,{\ntransform:new AnimatedTransform(style.transform)});}\n\n\nthis._style = style;}_createClass(AnimatedStyle,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar style={};\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nstyle[key] = value.__getValue();}else \n{\nstyle[key] = value;}}\n\n\nreturn style;}},{key:'getAnimatedValue',value:\n\n\nfunction getAnimatedValue(){\nvar style={};\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nstyle[key] = value.getAnimatedValue();}}\n\n\nreturn style;}},{key:'attach',value:\n\n\nfunction attach(){\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nvalue.addChild(this);}}}},{key:'detach',value:\n\n\n\n\nfunction detach(){\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nvalue.removeChild(this);}}}}]);return AnimatedStyle;})(AnimatedWithChildren);var \n\n\n\n\n\nAnimatedProps=(function(_Animated2){_inherits(AnimatedProps,_Animated2);\n\n\n\nfunction AnimatedProps(\nprops,\ncallback)\n{_classCallCheck(this,AnimatedProps);\n_get(Object.getPrototypeOf(AnimatedProps.prototype),'constructor',this).call(this);\nif(props.style){\nprops = _extends({},\nprops,{\nstyle:new AnimatedStyle(props.style)});}\n\n\nthis._props = props;\nthis._callback = callback;\nthis.attach();}_createClass(AnimatedProps,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar props={};\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nprops[key] = value.__getValue();}else \n{\nprops[key] = value;}}\n\n\nreturn props;}},{key:'getAnimatedValue',value:\n\n\nfunction getAnimatedValue(){\nvar props={};\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nprops[key] = value.getAnimatedValue();}}\n\n\nreturn props;}},{key:'attach',value:\n\n\nfunction attach(){\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nvalue.addChild(this);}}}},{key:'detach',value:\n\n\n\n\nfunction detach(){\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nvalue.removeChild(this);}}}},{key:'update',value:\n\n\n\n\nfunction update(){\nthis._callback();}}]);return AnimatedProps;})(Animated);\n\n\n\nfunction createAnimatedComponent(Component){\nvar refName='node';var \n\nAnimatedComponent=(function(_React$Component){_inherits(AnimatedComponent,_React$Component);function AnimatedComponent(){_classCallCheck(this,AnimatedComponent);_get(Object.getPrototypeOf(AnimatedComponent.prototype),'constructor',this).apply(this,arguments);}_createClass(AnimatedComponent,[{key:'componentWillUnmount',value:\n\n\nfunction componentWillUnmount(){\nthis._propsAnimated && this._propsAnimated.detach();}},{key:'setNativeProps',value:\n\n\nfunction setNativeProps(props){\nthis.refs[refName].setNativeProps(props);}},{key:'componentWillMount',value:\n\n\nfunction componentWillMount(){\nthis.attachProps(this.props);}},{key:'attachProps',value:\n\n\nfunction attachProps(nextProps){var _this6=this;\nvar oldPropsAnimated=this._propsAnimated;\n\n\n\n\n\n\n\nvar callback=function(){\nif(_this6.refs[refName].setNativeProps){\nvar value=_this6._propsAnimated.getAnimatedValue();\n_this6.refs[refName].setNativeProps(value);}else \n{\n_this6.forceUpdate();}};\n\n\n\nthis._propsAnimated = new AnimatedProps(\nnextProps,\ncallback);\n\n\n\n\n\n\n\n\n\n\noldPropsAnimated && oldPropsAnimated.detach();}},{key:'componentWillReceiveProps',value:\n\n\nfunction componentWillReceiveProps(nextProps){\nthis.attachProps(nextProps);}},{key:'render',value:\n\n\nfunction render(){\nreturn (\nReact.createElement(Component,_extends({},\nthis._propsAnimated.__getValue(),{\nref:refName})));}}]);return AnimatedComponent;})(React.Component);\n\n\n\n\n\nreturn AnimatedComponent;}var \n\n\nAnimatedTracking=(function(_Animated3){_inherits(AnimatedTracking,_Animated3);\n\n\n\n\n\n\nfunction AnimatedTracking(\nvalue,\nparent,\nanimationClass,\nanimationConfig,\ncallback)\n{_classCallCheck(this,AnimatedTracking);\n_get(Object.getPrototypeOf(AnimatedTracking.prototype),'constructor',this).call(this);\nthis._value = value;\nthis._parent = parent;\nthis._animationClass = animationClass;\nthis._animationConfig = animationConfig;\nthis._callback = callback;\nthis.attach();}_createClass(AnimatedTracking,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._parent.__getValue();}},{key:'attach',value:\n\n\nfunction attach(){\nthis._parent.addChild(this);}},{key:'detach',value:\n\n\nfunction detach(){\nthis._parent.removeChild(this);}},{key:'update',value:\n\n\nfunction update(){\nthis._value.animate(new this._animationClass(_extends({},\nthis._animationConfig,{\ntoValue:this._animationConfig.toValue.__getValue()})),\nthis._callback);}}]);return AnimatedTracking;})(Animated);\n\n\n\n\n\n\n\n\nvar maybeVectorAnim=function(\nvalue,\nconfig,\nanim)\n{\nif(value instanceof AnimatedValueXY){\nvar configX=_extends({},config);\nvar configY=_extends({},config);\nfor(var key in config) {var _config$key=\nconfig[key];var x=_config$key.x;var y=_config$key.y;\nif(x !== undefined && y !== undefined){\nconfigX[key] = x;\nconfigY[key] = y;}}\n\n\nvar aX=anim(value.x,configX);\nvar aY=anim(value.y,configY);\n\n\nreturn parallel([aX,aY],{stopTogether:false});}\n\nreturn null;};\n\n\nvar spring=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,spring) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nif(config.toValue instanceof Animated){\nsingleValue.track(new AnimatedTracking(\nsingleValue,\nconfig.toValue,\nSpringAnimation,\nsingleConfig,\ncallback));}else \n\n{\nsingleValue.animate(new SpringAnimation(singleConfig),callback);}},\n\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar timing=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,timing) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nif(config.toValue instanceof Animated){\nsingleValue.track(new AnimatedTracking(\nsingleValue,\nconfig.toValue,\nTimingAnimation,\nsingleConfig,\ncallback));}else \n\n{\nsingleValue.animate(new TimingAnimation(singleConfig),callback);}},\n\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar decay=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,decay) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nsingleValue.animate(new DecayAnimation(singleConfig),callback);},\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar sequence=function(\nanimations)\n{\nvar current=0;\nreturn {\nstart:function(callback){\nvar onComplete=function(result){\nif(!result.finished){\ncallback && callback(result);\nreturn;}\n\n\ncurrent++;\n\nif(current === animations.length){\ncallback && callback(result);\nreturn;}\n\n\nanimations[current].start(onComplete);};\n\n\nif(animations.length === 0){\ncallback && callback({finished:true});}else \n{\nanimations[current].start(onComplete);}},\n\n\n\nstop:function(){\nif(current < animations.length){\nanimations[current].stop();}}};};\n\n\n\n\n\n\n\n\nvar parallel=function(\nanimations,\nconfig)\n{\nvar doneCount=0;\n\nvar hasEnded={};\nvar stopTogether=!(config && config.stopTogether === false);\n\nvar result={\nstart:function(callback){\nif(doneCount === animations.length){\ncallback && callback({finished:true});\nreturn;}\n\n\nanimations.forEach(function(animation,idx){\nanimation.start(function(endResult){\nhasEnded[idx] = true;\ndoneCount++;\nif(doneCount === animations.length){\ndoneCount = 0;\ncallback && callback(endResult);\nreturn;}\n\n\nif(!endResult.finished && stopTogether){\nresult.stop();}});});},\n\n\n\n\n\nstop:function(){\nanimations.forEach(function(animation,idx){\n!hasEnded[idx] && animation.stop();\nhasEnded[idx] = true;});}};\n\n\n\n\nreturn result;};\n\n\nvar delay=function(time){\n\nreturn timing(new AnimatedValue(0),{toValue:0,delay:time,duration:0});};\n\n\nvar stagger=function(\ntime,\nanimations)\n{\nreturn parallel(animations.map(function(animation,i){\nreturn sequence([\ndelay(time * i),\nanimation]);}));};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar event=function(\nargMapping,\nconfig)\n{\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nvar traverse=function(recMapping,recEvt,key){\nif(typeof recEvt === 'number'){\ninvariant(\nrecMapping instanceof AnimatedValue,\n'Bad mapping of type ' + typeof recMapping + ' for key ' + key + \n', event value must map to AnimatedValue');\n\nrecMapping.setValue(recEvt);\nreturn;}\n\ninvariant(\ntypeof recMapping === 'object',\n'Bad mapping of type ' + typeof recMapping + ' for key ' + key);\n\ninvariant(\ntypeof recEvt === 'object',\n'Bad event of type ' + typeof recEvt + ' for key ' + key);\n\nfor(var key in recMapping) {\ntraverse(recMapping[key],recEvt[key],key);}};\n\n\nargMapping.forEach(function(mapping,idx){\ntraverse(mapping,args[idx],'arg' + idx);});\n\nif(config && config.listener){\nconfig.listener.apply(null,args);}};};\n\n\n\n\nmodule.exports = {\ndelay:delay,\nsequence:sequence,\nparallel:parallel,\nstagger:stagger,\n\ndecay:decay,\ntiming:timing,\nspring:spring,\n\nevent:event,\n\nValue:AnimatedValue,\nValueXY:AnimatedValueXY,\n__PropsOnlyForTests:AnimatedProps,\nView:createAnimatedComponent(View),\nText:createAnimatedComponent(Text),\nImage:createAnimatedComponent(Image),\ncreateAnimatedComponent:createAnimatedComponent};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Animated\n * @flow\n */\n'use strict';\n\nvar Easing = require('Easing');\nvar Image = require('Image');\nvar InteractionManager = require('InteractionManager');\nvar Interpolation = require('Interpolation');\nvar React = require('React');\nvar Set = require('Set');\nvar Text = require('Text');\nvar View = require('View');\nvar invariant = require('invariant');\n\nvar flattenStyle = require('flattenStyle');\nvar rebound = require('rebound');\nvar requestAnimationFrame = require('requestAnimationFrame');\n\nimport type InterpolationConfigType from 'Interpolation';\n\ntype EndResult = {finished: bool};\ntype EndCallback = (result: EndResult) => void;\n\n// Note(vjeux): this would be better as an interface but flow doesn't\n// support them yet\nclass Animated {\n attach(): void {}\n detach(): void {}\n __getValue(): any {}\n getAnimatedValue(): any { return this.__getValue(); }\n addChild(child: Animated) {}\n removeChild(child: Animated) {}\n getChildren(): Array { return []; }\n}\n\n// Important note: start() and stop() will only be called at most once.\n// Once an animation has been stopped or finished its course, it will\n// not be reused.\nclass Animation {\n __active: bool;\n __onEnd: ?EndCallback;\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n ): void {}\n stop(): void {}\n // Helper function for subclasses to make sure onEnd is only called once.\n __debouncedOnEnd(result: EndResult) {\n var onEnd = this.__onEnd;\n this.__onEnd = null;\n onEnd && onEnd(result);\n }\n}\n\nclass AnimatedWithChildren extends Animated {\n _children: Array;\n\n constructor() {\n super();\n this._children = [];\n }\n\n addChild(child: Animated): void {\n if (this._children.length === 0) {\n this.attach();\n }\n this._children.push(child);\n }\n\n removeChild(child: Animated): void {\n var index = this._children.indexOf(child);\n if (index === -1) {\n console.warn('Trying to remove a child that doesn\\'t exist');\n return;\n }\n this._children.splice(index, 1);\n if (this._children.length === 0) {\n this.detach();\n }\n }\n\n getChildren(): Array {\n return this._children;\n }\n}\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n * new Animated.Value(0)\n * .interpolate() .interpolate() new Animated.Value(1)\n * opacity translateY scale\n * style transform\n * View#234 style\n * View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nfunction _flush(rootNode: AnimatedValue): void {\n var animatedStyles = new Set();\n function findAnimatedStyles(node) {\n if (typeof node.update === 'function') {\n animatedStyles.add(node);\n } else {\n node.getChildren().forEach(findAnimatedStyles);\n }\n }\n findAnimatedStyles(rootNode);\n animatedStyles.forEach(animatedStyle => animatedStyle.update());\n}\n\ntype TimingAnimationConfig = {\n toValue: number;\n easing?: (value: number) => number;\n duration?: number;\n delay?: number;\n};\n\nvar easeInOut = Easing.inOut(Easing.ease);\n\nclass TimingAnimation extends Animation {\n _startTime: number;\n _fromValue: number;\n _toValue: number;\n _duration: number;\n _delay: number;\n _easing: (value: number) => number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n _timeout: any;\n\n constructor(\n config: TimingAnimationConfig,\n ) {\n super();\n this._toValue = config.toValue;\n this._easing = config.easing || easeInOut;\n this._duration = config.duration !== undefined ? config.duration : 500;\n this._delay = config.delay || 0;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n ): void {\n this.__active = true;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n\n var start = () => {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n this.__debouncedOnEnd({finished: true});\n } else {\n this._startTime = Date.now();\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n };\n if (this._delay) {\n this._timeout = setTimeout(start, this._delay);\n } else {\n start();\n }\n }\n\n onUpdate(): void {\n var now = Date.now();\n if (now >= this._startTime + this._duration) {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n } else {\n this._onUpdate(\n this._fromValue + this._easing(1) * (this._toValue - this._fromValue)\n );\n }\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._onUpdate(\n this._fromValue +\n this._easing((now - this._startTime) / this._duration) *\n (this._toValue - this._fromValue)\n );\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n this.__active = false;\n clearTimeout(this._timeout);\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype DecayAnimationConfig = {\n velocity: number | {x: number, y: number};\n deceleration?: number;\n};\n\ntype DecayAnimationConfigSingle = {\n velocity: number;\n deceleration?: number;\n};\n\nclass DecayAnimation extends Animation {\n _startTime: number;\n _lastValue: number;\n _fromValue: number;\n _deceleration: number;\n _velocity: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n\n constructor(\n config: DecayAnimationConfigSingle,\n ) {\n super();\n this._deceleration = config.deceleration || 0.998;\n this._velocity = config.velocity;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n ): void {\n this.__active = true;\n this._lastValue = fromValue;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._startTime = Date.now();\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n onUpdate(): void {\n var now = Date.now();\n\n var value = this._fromValue +\n (this._velocity / (1 - this._deceleration)) *\n (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\n this._onUpdate(value);\n\n if (Math.abs(this._lastValue - value) < 0.1) {\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._lastValue = value;\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n this.__active = false;\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype SpringAnimationConfig = {\n toValue: number | AnimatedValue | {x: number, y: number} | AnimatedValueXY;\n overshootClamping?: bool;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number | {x: number, y: number};\n bounciness?: number;\n speed?: number;\n tension?: number;\n friction?: number;\n};\n\ntype SpringAnimationConfigSingle = {\n toValue: number | AnimatedValue;\n overshootClamping?: bool;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n bounciness?: number;\n speed?: number;\n tension?: number;\n friction?: number;\n};\n\nfunction withDefault(value: ?T, defaultValue: T): T {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n return value;\n}\n\nclass SpringAnimation extends Animation {\n _overshootClamping: bool;\n _restDisplacementThreshold: number;\n _restSpeedThreshold: number;\n _initialVelocity: ?number;\n _lastVelocity: number;\n _startPosition: number;\n _lastPosition: number;\n _fromValue: number;\n _toValue: any;\n _tension: number;\n _friction: number;\n _lastTime: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n\n constructor(\n config: SpringAnimationConfigSingle,\n ) {\n super();\n\n this._overshootClamping = withDefault(config.overshootClamping, false);\n this._restDisplacementThreshold = withDefault(config.restDisplacementThreshold, 0.001);\n this._restSpeedThreshold = withDefault(config.restSpeedThreshold, 0.001);\n this._initialVelocity = config.velocity;\n this._lastVelocity = withDefault(config.velocity, 0);\n this._toValue = config.toValue;\n\n var springConfig;\n if (config.bounciness !== undefined || config.speed !== undefined) {\n invariant(\n config.tension === undefined && config.friction === undefined,\n 'You can only define bounciness/speed or tension/friction but not both',\n );\n springConfig = rebound.SpringConfig.fromBouncinessAndSpeed(\n withDefault(config.bounciness, 8),\n withDefault(config.speed, 12),\n );\n } else {\n springConfig = rebound.SpringConfig.fromOrigamiTensionAndFriction(\n withDefault(config.tension, 40),\n withDefault(config.friction, 7),\n );\n }\n this._tension = springConfig.tension;\n this._friction = springConfig.friction;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n ): void {\n this.__active = true;\n this._startPosition = fromValue;\n this._lastPosition = this._startPosition;\n\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._lastTime = Date.now();\n\n if (previousAnimation instanceof SpringAnimation) {\n var internalState = previousAnimation.getInternalState();\n this._lastPosition = internalState.lastPosition;\n this._lastVelocity = internalState.lastVelocity;\n this._lastTime = internalState.lastTime;\n }\n if (this._initialVelocity !== undefined &&\n this._initialVelocity !== null) {\n this._lastVelocity = this._initialVelocity;\n }\n this.onUpdate();\n }\n\n getInternalState(): Object {\n return {\n lastPosition: this._lastPosition,\n lastVelocity: this._lastVelocity,\n lastTime: this._lastTime,\n };\n }\n\n onUpdate(): void {\n var position = this._lastPosition;\n var velocity = this._lastVelocity;\n\n var tempPosition = this._lastPosition;\n var tempVelocity = this._lastVelocity;\n\n // If for some reason we lost a lot of frames (e.g. process large payload or\n // stopped in the debugger), we only advance by 4 frames worth of\n // computation and will continue on the next frame. It's better to have it\n // running at faster speed than jumping to the end.\n var MAX_STEPS = 64;\n var now = Date.now();\n if (now > this._lastTime + MAX_STEPS) {\n now = this._lastTime + MAX_STEPS;\n }\n\n // We are using a fixed time step and a maximum number of iterations.\n // The following post provides a lot of thoughts into how to build this\n // loop: http://gafferongames.com/game-physics/fix-your-timestep/\n var TIMESTEP_MSEC = 1;\n var numSteps = Math.floor((now - this._lastTime) / TIMESTEP_MSEC);\n\n for (var i = 0; i < numSteps; ++i) {\n // Velocity is based on seconds instead of milliseconds\n var step = TIMESTEP_MSEC / 1000;\n\n // This is using RK4. A good blog post to understand how it works:\n // http://gafferongames.com/game-physics/integration-basics/\n var aVelocity = velocity;\n var aAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n var tempPosition = position + aVelocity * step / 2;\n var tempVelocity = velocity + aAcceleration * step / 2;\n\n var bVelocity = tempVelocity;\n var bAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + bVelocity * step / 2;\n tempVelocity = velocity + bAcceleration * step / 2;\n\n var cVelocity = tempVelocity;\n var cAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + cVelocity * step / 2;\n tempVelocity = velocity + cAcceleration * step / 2;\n\n var dVelocity = tempVelocity;\n var dAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + cVelocity * step / 2;\n tempVelocity = velocity + cAcceleration * step / 2;\n\n var dxdt = (aVelocity + 2 * (bVelocity + cVelocity) + dVelocity) / 6;\n var dvdt = (aAcceleration + 2 * (bAcceleration + cAcceleration) + dAcceleration) / 6;\n\n position += dxdt * step;\n velocity += dvdt * step;\n }\n\n this._lastTime = now;\n this._lastPosition = position;\n this._lastVelocity = velocity;\n\n this._onUpdate(position);\n if (!this.__active) { // a listener might have stopped us in _onUpdate\n return;\n }\n\n // Conditions for stopping the spring animation\n var isOvershooting = false;\n if (this._overshootClamping && this._tension !== 0) {\n if (this._startPosition < this._toValue) {\n isOvershooting = position > this._toValue;\n } else {\n isOvershooting = position < this._toValue;\n }\n }\n var isVelocity = Math.abs(velocity) <= this._restSpeedThreshold;\n var isDisplacement = true;\n if (this._tension !== 0) {\n isDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold;\n }\n if (isOvershooting || (isVelocity && isDisplacement)) {\n this.__debouncedOnEnd({finished: true});\n return;\n }\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n stop(): void {\n this.__active = false;\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype ValueListenerCallback = (state: {value: number}) => void;\n\nvar _uniqueId = 1;\n\nclass AnimatedValue extends AnimatedWithChildren {\n _value: number;\n _offset: number;\n _animation: ?Animation;\n _tracking: ?Animated;\n _listeners: {[key: string]: ValueListenerCallback};\n\n constructor(value: number) {\n super();\n this._value = value;\n this._offset = 0;\n this._animation = null;\n this._listeners = {};\n }\n\n detach() {\n this.stopAnimation();\n }\n\n __getValue(): number {\n return this._value + this._offset;\n }\n\n setValue(value: number): void {\n if (this._animation) {\n this._animation.stop();\n this._animation = null;\n }\n this._updateValue(value);\n }\n\n setOffset(offset: number): void {\n this._offset = offset;\n }\n\n flattenOffset(): void {\n this._value += this._offset;\n this._offset = 0;\n }\n\n addListener(callback: ValueListenerCallback): string {\n var id = String(_uniqueId++);\n this._listeners[id] = callback;\n return id;\n }\n\n removeListener(id: string): void {\n delete this._listeners[id];\n }\n\n removeAllListeners(): void {\n this._listeners = {};\n }\n\n animate(animation: Animation, callback: ?EndCallback): void {\n var handle = InteractionManager.createInteractionHandle();\n var previousAnimation = this._animation;\n this._animation && this._animation.stop();\n this._animation = animation;\n animation.start(\n this._value,\n (value) => {\n this._updateValue(value);\n },\n (result) => {\n this._animation = null;\n InteractionManager.clearInteractionHandle(handle);\n callback && callback(result);\n },\n previousAnimation,\n );\n }\n\n stopAnimation(callback?: ?(value: number) => void): void {\n this.stopTracking();\n this._animation && this._animation.stop();\n this._animation = null;\n callback && callback(this.__getValue());\n }\n\n stopTracking(): void {\n this._tracking && this._tracking.detach();\n this._tracking = null;\n }\n\n track(tracking: Animated): void {\n this.stopTracking();\n this._tracking = tracking;\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, Interpolation.create(config));\n }\n\n _updateValue(value: number): void {\n this._value = value;\n _flush(this);\n for (var key in this._listeners) {\n this._listeners[key]({value: this.__getValue()});\n }\n }\n}\n\ntype ValueXYListenerCallback = (value: {x: number; y: number}) => void;\nclass AnimatedValueXY extends AnimatedWithChildren {\n x: AnimatedValue;\n y: AnimatedValue;\n _listeners: {[key: string]: {x: string; y: string}};\n\n constructor(valueIn?: ?{x: number | AnimatedValue; y: number | AnimatedValue}) {\n super();\n var value: any = valueIn || {x: 0, y: 0}; // @flowfixme: shouldn't need `: any`\n if (typeof value.x === 'number' && typeof value.y === 'number') {\n this.x = new AnimatedValue(value.x);\n this.y = new AnimatedValue(value.y);\n } else {\n invariant(\n value.x instanceof AnimatedValue &&\n value.y instanceof AnimatedValue,\n 'AnimatedValueXY must be initalized with an object of numbers or ' +\n 'AnimatedValues.'\n );\n this.x = value.x;\n this.y = value.y;\n }\n this._listeners = {};\n }\n\n setValue(value: {x: number; y: number}) {\n this.x.setValue(value.x);\n this.y.setValue(value.y);\n }\n\n setOffset(offset: {x: number; y: number}) {\n this.x.setOffset(offset.x);\n this.y.setOffset(offset.y);\n }\n\n flattenOffset(): void {\n this.x.flattenOffset();\n this.y.flattenOffset();\n }\n\n __getValue(): {x: number; y: number} {\n return {\n x: this.x.__getValue(),\n y: this.y.__getValue(),\n };\n }\n\n stopAnimation(callback?: ?() => number): void {\n this.x.stopAnimation();\n this.y.stopAnimation();\n callback && callback(this.__getValue());\n }\n\n addListener(callback: ValueXYListenerCallback): string {\n var id = String(_uniqueId++);\n var jointCallback = ({value: number}) => {\n callback(this.__getValue());\n };\n this._listeners[id] = {\n x: this.x.addListener(jointCallback),\n y: this.y.addListener(jointCallback),\n };\n return id;\n }\n\n removeListener(id: string): void {\n this.x.removeListener(this._listeners[id].x);\n this.y.removeListener(this._listeners[id].y);\n delete this._listeners[id];\n }\n\n getLayout(): {[key: string]: AnimatedValue} {\n return {\n left: this.x,\n top: this.y,\n };\n }\n\n getTranslateTransform(): Array<{[key: string]: AnimatedValue}> {\n return [\n {translateX: this.x},\n {translateY: this.y}\n ];\n }\n}\n\nclass AnimatedInterpolation extends AnimatedWithChildren {\n _parent: Animated;\n _interpolation: (input: number) => number | string;\n\n constructor(parent: Animated, interpolation: (input: number) => number | string) {\n super();\n this._parent = parent;\n this._interpolation = interpolation;\n }\n\n __getValue(): number | string {\n var parentValue: number = this._parent.__getValue();\n invariant(\n typeof parentValue === 'number',\n 'Cannot interpolate an input which is not a number.'\n );\n return this._interpolation(parentValue);\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, Interpolation.create(config));\n }\n\n attach(): void {\n this._parent.addChild(this);\n }\n\n detach(): void {\n this._parent.removeChild(this);\n }\n}\n\nclass AnimatedTransform extends AnimatedWithChildren {\n _transforms: Array;\n\n constructor(transforms: Array) {\n super();\n this._transforms = transforms;\n }\n\n __getValue(): Array {\n return this._transforms.map(transform => {\n var result = {};\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n result[key] = value.__getValue();\n } else {\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n getAnimatedValue(): Array {\n return this._transforms.map(transform => {\n var result = {};\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n result[key] = value.getAnimatedValue();\n } else {\n // All transform components needed to recompose matrix\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n attach(): void {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n });\n }\n\n detach(): void {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n });\n }\n}\n\nclass AnimatedStyle extends AnimatedWithChildren {\n _style: Object;\n\n constructor(style: any) {\n super();\n style = flattenStyle(style) || {};\n if (style.transform) {\n style = {\n ...style,\n transform: new AnimatedTransform(style.transform),\n };\n }\n this._style = style;\n }\n\n __getValue(): Object {\n var style = {};\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n style[key] = value.__getValue();\n } else {\n style[key] = value;\n }\n }\n return style;\n }\n\n getAnimatedValue(): Object {\n var style = {};\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n style[key] = value.getAnimatedValue();\n }\n }\n return style;\n }\n\n attach(): void {\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n }\n\n detach(): void {\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n }\n}\n\nclass AnimatedProps extends Animated {\n _props: Object;\n _callback: () => void;\n\n constructor(\n props: Object,\n callback: () => void,\n ) {\n super();\n if (props.style) {\n props = {\n ...props,\n style: new AnimatedStyle(props.style),\n };\n }\n this._props = props;\n this._callback = callback;\n this.attach();\n }\n\n __getValue(): Object {\n var props = {};\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n props[key] = value.__getValue();\n } else {\n props[key] = value;\n }\n }\n return props;\n }\n\n getAnimatedValue(): Object {\n var props = {};\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n props[key] = value.getAnimatedValue();\n }\n }\n return props;\n }\n\n attach(): void {\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n }\n\n detach(): void {\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n }\n\n update(): void {\n this._callback();\n }\n}\n\nfunction createAnimatedComponent(Component: any): any {\n var refName = 'node';\n\n class AnimatedComponent extends React.Component {\n _propsAnimated: AnimatedProps;\n\n componentWillUnmount() {\n this._propsAnimated && this._propsAnimated.detach();\n }\n\n setNativeProps(props) {\n this.refs[refName].setNativeProps(props);\n }\n\n componentWillMount() {\n this.attachProps(this.props);\n }\n\n attachProps(nextProps) {\n var oldPropsAnimated = this._propsAnimated;\n\n // The system is best designed when setNativeProps is implemented. It is\n // able to avoid re-rendering and directly set the attributes that\n // changed. However, setNativeProps can only be implemented on leaf\n // native components. If you want to animate a composite component, you\n // need to re-render it. In this case, we have a fallback that uses\n // forceUpdate.\n var callback = () => {\n if (this.refs[refName].setNativeProps) {\n var value = this._propsAnimated.getAnimatedValue();\n this.refs[refName].setNativeProps(value);\n } else {\n this.forceUpdate();\n }\n };\n\n this._propsAnimated = new AnimatedProps(\n nextProps,\n callback,\n );\n\n // When you call detach, it removes the element from the parent list\n // of children. If it goes to 0, then the parent also detaches itself\n // and so on.\n // An optimization is to attach the new elements and THEN detach the old\n // ones instead of detaching and THEN attaching.\n // This way the intermediate state isn't to go to 0 and trigger\n // this expensive recursive detaching to then re-attach everything on\n // the very next operation.\n oldPropsAnimated && oldPropsAnimated.detach();\n }\n\n componentWillReceiveProps(nextProps) {\n this.attachProps(nextProps);\n }\n\n render() {\n return (\n \n );\n }\n }\n\n return AnimatedComponent;\n}\n\nclass AnimatedTracking extends Animated {\n _value: AnimatedValue;\n _parent: Animated;\n _callback: ?EndCallback;\n _animationConfig: Object;\n _animationClass: any;\n\n constructor(\n value: AnimatedValue,\n parent: Animated,\n animationClass: any,\n animationConfig: Object,\n callback?: ?EndCallback,\n ) {\n super();\n this._value = value;\n this._parent = parent;\n this._animationClass = animationClass;\n this._animationConfig = animationConfig;\n this._callback = callback;\n this.attach();\n }\n\n __getValue(): Object {\n return this._parent.__getValue();\n }\n\n attach(): void {\n this._parent.addChild(this);\n }\n\n detach(): void {\n this._parent.removeChild(this);\n }\n\n update(): void {\n this._value.animate(new this._animationClass({\n ...this._animationConfig,\n toValue: (this._animationConfig.toValue: any).__getValue(),\n }), this._callback);\n }\n}\n\ntype CompositeAnimation = {\n start: (callback?: ?EndCallback) => void;\n stop: () => void;\n};\n\nvar maybeVectorAnim = function(\n value: AnimatedValue | AnimatedValueXY,\n config: Object,\n anim: (value: AnimatedValue, config: Object) => CompositeAnimation\n): ?CompositeAnimation {\n if (value instanceof AnimatedValueXY) {\n var configX = {...config};\n var configY = {...config};\n for (var key in config) {\n var {x, y} = config[key];\n if (x !== undefined && y !== undefined) {\n configX[key] = x;\n configY[key] = y;\n }\n }\n var aX = anim((value: AnimatedValueXY).x, configX);\n var aY = anim((value: AnimatedValueXY).y, configY);\n // We use `stopTogether: false` here because otherwise tracking will break\n // because the second animation will get stopped before it can update.\n return parallel([aX, aY], {stopTogether: false});\n }\n return null;\n};\n\nvar spring = function(\n value: AnimatedValue | AnimatedValueXY,\n config: SpringAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, spring) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n if (config.toValue instanceof Animated) {\n singleValue.track(new AnimatedTracking(\n singleValue,\n config.toValue,\n SpringAnimation,\n singleConfig,\n callback\n ));\n } else {\n singleValue.animate(new SpringAnimation(singleConfig), callback);\n }\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar timing = function(\n value: AnimatedValue | AnimatedValueXY,\n config: TimingAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, timing) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n if (config.toValue instanceof Animated) {\n singleValue.track(new AnimatedTracking(\n singleValue,\n config.toValue,\n TimingAnimation,\n singleConfig,\n callback\n ));\n } else {\n singleValue.animate(new TimingAnimation(singleConfig), callback);\n }\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar decay = function(\n value: AnimatedValue | AnimatedValueXY,\n config: DecayAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, decay) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n singleValue.animate(new DecayAnimation(singleConfig), callback);\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar sequence = function(\n animations: Array,\n): CompositeAnimation {\n var current = 0;\n return {\n start: function(callback?: ?EndCallback) {\n var onComplete = function(result) {\n if (!result.finished) {\n callback && callback(result);\n return;\n }\n\n current++;\n\n if (current === animations.length) {\n callback && callback(result);\n return;\n }\n\n animations[current].start(onComplete);\n };\n\n if (animations.length === 0) {\n callback && callback({finished: true});\n } else {\n animations[current].start(onComplete);\n }\n },\n\n stop: function() {\n if (current < animations.length) {\n animations[current].stop();\n }\n }\n };\n};\n\ntype ParallelConfig = {\n stopTogether?: bool; // If one is stopped, stop all. default: true\n}\nvar parallel = function(\n animations: Array,\n config?: ?ParallelConfig,\n): CompositeAnimation {\n var doneCount = 0;\n // Make sure we only call stop() at most once for each animation\n var hasEnded = {};\n var stopTogether = !(config && config.stopTogether === false);\n\n var result = {\n start: function(callback?: ?EndCallback) {\n if (doneCount === animations.length) {\n callback && callback({finished: true});\n return;\n }\n\n animations.forEach((animation, idx) => {\n animation.start(endResult => {\n hasEnded[idx] = true;\n doneCount++;\n if (doneCount === animations.length) {\n doneCount = 0;\n callback && callback(endResult);\n return;\n }\n\n if (!endResult.finished && stopTogether) {\n result.stop();\n }\n });\n });\n },\n\n stop: function(): void {\n animations.forEach((animation, idx) => {\n !hasEnded[idx] && animation.stop();\n hasEnded[idx] = true;\n });\n }\n };\n\n return result;\n};\n\nvar delay = function(time: number): CompositeAnimation {\n // Would be nice to make a specialized implementation\n return timing(new AnimatedValue(0), {toValue: 0, delay: time, duration: 0});\n};\n\nvar stagger = function(\n time: number,\n animations: Array,\n): CompositeAnimation {\n return parallel(animations.map((animation, i) => {\n return sequence([\n delay(time * i),\n animation,\n ]);\n }));\n};\n\ntype Mapping = {[key: string]: Mapping} | AnimatedValue;\n\n/**\n * Takes an array of mappings and extracts values from each arg accordingly,\n * then calls setValue on the mapped outputs. e.g.\n *\n * onScroll={this.AnimatedEvent(\n * [{nativeEvent: {contentOffset: {x: this._scrollX}}}]\n * {listener} // optional listener invoked asynchronously\n * )\n * ...\n * onPanResponderMove: this.AnimatedEvent([\n * null, // raw event arg\n * {dx: this._panX}, // gestureState arg\n * ]),\n *\n */\ntype EventConfig = {listener?: ?Function};\nvar event = function(\n argMapping: Array,\n config?: ?EventConfig,\n): () => void {\n return function(...args): void {\n var traverse = function(recMapping, recEvt, key) {\n if (typeof recEvt === 'number') {\n invariant(\n recMapping instanceof AnimatedValue,\n 'Bad mapping of type ' + typeof recMapping + ' for key ' + key +\n ', event value must map to AnimatedValue'\n );\n recMapping.setValue(recEvt);\n return;\n }\n invariant(\n typeof recMapping === 'object',\n 'Bad mapping of type ' + typeof recMapping + ' for key ' + key\n );\n invariant(\n typeof recEvt === 'object',\n 'Bad event of type ' + typeof recEvt + ' for key ' + key\n );\n for (var key in recMapping) {\n traverse(recMapping[key], recEvt[key], key);\n }\n };\n argMapping.forEach((mapping, idx) => {\n traverse(mapping, args[idx], 'arg' + idx);\n });\n if (config && config.listener) {\n config.listener.apply(null, args);\n }\n };\n};\n\nmodule.exports = {\n delay,\n sequence,\n parallel,\n stagger,\n\n decay,\n timing,\n spring,\n\n event,\n\n Value: AnimatedValue,\n ValueXY: AnimatedValueXY,\n __PropsOnlyForTests: AnimatedProps,\n View: createAnimatedComponent(View),\n Text: createAnimatedComponent(Text),\n Image: createAnimatedComponent(Image),\n createAnimatedComponent,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Animated.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Interpolation.js":{"data":{"code":"'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');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=function(condition,message){\nif(!condition){\nvar error=new Error(message);\nerror.framesToPop = 1;\nthrow error;}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar linear=function(t){return t;};var \n\n\n\n\n\nInterpolation=(function(){function Interpolation(){_classCallCheck(this,Interpolation);}_createClass(Interpolation,null,[{key:'create',value:\nfunction create(config){\n\nif(config.outputRange && typeof config.outputRange[0] === 'string'){\nreturn createInterpolationFromStringOutputRange(config);}\n\n\nvar outputRange=config.outputRange;\ncheckInfiniteRange('outputRange',outputRange);\n\nvar inputRange=config.inputRange;\ncheckInfiniteRange('inputRange',inputRange);\ncheckValidInputRange(inputRange);\n\ninvariant(\ninputRange.length === outputRange.length,\n'inputRange (' + inputRange.length + ') and outputRange (' + \noutputRange.length + ') must have the same length');\n\n\nvar easing=config.easing || linear;\n\nvar extrapolateLeft='extend';\nif(config.extrapolateLeft !== undefined){\nextrapolateLeft = config.extrapolateLeft;}else \nif(config.extrapolate !== undefined){\nextrapolateLeft = config.extrapolate;}\n\n\nvar extrapolateRight='extend';\nif(config.extrapolateRight !== undefined){\nextrapolateRight = config.extrapolateRight;}else \nif(config.extrapolate !== undefined){\nextrapolateRight = config.extrapolate;}\n\n\nreturn function(input){\ninvariant(\ntypeof input === 'number',\n'Cannot interpolation an input which is not a number');\n\n\nvar range=findRange(input,inputRange);\nreturn interpolate(\ninput,\ninputRange[range],\ninputRange[range + 1],\noutputRange[range],\noutputRange[range + 1],\neasing,\nextrapolateLeft,\nextrapolateRight);};}}]);return Interpolation;})();\n\n\n\n\n\nfunction interpolate(\ninput,\ninputMin,\ninputMax,\noutputMin,\noutputMax,\neasing,\nextrapolateLeft,\nextrapolateRight)\n{\nvar result=input;\n\n\nif(result < inputMin){\nif(extrapolateLeft === 'identity'){\nreturn result;}else \nif(extrapolateLeft === 'clamp'){\nresult = inputMin;}else \nif(extrapolateLeft === 'extend'){}}\n\n\n\n\nif(result > inputMax){\nif(extrapolateRight === 'identity'){\nreturn result;}else \nif(extrapolateRight === 'clamp'){\nresult = inputMax;}else \nif(extrapolateRight === 'extend'){}}\n\n\n\n\nif(outputMin === outputMax){\nreturn outputMin;}\n\n\nif(inputMin === inputMax){\nif(input <= inputMin){\nreturn outputMin;}\n\nreturn outputMax;}\n\n\n\nif(inputMin === -Infinity){\nresult = -result;}else \nif(inputMax === Infinity){\nresult = result - inputMin;}else \n{\nresult = (result - inputMin) / (inputMax - inputMin);}\n\n\n\nresult = easing(result);\n\n\nif(outputMin === -Infinity){\nresult = -result;}else \nif(outputMax === Infinity){\nresult = result + outputMin;}else \n{\nresult = result * (outputMax - outputMin) + outputMin;}\n\n\nreturn result;}\n\n\nvar stringShapeRegex=/[0-9\\.-]+/g;\n\n\n\n\n\n\n\n\n\nfunction createInterpolationFromStringOutputRange(\nconfig)\n{\nvar outputRange=config.outputRange;\ninvariant(outputRange.length >= 2,'Bad output range');\ncheckPattern(outputRange);\n\n\n\n\n\n\n\n\n\nvar outputRanges=outputRange[0].match(stringShapeRegex).map(function(){return [];});\noutputRange.forEach(function(value){\nvalue.match(stringShapeRegex).forEach(function(number,i){\noutputRanges[i].push(+number);});});\n\n\n\nvar interpolations=outputRange[0].match(stringShapeRegex).map(function(value,i){\nreturn Interpolation.create(_extends({},\nconfig,{\noutputRange:outputRanges[i]}));});\n\n\n\nreturn function(input){\nvar i=0;\n\n\n\nreturn outputRange[0].replace(stringShapeRegex,function(){\nreturn String(interpolations[i++](input));});};}\n\n\n\n\nfunction checkPattern(arr){\nvar pattern=arr[0].replace(stringShapeRegex,'');\nfor(var i=1;i < arr.length;++i) {\ninvariant(\npattern === arr[i].replace(stringShapeRegex,''),\n'invalid pattern ' + arr[0] + ' and ' + arr[i]);}}\n\n\n\n\nfunction findRange(input,inputRange){\nfor(var i=1;i < inputRange.length - 1;++i) {\nif(inputRange[i] >= input){\nbreak;}}\n\n\nreturn i - 1;}\n\n\nfunction checkValidInputRange(arr){\ninvariant(arr.length >= 2,'inputRange must have at least 2 elements');\nfor(var i=1;i < arr.length;++i) {\ninvariant(\narr[i] >= arr[i - 1],\n\n\n\n\n\n\n'inputRange must be monotonically increasing ' + arr);}}\n\n\n\n\nfunction checkInfiniteRange(name,arr){\ninvariant(arr.length >= 2,name + ' must have at least 2 elements');\ninvariant(\narr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n\n\n\n\n\n\nname + 'cannot be ]-infinity;+infinity[ ' + arr);}\n\n\n\nmodule.exports = Interpolation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Interpolation\n * @flow\n */\n'use strict';\n\n// TODO(#7644673): fix this hack once github jest actually checks invariants\nvar invariant = function(condition, message) {\n if (!condition) {\n var error = new Error(message);\n (error: any).framesToPop = 1; // $FlowIssue\n throw error;\n }\n};\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\n// $FlowFixMe D2163827\nexport type InterpolationConfigType = {\n inputRange: Array;\n outputRange: (Array | Array);\n easing?: ((input: number) => number);\n extrapolate?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n};\n\nvar linear = (t) => t;\n\n/**\n * Very handy helper to map input ranges to output ranges with an easing\n * function and custom behavior outside of the ranges.\n */\nclass Interpolation {\n static create(config: InterpolationConfigType): (input: number) => number | string {\n\n if (config.outputRange && typeof config.outputRange[0] === 'string') {\n return createInterpolationFromStringOutputRange(config);\n }\n\n var outputRange: Array = (config.outputRange: any);\n checkInfiniteRange('outputRange', outputRange);\n\n var inputRange = config.inputRange;\n checkInfiniteRange('inputRange', inputRange);\n checkValidInputRange(inputRange);\n\n invariant(\n inputRange.length === outputRange.length,\n 'inputRange (' + inputRange.length + ') and outputRange (' +\n outputRange.length + ') must have the same length'\n );\n\n var easing = config.easing || linear;\n\n var extrapolateLeft: ExtrapolateType = 'extend';\n if (config.extrapolateLeft !== undefined) {\n extrapolateLeft = config.extrapolateLeft;\n } else if (config.extrapolate !== undefined) {\n extrapolateLeft = config.extrapolate;\n }\n\n var extrapolateRight: ExtrapolateType = 'extend';\n if (config.extrapolateRight !== undefined) {\n extrapolateRight = config.extrapolateRight;\n } else if (config.extrapolate !== undefined) {\n extrapolateRight = config.extrapolate;\n }\n\n return (input) => {\n invariant(\n typeof input === 'number',\n 'Cannot interpolation an input which is not a number'\n );\n\n var range = findRange(input, inputRange);\n return interpolate(\n input,\n inputRange[range],\n inputRange[range + 1],\n outputRange[range],\n outputRange[range + 1],\n easing,\n extrapolateLeft,\n extrapolateRight,\n );\n };\n }\n}\n\nfunction interpolate(\n input: number,\n inputMin: number,\n inputMax: number,\n outputMin: number,\n outputMax: number,\n easing: ((input: number) => number),\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType,\n) {\n var result = input;\n\n // Extrapolate\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {\n // noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {\n // noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (input <= inputMin) {\n return outputMin;\n }\n return outputMax;\n }\n\n // Input Range\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n }\n\n // Easing\n result = easing(result);\n\n // Output Range\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n}\n\nvar stringShapeRegex = /[0-9\\.-]+/g;\n\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * rgba(123, 42, 99, 0.36) // colors\n * -45deg // values with units\n */\nfunction createInterpolationFromStringOutputRange(\n config: InterpolationConfigType,\n): (input: number) => string {\n var outputRange: Array = (config.outputRange: any);\n invariant(outputRange.length >= 2, 'Bad output range');\n checkPattern(outputRange);\n\n // ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']\n // ->\n // [\n // [0, 50],\n // [100, 150],\n // [200, 250],\n // [0, 0.5],\n // ]\n var outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n value.match(stringShapeRegex).forEach((number, i) => {\n outputRanges[i].push(+number);\n });\n });\n\n var interpolations = outputRange[0].match(stringShapeRegex).map((value, i) => {\n return Interpolation.create({\n ...config,\n outputRange: outputRanges[i],\n });\n });\n\n return (input) => {\n var i = 0;\n // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n return outputRange[0].replace(stringShapeRegex, () => {\n return String(interpolations[i++](input));\n });\n };\n}\n\nfunction checkPattern(arr: Array) {\n var pattern = arr[0].replace(stringShapeRegex, '');\n for (var i = 1; i < arr.length; ++i) {\n invariant(\n pattern === arr[i].replace(stringShapeRegex, ''),\n 'invalid pattern ' + arr[0] + ' and ' + arr[i],\n );\n }\n}\n\nfunction findRange(input: number, inputRange: Array) {\n for (var i = 1; i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) {\n break;\n }\n }\n return i - 1;\n}\n\nfunction checkValidInputRange(arr: Array) {\n invariant(arr.length >= 2, 'inputRange must have at least 2 elements');\n for (var i = 1; i < arr.length; ++i) {\n invariant(\n arr[i] >= arr[i - 1],\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly\n * convert to a string, like undefined, null, and object, etc. If you really\n * mean this implicit string conversion, you can do something like\n * String(myThing)\n */\n 'inputRange must be monotonically increasing ' + arr\n );\n }\n}\n\nfunction checkInfiniteRange(name: string, arr: Array) {\n invariant(arr.length >= 2, name + ' must have at least 2 elements');\n invariant(\n arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly convert\n * to a string, like undefined, null, and object, etc. If you really mean\n * this implicit string conversion, you can do something like\n * String(myThing)\n */\n name + 'cannot be ]-infinity;+infinity[ ' + arr\n );\n}\n\nmodule.exports = Interpolation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Interpolation.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Easing.js":{"data":{"code":"'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');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar _bezier=require('bezier');var \n\n\n\n\n\n\nEasing=(function(){function Easing(){_classCallCheck(this,Easing);}_createClass(Easing,null,[{key:'step0',value:\nfunction step0(n){\nreturn n > 0?1:0;}},{key:'step1',value:\n\n\nfunction step1(n){\nreturn n >= 1?1:0;}},{key:'linear',value:\n\n\nfunction linear(t){\nreturn t;}},{key:'ease',value:(function(_ease){function ease(_x){return _ease.apply(this,arguments);}ease.toString = function(){return _ease.toString();};return ease;})(\n\n\nfunction(t){\nreturn ease(t);})},{key:'quad',value:\n\n\nfunction quad(t){\nreturn t * t;}},{key:'cubic',value:\n\n\nfunction cubic(t){\nreturn t * t * t;}},{key:'poly',value:\n\n\nfunction poly(n){\nreturn function(t){return Math.pow(t,n);};}},{key:'sin',value:\n\n\nfunction sin(t){\nreturn 1 - Math.cos(t * Math.PI / 2);}},{key:'circle',value:\n\n\nfunction circle(t){\nreturn 1 - Math.sqrt(1 - t * t);}},{key:'exp',value:\n\n\nfunction exp(t){\nreturn Math.pow(2,10 * (t - 1));}},{key:'elastic',value:\n\n\nfunction elastic(a,p){\nvar tau=Math.PI * 2;\n\n\nvar s;\nif(arguments.length < 2){\np = 0.45;}\n\nif(arguments.length){\ns = p / tau * Math.asin(1 / a);}else \n{\na = 1;\ns = p / 4;}\n\nreturn function(t){return 1 + a * Math.pow(2,-10 * t) * Math.sin((t - s) * tau / p);};}},{key:'back',value:\n\n\nfunction back(s){\nif(s === undefined){\ns = 1.70158;}\n\nreturn function(t){return t * t * ((s + 1) * t - s);};}},{key:'bounce',value:\n\n\nfunction bounce(t){\nif(t < 1 / 2.75){\nreturn 7.5625 * t * t;}\n\n\nif(t < 2 / 2.75){\nt -= 1.5 / 2.75;\nreturn 7.5625 * t * t + 0.75;}\n\n\nif(t < 2.5 / 2.75){\nt -= 2.25 / 2.75;\nreturn 7.5625 * t * t + 0.9375;}\n\n\nt -= 2.625 / 2.75;\nreturn 7.5625 * t * t + 0.984375;}},{key:'bezier',value:\n\n\nfunction bezier(\nx1,\ny1,\nx2,\ny2,\nepsilon)\n{\nif(epsilon === undefined){\n\n\nvar duration=500;\nepsilon = 1000 / 60 / duration / 4;}\n\n\nreturn _bezier(x1,y1,x2,y2,epsilon);}},{key:'in',value:\n\n\nfunction _in(\neasing)\n{\nreturn easing;}},{key:'out',value:\n\n\nfunction out(\neasing)\n{\nreturn function(t){return 1 - easing(1 - t);};}},{key:'inOut',value:\n\n\nfunction inOut(\neasing)\n{\nreturn function(t){\nif(t < 0.5){\nreturn easing(t * 2) / 2;}\n\nreturn 1 - easing((1 - t) * 2) / 2;};}}]);return Easing;})();\n\n\n\n\nvar ease=Easing.bezier(0.42,0,1,1);\n\nmodule.exports = Easing;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Easing\n * @flow\n */\n'use strict';\n\nvar bezier = require('bezier');\n\n/**\n * This class implements common easing functions. The math is pretty obscure,\n * but this cool website has nice visual illustrations of what they represent:\n * http://xaedes.de/dev/transitions/\n */\nclass Easing {\n static step0(n) {\n return n > 0 ? 1 : 0;\n }\n\n static step1(n) {\n return n >= 1 ? 1 : 0;\n }\n\n static linear(t) {\n return t;\n }\n\n static ease(t: number): number {\n return ease(t);\n }\n\n static quad(t) {\n return t * t;\n }\n\n static cubic(t) {\n return t * t * t;\n }\n\n static poly(n) {\n return (t) => Math.pow(t, n);\n }\n\n static sin(t) {\n return 1 - Math.cos(t * Math.PI / 2);\n }\n\n static circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n static exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n\n static elastic(a: number, p: number): (t: number) => number {\n var tau = Math.PI * 2;\n // flow isn't smart enough to figure out that s is always assigned to a\n // number before being used in the returned function\n var s: any;\n if (arguments.length < 2) {\n p = 0.45;\n }\n if (arguments.length) {\n s = p / tau * Math.asin(1 / a);\n } else {\n a = 1;\n s = p / 4;\n }\n return (t) => 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * tau / p);\n };\n\n static back(s: number): (t: number) => number {\n if (s === undefined) {\n s = 1.70158;\n }\n return (t) => t * t * ((s + 1) * t - s);\n };\n\n static bounce(t: number): number {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n\n if (t < 2 / 2.75) {\n t -= 1.5 / 2.75;\n return 7.5625 * t * t + 0.75;\n }\n\n if (t < 2.5 / 2.75) {\n t -= 2.25 / 2.75;\n return 7.5625 * t * t + 0.9375;\n }\n\n t -= 2.625 / 2.75;\n return 7.5625 * t * t + 0.984375;\n };\n\n static bezier(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n epsilon?: ?number,\n ): (t: number) => number {\n if (epsilon === undefined) {\n // epsilon determines the precision of the solved values\n // a good approximation is:\n var duration = 500; // duration of animation in milliseconds.\n epsilon = (1000 / 60 / duration) / 4;\n }\n\n return bezier(x1, y1, x2, y2, epsilon);\n }\n\n static in(\n easing: (t: number) => number,\n ): (t: number) => number {\n return easing;\n }\n\n static out(\n easing: (t: number) => number,\n ): (t: number) => number {\n return (t) => 1 - easing(1 - t);\n }\n\n static inOut(\n easing: (t: number) => number,\n ): (t: number) => number {\n return (t) => {\n if (t < 0.5) {\n return easing(t * 2) / 2;\n }\n return 1 - easing((1 - t) * 2) / 2;\n };\n }\n}\n\nvar ease = Easing.bezier(0.42, 0, 1, 1);\n\nmodule.exports = Easing;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Easing.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/bezier.js":{"data":{"code":"module.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports = function(x1,y1,x2,y2,epsilon){\n\nvar curveX=function(t){\nvar v=1 - t;\nreturn 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;};\n\n\nvar curveY=function(t){\nvar v=1 - t;\nreturn 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;};\n\n\nvar derivativeCurveX=function(t){\nvar v=1 - t;\nreturn 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (-t * t * t + 2 * v * t) * x2;};\n\n\nreturn function(t){\n\nvar x=t,t0,t1,t2,x2,d2,i;\n\n\nfor(t2 = x,i = 0;i < 8;i++) {\nx2 = curveX(t2) - x;\nif(Math.abs(x2) < epsilon)return curveY(t2);\nd2 = derivativeCurveX(t2);\nif(Math.abs(d2) < 1e-6)break;\nt2 = t2 - x2 / d2;}\n\n\nt0 = 0,t1 = 1,t2 = x;\n\nif(t2 < t0)return curveY(t0);\nif(t2 > t1)return curveY(t1);\n\n\nwhile(t0 < t1) {\nx2 = curveX(t2);\nif(Math.abs(x2 - x) < epsilon)return curveY(t2);\nif(x > x2)t0 = t2;else \nt1 = t2;\nt2 = (t1 - t0) * .5 + t0;}\n\n\n\nreturn curveY(t2);};};","sourceCode":"/**\n * https://github.com/arian/cubic-bezier\n *\n * MIT License\n *\n * Copyright (c) 2013 Arian Stolwijk\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @providesModule bezier\n * @nolint\n */\n\nmodule.exports = function(x1, y1, x2, y2, epsilon){\n\n var curveX = function(t){\n var v = 1 - t;\n return 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;\n };\n\n var curveY = function(t){\n var v = 1 - t;\n return 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;\n };\n\n var derivativeCurveX = function(t){\n var v = 1 - t;\n return 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (- t * t * t + 2 * v * t) * x2;\n };\n\n return function(t){\n\n var x = t, t0, t1, t2, x2, d2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++){\n x2 = curveX(t2) - x;\n if (Math.abs(x2) < epsilon) return curveY(t2);\n d2 = derivativeCurveX(t2);\n if (Math.abs(d2) < 1e-6) break;\n t2 = t2 - x2 / d2;\n }\n\n t0 = 0, t1 = 1, t2 = x;\n\n if (t2 < t0) return curveY(t0);\n if (t2 > t1) return curveY(t1);\n\n // Fallback to the bisection method for reliability.\n while (t0 < t1){\n x2 = curveX(t2);\n if (Math.abs(x2 - x) < epsilon) return curveY(t2);\n if (x > x2) t0 = t2;\n else t1 = t2;\n t2 = (t1 - t0) * .5 + t0;\n }\n\n // Failure\n return curveY(t2);\n\n };\n\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/bezier.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/requestAnimationFrame.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nemptyFunction=require('emptyFunction');\nvar nativeRequestAnimationFrame=require('nativeRequestAnimationFrame');\n\nvar lastTime=0;\n\nvar requestAnimationFrame=\nnativeRequestAnimationFrame || \nfunction(callback){\nvar currTime=Date.now();\nvar timeDelay=Math.max(0,16 - (currTime - lastTime));\nlastTime = currTime + timeDelay;\nreturn global.setTimeout(function(){\ncallback(Date.now());},\ntimeDelay);};\n\n\n\nrequestAnimationFrame(emptyFunction);\n\nmodule.exports = requestAnimationFrame;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule requestAnimationFrame\n */\n\nvar emptyFunction = require('emptyFunction');\nvar nativeRequestAnimationFrame = require('nativeRequestAnimationFrame');\n\nvar lastTime = 0;\n\nvar requestAnimationFrame =\n nativeRequestAnimationFrame ||\n function(callback) {\n var currTime = Date.now();\n var timeDelay = Math.max(0, 16 - (currTime - lastTime));\n lastTime = currTime + timeDelay;\n return global.setTimeout(function() {\n callback(Date.now());\n }, timeDelay);\n };\n\n// Works around a rare bug in Safari 6 where the first request is never invoked.\nrequestAnimationFrame(emptyFunction);\n\nmodule.exports = requestAnimationFrame;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/requestAnimationFrame.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/nativeRequestAnimationFrame.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nnativeRequestAnimationFrame=\nglobal.requestAnimationFrame || \nglobal.webkitRequestAnimationFrame || \nglobal.mozRequestAnimationFrame || \nglobal.oRequestAnimationFrame || \nglobal.msRequestAnimationFrame;\n\nmodule.exports = nativeRequestAnimationFrame;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule nativeRequestAnimationFrame\n */\n\nvar nativeRequestAnimationFrame =\n global.requestAnimationFrame ||\n global.webkitRequestAnimationFrame ||\n global.mozRequestAnimationFrame ||\n global.oRequestAnimationFrame ||\n global.msRequestAnimationFrame;\n\nmodule.exports = nativeRequestAnimationFrame;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/nativeRequestAnimationFrame.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppRegistry/AppRegistry.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar renderApplication=require('renderApplication');\n\nif(__DEV__){\n\n\nrequire('RCTRenderingPerf');}\n\n\nvar runnables={};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AppRegistry={\nregisterConfig:function(config){\nfor(var i=0;i < config.length;++i) {\nvar appConfig=config[i];\nif(appConfig.run){\nAppRegistry.registerRunnable(appConfig.appKey,appConfig.run);}else \n{\nAppRegistry.registerComponent(appConfig.appKey,appConfig.component);}}},\n\n\n\n\nregisterComponent:function(appKey,getComponentFunc){\nrunnables[appKey] = {\nrun:function(appParameters){return (\nrenderApplication(getComponentFunc(),appParameters.initialProps,appParameters.rootTag));}};\n\nreturn appKey;},\n\n\nregisterRunnable:function(appKey,func){\nrunnables[appKey] = {run:func};\nreturn appKey;},\n\n\nrunApplication:function(appKey,appParameters){\nconsole.log(\n'Running application \"' + appKey + '\" with appParams: ' + \nJSON.stringify(appParameters) + '. ' + \n'__DEV__ === ' + String(__DEV__) + \n', development-level warning are ' + (__DEV__?'ON':'OFF') + \n', performance optimizations are ' + (__DEV__?'OFF':'ON'));\n\ninvariant(\nrunnables[appKey] && runnables[appKey].run,\n'Application ' + appKey + ' has not been registered. This ' + \n'is either due to a require() error during initialization ' + \n'or failure to call AppRegistry.registerComponent.');\n\nrunnables[appKey].run(appParameters);}};\n\n\n\nmodule.exports = AppRegistry;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AppRegistry\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar renderApplication = require('renderApplication');\n\nif (__DEV__) {\n // In order to use Cmd+P to record/dump perf data, we need to make sure\n // this module is available in the bundle\n require('RCTRenderingPerf');\n}\n\nvar runnables = {};\n\ntype AppConfig = {\n appKey: string;\n component: ReactClass;\n run?: Function;\n};\n\n/**\n * `AppRegistry` is the JS entry point to running all React Native apps. App\n * root components should register themselves with\n * `AppRegistry.registerComponent`, then the native system can load the bundle\n * for the app and then actually run the app when it's ready by invoking\n * `AppRegistry.runApplication`.\n *\n * `AppRegistry` should be `require`d early in the `require` sequence to make\n * sure the JS execution environment is setup before other modules are\n * `require`d.\n */\nvar AppRegistry = {\n registerConfig: function(config: Array) {\n for (var i = 0; i < config.length; ++i) {\n var appConfig = config[i];\n if (appConfig.run) {\n AppRegistry.registerRunnable(appConfig.appKey, appConfig.run);\n } else {\n AppRegistry.registerComponent(appConfig.appKey, appConfig.component);\n }\n }\n },\n\n registerComponent: function(appKey: string, getComponentFunc: Function): string {\n runnables[appKey] = {\n run: (appParameters) =>\n renderApplication(getComponentFunc(), appParameters.initialProps, appParameters.rootTag)\n };\n return appKey;\n },\n\n registerRunnable: function(appKey: string, func: Function): string {\n runnables[appKey] = {run: func};\n return appKey;\n },\n\n runApplication: function(appKey: string, appParameters: any): void {\n console.log(\n 'Running application \"' + appKey + '\" with appParams: ' +\n JSON.stringify(appParameters) + '. ' +\n '__DEV__ === ' + String(__DEV__) +\n ', development-level warning are ' + (__DEV__ ? 'ON' : 'OFF') +\n ', performance optimizations are ' + (__DEV__ ? 'OFF' : 'ON')\n );\n invariant(\n runnables[appKey] && runnables[appKey].run,\n 'Application ' + appKey + ' has not been registered. This ' +\n 'is either due to a require() error during initialization ' +\n 'or failure to call AppRegistry.registerComponent.'\n );\n runnables[appKey].run(appParameters);\n },\n};\n\nmodule.exports = AppRegistry;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppRegistry/AppRegistry.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js":{"data":{"code":"'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;};\n\n\n\n\n\n\n\n\n\n\n\nvar Inspector=require('Inspector');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Subscribable=require('Subscribable');\nvar View=require('View');\nvar WarningBox=require('WarningBox');\n\nvar invariant=require('invariant');\n\nvar AppContainer=React.createClass({displayName:'AppContainer',\nmixins:[Subscribable.Mixin],\n\ngetInitialState:function(){\nreturn {inspector:null};},\n\n\ntoggleElementInspector:function(){\nvar inspector=this.state.inspector?\nnull:\nReact.createElement(Inspector,{\nrootTag:this.props.rootTag,\ninspectedViewTag:React.findNodeHandle(this.refs.main)});\n\nthis.setState({inspector:inspector});},\n\n\ncomponentDidMount:function(){\nthis.addListenerOn(\nRCTDeviceEventEmitter,\n'toggleElementInspector',\nthis.toggleElementInspector);},\n\n\n\nrender:function(){\nvar shouldRenderWarningBox=__DEV__ && console.yellowBoxEnabled;\nvar warningBox=shouldRenderWarningBox?React.createElement(WarningBox,null):null;\nreturn (\nReact.createElement(View,{style:styles.appContainer},\nReact.createElement(View,{collapsible:false,style:styles.appContainer,ref:'main'},\nthis.props.children),\n\nwarningBox,\nthis.state.inspector));}});\n\n\n\n\n\nfunction renderApplication(\nRootComponent,\ninitialProps,\nrootTag)\n{\ninvariant(\nrootTag,\n'Expect to have a valid rootTag, instead got ',rootTag);\n\nReact.render(\nReact.createElement(AppContainer,{rootTag:rootTag},\nReact.createElement(RootComponent,_extends({},\ninitialProps,{\nrootTag:rootTag}))),\n\n\nrootTag);}\n\n\n\nvar styles=StyleSheet.create({\nappContainer:{\nposition:'absolute',\nleft:0,\ntop:0,\nright:0,\nbottom:0}});\n\n\n\nmodule.exports = renderApplication;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule renderApplication\n */\n'use strict';\n\nvar Inspector = require('Inspector');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Subscribable = require('Subscribable');\nvar View = require('View');\nvar WarningBox = require('WarningBox');\n\nvar invariant = require('invariant');\n\nvar AppContainer = React.createClass({\n mixins: [Subscribable.Mixin],\n\n getInitialState: function() {\n return { inspector: null };\n },\n\n toggleElementInspector: function() {\n var inspector = this.state.inspector\n ? null\n : ;\n this.setState({inspector});\n },\n\n componentDidMount: function() {\n this.addListenerOn(\n RCTDeviceEventEmitter,\n 'toggleElementInspector',\n this.toggleElementInspector\n );\n },\n\n render: function() {\n var shouldRenderWarningBox = __DEV__ && console.yellowBoxEnabled;\n var warningBox = shouldRenderWarningBox ? : null;\n return (\n \n \n {this.props.children}\n \n {warningBox}\n {this.state.inspector}\n \n );\n }\n});\n\nfunction renderApplication(\n RootComponent: ReactClass,\n initialProps: P,\n rootTag: any\n) {\n invariant(\n rootTag,\n 'Expect to have a valid rootTag, instead got ', rootTag\n );\n React.render(\n \n \n ,\n rootTag\n );\n}\n\nvar styles = StyleSheet.create({\n appContainer: {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n});\n\nmodule.exports = renderApplication;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/Inspector.js":{"data":{"code":"'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;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}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;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar InspectorOverlay=require('InspectorOverlay');\nvar InspectorPanel=require('InspectorPanel');\nvar InspectorUtils=require('InspectorUtils');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar UIManager=require('NativeModules').UIManager;\nvar View=require('View');var \n\nInspector=(function(_React$Component){_inherits(Inspector,_React$Component);\nfunction Inspector(props){_classCallCheck(this,Inspector);\n_get(Object.getPrototypeOf(Inspector.prototype),'constructor',this).call(this,props);\nthis.state = {\npanelPos:'bottom',\ninspecting:true,\nperfing:false,\ninspected:null};}_createClass(Inspector,[{key:'setSelection',value:\n\n\n\nfunction setSelection(i){var _this=this;\nvar instance=this.state.hierarchy[i];\nvar publicInstance=instance.getPublicInstance();\nUIManager.measure(React.findNodeHandle(instance),function(x,y,width,height,left,top){\n_this.setState({\ninspected:{\nframe:{left:left,top:top,width:width,height:height},\nstyle:publicInstance.props?publicInstance.props.style:{}},\n\nselection:i});});}},{key:'onTouchInstance',value:\n\n\n\n\nfunction onTouchInstance(instance,frame,pointerY){\nvar hierarchy=InspectorUtils.getOwnerHierarchy(instance);\nvar publicInstance=instance.getPublicInstance();\nvar props=publicInstance.props || {};\nthis.setState({\npanelPos:pointerY > Dimensions.get('window').height / 2?'top':'bottom',\nselection:hierarchy.length - 1,\nhierarchy:hierarchy,\ninspected:{\nstyle:props.style || {},\nframe:frame}});}},{key:'setPerfing',value:\n\n\n\n\nfunction setPerfing(val){\nthis.setState({\nperfing:val,\ninspecting:false,\ninspected:null});}},{key:'setInspecting',value:\n\n\n\nfunction setInspecting(val){\nthis.setState({\ninspecting:val,\ninspected:null});}},{key:'render',value:\n\n\n\nfunction render(){\nvar panelContainerStyle=this.state.panelPos === 'bottom'?{bottom:0}:{top:0};\nreturn (\nReact.createElement(View,{style:styles.container,pointerEvents:'box-none'},\nthis.state.inspecting && \nReact.createElement(InspectorOverlay,{\nrootTag:this.props.rootTag,\ninspected:this.state.inspected,\ninspectedViewTag:this.props.inspectedViewTag,\nonTouchInstance:this.onTouchInstance.bind(this)}),\n\nReact.createElement(View,{style:[styles.panelContainer,panelContainerStyle]},\nReact.createElement(InspectorPanel,{\ninspecting:this.state.inspecting,\nperfing:this.state.perfing,\nsetPerfing:this.setPerfing.bind(this),\nsetInspecting:this.setInspecting.bind(this),\ninspected:this.state.inspected,\nhierarchy:this.state.hierarchy,\nselection:this.state.selection,\nsetSelection:this.setSelection.bind(this)}))));}}]);return Inspector;})(React.Component);\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nposition:'absolute',\nbackgroundColor:'transparent',\ntop:0,\nleft:0,\nright:0,\nbottom:0},\n\npanelContainer:{\nposition:'absolute',\nleft:0,\nright:0}});\n\n\n\nmodule.exports = Inspector;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Inspector\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar InspectorOverlay = require('InspectorOverlay');\nvar InspectorPanel = require('InspectorPanel');\nvar InspectorUtils = require('InspectorUtils');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar UIManager = require('NativeModules').UIManager;\nvar View = require('View');\n\nclass Inspector extends React.Component {\n constructor(props: Object) {\n super(props);\n this.state = {\n panelPos: 'bottom',\n inspecting: true,\n perfing: false,\n inspected: null,\n };\n }\n\n setSelection(i: number) {\n var instance = this.state.hierarchy[i];\n var publicInstance = instance.getPublicInstance();\n UIManager.measure(React.findNodeHandle(instance), (x, y, width, height, left, top) => {\n this.setState({\n inspected: {\n frame: {left, top, width, height},\n style: publicInstance.props ? publicInstance.props.style : {},\n },\n selection: i,\n });\n });\n }\n\n onTouchInstance(instance: Object, frame: Object, pointerY: number) {\n var hierarchy = InspectorUtils.getOwnerHierarchy(instance);\n var publicInstance = instance.getPublicInstance();\n var props = publicInstance.props || {};\n this.setState({\n panelPos: pointerY > Dimensions.get('window').height / 2 ? 'top' : 'bottom',\n selection: hierarchy.length - 1,\n hierarchy,\n inspected: {\n style: props.style || {},\n frame,\n },\n });\n }\n\n setPerfing(val: bool) {\n this.setState({\n perfing: val,\n inspecting: false,\n inspected: null,\n });\n }\n\n setInspecting(val: bool) {\n this.setState({\n inspecting: val,\n inspected: null\n });\n }\n\n render() {\n var panelContainerStyle = (this.state.panelPos === 'bottom') ? {bottom: 0} : {top: 0};\n return (\n \n {this.state.inspecting &&\n }\n \n \n \n \n );\n }\n}\n\nvar styles = StyleSheet.create({\n container: {\n position: 'absolute',\n backgroundColor: 'transparent',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n panelContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n },\n});\n\nmodule.exports = Inspector;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/Inspector.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar InspectorUtils=require('InspectorUtils');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar UIManager=require('NativeModules').UIManager;\nvar View=require('View');\nvar ElementBox=require('ElementBox');\n\nvar PropTypes=React.PropTypes;\n\n\n\n\n\nvar InspectorOverlay=React.createClass({displayName:'InspectorOverlay',\npropTypes:{\ninspectedViewTag:PropTypes.object,\nonTouchInstance:PropTypes.func.isRequired},\n\n\nfindViewForTouchEvent:function(e){var _this=this;var _e$nativeEvent$touches$0=\ne.nativeEvent.touches[0];var locationX=_e$nativeEvent$touches$0.locationX;var locationY=_e$nativeEvent$touches$0.locationY;\nUIManager.findSubviewIn(\nthis.props.inspectedViewTag,\n[locationX,locationY],\nfunction(nativeViewTag,left,top,width,height){\nvar instance=InspectorUtils.findInstanceByNativeTag(_this.props.rootTag,nativeViewTag);\nif(!instance){\nreturn;}\n\n_this.props.onTouchInstance(instance,{left:left,top:top,width:width,height:height},locationY);});},\n\n\n\n\nshouldSetResponser:function(e){\nthis.findViewForTouchEvent(e);\nreturn true;},\n\n\nrender:function(){\nvar content=null;\nif(this.props.inspected){\ncontent = React.createElement(ElementBox,{frame:this.props.inspected.frame,style:this.props.inspected.style});}\n\n\nreturn (\nReact.createElement(View,{\nonStartShouldSetResponder:this.shouldSetResponser,\nonResponderMove:this.findViewForTouchEvent,\nstyle:[styles.inspector,{height:Dimensions.get('window').height}]},\ncontent));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ninspector:{\nbackgroundColor:'transparent',\nposition:'absolute',\nleft:0,\ntop:0,\nright:0}});\n\n\n\nmodule.exports = InspectorOverlay;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorOverlay\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar InspectorUtils = require('InspectorUtils');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar UIManager = require('NativeModules').UIManager;\nvar View = require('View');\nvar ElementBox = require('ElementBox');\n\nvar PropTypes = React.PropTypes;\n\ntype EventLike = {\n nativeEvent: Object;\n};\n\nvar InspectorOverlay = React.createClass({\n propTypes: {\n inspectedViewTag: PropTypes.object,\n onTouchInstance: PropTypes.func.isRequired,\n },\n\n findViewForTouchEvent: function(e: EventLike) {\n var {locationX, locationY} = e.nativeEvent.touches[0];\n UIManager.findSubviewIn(\n this.props.inspectedViewTag,\n [locationX, locationY],\n (nativeViewTag, left, top, width, height) => {\n var instance = InspectorUtils.findInstanceByNativeTag(this.props.rootTag, nativeViewTag);\n if (!instance) {\n return;\n }\n this.props.onTouchInstance(instance, {left, top, width, height}, locationY);\n }\n );\n },\n\n shouldSetResponser: function(e: EventLike): bool {\n this.findViewForTouchEvent(e);\n return true;\n },\n\n render: function() {\n var content = null;\n if (this.props.inspected) {\n content = ;\n }\n\n return (\n \n {content}\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n inspector: {\n backgroundColor: 'transparent',\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n },\n});\n\nmodule.exports = InspectorOverlay;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementBox.js":{"data":{"code":"'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;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}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;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar View=require('View');\nvar StyleSheet=require('StyleSheet');\nvar BorderBox=require('BorderBox');\nvar resolveBoxStyle=require('resolveBoxStyle');\n\nvar flattenStyle=require('flattenStyle');var \n\nElementBox=(function(_React$Component){_inherits(ElementBox,_React$Component);function ElementBox(){_classCallCheck(this,ElementBox);_get(Object.getPrototypeOf(ElementBox.prototype),'constructor',this).apply(this,arguments);}_createClass(ElementBox,[{key:'render',value:\nfunction render(){\nvar style=flattenStyle(this.props.style) || {};\nvar margin=resolveBoxStyle('margin',style);\nvar padding=resolveBoxStyle('padding',style);\nvar frameStyle=this.props.frame;\nif(margin){\nframeStyle = {\ntop:frameStyle.top - margin.top,\nleft:frameStyle.left - margin.left,\nheight:frameStyle.height + margin.top + margin.bottom,\nwidth:frameStyle.width + margin.left + margin.right};}\n\n\nvar contentStyle={\nwidth:this.props.frame.width,\nheight:this.props.frame.height};\n\nif(padding){\ncontentStyle = {\nwidth:contentStyle.width - padding.left - padding.right,\nheight:contentStyle.height - padding.top - padding.bottom};}\n\n\nreturn (\nReact.createElement(View,{style:[styles.frame,frameStyle],pointerEvents:'none'},\nReact.createElement(BorderBox,{box:margin,style:styles.margin},\nReact.createElement(BorderBox,{box:padding,style:styles.padding},\nReact.createElement(View,{style:[styles.content,contentStyle]})))));}}]);return ElementBox;})(React.Component);\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nframe:{\nposition:'absolute'},\n\ncontent:{\nbackgroundColor:'rgba(200, 230, 255, 0.8)'},\n\npadding:{\nborderColor:'rgba(77, 255, 0, 0.3)'},\n\nmargin:{\nborderColor:'rgba(255, 132, 0, 0.3)'}});\n\n\n\nmodule.exports = ElementBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ElementBox\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar View = require('View');\nvar StyleSheet = require('StyleSheet');\nvar BorderBox = require('BorderBox');\nvar resolveBoxStyle = require('resolveBoxStyle');\n\nvar flattenStyle = require('flattenStyle');\n\nclass ElementBox extends React.Component {\n render() {\n var style = flattenStyle(this.props.style) || {};\n var margin = resolveBoxStyle('margin', style);\n var padding = resolveBoxStyle('padding', style);\n var frameStyle = this.props.frame;\n if (margin) {\n frameStyle = {\n top: frameStyle.top - margin.top,\n left: frameStyle.left - margin.left,\n height: frameStyle.height + margin.top + margin.bottom,\n width: frameStyle.width + margin.left + margin.right,\n };\n }\n var contentStyle = {\n width: this.props.frame.width,\n height: this.props.frame.height,\n };\n if (padding) {\n contentStyle = {\n width: contentStyle.width - padding.left - padding.right,\n height: contentStyle.height - padding.top - padding.bottom,\n };\n }\n return (\n \n \n \n \n \n \n \n );\n }\n}\n\nvar styles = StyleSheet.create({\n frame: {\n position: 'absolute',\n },\n content: {\n backgroundColor: 'rgba(200, 230, 255, 0.8)',\n },\n padding: {\n borderColor: 'rgba(77, 255, 0, 0.3)',\n },\n margin: {\n borderColor: 'rgba(255, 132, 0, 0.3)',\n },\n});\n\nmodule.exports = ElementBox;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementBox.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BorderBox.js":{"data":{"code":"'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;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}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;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar View=require('View');var \n\nBorderBox=(function(_React$Component){_inherits(BorderBox,_React$Component);function BorderBox(){_classCallCheck(this,BorderBox);_get(Object.getPrototypeOf(BorderBox.prototype),'constructor',this).apply(this,arguments);}_createClass(BorderBox,[{key:'render',value:\nfunction render(){\nvar box=this.props.box;\nif(!box){\nreturn this.props.children;}\n\nvar style={\nborderTopWidth:box.top,\nborderBottomWidth:box.bottom,\nborderLeftWidth:box.left,\nborderRightWidth:box.right};\n\nreturn (\nReact.createElement(View,{style:[style,this.props.style]},\nthis.props.children));}}]);return BorderBox;})(React.Component);\n\n\n\n\n\nmodule.exports = BorderBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BorderBox\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar View = require('View');\n\nclass BorderBox extends React.Component {\n render() {\n var box = this.props.box;\n if (!box) {\n return this.props.children;\n }\n var style = {\n borderTopWidth: box.top,\n borderBottomWidth: box.bottom,\n borderLeftWidth: box.left,\n borderRightWidth: box.right,\n };\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nmodule.exports = BorderBox;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BorderBox.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/resolveBoxStyle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction resolveBoxStyle(prefix,style){\nvar res={};\nvar subs=['top','left','bottom','right'];\nvar set=false;\nsubs.forEach(function(sub){\nres[sub] = style[prefix] || 0;});\n\nif(style[prefix]){\nset = true;}\n\nif(style[prefix + 'Vertical']){\nres.top = res.bottom = style[prefix + 'Vertical'];\nset = true;}\n\nif(style[prefix + 'Horizontal']){\nres.left = res.right = style[prefix + 'Horizontal'];\nset = true;}\n\nsubs.forEach(function(sub){\nvar val=style[prefix + capFirst(sub)];\nif(val){\nres[sub] = val;\nset = true;}});\n\n\nif(!set){\nreturn;}\n\nreturn res;}\n\n\nfunction capFirst(text){\nreturn text[0].toUpperCase() + text.slice(1);}\n\n\nmodule.exports = resolveBoxStyle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule resolveBoxStyle\n * @flow\n */\n'use strict';\n\n/**\n * Resolve a style property into it's component parts, e.g.\n *\n * resolveProperties('margin', {margin: 5, marginBottom: 10})\n * ->\n * {top: 5, left: 5, right: 5, bottom: 10}\n *\n * If none are set, returns false.\n */\nfunction resolveBoxStyle(prefix: string, style: Object): ?Object {\n var res = {};\n var subs = ['top', 'left', 'bottom', 'right'];\n var set = false;\n subs.forEach(sub => {\n res[sub] = style[prefix] || 0;\n });\n if (style[prefix]) {\n set = true;\n }\n if (style[prefix + 'Vertical']) {\n res.top = res.bottom = style[prefix + 'Vertical'];\n set = true;\n }\n if (style[prefix + 'Horizontal']) {\n res.left = res.right = style[prefix + 'Horizontal'];\n set = true;\n }\n subs.forEach(sub => {\n var val = style[prefix + capFirst(sub)];\n if (val) {\n res[sub] = val;\n set = true;\n }\n });\n if (!set) {\n return;\n }\n return res;\n}\n\nfunction capFirst(text) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\nmodule.exports = resolveBoxStyle;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/resolveBoxStyle.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorPanel.js":{"data":{"code":"'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;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}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;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\nvar ElementProperties=require('ElementProperties');\nvar PerformanceOverlay=require('PerformanceOverlay');\nvar TouchableHighlight=require('TouchableHighlight');\n\nvar PropTypes=React.PropTypes;var \n\nInspectorPanel=(function(_React$Component){_inherits(InspectorPanel,_React$Component);function InspectorPanel(){_classCallCheck(this,InspectorPanel);_get(Object.getPrototypeOf(InspectorPanel.prototype),'constructor',this).apply(this,arguments);}_createClass(InspectorPanel,[{key:'renderWaiting',value:\nfunction renderWaiting(){\nif(this.props.inspecting){\nreturn (\nReact.createElement(Text,{style:styles.waitingText},'Tap something to inspect it'));}\n\n\n\n\nreturn React.createElement(Text,{style:styles.waitingText},'Nothing is inspected');}},{key:'render',value:\n\n\nfunction render(){\nvar contents;\nif(this.props.inspected){\ncontents = \nReact.createElement(ElementProperties,{\nstyle:this.props.inspected.style,\nframe:this.props.inspected.frame,\nhierarchy:this.props.hierarchy,\nselection:this.props.selection,\nsetSelection:this.props.setSelection});}else \n\n\nif(this.props.perfing){\ncontents = \nReact.createElement(PerformanceOverlay,null);}else \n\n{\ncontents = \nReact.createElement(View,{style:styles.waiting},\nthis.renderWaiting());}\n\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\ncontents,\nReact.createElement(View,{style:styles.buttonRow},\nReact.createElement(Button,{\ntitle:'Inspect',\npressed:this.props.inspecting,\nonClick:this.props.setInspecting}),\n\nReact.createElement(Button,{title:'Perf',\npressed:this.props.perfing,\nonClick:this.props.setPerfing}))));}}]);return InspectorPanel;})(React.Component);\n\n\n\n\n\n\n\nInspectorPanel.propTypes = {\ninspecting:PropTypes.bool,\nsetInspecting:PropTypes.func,\ninspected:PropTypes.object,\nperfing:PropTypes.bool,\nsetPerfing:PropTypes.func};var \n\n\nButton=(function(_React$Component2){_inherits(Button,_React$Component2);function Button(){_classCallCheck(this,Button);_get(Object.getPrototypeOf(Button.prototype),'constructor',this).apply(this,arguments);}_createClass(Button,[{key:'render',value:\nfunction render(){var _this=this;\nreturn (\nReact.createElement(TouchableHighlight,{onPress:function(){return _this.props.onClick(!_this.props.pressed);},style:[\nstyles.button,\nthis.props.pressed && styles.buttonPressed]},\n\nReact.createElement(Text,{style:styles.buttonText},this.props.title)));}}]);return Button;})(React.Component);\n\n\n\n\n\nvar styles=StyleSheet.create({\nbuttonRow:{\nflexDirection:'row'},\n\nbutton:{\nbackgroundColor:'rgba(0, 0, 0, 0.3)',\nmargin:2,\nheight:30,\njustifyContent:'center',\nalignItems:'center'},\n\nbuttonPressed:{\nbackgroundColor:'rgba(255, 255, 255, 0.3)'},\n\nbuttonText:{\ntextAlign:'center',\ncolor:'white',\nmargin:5},\n\ncontainer:{\nbackgroundColor:'rgba(0, 0, 0, 0.7)'},\n\nwaiting:{\nheight:100},\n\nwaitingText:{\nfontSize:20,\ntextAlign:'center',\nmarginVertical:20}});\n\n\n\nmodule.exports = InspectorPanel;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorPanel\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\nvar ElementProperties = require('ElementProperties');\nvar PerformanceOverlay = require('PerformanceOverlay');\nvar TouchableHighlight = require('TouchableHighlight');\n\nvar PropTypes = React.PropTypes;\n\nclass InspectorPanel extends React.Component {\n renderWaiting() {\n if (this.props.inspecting) {\n return (\n \n Tap something to inspect it\n \n );\n }\n return Nothing is inspected;\n }\n\n render() {\n var contents;\n if (this.props.inspected) {\n contents = (\n \n );\n } else if (this.props.perfing) {\n contents = (\n \n );\n } else {\n contents = (\n \n {this.renderWaiting()}\n \n );\n }\n return (\n \n {contents}\n \n \n