diff --git a/163bb04f0a569d04553dccee17ea42b9 b/163bb04f0a569d04553dccee17ea42b9 deleted file mode 100644 index 3a06ccee..00000000 --- a/163bb04f0a569d04553dccee17ea42b9 +++ /dev/null @@ -1 +0,0 @@ -{"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Activity/__mocks__/chalk.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Cache/__mocks__/Cache.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/worker/constant-folding.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/worker/extract-dependencies.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/worker/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/worker/inline.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/worker/minify.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/__mocks__/lodash.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/__mocks__/q.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/__mocks__/worker.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/lib/__mocks__/declareOpts.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/Array.es6.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Array.es6","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"if(\n\n\n\n\n\n\n\n\n\n\n\n\n!Array.from){\nArray.from=function(arrayLike){\nif(arrayLike==null){\nthrow new TypeError('Object is null or undefined');}\n\n\n\nvar mapFn=arguments[1];\nvar thisArg=arguments[2];\n\nvar C=this;\nvar items=Object(arrayLike);\nvar symbolIterator=typeof Symbol==='function'?typeof Symbol==='function'?\nSymbol.iterator:'@@iterator':\n'@@iterator';\nvar mapping=typeof mapFn==='function';\nvar usingIterator=typeof items[symbolIterator]==='function';\nvar key=0;\nvar ret;\nvar value;\n\nif(usingIterator){\nret=typeof C==='function'?\nnew C():\n[];\nvar it=items[symbolIterator]();\nvar next;\n\nwhile(!(next=it.next()).done){\nvalue=next.value;\n\nif(mapping){\nvalue=mapFn.call(thisArg,value,key);}\n\n\nret[key]=value;\nkey+=1;}\n\n\nret.length=key;\nreturn ret;}\n\n\nvar len=items.length;\nif(isNaN(len)||len<0){\nlen=0;}\n\n\nret=typeof C==='function'?\nnew C(len):\nnew Array(len);\n\nwhile(key>>0;\nfor(var i=0;i>> 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\nif (!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\nif (!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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/babelHelpers.js":{"metadata":{"mtime":1463609891000},"data":{"k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nbabelHelpers=global.babelHelpers={};\n\nbabelHelpers.createRawReactElement=function(){\nvar REACT_ELEMENT_TYPE=typeof Symbol===\"function\"&&(typeof Symbol===\"function\"?Symbol.for:\"@@for\")&&(typeof Symbol===\"function\"?Symbol.for:\"@@for\")(\"react.element\")||0xeac7;\nreturn function createRawReactElement(type,key,props){\nreturn {\n$$typeof:REACT_ELEMENT_TYPE,\ntype:type,\nkey:key,\nref:null,\nprops:props,\n_owner:null};};}();\n\n\n\n\nbabelHelpers.classCallCheck=function(instance,Constructor){\nif(!(instance instanceof Constructor)){\nthrow new TypeError(\"Cannot call a class as a function\");}};\n\n\n\nbabelHelpers.createClass=function(){\nfunction defineProperties(target,props){\nfor(var i=0;i=0)continue;\nif(!Object.prototype.hasOwnProperty.call(obj,i))continue;\ntarget[i]=obj[i];}\n\n\nreturn target;};\n\n\nbabelHelpers.possibleConstructorReturn=function(self,call){\nif(!self){\nthrow new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");}\n\n\nreturn call&&(typeof call===\"object\"||typeof call===\"function\")?call:self;};\n\n\nbabelHelpers.slicedToArray=function(){\nfunction sliceIterator(arr,i){\nvar _arr=[];\nvar _n=true;\nvar _d=false;\nvar _e=undefined;\n\ntry{\nfor(var _i=arr[typeof Symbol===\"function\"?Symbol.iterator:\"@@iterator\"](),_s;!(_n=(_s=_i.next()).done);_n=true){\n_arr.push(_s.value);\n\nif(i&&_arr.length===i)break;}}\n\ncatch(err){\n_d=true;\n_e=err;}finally \n{\ntry{\nif(!_n&&_i[\"return\"])_i[\"return\"]();}finally \n{\nif(_d)throw _e;}}\n\n\n\nreturn _arr;}\n\n\nreturn function(arr,i){\nif(Array.isArray(arr)){\nreturn arr;}else \nif((typeof Symbol===\"function\"?Symbol.iterator:\"@@iterator\") in Object(arr)){\nreturn sliceIterator(arr,i);}else \n{\nthrow new TypeError(\"Invalid attempt to destructure non-iterable instance\");}};}();\n\n\n\n\nbabelHelpers.taggedTemplateLiteral=function(strings,raw){\nreturn Object.freeze(Object.defineProperties(strings,{\nraw:{\nvalue:Object.freeze(raw)}}));};\n\n\n\n\nbabelHelpers.toArray=function(arr){\nreturn Array.isArray(arr)?arr:Array.from(arr);};\n\n\nbabelHelpers.toConsumableArray=function(arr){\nif(Array.isArray(arr)){\nfor(var i=0,arr2=Array(arr.length);i= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nbabelHelpers.possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nbabelHelpers.slicedToArray = (function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n})();\n\nbabelHelpers.taggedTemplateLiteral = function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n};\n\nbabelHelpers.toArray = function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n};\n\nbabelHelpers.toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/console.js":{"metadata":{"mtime":1463609891000},"data":{"name":"console","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ninspect=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-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,\ninfo:1,\nwarn:2,\nerror:3};\n\n\nfunction setupConsole(global){\nif(!global.nativeLoggingHook){\nreturn;}\n\n\nfunction getNativeLogFunction(level){\nreturn function(){\nvar str;\nif(arguments.length===1&&typeof arguments[0]==='string'){\nstr=arguments[0];}else \n{\nstr=Array.prototype.map.call(arguments,function(arg){\nreturn inspect(arg,{depth:10});}).\njoin(', ');}\n\n\nvar logLevel=level;\nif(str.slice(0,9)==='Warning: '&&logLevel>=LOG_LEVELS.error){\n\n\n\nlogLevel=LOG_LEVELS.warn;}\n\nglobal.nativeLoggingHook(str,logLevel);};}\n\n\n\nvar repeat=function repeat(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.info);\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= 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\nvar OBJECT_COLUMN_NAME = '(index)';\nvar LOG_LEVELS = {\n trace: 0,\n info: 1,\n warn: 2,\n error: 3\n};\n\nfunction setupConsole(global) {\n if (!global.nativeLoggingHook) {\n return;\n }\n\n function getNativeLogFunction(level) {\n return function() {\n var str;\n if (arguments.length === 1 && typeof arguments[0] === 'string') {\n str = arguments[0];\n } else {\n str = Array.prototype.map.call(arguments, function(arg) {\n return inspect(arg, {depth: 10});\n }).join(', ');\n }\n\n var logLevel = level;\n if (str.slice(0, 9) === 'Warning: ' && logLevel >= LOG_LEVELS.error) {\n // React warnings use console.error so that a stack trace is shown,\n // but we don't (currently) want these to show a redbox\n // (Note: Logic duplicated in ExceptionsManager.js.)\n logLevel = LOG_LEVELS.warn;\n }\n global.nativeLoggingHook(str, logLevel);\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.info);\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.info);\n }\n\n // Preserve the original `console` as `originalConsole`\n var originalConsole = global.console;\n var descriptor = Object.getOwnPropertyDescriptor(global, 'console');\n if (descriptor) {\n Object.defineProperty(global, 'originalConsole', descriptor);\n }\n\n var console = {\n error: getNativeLogFunction(LOG_LEVELS.error),\n info: getNativeLogFunction(LOG_LEVELS.info),\n log: getNativeLogFunction(LOG_LEVELS.info),\n warn: getNativeLogFunction(LOG_LEVELS.warn),\n trace: getNativeLogFunction(LOG_LEVELS.trace),\n debug: getNativeLogFunction(LOG_LEVELS.trace),\n table: consoleTablePolyfill\n };\n\n // don't reassign to the original descriptor. breaks on ios7\n Object.defineProperty(global, 'console', {\n value: console,\n configurable: descriptor ? descriptor.configurable : true,\n enumerable: descriptor ? descriptor.enumerable : true,\n writable: descriptor ? descriptor.writable : true,\n });\n\n // If available, also call the original `console` method since that is\n // sometimes useful. Ex: on OS X, this will let you see rich output in\n // the Safari Web Inspector console.\n if (__DEV__ && originalConsole) {\n Object.keys(console).forEach(methodName => {\n var reactNativeMethod = console[methodName];\n if (originalConsole[methodName]) {\n console[methodName] = function() {\n originalConsole[methodName](...arguments);\n reactNativeMethod.apply(console, arguments);\n };\n }\n });\n }\n}\n\nif (typeof module !== 'undefined') {\n module.exports = setupConsole;\n} else {\n setupConsole(global);\n}\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/error-guard.js":{"metadata":{"mtime":1463609891000},"data":{"k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nErrorUtils={\n_inGuard:0,\n_globalHandler:null,\nsetGlobalHandler:function setGlobalHandler(fun){\nErrorUtils._globalHandler=fun;},\n\ngetGlobalHandler:function getGlobalHandler(){\nreturn ErrorUtils._globalHandler;},\n\nreportError:function reportError(error){\nErrorUtils._globalHandler&&ErrorUtils._globalHandler(error);},\n\nreportFatalError:function reportFatalError(error){\nErrorUtils._globalHandler&&ErrorUtils._globalHandler(error,true);},\n\napplyWithGuard:function applyWithGuard(fun,context,args){\ntry{\nErrorUtils._inGuard++;\nreturn fun.apply(context,args);}\ncatch(e){\nErrorUtils.reportError(e);}finally \n{\nErrorUtils._inGuard--;}},\n\n\napplyWithGuardIfNeeded:function applyWithGuardIfNeeded(fun,context,args){\nif(ErrorUtils.inGuard()){\nreturn fun.apply(context,args);}else \n{\nErrorUtils.applyWithGuard(fun,context,args);}},\n\n\ninGuard:function inGuard(){\nreturn ErrorUtils._inGuard;},\n\nguard:function guard(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\n\nfunction setupErrorGuard(){\nvar onError=function onError(e){\nglobal.console.error('Error: '+e.message+', stack:\\n'+e.stack);};\n\nglobal.ErrorUtils.setGlobalHandler(onError);}\n\n\nsetupErrorGuard();","map":null,"source":"/**\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 strict:0 */\nvar ErrorUtils = {\n _inGuard: 0,\n _globalHandler: null,\n setGlobalHandler: function(fun) {\n ErrorUtils._globalHandler = fun;\n },\n getGlobalHandler: function() {\n return ErrorUtils._globalHandler;\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};\nglobal.ErrorUtils = ErrorUtils;\n\n/**\n * This is the error handler that is called when we encounter an exception\n * when loading a module. This will report any errors encountered before\n * ExceptionsManager is configured.\n */\nfunction setupErrorGuard() {\n var onError = function(e) {\n global.console.error('Error: ' + e.message + ', stack:\\n' + e.stack);\n };\n global.ErrorUtils.setGlobalHandler(onError);\n}\n\nsetupErrorGuard();\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/Number.es6.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Number.es6","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"if(\n\n\n\n\n\n\n\n\n\n\n\nNumber.EPSILON===undefined){\nObject.defineProperty(Number,'EPSILON',{\nvalue:Math.pow(2,-52)});}\n\n\nif(Number.MAX_SAFE_INTEGER===undefined){\nObject.defineProperty(Number,'MAX_SAFE_INTEGER',{\nvalue:Math.pow(2,53)-1});}\n\n\nif(Number.MIN_SAFE_INTEGER===undefined){\nObject.defineProperty(Number,'MIN_SAFE_INTEGER',{\nvalue:-(Math.pow(2,53)-1)});}\n\n\nif(!Number.isNaN){(function(){\n\nvar globalIsNaN=global.isNaN;\nObject.defineProperty(Number,'isNaN',{\nconfigurable:true,\nenumerable:false,\nvalue:function isNaN(value){\nreturn typeof value==='number'&&globalIsNaN(value);},\n\nwritable:true});})();}","map":null,"id":"Number.es6","source":"/**\n * Copyright (c) 2013-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 * @provides Number.es6\n * @polyfill\n */\n\nif (Number.EPSILON === undefined) {\n Object.defineProperty(Number, 'EPSILON', {\n value: Math.pow(2, -52),\n });\n}\nif (Number.MAX_SAFE_INTEGER === undefined) {\n Object.defineProperty(Number, 'MAX_SAFE_INTEGER', {\n value: Math.pow(2, 53) - 1,\n });\n}\nif (Number.MIN_SAFE_INTEGER === undefined) {\n Object.defineProperty(Number, 'MIN_SAFE_INTEGER', {\n value: -(Math.pow(2, 53) - 1),\n });\n}\nif (!Number.isNaN) {\n // https://github.com/dherman/tc39-codex-wiki/blob/master/data/es6/number/index.md#polyfill-for-numberisnan\n const globalIsNaN = global.isNaN;\n Object.defineProperty(Number, 'isNaN', {\n configurable: true,\n enumerable: false,\n value: function isNaN(value) {\n return typeof value === 'number' && globalIsNaN(value);\n },\n writable: true,\n });\n}\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/Object.es7.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Object.es7","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"(\n\n\n\n\n\n\nfunction(){\n\nvar hasOwnProperty=Object.prototype.hasOwnProperty;\n\n\n\n\n\n\nif(typeof Object.entries!=='function'){\nObject.entries=function(object){\n\nif(object==null){\nthrow new TypeError('Object.entries called on non-object');}\n\n\nvar entries=[];\nfor(var key in object){\nif(hasOwnProperty.call(object,key)){\nentries.push([key,object[key]]);}}\n\n\nreturn entries;};}\n\n\n\n\n\n\n\n\nif(typeof Object.values!=='function'){\nObject.values=function(object){\n\nif(object==null){\nthrow new TypeError('Object.values called on non-object');}\n\n\nvar values=[];\nfor(var key in object){\nif(hasOwnProperty.call(object,key)){\nvalues.push(object[key]);}}\n\n\nreturn values;};}})();","map":null,"id":"Object.es7","source":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @provides Object.es7\n * @polyfill\n */\n\n(function() {\n\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n /**\n * Returns an array of the given object's own enumerable entries.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n *\n */\n if (typeof Object.entries !== 'function') {\n Object.entries = function(object) {\n // `null` and `undefined` values are not allowed.\n if (object == null) {\n throw new TypeError('Object.entries called on non-object');\n }\n\n let entries = [];\n for (let key in object) {\n if (hasOwnProperty.call(object, key)) {\n entries.push([key, object[key]]);\n }\n }\n return entries;\n };\n }\n\n /**\n * Returns an array of the given object's own enumerable entries.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n */\n if (typeof Object.values !== 'function') {\n Object.values = function(object) {\n // `null` and `undefined` values are not allowed.\n if (object == null) {\n throw new TypeError('Object.values called on non-object');\n }\n\n let values = [];\n for (let key in object) {\n if (hasOwnProperty.call(object, key)) {\n values.push(object[key]);\n }\n }\n return values;\n };\n }\n\n})();"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/polyfills.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Object.es6","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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 {}, endEvent: () => {} };\n\n // HOT MODULE RELOADING\n var createHotReloadingObject = function() {\n const hot = {\n acceptCallback: null,\n accept: callback => { hot.acceptCallback = callback; },\n };\n return hot;\n };\n\n const acceptAll = function(dependentModules, inverseDependencies) {\n if (!dependentModules || dependentModules.length === 0) {\n return true;\n }\n\n const notAccepted = dependentModules.filter(\n module => !accept(module, /*factory*/ undefined, inverseDependencies));\n\n const parents = [];\n for (let i = 0; i < notAccepted.length; i++) {\n // if the module has no parents then the change cannot be hot loaded\n if (inverseDependencies[notAccepted[i]].length === 0) {\n return false;\n }\n\n parents.pushAll(inverseDependencies[notAccepted[i]]);\n }\n\n return acceptAll(parents, inverseDependencies);\n };\n\n const accept = function(id, factory, inverseDependencies) {\n const mod = modules[id];\n\n if (!mod) {\n define(id, factory);\n return true; // new modules don't need to be accepted\n }\n\n const {hot} = mod;\n if (!hot) {\n console.warn(\n 'Cannot accept module because Hot Module Replacement ' +\n 'API was not installed.'\n );\n return false;\n }\n\n // replace and initialize factory\n if (factory) {\n mod.factory = factory;\n }\n mod.isInitialized = false;\n require(id);\n\n if (hot.acceptCallback) {\n hot.acceptCallback();\n return true;\n } else {\n // need to have inverseDependencies to bubble up accept\n if (!inverseDependencies) {\n throw new Error('Undefined `inverseDependencies`');\n }\n\n // accept parent modules recursively up until all siblings are accepted\n return acceptAll(inverseDependencies[id], inverseDependencies);\n }\n };\n\n global.__accept = accept;\n}\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/String.prototype.es6.js":{"metadata":{"mtime":1463609891000},"data":{"name":"String.prototype.es6","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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.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;};}\n\n\n\nif(!String.prototype.includes){\nString.prototype.includes=function(search,start){\n'use strict';\nif(typeof start!=='number'){\nstart=0;}\n\n\nif(start+search.length>this.length){\nreturn false;}else \n{\nreturn this.indexOf(search,start)!==-1;}};}","map":null,"id":"String.prototype.es6","source":"/**\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.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\nif (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n 'use strict';\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > this.length) {\n return false;\n } else {\n return this.indexOf(search, start) !== -1;\n }\n };\n}\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js":{"metadata":{"mtime":1463609891000},"data":{"name":"DocumentSelectionState","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["mixInEventEmitter"],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmixInEventEmitter=require('mixInEventEmitter');var \n\n\n\n\n\n\n\n\n\n\nDocumentSelectionState=function(){\n\n\n\n\nfunction DocumentSelectionState(anchor,focus){babelHelpers.classCallCheck(this,DocumentSelectionState);\nthis._anchorOffset=anchor;\nthis._focusOffset=focus;\nthis._hasFocus=false;}babelHelpers.createClass(DocumentSelectionState,[{key:'update',value:function update(\n\n\n\n\n\n\n\n\n\nanchor,focus){\nif(this._anchorOffset!==anchor||this._focusOffset!==focus){\nthis._anchorOffset=anchor;\nthis._focusOffset=focus;\nthis.emit('update');}}},{key:'constrainLength',value:function constrainLength(\n\n\n\n\n\n\n\n\n\nmaxLength){\nthis.update(\nMath.min(this._anchorOffset,maxLength),\nMath.min(this._focusOffset,maxLength));}},{key:'focus',value:function focus()\n\n\n\n{\nif(!this._hasFocus){\nthis._hasFocus=true;\nthis.emit('focus');}}},{key:'blur',value:function blur()\n\n\n\n{\nif(this._hasFocus){\nthis._hasFocus=false;\nthis.emit('blur');}}},{key:'hasFocus',value:function hasFocus()\n\n\n\n\n\n\n{\nreturn this._hasFocus;}},{key:'isCollapsed',value:function isCollapsed()\n\n\n\n\n\n{\nreturn this._anchorOffset===this._focusOffset;}},{key:'isBackward',value:function isBackward()\n\n\n\n\n\n{\nreturn this._anchorOffset>this._focusOffset;}},{key:'getAnchorOffset',value:function getAnchorOffset()\n\n\n\n\n\n{\nreturn this._hasFocus?this._anchorOffset:null;}},{key:'getFocusOffset',value:function getFocusOffset()\n\n\n\n\n\n{\nreturn this._hasFocus?this._focusOffset:null;}},{key:'getStartOffset',value:function getStartOffset()\n\n\n\n\n\n{\nreturn (\nthis._hasFocus?Math.min(this._anchorOffset,this._focusOffset):null);}},{key:'getEndOffset',value:function getEndOffset()\n\n\n\n\n\n\n{\nreturn (\nthis._hasFocus?Math.max(this._anchorOffset,this._focusOffset):null);}},{key:'overlaps',value:function overlaps(\n\n\n\n\n\n\n\n\nstart,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;","map":null,"id":"DocumentSelectionState","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimers.js":{"metadata":{"mtime":1463609891000},"data":{"name":"JSTimers","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[49,104],"dependencies":["NativeModules","JSTimersExecution"],"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 _getFreeIndex(){\nvar freeIndex=JSTimersExecution.timerIDs.indexOf(null);\nif(freeIndex===-1){\nfreeIndex=JSTimersExecution.timerIDs.length;}\n\nreturn freeIndex;},\n\n\n\n\n\n\nsetTimeout:function setTimeout(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||0,Date.now(),false);\nreturn newID;},\n\n\n\n\n\n\nsetInterval:function setInterval(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||0,Date.now(),true);\nreturn newID;},\n\n\n\n\n\n\nsetImmediate:function setImmediate(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 requestAnimationFrame(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 clearTimeout(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearInterval:function clearInterval(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearImmediate:function clearImmediate(timerID){\nJSTimers._clearTimerID(timerID);\nvar index=JSTimersExecution.immediates.indexOf(timerID);\nif(index!==-1){\nJSTimersExecution.immediates.splice(index,1);}},\n\n\n\ncancelAnimationFrame:function cancelAnimationFrame(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\n_clearTimerID:function _clearTimerID(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;","map":null,"id":"JSTimers","source":"/**\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 || 0, 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 || 0, 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 var index = JSTimersExecution.immediates.indexOf(timerID);\n if (index !== -1) {\n JSTimersExecution.immediates.splice(index, 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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimersExecution.js":{"metadata":{"mtime":1463609891000},"data":{"name":"JSTimersExecution","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[47,92,142,190,232,1803,2556],"dependencies":["fbjs/lib/invariant","fbjs/lib/keyMirror","fbjs/lib/performanceNow","fbjs/lib/warning","Systrace","JSTimers"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\nvar keyMirror=require('fbjs/lib/keyMirror');\nvar performanceNow=require('fbjs/lib/performanceNow');\nvar warning=require('fbjs/lib/warning');\nvar Systrace=require('Systrace');\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 callTimer(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 callTimers(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;ii0){\nvar passImmediates=JSTimersExecution.immediates.slice();\nJSTimersExecution.immediates=[];\n\n\n\nfor(var i=0;i0;},\n\n\n\n\n\n\ncallImmediates:function callImmediates(){\nJSTimersExecution.errors=null;\nwhile(JSTimersExecution.callImmediatesPass()){}\nif(JSTimersExecution.errors){\nJSTimersExecution.errors.forEach(function(error){return (\nrequire('JSTimers').setTimeout(function(){throw error;},0));});}},\n\n\n\n\n_clearIndex:function _clearIndex(i){\nJSTimersExecution.timerIDs[i]=null;\nJSTimersExecution.callbacks[i]=null;\nJSTimersExecution.types[i]=null;}};\n\n\n\nmodule.exports=JSTimersExecution;","map":null,"id":"JSTimersExecution","source":"/**\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('fbjs/lib/invariant');\nvar keyMirror = require('fbjs/lib/keyMirror');\nvar performanceNow = require('fbjs/lib/performanceNow');\nvar warning = require('fbjs/lib/warning');\nvar Systrace = require('Systrace');\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 * Performs a single pass over the enqueued immediates. Returns whether\n * more immediates are queued up (can be used as a condition a while loop).\n */\n callImmediatesPass: function() {\n Systrace.beginEvent('JSTimersExecution.callImmediatesPass()');\n\n // The main reason to extract a single pass is so that we can track\n // in the system trace\n if (JSTimersExecution.immediates.length > 0) {\n var passImmediates = JSTimersExecution.immediates.slice();\n JSTimersExecution.immediates = [];\n\n // Use for loop rather than forEach as per @vjeux's advice\n // https://github.com/facebook/react-native/commit/c8fd9f7588ad02d2293cac7224715f4af7b0f352#commitcomment-14570051\n for (var i = 0; i < passImmediates.length; ++i) {\n JSTimersExecution.callTimer(passImmediates[i]);\n }\n }\n\n Systrace.endEvent();\n\n return JSTimersExecution.immediates.length > 0;\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.callImmediatesPass()) {}\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationContext.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationContext","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[70,125,183,223,258,307],"dependencies":["NavigationEvent","NavigationEventEmitter","NavigationTreeNode","Set","fbjs/lib/emptyFunction","fbjs/lib/invariant"],"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 NavigationEvent=require('NavigationEvent');\nvar NavigationEventEmitter=require('NavigationEventEmitter');\nvar NavigationTreeNode=require('NavigationTreeNode');\n\nvar Set=require('Set');\n\nvar emptyFunction=require('fbjs/lib/emptyFunction');\nvar invariant=require('fbjs/lib/invariant');var \n\n\n\n\nAT_TARGET=\n\n\nNavigationEvent.AT_TARGET;var BUBBLING_PHASE=NavigationEvent.BUBBLING_PHASE;var CAPTURING_PHASE=NavigationEvent.CAPTURING_PHASE;\n\n\n\nvar LegacyEventTypes=new Set([\n'willfocus',\n'didfocus']);var \n\n\n\n\n\nNavigationContext=function(){\n\n\n\n\n\n\n\nfunction NavigationContext(){babelHelpers.classCallCheck(this,NavigationContext);\nthis._bubbleEventEmitter=new NavigationEventEmitter(this);\nthis._captureEventEmitter=new NavigationEventEmitter(this);\nthis._currentRoute=null;\n\n\nthis.__node=new NavigationTreeNode(this);\n\nthis._emitCounter=0;\nthis._emitQueue=[];\n\nthis.addListener('willfocus',this._onFocus);\nthis.addListener('didfocus',this._onFocus);}babelHelpers.createClass(NavigationContext,[{key:'appendChild',value:function appendChild(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nchildContext){\nthis.__node.appendChild(childContext.__node);}},{key:'addListener',value:function addListener(\n\n\n\neventType,\nlistener,\nuseCapture)\n{\nif(LegacyEventTypes.has(eventType)){\nuseCapture=false;}\n\n\nvar emitter=useCapture?\nthis._captureEventEmitter:\nthis._bubbleEventEmitter;\n\nif(emitter){\nreturn emitter.addListener(eventType,listener,this);}else \n{\nreturn {remove:emptyFunction};}}},{key:'emit',value:function emit(\n\n\n\neventType,data,didEmitCallback){var _this=this;\nif(this._emitCounter>0){\n\n\nvar args=Array.prototype.slice.call(arguments);\nthis._emitQueue.push(args);\nreturn;}\n\n\nthis._emitCounter++;\n\nif(LegacyEventTypes.has(eventType)){\n\nthis.__emit(\neventType,\ndata,\nnull,\n{\ndefaultPrevented:false,\neventPhase:AT_TARGET,\npropagationStopped:true,\ntarget:this});}else \n\n\n{\nvar targets=[this];\nvar parentTarget=this.parent;\nwhile(parentTarget){\ntargets.unshift(parentTarget);\nparentTarget=parentTarget.parent;}\n\n\nvar propagationStopped=false;\nvar defaultPrevented=false;\nvar callback=function callback(event){\npropagationStopped=propagationStopped||event.isPropagationStopped();\ndefaultPrevented=defaultPrevented||event.defaultPrevented;};\n\n\n\ntargets.some(function(currentTarget){\nif(propagationStopped){\nreturn true;}\n\n\nvar extraInfo={\ndefaultPrevented:defaultPrevented,\neventPhase:CAPTURING_PHASE,\npropagationStopped:propagationStopped,\ntarget:_this};\n\n\ncurrentTarget.__emit(eventType,data,callback,extraInfo);},\nthis);\n\n\ntargets.reverse().some(function(currentTarget){\nif(propagationStopped){\nreturn true;}\n\nvar extraInfo={\ndefaultPrevented:defaultPrevented,\neventPhase:BUBBLING_PHASE,\npropagationStopped:propagationStopped,\ntarget:_this};\n\ncurrentTarget.__emit(eventType,data,callback,extraInfo);},\nthis);}\n\n\nif(didEmitCallback){\nvar event=NavigationEvent.pool(eventType,this,data);\npropagationStopped&&event.stopPropagation();\ndefaultPrevented&&event.preventDefault();\ndidEmitCallback.call(this,event);\nevent.dispose();}\n\n\nthis._emitCounter--;\nwhile(this._emitQueue.length){\nvar args=this._emitQueue.shift();\nthis.emit.apply(this,args);}}},{key:'dispose',value:function dispose()\n\n\n\n{\n\nthis._bubbleEventEmitter&&this._bubbleEventEmitter.removeAllListeners();\nthis._captureEventEmitter&&this._captureEventEmitter.removeAllListeners();\nthis._bubbleEventEmitter=null;\nthis._captureEventEmitter=null;\nthis._currentRoute=null;}},{key:'__emit',value:function __emit(\n\n\n\n\neventType,\ndata,\ndidEmitCallback,\nextraInfo)\n{\nvar emitter;\nswitch(extraInfo.eventPhase){\ncase CAPTURING_PHASE:\nemitter=this._captureEventEmitter;\nbreak;\n\ncase AT_TARGET:\nemitter=this._bubbleEventEmitter;\nbreak;\n\ncase BUBBLING_PHASE:\nemitter=this._bubbleEventEmitter;\nbreak;\n\ndefault:\ninvariant(false,'invalid event phase %s',extraInfo.eventPhase);}\n\n\nif(extraInfo.target===this){\n\nextraInfo.eventPhase=AT_TARGET;}\n\n\nif(emitter){\nemitter.emit(\neventType,\ndata,\ndidEmitCallback,\nextraInfo);}}},{key:'_onFocus',value:function _onFocus(\n\n\n\n\nevent){\ninvariant(\nevent.data&&event.data.hasOwnProperty('route'),\n'event type \"%s\" should provide route',\nevent.type);\n\n\nthis._currentRoute=event.data.route;}},{key:'parent',get:function get(){var parent=this.__node.getParent();return parent?parent.getValue():null;}},{key:'top',get:function get(){var result=null;var parentNode=this.__node.getParent();while(parentNode){result=parentNode.getValue();parentNode=parentNode.getParent();}return result;}},{key:'currentRoute',get:function get(){return this._currentRoute;}}]);return NavigationContext;}();\n\n\n\nmodule.exports=NavigationContext;","map":null,"id":"NavigationContext","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationContext\n * @noflow\n */\n'use strict';\n\nvar NavigationEvent = require('NavigationEvent');\nvar NavigationEventEmitter = require('NavigationEventEmitter');\nvar NavigationTreeNode = require('NavigationTreeNode');\n\nvar Set = require('Set');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nimport type EventSubscription from 'EventSubscription';\n\nvar {\n AT_TARGET,\n BUBBLING_PHASE,\n CAPTURING_PHASE,\n} = NavigationEvent;\n\n// Event types that do not support event bubbling, capturing and\n// reconciliation API (e.g event.preventDefault(), event.stopPropagation()).\nvar LegacyEventTypes = new Set([\n 'willfocus',\n 'didfocus',\n]);\n\n/**\n * Class that contains the info and methods for app navigation.\n */\nclass NavigationContext {\n __node: NavigationTreeNode;\n _bubbleEventEmitter: ?NavigationEventEmitter;\n _captureEventEmitter: ?NavigationEventEmitter;\n _currentRoute: any;\n _emitCounter: number;\n _emitQueue: Array;\n\n constructor() {\n this._bubbleEventEmitter = new NavigationEventEmitter(this);\n this._captureEventEmitter = new NavigationEventEmitter(this);\n this._currentRoute = null;\n\n // Sets the protected property `__node`.\n this.__node = new NavigationTreeNode(this);\n\n this._emitCounter = 0;\n this._emitQueue = [];\n\n this.addListener('willfocus', this._onFocus);\n this.addListener('didfocus', this._onFocus);\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get parent(): ?NavigationContext {\n var parent = this.__node.getParent();\n return parent ? parent.getValue() : null;\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get top(): ?NavigationContext {\n var result = null;\n var parentNode = this.__node.getParent();\n while (parentNode) {\n result = parentNode.getValue();\n parentNode = parentNode.getParent();\n }\n return result;\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get currentRoute(): any {\n return this._currentRoute;\n }\n\n appendChild(childContext: NavigationContext): void {\n this.__node.appendChild(childContext.__node);\n }\n\n addListener(\n eventType: string,\n listener: Function,\n useCapture: ?boolean\n ): EventSubscription {\n if (LegacyEventTypes.has(eventType)) {\n useCapture = false;\n }\n\n var emitter = useCapture ?\n this._captureEventEmitter :\n this._bubbleEventEmitter;\n\n if (emitter) {\n return emitter.addListener(eventType, listener, this);\n } else {\n return {remove: emptyFunction};\n }\n }\n\n emit(eventType: String, data: any, didEmitCallback: ?Function): void {\n if (this._emitCounter > 0) {\n // An event cycle that was previously created hasn't finished yet.\n // Put this event cycle into the queue and will finish them later.\n var args: any = Array.prototype.slice.call(arguments);\n this._emitQueue.push(args);\n return;\n }\n\n this._emitCounter++;\n\n if (LegacyEventTypes.has(eventType)) {\n // Legacy events does not support event bubbling and reconciliation.\n this.__emit(\n eventType,\n data,\n null,\n {\n defaultPrevented: false,\n eventPhase: AT_TARGET,\n propagationStopped: true,\n target: this,\n }\n );\n } else {\n var targets = [this];\n var parentTarget = this.parent;\n while (parentTarget) {\n targets.unshift(parentTarget);\n parentTarget = parentTarget.parent;\n }\n\n var propagationStopped = false;\n var defaultPrevented = false;\n var callback = (event) => {\n propagationStopped = propagationStopped || event.isPropagationStopped();\n defaultPrevented = defaultPrevented || event.defaultPrevented;\n };\n\n // Capture phase\n targets.some((currentTarget) => {\n if (propagationStopped) {\n return true;\n }\n\n var extraInfo = {\n defaultPrevented,\n eventPhase: CAPTURING_PHASE,\n propagationStopped,\n target: this,\n };\n\n currentTarget.__emit(eventType, data, callback, extraInfo);\n }, this);\n\n // bubble phase\n targets.reverse().some((currentTarget) => {\n if (propagationStopped) {\n return true;\n }\n var extraInfo = {\n defaultPrevented,\n eventPhase: BUBBLING_PHASE,\n propagationStopped,\n target: this,\n };\n currentTarget.__emit(eventType, data, callback, extraInfo);\n }, this);\n }\n\n if (didEmitCallback) {\n var event = NavigationEvent.pool(eventType, this, data);\n propagationStopped && event.stopPropagation();\n defaultPrevented && event.preventDefault();\n didEmitCallback.call(this, event);\n event.dispose();\n }\n\n this._emitCounter--;\n while (this._emitQueue.length) {\n var args: any = this._emitQueue.shift();\n this.emit.apply(this, args);\n }\n }\n\n dispose(): void {\n // clean up everything.\n this._bubbleEventEmitter && this._bubbleEventEmitter.removeAllListeners();\n this._captureEventEmitter && this._captureEventEmitter.removeAllListeners();\n this._bubbleEventEmitter = null;\n this._captureEventEmitter = null;\n this._currentRoute = null;\n }\n\n // This method `__method` is protected.\n __emit(\n eventType: String,\n data: any,\n didEmitCallback: ?Function,\n extraInfo: Object,\n ): void {\n var emitter;\n switch (extraInfo.eventPhase) {\n case CAPTURING_PHASE: // phase = 1\n emitter = this._captureEventEmitter;\n break;\n\n case AT_TARGET: // phase = 2\n emitter = this._bubbleEventEmitter;\n break;\n\n case BUBBLING_PHASE: // phase = 3\n emitter = this._bubbleEventEmitter;\n break;\n\n default:\n invariant(false, 'invalid event phase %s', extraInfo.eventPhase);\n }\n\n if (extraInfo.target === this) {\n // phase = 2\n extraInfo.eventPhase = AT_TARGET;\n }\n\n if (emitter) {\n emitter.emit(\n eventType,\n data,\n didEmitCallback,\n extraInfo\n );\n }\n }\n\n _onFocus(event: NavigationEvent): void {\n invariant(\n event.data && event.data.hasOwnProperty('route'),\n 'event type \"%s\" should provide route',\n event.type\n );\n\n this._currentRoute = event.data.route;\n }\n}\n\nmodule.exports = NavigationContext;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEvent.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationEvent","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[64],"dependencies":["fbjs/lib/invariant"],"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 invariant=require('fbjs/lib/invariant');var \n\nNavigationEventPool=function(){\n\n\nfunction NavigationEventPool(){babelHelpers.classCallCheck(this,NavigationEventPool);\nthis._list=[];}babelHelpers.createClass(NavigationEventPool,[{key:'get',value:function get(\n\n\ntype,currentTarget,data){\nvar event;\nif(this._list.length>0){\nevent=this._list.pop();\nevent.constructor.call(event,type,currentTarget,data);}else \n{\nevent=new NavigationEvent(type,currentTarget,data);}\n\nreturn event;}},{key:'put',value:function put(\n\n\nevent){\nthis._list.push(event);}}]);return NavigationEventPool;}();\n\n\n\nvar _navigationEventPool=new NavigationEventPool();var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNavigationEvent=function(){babelHelpers.createClass(NavigationEvent,null,[{key:'pool',value:function pool(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntype,currentTarget,data){\nreturn _navigationEventPool.get(type,currentTarget,data);}}]);\n\n\nfunction NavigationEvent(type,currentTarget,data){babelHelpers.classCallCheck(this,NavigationEvent);\nthis.target=currentTarget;\nthis.eventPhase=NavigationEvent.NONE;\n\nthis._type=type;\nthis._currentTarget=currentTarget;\nthis._data=data;\nthis._defaultPrevented=false;\nthis._disposed=false;\nthis._propagationStopped=false;}babelHelpers.createClass(NavigationEvent,[{key:'preventDefault',value:function preventDefault()\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\nthis._defaultPrevented=true;}},{key:'stopPropagation',value:function stopPropagation()\n\n\n{\nthis._propagationStopped=true;}},{key:'stop',value:function stop()\n\n\n{\nthis.preventDefault();\nthis.stopPropagation();}},{key:'isPropagationStopped',value:function isPropagationStopped()\n\n\n{\nreturn this._propagationStopped;}},{key:'dispose',value:function dispose()\n\n\n\n\n\n\n\n{\ninvariant(!this._disposed,'NavigationEvent is already disposed');\nthis._disposed=true;\n\n\nthis.target=null;\nthis.eventPhase=NavigationEvent.NONE;\nthis._type=null;\nthis._currentTarget=null;\nthis._data=null;\nthis._defaultPrevented=false;\n\n\n_navigationEventPool.put(this);}},{key:'type',get:function get(){return this._type;}},{key:'currentTarget',get:function get(){return this._currentTarget;}},{key:'data',get:function get(){return this._data;}},{key:'defaultPrevented',get:function get(){return this._defaultPrevented;}}]);return NavigationEvent;}();\n\n\n\n\n\n\n\n\n\n\nNavigationEvent.NONE=0;\n\n\nNavigationEvent.CAPTURING_PHASE=1;\n\n\n\nNavigationEvent.AT_TARGET=2;\n\n\n\n\n\nNavigationEvent.BUBBLING_PHASE=3;\n\nmodule.exports=NavigationEvent;","map":null,"id":"NavigationEvent","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationEvent\n * @flow\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nclass NavigationEventPool {\n _list: Array;\n\n constructor() {\n this._list = [];\n }\n\n get(type: string, currentTarget: Object, data: any): NavigationEvent {\n var event;\n if (this._list.length > 0) {\n event = this._list.pop();\n event.constructor.call(event, type, currentTarget, data);\n } else {\n event = new NavigationEvent(type, currentTarget, data);\n }\n return event;\n }\n\n put(event: NavigationEvent) {\n this._list.push(event);\n }\n}\n\nvar _navigationEventPool = new NavigationEventPool();\n\n/**\n * The NavigationEvent interface represents any event of the navigation.\n * It contains common properties and methods to any event.\n *\n * == Important Properties ==\n *\n * - target:\n * A reference to the navigation context that dispatched the event. It is\n * different from event.currentTarget when the event handler is called during\n * the bubbling or capturing phase of the event.\n *\n * - currentTarget:\n * Identifies the current target for the event, as the event traverses the\n * navigation context tree. It always refers to the navigation context the\n * event handler has been attached to as opposed to event.target which\n * identifies the navigation context on which the event occurred.\n *\n * - eventPhase:\n * Returns an integer value which specifies the current evaluation phase of\n * the event flow; possible values are listed in NavigationEvent phase\n * constants below.\n */\nclass NavigationEvent {\n static AT_TARGET: number;\n static BUBBLING_PHASE: number;\n static CAPTURING_PHASE: number;\n static NONE: number;\n\n _currentTarget: ?Object;\n _data: any;\n _defaultPrevented: boolean;\n _disposed: boolean;\n _propagationStopped: boolean;\n _type: ?string;\n\n target: ?Object;\n\n // Returns an integer value which specifies the current evaluation phase of\n // the event flow.\n eventPhase: number;\n\n static pool(type: string, currentTarget: Object, data: any): NavigationEvent {\n return _navigationEventPool.get(type, currentTarget, data);\n }\n\n constructor(type: string, currentTarget: Object, data: any) {\n this.target = currentTarget;\n this.eventPhase = NavigationEvent.NONE;\n\n this._type = type;\n this._currentTarget = currentTarget;\n this._data = data;\n this._defaultPrevented = false;\n this._disposed = false;\n this._propagationStopped = false;\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get type(): string {\n return this._type;\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get currentTarget(): Object {\n return this._currentTarget;\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get data(): any {\n return this._data;\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get defaultPrevented(): boolean {\n return this._defaultPrevented;\n }\n\n preventDefault(): void {\n this._defaultPrevented = true;\n }\n\n stopPropagation(): void {\n this._propagationStopped = true;\n }\n\n stop(): void {\n this.preventDefault();\n this.stopPropagation();\n }\n\n isPropagationStopped(): boolean {\n return this._propagationStopped;\n }\n\n /**\n * Dispose the event.\n * NavigationEvent shall be disposed after being emitted by\n * `NavigationEventEmitter`.\n */\n dispose(): void {\n invariant(!this._disposed, 'NavigationEvent is already disposed');\n this._disposed = true;\n\n // Clean up.\n this.target = null;\n this.eventPhase = NavigationEvent.NONE;\n this._type = null;\n this._currentTarget = null;\n this._data = null;\n this._defaultPrevented = false;\n\n // Put this back to the pool to reuse the instance.\n _navigationEventPool.put(this);\n }\n}\n\n/**\n * Event phase constants.\n * These values describe which phase the event flow is currently being\n * evaluated.\n */\n\n// No event is being processed at this time.\nNavigationEvent.NONE = 0;\n\n// The event is being propagated through the currentTarget's ancestor objects.\nNavigationEvent.CAPTURING_PHASE = 1;\n\n// The event has arrived at the event's currentTarget. Event listeners registered for\n// this phase are called at this time.\nNavigationEvent.AT_TARGET = 2;\n\n// The event is propagating back up through the currentTarget's ancestors in reverse\n// order, starting with the parent. This is known as bubbling, and occurs only\n// if event propagation isn't prevented. Event listeners registered for this\n// phase are triggered during this process.\nNavigationEvent.BUBBLING_PHASE = 3;\n\nmodule.exports = NavigationEvent;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEventEmitter.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationEventEmitter","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[67,112],"dependencies":["EventEmitter","NavigationEvent"],"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 EventEmitter=require('EventEmitter');\nvar NavigationEvent=require('NavigationEvent');var \n\n\n\n\n\n\n\n\nNavigationEventEmitter=function(_EventEmitter){babelHelpers.inherits(NavigationEventEmitter,_EventEmitter);\n\n\n\n\nfunction NavigationEventEmitter(target){babelHelpers.classCallCheck(this,NavigationEventEmitter);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationEventEmitter).call(this));\n\n_this._emitting=false;\n_this._emitQueue=[];\n_this._target=target;return _this;}babelHelpers.createClass(NavigationEventEmitter,[{key:'emit',value:function emit(\n\n\n\neventType,\ndata,\ndidEmitCallback,\nextraInfo)\n{\nif(this._emitting){\n\n\nvar args=Array.prototype.slice.call(arguments);\nthis._emitQueue.push(args);\nreturn;}\n\n\nthis._emitting=true;\n\nvar event=NavigationEvent.pool(eventType,this._target,data);\n\nif(extraInfo){\nif(extraInfo.target){\nevent.target=extraInfo.target;}\n\n\nif(extraInfo.eventPhase){\nevent.eventPhase=extraInfo.eventPhase;}\n\n\nif(extraInfo.defaultPrevented){\nevent.preventDefault();}\n\n\nif(extraInfo.propagationStopped){\nevent.stopPropagation();}}\n\n\n\n\n\nbabelHelpers.get(Object.getPrototypeOf(NavigationEventEmitter.prototype),'emit',this).call(this,String(eventType),event);\n\nif(typeof didEmitCallback==='function'){\ndidEmitCallback.call(this._target,event);}\n\nevent.dispose();\n\nthis._emitting=false;\n\nwhile(this._emitQueue.length){\nvar args=this._emitQueue.shift();\nthis.emit.apply(this,args);}}}]);return NavigationEventEmitter;}(EventEmitter);\n\n\n\n\nmodule.exports=NavigationEventEmitter;","map":null,"id":"NavigationEventEmitter","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\nvar NavigationEvent = require('NavigationEvent');\n\ntype ExtraInfo = {\n defaultPrevented: ?boolean,\n eventPhase: ?number,\n propagationStopped: ?boolean,\n target: ?Object,\n};\n\nclass NavigationEventEmitter extends EventEmitter {\n _emitQueue: Array;\n _emitting: boolean;\n _target: Object;\n\n constructor(target: Object) {\n super();\n this._emitting = false;\n this._emitQueue = [];\n this._target = target;\n }\n\n emit(\n eventType: string,\n data: any,\n didEmitCallback: ?Function,\n extraInfo: ?ExtraInfo\n ): void {\n if (this._emitting) {\n // An event cycle that was previously created hasn't finished yet.\n // Put this event cycle into the queue and will finish them later.\n var args: any = Array.prototype.slice.call(arguments);\n this._emitQueue.push(args);\n return;\n }\n\n this._emitting = true;\n\n var event = NavigationEvent.pool(eventType, this._target, data);\n\n if (extraInfo) {\n if (extraInfo.target) {\n event.target = extraInfo.target;\n }\n\n if (extraInfo.eventPhase) {\n event.eventPhase = extraInfo.eventPhase;\n }\n\n if (extraInfo.defaultPrevented) {\n event.preventDefault();\n }\n\n if (extraInfo.propagationStopped) {\n event.stopPropagation();\n }\n }\n\n // EventEmitter#emit only takes `eventType` as `String`. Casting `eventType`\n // to `String` to make @flow happy.\n super.emit(String(eventType), event);\n\n if (typeof didEmitCallback === 'function') {\n didEmitCallback.call(this._target, event);\n }\n event.dispose();\n\n this._emitting = false;\n\n while (this._emitQueue.length) {\n var args: any = this._emitQueue.shift();\n this.emit.apply(this, args);\n }\n }\n}\n\nmodule.exports = NavigationEventEmitter;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationRouteStack.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationRouteStack"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationTreeNode.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationTreeNode","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[45,90],"dependencies":["fbjs/lib/invariant","immutable"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\nvar immutable=require('immutable');var \n\nList=immutable.List;var \n\n\n\n\n\n\nNavigationTreeNode=function(){\n\n\n\n\n\n\nfunction NavigationTreeNode(value){babelHelpers.classCallCheck(this,NavigationTreeNode);\nthis.__parent=null;\nthis._children=new List();\nthis._value=value;}babelHelpers.createClass(NavigationTreeNode,[{key:'getValue',value:function getValue()\n\n\n{\nreturn this._value;}},{key:'getParent',value:function getParent()\n\n\n{\nreturn this.__parent;}},{key:'getChildrenCount',value:function getChildrenCount()\n\n\n{\nreturn this._children.size;}},{key:'getChildAt',value:function getChildAt(\n\n\nindex){\nreturn index>-1&&index-1,\n'The node to be removed is not a child of this node.');\n\n\nchild.__parent=null;\n\nthis._children=this._children.splice(index,1);}},{key:'indexOf',value:function indexOf(\n\n\nchild){\nreturn this._children.indexOf(child);}},{key:'forEach',value:function forEach(\n\n\ncallback,context){\nthis._children.forEach(callback,context);}},{key:'map',value:function map(\n\n\ncallback,context){\nreturn this._children.map(callback,context).toJS();}},{key:'some',value:function some(\n\n\ncallback,context){\nreturn this._children.some(callback,context);}}]);return NavigationTreeNode;}();\n\n\n\n\nmodule.exports=NavigationTreeNode;","map":null,"id":"NavigationTreeNode","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * @providesModule NavigationTreeNode\n * @flow\n * @typechecks\n */\n\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\nvar immutable = require('immutable');\n\nvar {List} = immutable;\n\n/**\n * Utility to build a tree of nodes.\n * Note that this tree does not perform cyclic redundancy check\n * while appending child node.\n */\nclass NavigationTreeNode {\n __parent: ?NavigationTreeNode;\n\n _children: List;\n\n _value: any;\n\n constructor(value: any) {\n this.__parent = null;\n this._children = new List();\n this._value = value;\n }\n\n getValue(): any {\n return this._value;\n }\n\n getParent(): ?NavigationTreeNode {\n return this.__parent;\n }\n\n getChildrenCount(): number {\n return this._children.size;\n }\n\n getChildAt(index: number): ?NavigationTreeNode {\n return index > -1 && index < this._children.size ?\n this._children.get(index) :\n null;\n }\n\n appendChild(child: NavigationTreeNode): void {\n if (child.__parent) {\n child.__parent.removeChild(child);\n }\n child.__parent = this;\n this._children = this._children.push(child);\n }\n\n removeChild(child: NavigationTreeNode): void {\n var index = this._children.indexOf(child);\n\n invariant(\n index > -1,\n 'The node to be removed is not a child of this node.'\n );\n\n child.__parent = null;\n\n this._children = this._children.splice(index, 1);\n }\n\n indexOf(child: NavigationTreeNode): number {\n return this._children.indexOf(child);\n }\n\n forEach(callback: Function, context: any): void {\n this._children.forEach(callback, context);\n }\n\n map(callback: Function, context: any): Array {\n return this._children.map(callback, context).toJS();\n }\n\n some(callback: Function, context: any): boolean {\n return this._children.some(callback, context);\n }\n}\n\n\nmodule.exports = NavigationTreeNode;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/__mocks__/NativeModules.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/polyfills/flattenStyle.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/polyfills/InteractionManager.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/polyfills/Set.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/unbundle/as-assets.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/unbundle/as-indexed-file.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/unbundle/build-unbundle-sourcemap-with-metadata.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/unbundle/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/unbundle/magic-number.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/unbundle/util.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/unbundle/write-sourcemap.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Server/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Resolver/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/lib/declareOpts.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/lib/ModuleTransport.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/JSTransformer/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Bundler/base64-vlq.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Bundler/Bundle.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Bundler/BundleBase.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Bundler/HMRBundle.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Bundler/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Bundler/PrepackBundle.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/AssetServer/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/Activity/index.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/__mocks__/debug.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/__mocks__/fs.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/packager/react-packager/src/__mocks__/graceful-fs.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PickerAndroidTestModule"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/ReactAndroid/src/androidTest/js/ScrollViewTestModule.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ScrollViewTestModule"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/ReactAndroid/src/androidTest/js/TestBundle.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js":{"metadata":{"mtime":1463610724000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/moment/src/lib/parse/regex.js":{"metadata":{"mtime":1460965284000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/moment/src/lib/parse/token.js":{"metadata":{"mtime":1460965284000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/bundle.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/hash.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/prepack.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/output/writeFile.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/bundle/__mocks__/sign.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/generator/templates/index.android.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/generator/templates/index.ios.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/util/attachHMRServer.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/util/debuggerWorker.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/util/launchEditor.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/util/messageSocket.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/util/webSocketProxy.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/middleware/cpuProfilerMiddleware.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/middleware/getDevToolsMiddleware.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/middleware/loadRawBodyMiddleware.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/middleware/openStackFrameInEditorMiddleware.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/middleware/statusPageMiddleware.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/server/middleware/systraceProfileMiddleware.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/local-cli/util/__mocks__/log.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/Animated.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Animated","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[61,106,133,159],"dependencies":["AnimatedImplementation","Image","Text","View"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar AnimatedImplementation=require('AnimatedImplementation');\nvar Image=require('Image');\nvar Text=require('Text');\nvar View=require('View');\n\nmodule.exports=babelHelpers.extends({},\nAnimatedImplementation,{\nView:AnimatedImplementation.createAnimatedComponent(View),\nText:AnimatedImplementation.createAnimatedComponent(Text),\nImage:AnimatedImplementation.createAnimatedComponent(Image)});","map":null,"id":"Animated","source":"/**\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 AnimatedImplementation = require('AnimatedImplementation');\nvar Image = require('Image');\nvar Text = require('Text');\nvar View = require('View');\n\nmodule.exports = {\n ...AnimatedImplementation,\n View: AnimatedImplementation.createAnimatedComponent(View),\n Text: AnimatedImplementation.createAnimatedComponent(Text),\n Image: AnimatedImplementation.createAnimatedComponent(Image),\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js":{"metadata":{"mtime":1463609891000},"data":{"name":"AnimatedImplementation","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[181,223,272,308,334,367,415,471,524,568,607,664],"dependencies":["Easing","InteractionManager","Interpolation","React","Set","SpringConfig","ViewStylePropTypes","NativeAnimatedHelper","findNodeHandle","flattenStyle","fbjs/lib/invariant","fbjs/lib/requestAnimationFrame"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Easing=require('Easing');\nvar InteractionManager=require('InteractionManager');\nvar Interpolation=require('Interpolation');\nvar React=require('React');\nvar Set=require('Set');\nvar SpringConfig=require('SpringConfig');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\nvar NativeAnimatedHelper=require('NativeAnimatedHelper');\n\nvar findNodeHandle=require('findNodeHandle');\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('fbjs/lib/invariant');\nvar requestAnimationFrame=require('fbjs/lib/requestAnimationFrame');\n\n\n\n\n\n\nvar NativeAnimatedAPI=NativeAnimatedHelper.API;var \n\n\n\nAnimated=function(){function Animated(){babelHelpers.classCallCheck(this,Animated);}babelHelpers.createClass(Animated,[{key:'__attach',value:function __attach()\n{}},{key:'__detach',value:function __detach()\n{\nif(this.__isNative&&this.__nativeTag!=null){\nNativeAnimatedAPI.dropAnimatedNode(this.__nativeTag);\nthis.__nativeTag=undefined;}}},{key:'__getValue',value:function __getValue()\n\n\n{}},{key:'__getAnimatedValue',value:function __getAnimatedValue()\n{return this.__getValue();}},{key:'__addChild',value:function __addChild(\nchild){}},{key:'__removeChild',value:function __removeChild(\nchild){}},{key:'__getChildren',value:function __getChildren()\n{return [];}},{key:'__makeNative',value:function __makeNative()\n\n\n\n\n{\nif(!this.__isNative){\nthrow new Error('This node cannot be made a \"native\" animated node');}}},{key:'__getNativeTag',value:function __getNativeTag()\n\n\n{\nNativeAnimatedHelper.assertNativeAnimatedModule();\ninvariant(this.__isNative,'Attempt to get native tag from node not marked as \"native\"');\nif(this.__nativeTag==null){\nvar nativeTag=NativeAnimatedHelper.generateNewNodeTag();\nNativeAnimatedAPI.createAnimatedNode(nativeTag,this.__getNativeConfig());\nthis.__nativeTag=nativeTag;}\n\nreturn this.__nativeTag;}},{key:'__getNativeConfig',value:function __getNativeConfig()\n\n{\nthrow new Error('This JS animated node type cannot be used as native animated node');}}]);return Animated;}();var \n\n\n\n\n\n\n\n\n\n\n\nAnimation=function(){function Animation(){babelHelpers.classCallCheck(this,Animation);}babelHelpers.createClass(Animation,[{key:'start',value:function start(\n\n\n\n\n\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation,\nanimatedValue)\n{}},{key:'stop',value:function stop()\n{\nif(this.__nativeId){\nNativeAnimatedAPI.stopAnimation(this.__nativeId);}}},{key:'_getNativeAnimationConfig',value:function _getNativeAnimationConfig()\n\n\n{\n\n\nthrow new Error('This animation type cannot be offloaded to native');}},{key:'__debouncedOnEnd',value:function __debouncedOnEnd(\n\n\nresult){\nvar onEnd=this.__onEnd;\nthis.__onEnd=null;\nonEnd&&onEnd(result);}},{key:'__startNativeAnimation',value:function __startNativeAnimation(\n\nanimatedValue){\nanimatedValue.__makeNative();\nthis.__nativeId=NativeAnimatedHelper.generateNewAnimationId();\nNativeAnimatedAPI.startAnimatingNode(\nthis.__nativeId,\nanimatedValue.__getNativeTag(),\nthis._getNativeAnimationConfig(),\nthis.__debouncedOnEnd.bind(this));}}]);return Animation;}();var \n\n\n\n\nAnimatedWithChildren=function(_Animated){babelHelpers.inherits(AnimatedWithChildren,_Animated);\n\n\nfunction AnimatedWithChildren(){babelHelpers.classCallCheck(this,AnimatedWithChildren);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(AnimatedWithChildren).call(this));\n\n_this._children=[];return _this;}babelHelpers.createClass(AnimatedWithChildren,[{key:'__makeNative',value:function __makeNative()\n\n\n{\nif(!this.__isNative){\nthis.__isNative=true;\nfor(var _iterator=this._children,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[typeof Symbol==='function'?Symbol.iterator:'@@iterator']();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++];}else {_i=_iterator.next();if(_i.done)break;_ref=_i.value;}var child=_ref;\nchild.__makeNative();\nNativeAnimatedAPI.connectAnimatedNodes(this.__getNativeTag(),child.__getNativeTag());}}}},{key:'__addChild',value:function __addChild(\n\n\n\n\nchild){\nif(this._children.length===0){\nthis.__attach();}\n\nthis._children.push(child);\nif(this.__isNative){\n\nchild.__makeNative();\nNativeAnimatedAPI.connectAnimatedNodes(this.__getNativeTag(),child.__getNativeTag());}}},{key:'__removeChild',value:function __removeChild(\n\n\n\nchild){\nvar index=this._children.indexOf(child);\nif(index===-1){\nconsole.warn('Trying to remove a child that doesn\\'t exist');\nreturn;}\n\nif(this.__isNative&&child.__isNative){\nNativeAnimatedAPI.disconnectAnimatedNodes(this.__getNativeTag(),child.__getNativeTag());}\n\nthis._children.splice(index,1);\nif(this._children.length===0){\nthis.__detach();}}},{key:'__getChildren',value:function __getChildren()\n\n\n\n{\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);\n\nanimatedStyles.forEach(function(animatedStyle){return animatedStyle.update();});}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar easeInOut=Easing.inOut(Easing.ease);var \n\nTimingAnimation=function(_Animation){babelHelpers.inherits(TimingAnimation,_Animation);\n\n\n\n\n\n\n\n\n\n\n\nfunction TimingAnimation(\nconfig)\n{babelHelpers.classCallCheck(this,TimingAnimation);var _this2=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(TimingAnimation).call(this));\n\n_this2._toValue=config.toValue;\n_this2._easing=config.easing!==undefined?config.easing:easeInOut;\n_this2._duration=config.duration!==undefined?config.duration:500;\n_this2._delay=config.delay!==undefined?config.delay:0;\n_this2.__isInteraction=config.isInteraction!==undefined?config.isInteraction:true;\n_this2._useNativeDriver=!!config.useNativeDriver;return _this2;}babelHelpers.createClass(TimingAnimation,[{key:'_getNativeAnimationConfig',value:function _getNativeAnimationConfig()\n\n\n{\nvar frameDuration=1000.0/60.0;\nvar frames=[];\nfor(var dt=0.0;dt<=this._duration;dt+=frameDuration){\nframes.push(this._easing(dt/this._duration));}\n\nreturn {\ntype:'frames',\nframes:frames,\ntoValue:this._toValue};}},{key:'start',value:function start(\n\n\n\n\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation,\nanimatedValue)\n{var _this3=this;\nthis.__active=true;\nthis._fromValue=fromValue;\nthis._onUpdate=onUpdate;\nthis.__onEnd=onEnd;\n\nvar start=function start(){\nif(_this3._duration===0){\n_this3._onUpdate(_this3._toValue);\n_this3.__debouncedOnEnd({finished:true});}else \n{\n_this3._startTime=Date.now();\nif(_this3._useNativeDriver){\n_this3.__startNativeAnimation(animatedValue);}else \n{\n_this3._animationFrame=requestAnimationFrame(_this3.onUpdate.bind(_this3));}}};\n\n\n\nif(this._delay){\nthis._timeout=setTimeout(start,this._delay);}else \n{\nstart();}}},{key:'onUpdate',value:function onUpdate()\n\n\n\n{\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:function stop()\n\n\n\n{\nbabelHelpers.get(Object.getPrototypeOf(TimingAnimation.prototype),'stop',this).call(this);\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){babelHelpers.inherits(DecayAnimation,_Animation2);\n\n\n\n\n\n\n\n\nfunction DecayAnimation(\nconfig)\n{babelHelpers.classCallCheck(this,DecayAnimation);var _this4=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(DecayAnimation).call(this));\n\n_this4._deceleration=config.deceleration!==undefined?config.deceleration:0.998;\n_this4._velocity=config.velocity;\n_this4.__isInteraction=config.isInteraction!==undefined?config.isInteraction:true;return _this4;}babelHelpers.createClass(DecayAnimation,[{key:'start',value:function start(\n\n\n\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:function onUpdate()\n\n\n{\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:function stop()\n\n\n\n{\nbabelHelpers.get(Object.getPrototypeOf(DecayAnimation.prototype),'stop',this).call(this);\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){babelHelpers.inherits(SpringAnimation,_Animation3);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SpringAnimation(\nconfig)\n{babelHelpers.classCallCheck(this,SpringAnimation);var _this5=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(SpringAnimation).call(this));\n\n\n_this5._overshootClamping=withDefault(config.overshootClamping,false);\n_this5._restDisplacementThreshold=withDefault(config.restDisplacementThreshold,0.001);\n_this5._restSpeedThreshold=withDefault(config.restSpeedThreshold,0.001);\n_this5._initialVelocity=config.velocity;\n_this5._lastVelocity=withDefault(config.velocity,0);\n_this5._toValue=config.toValue;\n_this5.__isInteraction=config.isInteraction!==undefined?config.isInteraction:true;\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=SpringConfig.fromBouncinessAndSpeed(\nwithDefault(config.bounciness,8),\nwithDefault(config.speed,12));}else \n\n{\nspringConfig=SpringConfig.fromOrigamiTensionAndFriction(\nwithDefault(config.tension,40),\nwithDefault(config.friction,7));}\n\n\n_this5._tension=springConfig.tension;\n_this5._friction=springConfig.friction;return _this5;}babelHelpers.createClass(SpringAnimation,[{key:'start',value:function start(\n\n\n\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:function getInternalState()\n\n\n{\nreturn {\nlastPosition:this._lastPosition,\nlastVelocity:this._lastVelocity,\nlastTime:this._lastTime};}},{key:'onUpdate',value:function onUpdate()\n\n\n\n{\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;ithis._toValue;}else \n{\nisOvershooting=position void;\n\nvar NativeAnimatedAPI = NativeAnimatedHelper.API;\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 if (this.__isNative && this.__nativeTag != null) {\n NativeAnimatedAPI.dropAnimatedNode(this.__nativeTag);\n this.__nativeTag = undefined;\n }\n }\n __getValue(): any {}\n __getAnimatedValue(): any { return this.__getValue(); }\n __addChild(child: Animated) {}\n __removeChild(child: Animated) {}\n __getChildren(): Array { return []; }\n\n /* Methods and props used by native Animated impl */\n __isNative: bool;\n __nativeTag: ?number;\n __makeNative() {\n if (!this.__isNative) {\n throw new Error('This node cannot be made a \"native\" animated node');\n }\n }\n __getNativeTag(): number {\n NativeAnimatedHelper.assertNativeAnimatedModule();\n invariant(this.__isNative, 'Attempt to get native tag from node not marked as \"native\"');\n if (this.__nativeTag == null) {\n var nativeTag: number = NativeAnimatedHelper.generateNewNodeTag();\n NativeAnimatedAPI.createAnimatedNode(nativeTag, this.__getNativeConfig());\n this.__nativeTag = nativeTag;\n }\n return this.__nativeTag;\n }\n __getNativeConfig(): Object {\n throw new Error('This JS animated node type cannot be used as native animated node');\n }\n}\n\ntype AnimationConfig = {\n isInteraction?: bool;\n useNativeDriver?: bool;\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 __isInteraction: bool;\n __nativeId: number;\n __onEnd: ?EndCallback;\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n animatedValue: AnimatedValue\n ): void {}\n stop(): void {\n if (this.__nativeId) {\n NativeAnimatedAPI.stopAnimation(this.__nativeId);\n }\n }\n _getNativeAnimationConfig(): any {\n // Subclasses that have corresponding animation implementation done in native\n // should override this method\n throw new Error('This animation type cannot be offloaded to native');\n }\n // Helper function for subclasses to make sure onEnd is only called once.\n __debouncedOnEnd(result: EndResult): void {\n var onEnd = this.__onEnd;\n this.__onEnd = null;\n onEnd && onEnd(result);\n }\n __startNativeAnimation(animatedValue: AnimatedValue): void {\n animatedValue.__makeNative();\n this.__nativeId = NativeAnimatedHelper.generateNewAnimationId();\n NativeAnimatedAPI.startAnimatingNode(\n this.__nativeId,\n animatedValue.__getNativeTag(),\n this._getNativeAnimationConfig(),\n this.__debouncedOnEnd.bind(this)\n );\n }\n}\n\nclass AnimatedWithChildren extends Animated {\n _children: Array;\n\n constructor() {\n super();\n this._children = [];\n }\n\n __makeNative() {\n if (!this.__isNative) {\n this.__isNative = true;\n for (var child of this._children) {\n child.__makeNative();\n NativeAnimatedAPI.connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n }\n }\n }\n\n __addChild(child: Animated): void {\n if (this._children.length === 0) {\n this.__attach();\n }\n this._children.push(child);\n if (this.__isNative) {\n // Only accept \"native\" animated nodes as children\n child.__makeNative();\n NativeAnimatedAPI.connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n }\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 if (this.__isNative && child.__isNative) {\n NativeAnimatedAPI.disconnectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\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 /* $FlowFixMe */\n animatedStyles.forEach(animatedStyle => animatedStyle.update());\n}\n\ntype TimingAnimationConfig = AnimationConfig & {\n toValue: number | AnimatedValue | {x: number, y: number} | AnimatedValueXY;\n easing?: (value: number) => number;\n duration?: number;\n delay?: number;\n};\n\ntype TimingAnimationConfigSingle = AnimationConfig & {\n toValue: number | AnimatedValue;\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: any;\n _duration: number;\n _delay: number;\n _easing: (value: number) => number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n _timeout: any;\n _useNativeDriver: bool;\n\n constructor(\n config: TimingAnimationConfigSingle,\n ) {\n super();\n this._toValue = config.toValue;\n this._easing = config.easing !== undefined ? config.easing : easeInOut;\n this._duration = config.duration !== undefined ? config.duration : 500;\n this._delay = config.delay !== undefined ? config.delay : 0;\n this.__isInteraction = config.isInteraction !== undefined ? config.isInteraction : true;\n this._useNativeDriver = !!config.useNativeDriver;\n }\n\n _getNativeAnimationConfig(): any {\n var frameDuration = 1000.0 / 60.0;\n var frames = [];\n for (var dt = 0.0; dt <= this._duration; dt += frameDuration) {\n frames.push(this._easing(dt / this._duration));\n }\n return {\n type: 'frames',\n frames,\n toValue: this._toValue,\n };\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n animatedValue: AnimatedValue\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 if (this._useNativeDriver) {\n this.__startNativeAnimation(animatedValue);\n } else {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\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 super.stop();\n this.__active = false;\n clearTimeout(this._timeout);\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype DecayAnimationConfig = AnimationConfig & {\n velocity: number | {x: number, y: number};\n deceleration?: number;\n};\n\ntype DecayAnimationConfigSingle = AnimationConfig & {\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 !== undefined ? config.deceleration : 0.998;\n this._velocity = config.velocity;\n this.__isInteraction = config.isInteraction !== undefined ? config.isInteraction : true;\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 super.stop();\n this.__active = false;\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype SpringAnimationConfig = AnimationConfig & {\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 = AnimationConfig & {\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 this.__isInteraction = config.isInteraction !== undefined ? config.isInteraction : true;\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 = SpringConfig.fromBouncinessAndSpeed(\n withDefault(config.bounciness, 8),\n withDefault(config.speed, 12),\n );\n } else {\n springConfig = 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\n if (isOvershooting || (isVelocity && isDisplacement)) {\n if (this._tension !== 0) {\n // Ensure that we end up with a round value\n this._onUpdate(this._toValue);\n }\n\n this.__debouncedOnEnd({finished: true});\n return;\n }\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n stop(): void {\n super.stop();\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\n/**\n * Standard value for driving animations. One `Animated.Value` can drive\n * multiple properties in a synchronized fashion, but can only be driven by one\n * mechanism at a time. Using a new mechanism (e.g. starting a new animation,\n * or calling `setValue`) will stop any previous ones.\n */\nclass AnimatedValue extends AnimatedWithChildren {\n _value: number;\n _startingValue: number;\n _offset: number;\n _animation: ?Animation;\n _tracking: ?Animated;\n _listeners: {[key: string]: ValueListenerCallback};\n\n constructor(value: number) {\n super();\n this._startingValue = this._value = value;\n this._offset = 0;\n this._animation = null;\n this._listeners = {};\n }\n\n __detach() {\n this.stopAnimation();\n super.__detach();\n }\n\n __getValue(): number {\n return this._value + this._offset;\n }\n\n /**\n * Directly set the value. This will stop any animations running on the value\n * and update all the bound properties.\n */\n setValue(value: number): void {\n if (this._animation) {\n this._animation.stop();\n this._animation = null;\n }\n this._updateValue(value, !this.__isNative /* don't perform a flush for natively driven values */);\n if (this.__isNative) {\n NativeAnimatedAPI.setAnimatedNodeValue(this.__getNativeTag(), value);\n }\n }\n\n /**\n * Sets an offset that is applied on top of whatever value is set, whether via\n * `setValue`, an animation, or `Animated.event`. Useful for compensating\n * things like the start of a pan gesture.\n */\n setOffset(offset: number): void {\n this._offset = offset;\n }\n\n /**\n * Merges the offset value into the base value and resets the offset to zero.\n * The final output of the value is unchanged.\n */\n flattenOffset(): void {\n this._value += this._offset;\n this._offset = 0;\n }\n\n /**\n * Adds an asynchronous listener to the value so you can observe updates from\n * animations. This is useful because there is no way to\n * synchronously read the value because it might be driven natively.\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 /**\n * Stops any running animation or tracking. `callback` is invoked with the\n * final value after stopping the animation, which is useful for updating\n * state to match the animation position with layout.\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 /**\n * Interpolates the value before updating the property, e.g. mapping 0-1 to\n * 0-10.\n */\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n /**\n * Typically only used internally, but could be used by a custom Animation\n * class.\n */\n animate(animation: Animation, callback: ?EndCallback): void {\n var handle = null;\n if (animation.__isInteraction) {\n handle = InteractionManager.createInteractionHandle();\n }\n var previousAnimation = this._animation;\n this._animation && this._animation.stop();\n this._animation = animation;\n animation.start(\n this._value,\n (value) => {\n // Natively driven animations will never call into that callback, therefore we can always pass `flush = true`\n // to allow the updated value to propagate to native with `setNativeProps`\n this._updateValue(value, true /* flush */);\n },\n (result) => {\n this._animation = null;\n if (handle !== null) {\n InteractionManager.clearInteractionHandle(handle);\n }\n callback && callback(result);\n },\n previousAnimation,\n this\n );\n }\n\n /**\n * Typically only used internally.\n */\n stopTracking(): void {\n this._tracking && this._tracking.__detach();\n this._tracking = null;\n }\n\n /**\n * Typically only used internally.\n */\n track(tracking: Animated): void {\n this.stopTracking();\n this._tracking = tracking;\n }\n\n _updateValue(value: number, flush: bool): void {\n this._value = value;\n if (flush) {\n _flush(this);\n }\n for (var key in this._listeners) {\n this._listeners[key]({value: this.__getValue()});\n }\n }\n\n __getNativeConfig(): Object {\n return {\n type: 'value',\n value: this._startingValue,\n };\n }\n}\n\ntype ValueXYListenerCallback = (value: {x: number; y: number}) => void;\n\n/**\n * 2D Value for driving 2D animations, such as pan gestures. Almost identical\n * API to normal `Animated.Value`, but multiplexed. Contains two regular\n * `Animated.Value`s under the hood. Example:\n *\n *```javascript\n * class DraggableView extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * pan: new Animated.ValueXY(), // inits to zero\n * };\n * this.state.panResponder = PanResponder.create({\n * onStartShouldSetPanResponder: () => true,\n * onPanResponderMove: Animated.event([null, {\n * dx: this.state.pan.x, // x,y are Animated.Value\n * dy: this.state.pan.y,\n * }]),\n * onPanResponderRelease: () => {\n * Animated.spring(\n * this.state.pan, // Auto-multiplexed\n * {toValue: {x: 0, y: 0}} // Back to zero\n * ).start();\n * },\n * });\n * }\n * render() {\n * return (\n * \n * {this.props.children}\n * \n * );\n * }\n * }\n *```\n */\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 /**\n * Converts `{x, y}` into `{left, top}` for use in style, e.g.\n *\n *```javascript\n * style={this.state.anim.getLayout()}\n *```\n */\n getLayout(): {[key: string]: AnimatedValue} {\n return {\n left: this.x,\n top: this.y,\n };\n }\n\n /**\n * Converts `{x, y}` into a useable translation transform, e.g.\n *\n *```javascript\n * style={{\n * transform: this.state.anim.getTranslateTransform()\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 _config: InterpolationConfigType;\n _interpolation: (input: number) => number | string;\n\n constructor(parent: Animated, config: InterpolationConfigType) {\n super();\n this._parent = parent;\n this._config = config;\n this._interpolation = Interpolation.create(config);\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, config);\n }\n\n __attach(): void {\n this._parent.__addChild(this);\n }\n\n __detach(): void {\n this._parent.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n NativeAnimatedHelper.validateInterpolation(this._config);\n return {\n ...this._config,\n type: 'interpolation',\n };\n }\n}\n\nclass AnimatedAddition extends AnimatedWithChildren {\n _a: Animated;\n _b: Animated;\n\n constructor(a: Animated | number, b: Animated | number) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n this._b.__makeNative();\n super.__makeNative();\n }\n\n __getValue(): number {\n return this._a.__getValue() + this._b.__getValue();\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n this._b.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n this._b.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'addition',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n };\n }\n}\n\nclass AnimatedMultiplication extends AnimatedWithChildren {\n _a: Animated;\n _b: Animated;\n\n constructor(a: Animated | number, b: Animated | number) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n super.__makeNative();\n this._a.__makeNative();\n this._b.__makeNative();\n }\n\n __getValue(): number {\n return this._a.__getValue() * this._b.__getValue();\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n this._b.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n this._b.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'multiplication',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n };\n }\n}\n\nclass AnimatedModulo extends AnimatedWithChildren {\n _a: Animated;\n _modulus: number;\n\n constructor(a: Animated, modulus: number) {\n super();\n this._a = a;\n this._modulus = modulus;\n }\n\n __getValue(): number {\n return (this._a.__getValue() % this._modulus + this._modulus) % this._modulus;\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n }\n\n __detach(): void {\n this._a.__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 if (!value.__isNative) {\n // We cannot use value of natively driven nodes this way as the value we have access from JS\n // may not be up to date\n style[key] = value.__getValue();\n }\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 __makeNative() {\n super.__makeNative();\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n value.__makeNative();\n }\n }\n }\n\n __getNativeConfig(): Object {\n var styleConfig = {};\n for (let styleKey in this._style) {\n if (this._style[styleKey] instanceof Animated) {\n styleConfig[styleKey] = this._style[styleKey].__getNativeTag();\n }\n // Non-animated styles are set using `setNativeProps`, no need\n // to pass those as a part of the node config\n }\n NativeAnimatedHelper.validateStyles(styleConfig);\n return {\n type: 'style',\n style: styleConfig,\n };\n }\n}\n\nclass AnimatedProps extends Animated {\n _props: Object;\n _animatedView: any;\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 if (!value.__isNative) {\n // We cannot use value of natively driven nodes this way as the value we have access from JS\n // may not be up to date\n props[key] = value.__getValue();\n }\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 if (this.__isNative && this._animatedView) {\n this.__disconnectAnimatedView();\n }\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 super.__detach();\n }\n\n update(): void {\n this._callback();\n }\n\n __makeNative(): void {\n if (!this.__isNative) {\n this.__isNative = true;\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n value.__makeNative();\n }\n }\n if (this._animatedView) {\n this.__connectAnimatedView();\n }\n }\n }\n\n setNativeView(animatedView: any): void {\n invariant(this._animatedView === undefined, 'Animated view already set.');\n this._animatedView = animatedView;\n if (this.__isNative) {\n this.__connectAnimatedView();\n }\n }\n\n __connectAnimatedView(): void {\n invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n var nativeViewTag: ?number = findNodeHandle(this._animatedView);\n invariant(nativeViewTag != null, 'Unable to locate attached view in the native tree');\n NativeAnimatedAPI.connectAnimatedNodeToView(this.__getNativeTag(), nativeViewTag);\n }\n\n __disconnectAnimatedView(): void {\n invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n var nativeViewTag: ?number = findNodeHandle(this._animatedView);\n invariant(nativeViewTag != null, 'Unable to locate attached view in the native tree');\n NativeAnimatedAPI.disconnectAnimatedNodeFromView(this.__getNativeTag(), nativeViewTag);\n }\n\n __getNativeConfig(): Object {\n var propsConfig = {};\n for (let propKey in this._props) {\n var value = this._props[propKey];\n if (value instanceof Animated) {\n propsConfig[propKey] = value.__getNativeTag();\n }\n }\n NativeAnimatedHelper.validateProps(propsConfig);\n return {\n type: 'props',\n props: propsConfig,\n };\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 componentDidMount() {\n this._propsAnimated.setNativeView(this.refs[refName]);\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 if (!this._propsAnimated.__isNative) {\n this.refs[refName].setNativeProps(\n this._propsAnimated.__getAnimatedValue()\n );\n } else {\n throw new Error('Attempting to run JS driven animation on animated '\n + 'node that has been moved to \"native\" earlier by starting an '\n + 'animation with `useNativeDriver: true`');\n }\n } else {\n this.forceUpdate();\n }\n };\n\n this._propsAnimated = new AnimatedProps(\n nextProps,\n callback,\n );\n\n\n if (this.refs && this.refs[refName]) {\n this._propsAnimated.setNativeView(this.refs[refName]);\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 AnimatedComponent.propTypes = {\n style: function(props, propName, componentName) {\n if (!Component.propTypes) {\n return;\n }\n\n for (var key in ViewStylePropTypes) {\n if (!Component.propTypes[key] && props[key] !== undefined) {\n console.warn(\n 'You are setting the style `{ ' + key + ': ... }` as a prop. You ' +\n 'should nest it in a style object. ' +\n 'E.g. `{ style: { ' + key + ': ... } }`'\n );\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 super.__detach();\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 add = function(\n a: Animated,\n b: Animated\n): AnimatedAddition {\n return new AnimatedAddition(a, b);\n};\n\nvar multiply = function(\n a: Animated,\n b: Animated\n): AnimatedMultiplication {\n return new AnimatedMultiplication(a, b);\n};\n\nvar modulo = function(\n a: Animated,\n modulus: number\n): AnimatedModulo {\n return new AnimatedModulo(a, modulus);\n};\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 var cb = function(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 if (!animation) {\n cb({finished: true});\n } else {\n animation.start(cb);\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\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\n/**\n * Animations are an important part of modern UX, and the `Animated`\n * library is designed to make them fluid, powerful, and easy to build and\n * maintain.\n *\n * The simplest workflow is to create an `Animated.Value`, hook it up to one or\n * more style attributes of an animated component, and then drive updates either\n * via animations, such as `Animated.timing`, or by hooking into gestures like\n * panning or scrolling via `Animated.event`. `Animated.Value` can also bind to\n * props other than style, and can be interpolated as well. Here is a basic\n * example of a container view that will fade in when it's mounted:\n *\n *```javascript\n * class FadeInView extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * fadeAnim: new Animated.Value(0), // init opacity 0\n * };\n * }\n * componentDidMount() {\n * Animated.timing( // Uses easing functions\n * this.state.fadeAnim, // The value to drive\n * {toValue: 1} // Configuration\n * ).start(); // Don't forget start!\n * }\n * render() {\n * return (\n * // Binds\n * {this.props.children}\n * \n * );\n * }\n * }\n *```\n *\n * Note that only animatable components can be animated. `View`, `Text`, and\n * `Image` are already provided, and you can create custom ones with\n * `createAnimatedComponent`. These special components do the magic of binding\n * the animated values to the properties, and do targeted native updates to\n * avoid the cost of the react render and reconciliation process on every frame.\n * They also handle cleanup on unmount so they are safe by default.\n *\n * Animations are heavily configurable. Custom and pre-defined easing\n * functions, delays, durations, decay factors, spring constants, and more can\n * all be tweaked depending on the type of animation.\n *\n * A single `Animated.Value` can drive any number of properties, and each\n * property can be run through an interpolation first. An interpolation maps\n * input ranges to output ranges, typically using a linear interpolation but\n * also supports easing functions. By default, it will extrapolate the curve\n * beyond the ranges given, but you can also have it clamp the output value.\n *\n * For example, you may want to think about your `Animated.Value` as going from\n * 0 to 1, but animate the position from 150px to 0px and the opacity from 0 to\n * 1. This can easily be done by modifying `style` in the example above like so:\n *\n *```javascript\n * style={{\n * opacity: this.state.fadeAnim, // Binds directly\n * transform: [{\n * translateY: this.state.fadeAnim.interpolate({\n * inputRange: [0, 1],\n * outputRange: [150, 0] // 0 : 150, 0.5 : 75, 1 : 0\n * }),\n * }],\n * }}>\n *```\n *\n * Animations can also be combined in complex ways using composition functions\n * such as `sequence` and `parallel`, and can also be chained together simply\n * by setting the `toValue` of one animation to be another `Animated.Value`.\n *\n * `Animated.ValueXY` is handy for 2D animations, like panning, and there are\n * other helpful additions like `setOffset` and `getLayout` to aid with typical\n * interaction patterns, like drag-and-drop.\n *\n * You can see more example usage in `AnimationExample.js`, the Gratuitous\n * Animation App, and [Animations documentation guide](docs/animations.html).\n *\n * Note that `Animated` is designed to be fully serializable so that animations\n * can be run in a high performance way, independent of the normal JavaScript\n * event loop. This does influence the API, so keep that in mind when it seems a\n * little trickier to do something compared to a fully synchronous system.\n * Checkout `Animated.Value.addListener` as a way to work around some of these\n * limitations, but use it sparingly since it might have performance\n * implications in the future.\n */\nmodule.exports = {\n /**\n * Standard value class for driving animations. Typically initialized with\n * `new Animated.Value(0);`\n */\n Value: AnimatedValue,\n /**\n * 2D value class for driving 2D animations, such as pan gestures.\n */\n ValueXY: AnimatedValueXY,\n\n /**\n * Animates a value from an initial velocity to zero based on a decay\n * coefficient.\n */\n decay,\n /**\n * Animates a value along a timed easing curve. The `Easing` module has tons\n * of pre-defined curves, or you can use your own function.\n */\n timing,\n /**\n * Spring animation based on Rebound and Origami. Tracks velocity state to\n * create fluid motions as the `toValue` updates, and can be chained together.\n */\n spring,\n\n /**\n * Creates a new Animated value composed from two Animated values added\n * together.\n */\n add,\n /**\n * Creates a new Animated value composed from two Animated values multiplied\n * together.\n */\n multiply,\n\n /**\n * Creates a new Animated value that is the (non-negative) modulo of the\n * provided Animated value\n */\n modulo,\n\n /**\n * Starts an animation after the given delay.\n */\n delay,\n /**\n * Starts an array of animations in order, waiting for each to complete\n * before starting the next. If the current running animation is stopped, no\n * following animations will be started.\n */\n sequence,\n /**\n * Starts an array of animations all at the same time. By default, if one\n * of the animations is stopped, they will all be stopped. You can override\n * this with the `stopTogether` flag.\n */\n parallel,\n /**\n * Array of animations may run in parallel (overlap), but are started in\n * sequence with successive delays. Nice for doing trailing effects.\n */\n stagger,\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 *```javascript\n * onScroll={Animated.event(\n * [{nativeEvent: {contentOffset: {x: this._scrollX}}}]\n * {listener}, // Optional async listener\n * )\n * ...\n * onPanResponderMove: Animated.event([\n * null, // raw event arg ignored\n * {dx: this._panX}, // gestureState arg\n * ]),\n *```\n */\n event,\n\n /**\n * Make any React component Animatable. Used to create `Animated.View`, etc.\n */\n createAnimatedComponent,\n\n __PropsOnlyForTests: AnimatedProps,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/AnimatedWeb.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/bezier.js":{"metadata":{"mtime":1463609891000},"data":{"name":"bezier","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"var \n\n\n\n\n\n\n\n\nNEWTON_ITERATIONS=4;\nvar NEWTON_MIN_SLOPE=0.001;\nvar SUBDIVISION_PRECISION=0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS=10;\n\nvar kSplineTableSize=11;\nvar kSampleStepSize=1.0/(kSplineTableSize-1.0);\n\nvar float32ArraySupported=typeof Float32Array==='function';\n\nfunction A(aA1,aA2){return 1.0-3.0*aA2+3.0*aA1;}\nfunction B(aA1,aA2){return 3.0*aA2-6.0*aA1;}\nfunction C(aA1){return 3.0*aA1;}\n\n\nfunction calcBezier(aT,aA1,aA2){return ((A(aA1,aA2)*aT+B(aA1,aA2))*aT+C(aA1))*aT;}\n\n\nfunction getSlope(aT,aA1,aA2){return 3.0*A(aA1,aA2)*aT*aT+2.0*B(aA1,aA2)*aT+C(aA1);}\n\nfunction binarySubdivide(aX,aA,aB,mX1,mX2){\nvar currentX,currentT,i=0;\ndo {\ncurrentT=aA+(aB-aA)/2.0;\ncurrentX=calcBezier(currentT,mX1,mX2)-aX;\nif(currentX>0.0){\naB=currentT;}else \n{\naA=currentT;}}while(\n\nMath.abs(currentX)>SUBDIVISION_PRECISION&&++i=NEWTON_MIN_SLOPE){\nreturn newtonRaphsonIterate(aX,guessForT,mX1,mX2);}else \nif(initialSlope===0.0){\nreturn guessForT;}else \n{\nreturn binarySubdivide(aX,intervalStart,intervalStart+kSampleStepSize,mX1,mX2);}}\n\n\n\nreturn function BezierEasing(x){\nif(mX1===mY1&&mX2===mY2){\nreturn x;}\n\n\nif(x===0){\nreturn 0;}\n\nif(x===1){\nreturn 1;}\n\nreturn calcBezier(getTForX(x),mY1,mY2);};};","map":null,"id":"bezier","source":"/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * @providesModule bezier\n */\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n function C (aA1) { return 3.0 * aA1; }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\n function binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n\n function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n module.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { // eslint-disable-line yoda\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n if (mX1 === mY1 && mX2 === mY2) {\n return x; // linear\n }\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n };\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/Easing.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Easing","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[46],"dependencies":["bezier"],"code":"'use strict';\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(){babelHelpers.classCallCheck(this,Easing);}babelHelpers.createClass(Easing,null,[{key:'step0',value:function step0(\nn){\nreturn n>0?1:0;}},{key:'step1',value:function step1(\n\n\nn){\nreturn n>=1?1:0;}},{key:'linear',value:function linear(\n\n\nt){\nreturn t;}},{key:'ease',value:function ease(\n\n\nt){\nreturn _ease(t);}},{key:'quad',value:function quad(\n\n\nt){\nreturn t*t;}},{key:'cubic',value:function cubic(\n\n\nt){\nreturn t*t*t;}},{key:'poly',value:function poly(\n\n\nn){\nreturn function(t){return Math.pow(t,n);};}},{key:'sin',value:function sin(\n\n\nt){\nreturn 1-Math.cos(t*Math.PI/2);}},{key:'circle',value:function circle(\n\n\nt){\nreturn 1-Math.sqrt(1-t*t);}},{key:'exp',value:function exp(\n\n\nt){\nreturn Math.pow(2,10*(t-1));}},{key:'elastic',value:function elastic()\n\n\n\n\n\n\n\n\n\n\n\n\n{var bounciness=arguments.length<=0||arguments[0]===undefined?1:arguments[0];\nvar p=bounciness*Math.PI;\nreturn function(t){return 1-Math.pow(Math.cos(t*Math.PI/2),3)*Math.cos(t*p);};}},{key:'back',value:function back(\n\n\ns){\nif(s===undefined){\ns=1.70158;}\n\nreturn function(t){return t*t*((s+1)*t-s);};}},{key:'bounce',value:function bounce(\n\n\nt){\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:function bezier(\n\n\n\nx1,\ny1,\nx2,\ny2)\n{\nreturn _bezier(x1,y1,x2,y2);}},{key:'in',value:function _in(\n\n\n\neasing)\n{\nreturn easing;}},{key:'out',value:function out(\n\n\n\n\n\n\neasing)\n{\nreturn function(t){return 1-easing(1-t);};}},{key:'inOut',value:function inOut(\n\n\n\n\n\n\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\n\n\nmodule.exports=Easing;","map":null,"id":"Easing","source":"/**\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 /**\n * A simple elastic interaction, similar to a spring. Default bounciness\n * is 1, which overshoots a little bit once. 0 bounciness doesn't overshoot\n * at all, and bounciness of N > 1 will overshoot about N times.\n *\n * Wolfram Plots:\n *\n * http://tiny.cc/elastic_b_1 (default bounciness = 1)\n * http://tiny.cc/elastic_b_3 (bounciness = 3)\n */\n static elastic(bounciness: number = 1): (t: number) => number {\n var p = bounciness * Math.PI;\n return (t) => 1 - Math.pow(Math.cos(t * Math.PI / 2), 3) * Math.cos(t * 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 ): (t: number) => number {\n return _bezier(x1, y1, x2, y2);\n }\n\n static in(\n easing: (t: number) => number,\n ): (t: number) => number {\n return easing;\n }\n\n /**\n * Runs an easing function backwards.\n */\n static out(\n easing: (t: number) => number,\n ): (t: number) => number {\n return (t) => 1 - easing(1 - t);\n }\n\n /**\n * Makes any easing function symmetrical.\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\n\n\nmodule.exports = Easing;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/Interpolation.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Interpolation","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[49,99],"dependencies":["fbjs/lib/invariant","normalizeColor"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\nvar normalizeColor=require('normalizeColor');\n\n\n\n\n\n\n\n\n\n\n\n\nvar linear=function linear(t){return t;};var \n\n\n\n\n\nInterpolation=function(){function Interpolation(){babelHelpers.classCallCheck(this,Interpolation);}babelHelpers.createClass(Interpolation,null,[{key:'create',value:function create(\nconfig){\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(resultinputMax){\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\nfunction colorToRgba(input){\nvar int32Color=normalizeColor(input);\nif(int32Color===null){\nreturn input;}\n\n\nint32Color=int32Color||0;\n\nvar r=(int32Color&0xff000000)>>>24;\nvar g=(int32Color&0x00ff0000)>>>16;\nvar b=(int32Color&0x0000ff00)>>>8;\nvar a=(int32Color&0x000000ff)/255;\n\nreturn 'rgba('+r+', '+g+', '+b+', '+a+')';}\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');\noutputRange=outputRange.map(colorToRgba);\ncheckPattern(outputRange);\n\n\n\n\n\n\n\n\n\n\n\n\nvar outputRanges=outputRange[0].match(stringShapeRegex).map(function(){return [];});\noutputRange.forEach(function(value){\n\n\n\nvalue.match(stringShapeRegex).forEach(function(number,i){\noutputRanges[i].push(+number);});});\n\n\n\n\n\n\nvar interpolations=outputRange[0].match(stringShapeRegex).map(function(value,i){\nreturn Interpolation.create(babelHelpers.extends({},\nconfig,{\noutputRange:outputRanges[i]}));});\n\n\n\n\n\nvar shouldRound=isRgbOrRgba(outputRange[0]);\n\nreturn function(input){\nvar i=0;\n\n\n\nreturn outputRange[0].replace(stringShapeRegex,function(){\nvar val=+interpolations[i++](input);\nvar rounded=shouldRound&&i<4?Math.round(val):val;\nreturn String(rounded);});};}\n\n\n\n\nfunction isRgbOrRgba(range){\nreturn typeof range==='string'&&range.startsWith('rgb');}\n\n\nfunction checkPattern(arr){\nvar pattern=arr[0].replace(stringShapeRegex,'');\nfor(var i=1;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[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;","map":null,"id":"Interpolation","source":"/**\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/* eslint no-bitwise: 0 */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\nvar normalizeColor = require('normalizeColor');\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\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\nfunction colorToRgba(input: string): string {\n var int32Color = normalizeColor(input);\n if (int32Color === null) {\n return input;\n }\n\n int32Color = int32Color || 0; // $FlowIssue\n\n var r = (int32Color & 0xff000000) >>> 24;\n var g = (int32Color & 0x00ff0000) >>> 16;\n var b = (int32Color & 0x0000ff00) >>> 8;\n var a = (int32Color & 0x000000ff) / 255;\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\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 outputRange = outputRange.map(colorToRgba);\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 /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to\n * guard against this possibility.\n */\n var outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n /* $FlowFixMe(>=0.18.0): `value.match()` can return `null`. Need to guard\n * against this possibility.\n */\n value.match(stringShapeRegex).forEach((number, i) => {\n outputRanges[i].push(+number);\n });\n });\n\n /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to\n * guard against this possibility.\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 // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n // round the opacity (4th column).\n const shouldRound = isRgbOrRgba(outputRange[0]);\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 const val = +interpolations[i++](input);\n const rounded = shouldRound && i < 4 ? Math.round(val) : val;\n return String(rounded);\n });\n };\n}\n\nfunction isRgbOrRgba(range) {\n return typeof range === 'string' && range.startsWith('rgb');\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/NativeAnimatedHelper.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NativeAnimatedHelper","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[59,121],"dependencies":["NativeModules","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeAnimatedModule=require('NativeModules').NativeAnimatedModule;\n\nvar invariant=require('fbjs/lib/invariant');\n\nvar __nativeAnimatedNodeTagCount=1;\nvar __nativeAnimationIdCount=1;\n\n\n\n\n\n\n\n\nvar API={\ncreateAnimatedNode:function createAnimatedNode(tag,config){\nassertNativeAnimatedModule();\nNativeAnimatedModule.createAnimatedNode(tag,config);},\n\nconnectAnimatedNodes:function connectAnimatedNodes(parentTag,childTag){\nassertNativeAnimatedModule();\nNativeAnimatedModule.connectAnimatedNodes(parentTag,childTag);},\n\ndisconnectAnimatedNodes:function disconnectAnimatedNodes(parentTag,childTag){\nassertNativeAnimatedModule();\nNativeAnimatedModule.disconnectAnimatedNodes(parentTag,childTag);},\n\nstartAnimatingNode:function startAnimatingNode(animationId,nodeTag,config,endCallback){\nassertNativeAnimatedModule();\nNativeAnimatedModule.startAnimatingNode(animationId,nodeTag,config,endCallback);},\n\nstopAnimation:function stopAnimation(animationId){\nassertNativeAnimatedModule();\nNativeAnimatedModule.stopAnimation(animationId);},\n\nsetAnimatedNodeValue:function setAnimatedNodeValue(nodeTag,value){\nassertNativeAnimatedModule();\nNativeAnimatedModule.setAnimatedNodeValue(nodeTag,value);},\n\nconnectAnimatedNodeToView:function connectAnimatedNodeToView(nodeTag,viewTag){\nassertNativeAnimatedModule();\nNativeAnimatedModule.connectAnimatedNodeToView(nodeTag,viewTag);},\n\ndisconnectAnimatedNodeFromView:function disconnectAnimatedNodeFromView(nodeTag,viewTag){\nassertNativeAnimatedModule();\nNativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag,viewTag);},\n\ndropAnimatedNode:function dropAnimatedNode(tag){\nassertNativeAnimatedModule();\nNativeAnimatedModule.dropAnimatedNode(tag);}};\n\n\n\n\n\n\n\n\n\n\nvar PROPS_WHITELIST={\nstyle:{\nopacity:true,\n\n\nscaleX:true,\nscaleY:true,\nrotation:true,\ntranslateX:true,\ntranslateY:true}};\n\n\n\nfunction validateProps(params){\nfor(var key in params){\nif(!PROPS_WHITELIST.hasOwnProperty(key)){\nthrow new Error('Property \\''+key+'\\' is not supported by native animated module');}}}\n\n\n\n\nfunction validateStyles(styles){\nvar STYLES_WHITELIST=PROPS_WHITELIST.style||{};\nfor(var key in styles){\nif(!STYLES_WHITELIST.hasOwnProperty(key)){\nthrow new Error('Style property \\''+key+'\\' is not supported by native animated module');}}}\n\n\n\n\nfunction validateInterpolation(config){\nvar SUPPORTED_INTERPOLATION_PARAMS={\ninputRange:true,\noutputRange:true};\n\nfor(var key in config){\nif(!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(key)){\nthrow new Error('Interpolation property \\''+key+'\\' is not supported by native animated module');}}}\n\n\n\n\nfunction generateNewNodeTag(){\nreturn __nativeAnimatedNodeTagCount++;}\n\n\nfunction generateNewAnimationId(){\nreturn __nativeAnimationIdCount++;}\n\n\nfunction assertNativeAnimatedModule(){\ninvariant(NativeAnimatedModule,'Native animated module is not available');}\n\n\nmodule.exports={\nAPI:API,\nvalidateProps:validateProps,\nvalidateStyles:validateStyles,\nvalidateInterpolation:validateInterpolation,\ngenerateNewNodeTag:generateNewNodeTag,\ngenerateNewAnimationId:generateNewAnimationId,\nassertNativeAnimatedModule:assertNativeAnimatedModule};","map":null,"id":"NativeAnimatedHelper","source":"/**\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 NativeAnimatedHelper\n * @flow\n */\n'use strict';\n\nvar NativeAnimatedModule = require('NativeModules').NativeAnimatedModule;\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */\nvar __nativeAnimationIdCount = 1; /* used for started animations */\n\ntype EndResult = {finished: bool};\ntype EndCallback = (result: EndResult) => void;\n\n/**\n * Simple wrappers around NativeANimatedModule to provide flow and autocmplete support for\n * the native module methods\n */\nvar API = {\n createAnimatedNode: function(tag: number, config: Object): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.createAnimatedNode(tag, config);\n },\n connectAnimatedNodes: function(parentTag: number, childTag: number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.connectAnimatedNodes(parentTag, childTag);\n },\n disconnectAnimatedNodes: function(parentTag: number, childTag: number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.disconnectAnimatedNodes(parentTag, childTag);\n },\n startAnimatingNode: function(animationId: number, nodeTag: number, config: Object, endCallback: EndCallback): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.startAnimatingNode(animationId, nodeTag, config, endCallback);\n },\n stopAnimation: function(animationId: number) {\n assertNativeAnimatedModule();\n NativeAnimatedModule.stopAnimation(animationId);\n },\n setAnimatedNodeValue: function(nodeTag: number, value: number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.setAnimatedNodeValue(nodeTag, value);\n },\n connectAnimatedNodeToView: function(nodeTag: number, viewTag: number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.connectAnimatedNodeToView(nodeTag, viewTag);\n },\n disconnectAnimatedNodeFromView: function(nodeTag: number, viewTag: number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag, viewTag);\n },\n dropAnimatedNode: function(tag: number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.dropAnimatedNode(tag);\n },\n};\n\n/**\n * Properties allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric property that doesn't need\n * to be updated through the shadow view hierarchy (all non-layout properties). This list is limited\n * to the properties that will perform best when animated off the JS thread.\n */\nvar PROPS_WHITELIST = {\n style: {\n opacity: true,\n\n /* legacy android transform properties */\n scaleX: true,\n scaleY: true,\n rotation: true,\n translateX: true,\n translateY: true,\n },\n};\n\nfunction validateProps(params: Object): void {\n for (var key in params) {\n if (!PROPS_WHITELIST.hasOwnProperty(key)) {\n throw new Error(`Property '${key}' is not supported by native animated module`);\n }\n }\n}\n\nfunction validateStyles(styles: Object): void {\n var STYLES_WHITELIST = PROPS_WHITELIST.style || {};\n for (var key in styles) {\n if (!STYLES_WHITELIST.hasOwnProperty(key)) {\n throw new Error(`Style property '${key}' is not supported by native animated module`);\n }\n }\n}\n\nfunction validateInterpolation(config: Object): void {\n var SUPPORTED_INTERPOLATION_PARAMS = {\n inputRange: true,\n outputRange: true,\n };\n for (var key in config) {\n if (!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(key)) {\n throw new Error(`Interpolation property '${key}' is not supported by native animated module`);\n }\n }\n}\n\nfunction generateNewNodeTag(): number {\n return __nativeAnimatedNodeTagCount++;\n}\n\nfunction generateNewAnimationId(): number {\n return __nativeAnimationIdCount++;\n}\n\nfunction assertNativeAnimatedModule(): void {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n}\n\nmodule.exports = {\n API,\n validateProps,\n validateStyles,\n validateInterpolation,\n generateNewNodeTag,\n generateNewAnimationId,\n assertNativeAnimatedModule,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/src/SpringConfig.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SpringConfig","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction tensionFromOrigamiValue(oValue){\nreturn (oValue-30)*3.62+194;}\n\n\nfunction frictionFromOrigamiValue(oValue){\nreturn (oValue-8)*3+25;}\n\n\nfunction fromOrigamiTensionAndFriction(\ntension,\nfriction)\n{\nreturn {\ntension:tensionFromOrigamiValue(tension),\nfriction:frictionFromOrigamiValue(friction)};}\n\n\n\nfunction fromBouncinessAndSpeed(\nbounciness,\nspeed)\n{\nfunction normalize(value,startValue,endValue){\nreturn (value-startValue)/(endValue-startValue);}\n\n\nfunction projectNormal(n,start,end){\nreturn start+n*(end-start);}\n\n\nfunction linearInterpolation(t,start,end){\nreturn t*end+(1-t)*start;}\n\n\nfunction quadraticOutInterpolation(t,start,end){\nreturn linearInterpolation(2*t-t*t,start,end);}\n\n\nfunction b3Friction1(x){\nreturn 0.0007*Math.pow(x,3)-\n0.031*Math.pow(x,2)+0.64*x+1.28;}\n\n\nfunction b3Friction2(x){\nreturn 0.000044*Math.pow(x,3)-\n0.006*Math.pow(x,2)+0.36*x+2;}\n\n\nfunction b3Friction3(x){\nreturn 0.00000045*Math.pow(x,3)-\n0.000332*Math.pow(x,2)+0.1078*x+5.84;}\n\n\nfunction b3Nobounce(tension){\nif(tension<=18){\nreturn b3Friction1(tension);}else \nif(tension>18&&tension<=44){\nreturn b3Friction2(tension);}else \n{\nreturn b3Friction3(tension);}}\n\n\n\nvar b=normalize(bounciness/1.7,0,20);\nb=projectNormal(b,0,0.8);\nvar s=normalize(speed/1.7,0,20);\nvar bouncyTension=projectNormal(s,0.5,200);\nvar bouncyFriction=quadraticOutInterpolation(\nb,\nb3Nobounce(bouncyTension),\n0.01);\n\n\nreturn {\ntension:tensionFromOrigamiValue(bouncyTension),\nfriction:frictionFromOrigamiValue(bouncyFriction)};}\n\n\n\nmodule.exports={\nfromOrigamiTensionAndFriction:fromOrigamiTensionAndFriction,\nfromBouncinessAndSpeed:fromBouncinessAndSpeed};","map":null,"id":"SpringConfig","source":"/**\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 SpringConfig\n * @flow\n */\n\n'use strict';\n\ntype SpringConfigType = {\n tension: number,\n friction: number,\n};\n\nfunction tensionFromOrigamiValue(oValue) {\n return (oValue - 30) * 3.62 + 194;\n}\n\nfunction frictionFromOrigamiValue(oValue) {\n return (oValue - 8) * 3 + 25;\n}\n\nfunction fromOrigamiTensionAndFriction(\n tension: number,\n friction: number,\n): SpringConfigType {\n return {\n tension: tensionFromOrigamiValue(tension),\n friction: frictionFromOrigamiValue(friction)\n };\n}\n\nfunction fromBouncinessAndSpeed(\n bounciness: number,\n speed: number,\n): SpringConfigType {\n function normalize(value, startValue, endValue) {\n return (value - startValue) / (endValue - startValue);\n }\n\n function projectNormal(n, start, end) {\n return start + (n * (end - start));\n }\n\n function linearInterpolation(t, start, end) {\n return t * end + (1 - t) * start;\n }\n\n function quadraticOutInterpolation(t, start, end) {\n return linearInterpolation(2 * t - t * t, start, end);\n }\n\n function b3Friction1(x) {\n return (0.0007 * Math.pow(x, 3)) -\n (0.031 * Math.pow(x, 2)) + 0.64 * x + 1.28;\n }\n\n function b3Friction2(x) {\n return (0.000044 * Math.pow(x, 3)) -\n (0.006 * Math.pow(x, 2)) + 0.36 * x + 2;\n }\n\n function b3Friction3(x) {\n return (0.00000045 * Math.pow(x, 3)) -\n (0.000332 * Math.pow(x, 2)) + 0.1078 * x + 5.84;\n }\n\n function b3Nobounce(tension) {\n if (tension <= 18) {\n return b3Friction1(tension);\n } else if (tension > 18 && tension <= 44) {\n return b3Friction2(tension);\n } else {\n return b3Friction3(tension);\n }\n }\n\n var b = normalize(bounciness / 1.7, 0, 20);\n b = projectNormal(b, 0, 0.8);\n var s = normalize(speed / 1.7, 0, 20);\n var bouncyTension = projectNormal(s, 0.5, 200);\n var bouncyFriction = quadraticOutInterpolation(\n b,\n b3Nobounce(bouncyTension),\n 0.01\n );\n\n return {\n tension: tensionFromOrigamiValue(bouncyTension),\n friction: frictionFromOrigamiValue(bouncyFriction)\n };\n}\n\nmodule.exports = {\n fromOrigamiTensionAndFriction,\n fromBouncinessAndSpeed,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Animated/release/gulpfile.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/NativeModules.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NativeModules","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,138],"dependencies":["BatchedBridge","Platform"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BatchedBridge=require('BatchedBridge');\nvar RemoteModules=BatchedBridge.RemoteModules;\nvar Platform=require('Platform');\n\nfunction normalizePrefix(moduleName){\nreturn moduleName.replace(/^(RCT|RK)/,'');}\n\n\n\n\n\nObject.keys(RemoteModules).forEach(function(moduleName){\nvar strippedName=normalizePrefix(moduleName);\nif(RemoteModules['RCT'+strippedName]&&RemoteModules['RK'+strippedName]){\nthrow new Error(\n'Module cannot be registered as both RCT and RK: '+moduleName);}\n\n\nif(strippedName!==moduleName){\nRemoteModules[strippedName]=RemoteModules[moduleName];\ndelete RemoteModules[moduleName];}});\n\n\n\n\n\n\n\nvar NativeModules={};\nObject.keys(RemoteModules).forEach(function(moduleName){\nObject.defineProperty(NativeModules,moduleName,{\nconfigurable:true,\nenumerable:true,\nget:function get(){\nvar module=RemoteModules[moduleName];\nif(module&&typeof module.moduleID==='number'&&global.nativeRequireModuleConfig){\nvar json=global.nativeRequireModuleConfig(moduleName);\nvar config=json&&JSON.parse(json);\nmodule=config&&BatchedBridge.processModuleConfig(config,module.moduleID);\nRemoteModules[moduleName]=module;}\n\nreturn module;}});});\n\n\n\n\n\n\n\n\n\n\n\n\n\nif(Platform.OS==='ios'){(function(){\nvar UIManager=NativeModules.UIManager;\nUIManager&&Object.keys(UIManager).forEach(function(viewName){\nvar viewConfig=UIManager[viewName];\nif(viewConfig.Manager){(function(){\nvar constants=void 0;\n\nObject.defineProperty(viewConfig,'Constants',{\nconfigurable:true,\nenumerable:true,\nget:function get(){\nif(constants){\nreturn constants;}\n\nconstants={};\nvar viewManager=NativeModules[normalizePrefix(viewConfig.Manager)];\nviewManager&&Object.keys(viewManager).forEach(function(key){\nvar value=viewManager[key];\nif(typeof value!=='function'){\nconstants[key]=value;}});\n\n\nreturn constants;}});\n\n\nvar commands=void 0;\n\nObject.defineProperty(viewConfig,'Commands',{\nconfigurable:true,\nenumerable:true,\nget:function get(){\nif(commands){\nreturn commands;}\n\ncommands={};\nvar viewManager=NativeModules[normalizePrefix(viewConfig.Manager)];\nviewManager&&Object.keys(viewManager).forEach(function(key,index){\nvar value=viewManager[key];\nif(typeof value==='function'){\ncommands[key]=index;}});\n\n\nreturn commands;}});})();}});})();}\n\n\n\n\n\n\nmodule.exports=NativeModules;","map":null,"id":"NativeModules","source":"/**\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\nconst BatchedBridge = require('BatchedBridge');\nconst RemoteModules = BatchedBridge.RemoteModules;\nconst Platform = require('Platform');\n\nfunction normalizePrefix(moduleName: string): string {\n return moduleName.replace(/^(RCT|RK)/, '');\n}\n\n/**\n * Dirty hack to support old (RK) and new (RCT) native module name conventions.\n */\nObject.keys(RemoteModules).forEach((moduleName) => {\n const strippedName = normalizePrefix(moduleName);\n if (RemoteModules['RCT' + strippedName] && RemoteModules['RK' + strippedName]) {\n throw new Error(\n 'Module cannot be registered as both RCT and RK: ' + moduleName\n );\n }\n if (strippedName !== moduleName) {\n RemoteModules[strippedName] = RemoteModules[moduleName];\n delete RemoteModules[moduleName];\n }\n});\n\n/**\n * Define lazy getters for each module.\n * These will return the module if already loaded, or load it if not.\n */\nconst NativeModules = {};\nObject.keys(RemoteModules).forEach((moduleName) => {\n Object.defineProperty(NativeModules, moduleName, {\n configurable: true,\n enumerable: true,\n get: () => {\n let module = RemoteModules[moduleName];\n if (module && typeof module.moduleID === 'number' && global.nativeRequireModuleConfig) {\n const json = global.nativeRequireModuleConfig(moduleName);\n const config = json && JSON.parse(json);\n module = config && BatchedBridge.processModuleConfig(config, module.moduleID);\n RemoteModules[moduleName] = module;\n }\n return module;\n },\n });\n});\n\n/**\n * Copies the ViewManager constants and commands into UIManager. This is\n * only needed for iOS, which puts the constants in the ViewManager\n * namespace instead of UIManager, unlike Android.\n *\n * We'll eventually move this logic to UIManager.js, once all\n * the call sites accessing NativeModules.UIManager directly have\n * been removed #9344445\n */\nif (Platform.OS === 'ios') {\n const UIManager = NativeModules.UIManager;\n UIManager && Object.keys(UIManager).forEach(viewName => {\n const viewConfig = UIManager[viewName];\n if (viewConfig.Manager) {\n let constants;\n /* $FlowFixMe - nice try. Flow doesn't like getters */\n Object.defineProperty(viewConfig, 'Constants', {\n configurable: true,\n enumerable: true,\n get: () => {\n if (constants) {\n return constants;\n }\n constants = {};\n const viewManager = NativeModules[normalizePrefix(viewConfig.Manager)];\n viewManager && Object.keys(viewManager).forEach(key => {\n const value = viewManager[key];\n if (typeof value !== 'function') {\n constants[key] = value;\n }\n });\n return constants;\n },\n });\n let commands;\n /* $FlowFixMe - nice try. Flow doesn't like getters */\n Object.defineProperty(viewConfig, 'Commands', {\n configurable: true,\n enumerable: true,\n get: () => {\n if (commands) {\n return commands;\n }\n commands = {};\n const viewManager = NativeModules[normalizePrefix(viewConfig.Manager)];\n viewManager && Object.keys(viewManager).forEach((key, index) => {\n const value = viewManager[key];\n if (typeof value === 'function') {\n commands[key] = index;\n }\n });\n return commands;\n },\n });\n }\n });\n}\n\nmodule.exports = NativeModules;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/RCTAlertManager.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RCTAlertManager"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/RCTEventEmitter.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RCTEventEmitter","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,106],"dependencies":["BatchedBridge","ReactNativeEventEmitter"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BatchedBridge=require('BatchedBridge');\nvar ReactNativeEventEmitter=require('ReactNativeEventEmitter');\n\nBatchedBridge.registerCallableModule(\n'RCTEventEmitter',\nReactNativeEventEmitter);\n\n\n\nmodule.exports=ReactNativeEventEmitter;","map":null,"id":"RCTEventEmitter","source":"/**\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 RCTEventEmitter\n * @flow\n */\n'use strict';\n\nvar BatchedBridge = require('BatchedBridge');\nvar ReactNativeEventEmitter = require('ReactNativeEventEmitter');\n\nBatchedBridge.registerCallableModule(\n 'RCTEventEmitter',\n ReactNativeEventEmitter\n);\n\n// Completely locally implemented - no native hooks.\nmodule.exports = ReactNativeEventEmitter;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/WebView/WebView.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"WebView"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"WebView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[190,246,287,321,360,392,423,454,486,533,578,623,682,745,803,888],"dependencies":["ActivityIndicatorIOS","EdgeInsetsPropType","React","ReactNative","StyleSheet","Text","UIManager","View","ScrollView","deprecatedPropType","fbjs/lib/invariant","fbjs/lib/keyMirror","processDecelerationRate","requireNativeComponent","resolveAssetSource","NativeModules"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js';\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 ReactNative=require('ReactNative');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar UIManager=require('UIManager');\nvar View=require('View');\nvar ScrollView=require('ScrollView');\n\nvar deprecatedPropType=require('deprecatedPropType');\nvar invariant=require('fbjs/lib/invariant');\nvar keyMirror=require('fbjs/lib/keyMirror');\nvar processDecelerationRate=require('processDecelerationRate');\nvar requireNativeComponent=require('requireNativeComponent');\nvar resolveAssetSource=require('resolveAssetSource');\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=keyMirror({\nclick:true,\nformsubmit:true,\nbackforward:true,\nreload:true,\nformresubmit:true,\nother:true});\n\n\nvar JSNavigationScheme='react-js-navigation';\n\n\n\n\n\n\n\n\n\nvar defaultRenderLoading=function defaultRenderLoading(){return (\nReact.createElement(View,{style:styles.loadingView,__source:{fileName:_jsxFileName,lineNumber:63}},\nReact.createElement(ActivityIndicatorIOS,{__source:{fileName:_jsxFileName,lineNumber:64}})));};\n\n\nvar defaultRenderError=function defaultRenderError(errorDomain,errorCode,errorDesc){return (\nReact.createElement(View,{style:styles.errorContainer,__source:{fileName:_jsxFileName,lineNumber:68}},\nReact.createElement(Text,{style:styles.errorTextTitle,__source:{fileName:_jsxFileName,lineNumber:69}},'Error loading page'),\n\n\nReact.createElement(Text,{style:styles.errorText,__source:{fileName:_jsxFileName,lineNumber:72}},\n'Domain: '+errorDomain),\n\nReact.createElement(Text,{style:styles.errorText,__source:{fileName:_jsxFileName,lineNumber:75}},\n'Error Code: '+errorCode),\n\nReact.createElement(Text,{style:styles.errorText,__source:{fileName:_jsxFileName,lineNumber:78}},\n'Description: '+errorDesc)));};\n\n\n\n\n\n\n\nvar WebView=React.createClass({displayName:'WebView',\nstatics:{\nJSNavigationScheme:JSNavigationScheme,\nNavigationType:NavigationType},\n\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\nhtml:deprecatedPropType(\nPropTypes.string,\n'Use the `source` prop instead.'),\n\n\nurl:deprecatedPropType(\nPropTypes.string,\n'Use the `source` prop instead.'),\n\n\n\n\n\nsource:PropTypes.oneOfType([\nPropTypes.shape({\n\n\n\nuri:PropTypes.string,\n\n\n\n\nmethod:PropTypes.string,\n\n\n\n\nheaders:PropTypes.object,\n\n\n\n\n\n\nbody:PropTypes.string}),\n\nPropTypes.shape({\n\n\n\nhtml:PropTypes.string,\n\n\n\nbaseUrl:PropTypes.string}),\n\n\n\n\nPropTypes.number]),\n\n\n\n\n\nrenderError:PropTypes.func,\n\n\n\nrenderLoading:PropTypes.func,\n\n\n\nonLoad:PropTypes.func,\n\n\n\nonLoadEnd:PropTypes.func,\n\n\n\nonLoadStart:PropTypes.func,\n\n\n\nonError:PropTypes.func,\n\n\n\nbounces:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\ndecelerationRate:ScrollView.propTypes.decelerationRate,\n\n\n\nscrollEnabled:PropTypes.bool,\nautomaticallyAdjustContentInsets:PropTypes.bool,\ncontentInset:EdgeInsetsPropType,\nonNavigationStateChange:PropTypes.func,\nstartInLoadingState:PropTypes.bool,\nstyle:View.propTypes.style,\n\n\n\n\n\njavaScriptEnabled:PropTypes.bool,\n\n\n\n\n\ndomStorageEnabled:PropTypes.bool,\n\n\n\n\ninjectedJavaScript:PropTypes.string,\n\n\n\n\nscalesPageToFit:PropTypes.bool,\n\n\n\n\n\n\nonShouldStartLoadWithRequest:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\nallowsInlineMediaPlayback:PropTypes.bool,\n\n\n\n\n\nmediaPlaybackRequiresUserAction:PropTypes.bool}),\n\n\ngetInitialState:function getInitialState(){\nreturn {\nviewState:WebViewState.IDLE,\nlastErrorEvent:null,\nstartInLoadingState:true};},\n\n\n\ncomponentWillMount:function componentWillMount(){\nif(this.props.startInLoadingState){\nthis.setState({viewState:WebViewState.LOADING});}},\n\n\n\nrender:function render(){var _this=this;\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 onShouldStartLoadWithRequest=this.props.onShouldStartLoadWithRequest&&function(event){\nvar shouldStart=_this.props.onShouldStartLoadWithRequest&&\n_this.props.onShouldStartLoadWithRequest(event.nativeEvent);\nRCTWebViewManager.startLoadWithResult(!!shouldStart,event.nativeEvent.lockIdentifier);};\n\n\nvar decelerationRate=processDecelerationRate(this.props.decelerationRate);\n\nvar source=this.props.source||{};\nif(this.props.html){\nsource.html=this.props.html;}else \nif(this.props.url){\nsource.uri=this.props.url;}\n\n\nvar webView=\nReact.createElement(RCTWebView,{\nref:RCT_WEBVIEW_REF,\nkey:'webViewKey',\nstyle:webViewStyles,\nsource:resolveAssetSource(source),\ninjectedJavaScript:this.props.injectedJavaScript,\nbounces:this.props.bounces,\nscrollEnabled:this.props.scrollEnabled,\ndecelerationRate:decelerationRate,\ncontentInset:this.props.contentInset,\nautomaticallyAdjustContentInsets:this.props.automaticallyAdjustContentInsets,\nonLoadingStart:this._onLoadingStart,\nonLoadingFinish:this._onLoadingFinish,\nonLoadingError:this._onLoadingError,\nonShouldStartLoadWithRequest:onShouldStartLoadWithRequest,\nscalesPageToFit:this.props.scalesPageToFit,\nallowsInlineMediaPlayback:this.props.allowsInlineMediaPlayback,\nmediaPlaybackRequiresUserAction:this.props.mediaPlaybackRequiresUserAction,__source:{fileName:_jsxFileName,lineNumber:304}});\n\n\nreturn (\nReact.createElement(View,{style:styles.container,__source:{fileName:_jsxFileName,lineNumber:325}},\nwebView,\notherView));},\n\n\n\n\n\n\n\ngoForward:function goForward(){\nUIManager.dispatchViewManagerCommand(\nthis.getWebViewHandle(),\nUIManager.RCTWebView.Commands.goForward,\nnull);},\n\n\n\n\n\n\ngoBack:function goBack(){\nUIManager.dispatchViewManagerCommand(\nthis.getWebViewHandle(),\nUIManager.RCTWebView.Commands.goBack,\nnull);},\n\n\n\n\n\n\nreload:function reload(){\nUIManager.dispatchViewManagerCommand(\nthis.getWebViewHandle(),\nUIManager.RCTWebView.Commands.reload,\nnull);},\n\n\n\nstopLoading:function stopLoading(){\nUIManager.dispatchViewManagerCommand(\nthis.getWebViewHandle(),\nUIManager.RCTWebView.Commands.stopLoading,\nnull);},\n\n\n\n\n\n\n\n_updateNavigationState:function _updateNavigationState(event){\nif(this.props.onNavigationStateChange){\nthis.props.onNavigationStateChange(event.nativeEvent);}},\n\n\n\n\n\n\ngetWebViewHandle:function getWebViewHandle(){\nreturn ReactNative.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);},\n\n\n_onLoadingStart:function _onLoadingStart(event){\nvar onLoadStart=this.props.onLoadStart;\nonLoadStart&&onLoadStart(event);\nthis._updateNavigationState(event);},\n\n\n_onLoadingError:function _onLoadingError(event){\nevent.persist();var _props=\nthis.props;var onError=_props.onError;var onLoadEnd=_props.onLoadEnd;\nonError&&onError(event);\nonLoadEnd&&onLoadEnd(event);\nconsole.warn('Encountered an error loading page',event.nativeEvent);\n\nthis.setState({\nlastErrorEvent:event.nativeEvent,\nviewState:WebViewState.ERROR});},\n\n\n\n_onLoadingFinish:function _onLoadingFinish(event){var _props2=\nthis.props;var onLoad=_props2.onLoad;var onLoadEnd=_props2.onLoadEnd;\nonLoad&&onLoad(event);\nonLoadEnd&&onLoadEnd(event);\nthis.setState({\nviewState:WebViewState.IDLE});\n\nthis._updateNavigationState(event);}});\n\n\n\nvar RCTWebView=requireNativeComponent('RCTWebView',WebView,{\nnativeOnly:{\nonLoadingStart:true,\nonLoadingError:true,\nonLoadingFinish:true}});\n\n\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',\nheight:100},\n\nwebView:{\nbackgroundColor:'#ffffff'}});\n\n\n\nmodule.exports=WebView;","map":null,"id":"WebView","source":"/**\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 * @noflow\n */\n'use strict';\n\nvar ActivityIndicatorIOS = require('ActivityIndicatorIOS');\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar React = require('React');\nvar ReactNative = require('ReactNative');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar UIManager = require('UIManager');\nvar View = require('View');\nvar ScrollView = require('ScrollView');\n\nvar deprecatedPropType = require('deprecatedPropType');\nvar invariant = require('fbjs/lib/invariant');\nvar keyMirror = require('fbjs/lib/keyMirror');\nvar processDecelerationRate = require('processDecelerationRate');\nvar requireNativeComponent = require('requireNativeComponent');\nvar resolveAssetSource = require('resolveAssetSource');\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\nconst NavigationType = keyMirror({\n click: true,\n formsubmit: true,\n backforward: true,\n reload: true,\n formresubmit: true,\n other: true,\n});\n\nconst JSNavigationScheme = 'react-js-navigation';\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\n/**\n * Renders a native WebView.\n */\nvar WebView = React.createClass({\n statics: {\n JSNavigationScheme: JSNavigationScheme,\n NavigationType: NavigationType,\n },\n\n propTypes: {\n ...View.propTypes,\n\n html: deprecatedPropType(\n PropTypes.string,\n 'Use the `source` prop instead.'\n ),\n\n url: deprecatedPropType(\n PropTypes.string,\n 'Use the `source` prop instead.'\n ),\n\n /**\n * Loads static html or a uri (with optional headers) in the WebView.\n */\n source: PropTypes.oneOfType([\n PropTypes.shape({\n /*\n * The URI to load in the WebView. Can be a local or remote file.\n */\n uri: PropTypes.string,\n /*\n * The HTTP Method to use. Defaults to GET if not specified.\n * NOTE: On Android, only GET and POST are supported.\n */\n method: PropTypes.string,\n /*\n * Additional HTTP headers to send with the request.\n * NOTE: On Android, this can only be used with GET requests.\n */\n headers: PropTypes.object,\n /*\n * The HTTP body to send with the request. This must be a valid\n * UTF-8 string, and will be sent exactly as specified, with no\n * additional encoding (e.g. URL-escaping or base64) applied.\n * NOTE: On Android, this can only be used with POST requests.\n */\n body: PropTypes.string,\n }),\n PropTypes.shape({\n /*\n * A static HTML page to display in the WebView.\n */\n html: PropTypes.string,\n /*\n * The base URL to be used for any relative links in the HTML.\n */\n baseUrl: PropTypes.string,\n }),\n /*\n * Used internally by packager.\n */\n PropTypes.number,\n ]),\n\n /**\n * Function that returns a view to show if there's an error.\n */\n renderError: PropTypes.func, // view to show if there's an error\n /**\n * Function that returns a loading indicator.\n */\n renderLoading: PropTypes.func,\n /**\n * Invoked when load finish\n */\n onLoad: PropTypes.func,\n /**\n * Invoked when load either succeeds or fails\n */\n onLoadEnd: PropTypes.func,\n /**\n * Invoked on load start\n */\n onLoadStart: PropTypes.func,\n /**\n * Invoked when load fails\n */\n onError: PropTypes.func,\n /**\n * @platform ios\n */\n bounces: PropTypes.bool,\n /**\n * A floating-point number that determines how quickly the scroll view\n * decelerates after the user lifts their finger. You may also use string\n * shortcuts `\"normal\"` and `\"fast\"` which match the underlying iOS settings\n * for `UIScrollViewDecelerationRateNormal` and\n * `UIScrollViewDecelerationRateFast` respectively.\n * - normal: 0.998\n * - fast: 0.99 (the default for iOS WebView)\n * @platform ios\n */\n decelerationRate: ScrollView.propTypes.decelerationRate,\n /**\n * @platform ios\n */\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 /**\n * Used on Android only, JS is enabled by default for WebView on iOS\n * @platform android\n */\n javaScriptEnabled: PropTypes.bool,\n\n /**\n * Used on Android only, controls whether DOM Storage is enabled or not\n * @platform android\n */\n domStorageEnabled: PropTypes.bool,\n\n /**\n * Sets the JS to be injected when the webpage loads.\n */\n injectedJavaScript: PropTypes.string,\n\n /**\n * Sets whether the webpage scales to fit the view and the user can change the scale.\n */\n scalesPageToFit: PropTypes.bool,\n\n /**\n * Allows custom handling of any webview requests by a JS handler. Return true\n * or false from this method to continue loading the request.\n * @platform ios\n */\n onShouldStartLoadWithRequest: PropTypes.func,\n\n /**\n * Determines whether HTML5 videos play inline or use the native full-screen\n * controller.\n * default value `false`\n * **NOTE** : \"In order for video to play inline, not only does this\n * property need to be set to true, but the video element in the HTML\n * document must also include the webkit-playsinline attribute.\"\n * @platform ios\n */\n allowsInlineMediaPlayback: PropTypes.bool,\n\n /**\n * Determines whether HTML5 audio & videos require the user to tap before they can\n * start playing. The default value is `false`.\n */\n mediaPlaybackRequiresUserAction: 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 onShouldStartLoadWithRequest = this.props.onShouldStartLoadWithRequest && ((event: Event) => {\n var shouldStart = this.props.onShouldStartLoadWithRequest &&\n this.props.onShouldStartLoadWithRequest(event.nativeEvent);\n RCTWebViewManager.startLoadWithResult(!!shouldStart, event.nativeEvent.lockIdentifier);\n });\n\n var decelerationRate = processDecelerationRate(this.props.decelerationRate);\n\n var source = this.props.source || {};\n if (this.props.html) {\n source.html = this.props.html;\n } else if (this.props.url) {\n source.uri = this.props.url;\n }\n\n var webView =\n ;\n\n return (\n \n {webView}\n {otherView}\n \n );\n },\n\n /**\n * Go forward one page in the webview's history.\n */\n goForward: function() {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.goForward,\n null\n );\n },\n\n /**\n * Go back one page in the webview's history.\n */\n goBack: function() {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.goBack,\n null\n );\n },\n\n /**\n * Reloads the current page.\n */\n reload: function() {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.reload,\n null\n );\n },\n\n stopLoading: function() {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.stopLoading,\n null\n );\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 /**\n * Returns the native webview node.\n */\n getWebViewHandle: function(): any {\n return ReactNative.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);\n },\n\n _onLoadingStart: function(event: Event) {\n var onLoadStart = this.props.onLoadStart;\n onLoadStart && onLoadStart(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 var {onError, onLoadEnd} = this.props;\n onError && onError(event);\n onLoadEnd && onLoadEnd(event);\n console.warn('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 var {onLoad, onLoadEnd} = this.props;\n onLoad && onLoad(event);\n onLoadEnd && onLoadEnd(event);\n this.setState({\n viewState: WebViewState.IDLE,\n });\n this._updateNavigationState(event);\n },\n});\n\nvar RCTWebView = requireNativeComponent('RCTWebView', WebView, {\n nativeOnly: {\n onLoadingStart: true,\n onLoadingError: true,\n onLoadingFinish: true,\n },\n});\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 height: 100,\n },\n webView: {\n backgroundColor: '#ffffff',\n }\n});\n\nmodule.exports = WebView;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ViewPager/ViewPagerAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ViewPagerAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ViewPager/ViewPagerAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ViewPagerAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UnimplementedView"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=require('UnimplementedView');","map":null,"id":"ViewPagerAndroid","source":"/**\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 ViewPagerAndroid\n */\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ReactNativeStyleAttributes","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[59,114,168,214,264,308,354,399],"dependencies":["ImageStylePropTypes","TextStylePropTypes","ViewStylePropTypes","fbjs/lib/keyMirror","matricesDiffer","processColor","processTransform","sizesDiffer"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar keyMirror=require('fbjs/lib/keyMirror');\nvar matricesDiffer=require('matricesDiffer');\nvar processColor=require('processColor');\nvar processTransform=require('processTransform');\nvar sizesDiffer=require('sizesDiffer');\n\nvar ReactNativeStyleAttributes=babelHelpers.extends({},\nkeyMirror(ViewStylePropTypes),\nkeyMirror(TextStylePropTypes),\nkeyMirror(ImageStylePropTypes));\n\n\nReactNativeStyleAttributes.transform={process:processTransform};\nReactNativeStyleAttributes.transformMatrix={diff:matricesDiffer};\nReactNativeStyleAttributes.shadowOffset={diff:sizesDiffer};\n\n\nReactNativeStyleAttributes.decomposedMatrix='decomposedMatrix';\n\nvar colorAttributes={process:processColor};\nReactNativeStyleAttributes.backgroundColor=colorAttributes;\nReactNativeStyleAttributes.borderBottomColor=colorAttributes;\nReactNativeStyleAttributes.borderColor=colorAttributes;\nReactNativeStyleAttributes.borderLeftColor=colorAttributes;\nReactNativeStyleAttributes.borderRightColor=colorAttributes;\nReactNativeStyleAttributes.borderTopColor=colorAttributes;\nReactNativeStyleAttributes.color=colorAttributes;\nReactNativeStyleAttributes.shadowColor=colorAttributes;\nReactNativeStyleAttributes.textDecorationColor=colorAttributes;\nReactNativeStyleAttributes.tintColor=colorAttributes;\nReactNativeStyleAttributes.textShadowColor=colorAttributes;\nReactNativeStyleAttributes.overlayColor=colorAttributes;\n\nmodule.exports=ReactNativeStyleAttributes;","map":null,"id":"ReactNativeStyleAttributes","source":"/**\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 ReactNativeStyleAttributes\n * @flow\n */\n\n'use strict';\n\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar keyMirror = require('fbjs/lib/keyMirror');\nvar matricesDiffer = require('matricesDiffer');\nvar processColor = require('processColor');\nvar processTransform = require('processTransform');\nvar sizesDiffer = require('sizesDiffer');\n\nvar ReactNativeStyleAttributes = {\n ...keyMirror(ViewStylePropTypes),\n ...keyMirror(TextStylePropTypes),\n ...keyMirror(ImageStylePropTypes),\n};\n\nReactNativeStyleAttributes.transform = { process: processTransform };\nReactNativeStyleAttributes.transformMatrix = { diff: matricesDiffer };\nReactNativeStyleAttributes.shadowOffset = { diff: sizesDiffer };\n\n// Do not rely on this attribute.\nReactNativeStyleAttributes.decomposedMatrix = 'decomposedMatrix';\n\nvar colorAttributes = { process: processColor };\nReactNativeStyleAttributes.backgroundColor = colorAttributes;\nReactNativeStyleAttributes.borderBottomColor = colorAttributes;\nReactNativeStyleAttributes.borderColor = colorAttributes;\nReactNativeStyleAttributes.borderLeftColor = colorAttributes;\nReactNativeStyleAttributes.borderRightColor = colorAttributes;\nReactNativeStyleAttributes.borderTopColor = colorAttributes;\nReactNativeStyleAttributes.color = colorAttributes;\nReactNativeStyleAttributes.shadowColor = colorAttributes;\nReactNativeStyleAttributes.textDecorationColor = colorAttributes;\nReactNativeStyleAttributes.tintColor = colorAttributes;\nReactNativeStyleAttributes.textShadowColor = colorAttributes;\nReactNativeStyleAttributes.overlayColor = colorAttributes;\n\nmodule.exports = ReactNativeStyleAttributes;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/View/ReactNativeViewAttributes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ReactNativeViewAttributes","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[65],"dependencies":["ReactNativeStyleAttributes"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\n\nvar ReactNativeViewAttributes={};\n\nReactNativeViewAttributes.UIView={\npointerEvents:true,\naccessible:true,\naccessibilityLabel:true,\naccessibilityComponentType:true,\naccessibilityLiveRegion:true,\naccessibilityTraits:true,\nimportantForAccessibility:true,\ntestID:true,\nrenderToHardwareTextureAndroid:true,\nshouldRasterizeIOS:true,\nonLayout:true,\nonAccessibilityTap:true,\nonMagicTap:true,\ncollapsable:true,\nneedsOffscreenAlphaCompositing:true,\nstyle:ReactNativeStyleAttributes};\n\n\nReactNativeViewAttributes.RCTView=babelHelpers.extends({},\nReactNativeViewAttributes.UIView,{\n\n\n\n\n\n\nremoveClippedSubviews:true});\n\n\nmodule.exports=ReactNativeViewAttributes;","map":null,"id":"ReactNativeViewAttributes","source":"/**\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 ReactNativeViewAttributes\n * @flow\n */\n'use strict';\n\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\n\nvar ReactNativeViewAttributes = {};\n\nReactNativeViewAttributes.UIView = {\n pointerEvents: true,\n accessible: true,\n accessibilityLabel: true,\n accessibilityComponentType: true,\n accessibilityLiveRegion: true,\n accessibilityTraits: true,\n importantForAccessibility: true,\n testID: true,\n renderToHardwareTextureAndroid: true,\n shouldRasterizeIOS: true,\n onLayout: true,\n onAccessibilityTap: true,\n onMagicTap: true,\n collapsable: true,\n needsOffscreenAlphaCompositing: true,\n style: ReactNativeStyleAttributes,\n};\n\nReactNativeViewAttributes.RCTView = {\n ...ReactNativeViewAttributes.UIView,\n\n // This is a special performance property exposed by RCTView and useful for\n // scrolling content when there are many subviews, most of which are offscreen.\n // For this property to be effective, it must be applied to a view that contains\n // many subviews that extend outside its bound. The subviews must also have\n // overflow: hidden, as should the containing view (or one of its superviews).\n removeClippedSubviews: true,\n};\n\nmodule.exports = ReactNativeViewAttributes;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/View/ShadowPropTypesIOS.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ShadowPropTypesIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,97],"dependencies":["ColorPropType","ReactPropTypes"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\nvar ReactPropTypes=require('ReactPropTypes');\n\nvar ShadowPropTypesIOS={\n\n\n\n\nshadowColor:ColorPropType,\n\n\n\n\nshadowOffset:ReactPropTypes.shape(\n{width:ReactPropTypes.number,height:ReactPropTypes.number}),\n\n\n\n\n\nshadowOpacity:ReactPropTypes.number,\n\n\n\n\nshadowRadius:ReactPropTypes.number};\n\n\nmodule.exports=ShadowPropTypesIOS;","map":null,"id":"ShadowPropTypesIOS","source":"/**\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 ShadowPropTypesIOS\n * @flow\n */\n'use strict';\n\nvar ColorPropType = require('ColorPropType');\nvar ReactPropTypes = require('ReactPropTypes');\n\nvar ShadowPropTypesIOS = {\n /**\n * Sets the drop shadow color\n * @platform ios\n */\n shadowColor: ColorPropType,\n /**\n * Sets the drop shadow offset\n * @platform ios\n */\n shadowOffset: ReactPropTypes.shape(\n {width: ReactPropTypes.number, height: ReactPropTypes.number}\n ),\n /**\n * Sets the drop shadow opacity (multiplied by the color's alpha component)\n * @platform ios\n */\n shadowOpacity: ReactPropTypes.number,\n /**\n * Sets the drop shadow blur radius\n * @platform ios\n */\n shadowRadius: ReactPropTypes.number,\n};\n\nmodule.exports = ShadowPropTypesIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/View/View.js":{"metadata":{"mtime":1463609891000},"data":{"name":"View","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[178,232,277,314,363,432,493,538,583,642],"dependencies":["EdgeInsetsPropType","NativeMethodsMixin","ReactPropTypes","React","ReactNativeStyleAttributes","ReactNativeViewAttributes","StyleSheetPropType","UIManager","ViewStylePropTypes","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/View/View.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar UIManager=require('UIManager');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar stylePropType=StyleSheetPropType(ViewStylePropTypes);\n\nvar AccessibilityTraits=[\n'none',\n'button',\n'link',\n'header',\n'search',\n'image',\n'selected',\n'plays',\n'key',\n'text',\n'summary',\n'disabled',\n'frequentUpdates',\n'startsMedia',\n'adjustable',\n'allowsDirectInteraction',\n'pageTurn'];\n\n\nvar AccessibilityComponentType=[\n'none',\n'button',\n'radiobutton_checked',\n'radiobutton_unchecked'];\n\n\nvar forceTouchAvailable=UIManager.RCTView.Constants&&\nUIManager.RCTView.Constants.forceTouchAvailable||false;\n\nvar statics={\nAccessibilityTraits:AccessibilityTraits,\nAccessibilityComponentType:AccessibilityComponentType,\n\n\n\n\nforceTouchAvailable:forceTouchAvailable};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar View=React.createClass({displayName:'View',\nmixins:[NativeMethodsMixin],\n\n\n\n\n\nviewConfig:{\nuiViewClassName:'RCTView',\nvalidAttributes:ReactNativeViewAttributes.RCTView},\n\n\nstatics:babelHelpers.extends({},\nstatics),\n\n\npropTypes:{\n\n\n\n\naccessible:PropTypes.bool,\n\n\n\n\n\n\naccessibilityLabel:PropTypes.string,\n\n\n\n\n\n\naccessibilityComponentType:PropTypes.oneOf(AccessibilityComponentType),\n\n\n\n\n\n\n\n\naccessibilityLiveRegion:PropTypes.oneOf([\n'none',\n'polite',\n'assertive']),\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimportantForAccessibility:PropTypes.oneOf([\n'auto',\n'yes',\n'no',\n'no-hide-descendants']),\n\n\n\n\n\n\n\naccessibilityTraits:PropTypes.oneOfType([\nPropTypes.oneOf(AccessibilityTraits),\nPropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits))]),\n\n\n\n\n\n\nonAccessibilityTap:PropTypes.func,\n\n\n\n\n\nonMagicTap:PropTypes.func,\n\n\n\n\n\ntestID:PropTypes.string,\n\n\n\n\n\n\nonResponderGrant:PropTypes.func,\nonResponderMove:PropTypes.func,\nonResponderReject:PropTypes.func,\nonResponderRelease:PropTypes.func,\nonResponderTerminate:PropTypes.func,\nonResponderTerminationRequest:PropTypes.func,\nonStartShouldSetResponder:PropTypes.func,\nonStartShouldSetResponderCapture:PropTypes.func,\nonMoveShouldSetResponder:PropTypes.func,\nonMoveShouldSetResponderCapture:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\n\n\nhitSlop:EdgeInsetsPropType,\n\n\n\n\n\n\n\n\n\n\nonLayout:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npointerEvents:PropTypes.oneOf([\n'box-none',\n'none',\n'box-only',\n'auto']),\n\nstyle:stylePropType,\n\n\n\n\n\n\n\n\n\nremoveClippedSubviews:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrenderToHardwareTextureAndroid:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nshouldRasterizeIOS:PropTypes.bool,\n\n\n\n\n\n\n\n\ncollapsable:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nneedsOffscreenAlphaCompositing:PropTypes.bool},\n\n\nrender:function render(){\n\n\n\n\nreturn React.createElement(RCTView,babelHelpers.extends({},this.props,{__source:{fileName:_jsxFileName,lineNumber:348}}));}});\n\n\n\nvar RCTView=requireNativeComponent('RCTView',View,{\nnativeOnly:{\nnativeBackgroundAndroid:true}});\n\n\n\nif(__DEV__){\nvar viewConfig=UIManager.viewConfigs&&UIManager.viewConfigs.RCTView||{};\nfor(var prop in viewConfig.nativeProps){\nvar viewAny=View;\nif(!viewAny.propTypes[prop]&&!ReactNativeStyleAttributes[prop]){\nthrow new Error(\n'View is missing propType for native prop `'+prop+'`');}}}\n\n\n\n\n\nvar ViewToExport=RCTView;\nif(__DEV__){\nViewToExport=View;}else \n{\nbabelHelpers.extends(RCTView,statics);}\n\n\nmodule.exports=ViewToExport;","map":null,"id":"View","source":"/**\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 View\n * @flow\n */\n'use strict';\n\nconst EdgeInsetsPropType = require('EdgeInsetsPropType');\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst PropTypes = require('ReactPropTypes');\nconst React = require('React');\nconst ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nconst ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nconst StyleSheetPropType = require('StyleSheetPropType');\nconst UIManager = require('UIManager');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nconst stylePropType = StyleSheetPropType(ViewStylePropTypes);\n\nconst AccessibilityTraits = [\n 'none',\n 'button',\n 'link',\n 'header',\n 'search',\n 'image',\n 'selected',\n 'plays',\n 'key',\n 'text',\n 'summary',\n 'disabled',\n 'frequentUpdates',\n 'startsMedia',\n 'adjustable',\n 'allowsDirectInteraction',\n 'pageTurn',\n];\n\nconst AccessibilityComponentType = [\n 'none',\n 'button',\n 'radiobutton_checked',\n 'radiobutton_unchecked',\n];\n\nconst forceTouchAvailable = (UIManager.RCTView.Constants &&\n UIManager.RCTView.Constants.forceTouchAvailable) || false;\n\nconst statics = {\n AccessibilityTraits,\n AccessibilityComponentType,\n /**\n * Is 3D Touch / Force Touch available (i.e. will touch events include `force`)\n * @platform ios\n */\n forceTouchAvailable,\n};\n\n/**\n * The most fundamental component for building UI, `View` is a\n * container that supports layout with flexbox, style, some touch handling, and\n * accessibility controls, and is designed to be nested inside other views and\n * to have 0 to many children of any type. `View` maps directly to the native\n * view equivalent on whatever platform React is running on, whether that is a\n * `UIView`, `
`, `android.view`, etc. This example creates a `View` that\n * wraps two colored boxes and custom component in a row with padding.\n *\n * ```\n * \n * \n * \n * \n * \n * ```\n *\n * `View`s are designed to be used with `StyleSheet`s for clarity and\n * performance, although inline styles are also supported.\n */\nconst View = React.createClass({\n mixins: [NativeMethodsMixin],\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n viewConfig: {\n uiViewClassName: 'RCTView',\n validAttributes: ReactNativeViewAttributes.RCTView\n },\n\n statics: {\n ...statics,\n },\n\n propTypes: {\n /**\n * When true, indicates that the view is an accessibility element. By default,\n * all the touchable elements are accessible.\n */\n accessible: PropTypes.bool,\n\n /**\n * Overrides the text that's read by the screen reader when the user interacts\n * with the element. By default, the label is constructed by traversing all the\n * children and accumulating all the Text nodes separated by space.\n */\n accessibilityLabel: PropTypes.string,\n\n /**\n * Indicates to accessibility services to treat UI component like a\n * native one. Works for Android only.\n * @platform android\n */\n accessibilityComponentType: PropTypes.oneOf(AccessibilityComponentType),\n\n /**\n * Indicates to accessibility services whether the user should be notified\n * when this view changes. Works for Android API >= 19 only.\n * See http://developer.android.com/reference/android/view/View.html#attr_android:accessibilityLiveRegion\n * for references.\n * @platform android\n */\n accessibilityLiveRegion: PropTypes.oneOf([\n 'none',\n 'polite',\n 'assertive',\n ]),\n\n /**\n * Controls how view is important for accessibility which is if it\n * fires accessibility events and if it is reported to accessibility services\n * that query the screen. Works for Android only.\n * See http://developer.android.com/reference/android/R.attr.html#importantForAccessibility\n * for references.\n * Possible values:\n * 'auto' - The system determines whether the view is important for accessibility -\n * default (recommended).\n * 'yes' - The view is important for accessibility.\n * 'no' - The view is not important for accessibility.\n * 'no-hide-descendants' - The view is not important for accessibility,\n * nor are any of its descendant views.\n *\n * @platform android\n */\n importantForAccessibility: PropTypes.oneOf([\n 'auto',\n 'yes',\n 'no',\n 'no-hide-descendants',\n ]),\n\n /**\n * Provides additional traits to screen reader. By default no traits are\n * provided unless specified otherwise in element\n * @platform ios\n */\n accessibilityTraits: PropTypes.oneOfType([\n PropTypes.oneOf(AccessibilityTraits),\n PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),\n ]),\n\n /**\n * When `accessible` is true, the system will try to invoke this function\n * when the user performs accessibility tap gesture.\n */\n onAccessibilityTap: PropTypes.func,\n\n /**\n * When `accessible` is true, the system will invoke this function when the\n * user performs the magic tap gesture.\n */\n onMagicTap: PropTypes.func,\n\n /**\n * Used to locate this view in end-to-end tests. NB: disables the 'layout-only\n * view removal' optimization for this view!\n */\n testID: PropTypes.string,\n\n /**\n * For most touch interactions, you'll simply want to wrap your component in\n * `TouchableHighlight` or `TouchableOpacity`. Check out `Touchable.js`,\n * `ScrollResponder.js` and `ResponderEventPlugin.js` for more discussion.\n */\n onResponderGrant: PropTypes.func,\n onResponderMove: PropTypes.func,\n onResponderReject: PropTypes.func,\n onResponderRelease: PropTypes.func,\n onResponderTerminate: PropTypes.func,\n onResponderTerminationRequest: PropTypes.func,\n onStartShouldSetResponder: PropTypes.func,\n onStartShouldSetResponderCapture: PropTypes.func,\n onMoveShouldSetResponder: PropTypes.func,\n onMoveShouldSetResponderCapture: PropTypes.func,\n\n /**\n * This defines how far a touch event can start away from the view.\n * Typical interface guidelines recommend touch targets that are at least\n * 30 - 40 points/density-independent pixels. If a Touchable view has a\n * height of 20 the touchable height can be extended to 40 with\n * `hitSlop={{top: 10, bottom: 10, left: 0, right: 0}}`\n * ** NOTE **\n * The touch area never extends past the parent view bounds and the Z-index\n * of sibling views always takes precedence if a touch hits two overlapping\n * views.\n */\n hitSlop: EdgeInsetsPropType,\n\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n *\n * This event is fired immediately once the layout has been calculated, but\n * the new layout may not yet be reflected on the screen at the time the\n * event is received, especially if a layout animation is in progress.\n */\n onLayout: PropTypes.func,\n\n /**\n * Controls whether the View can be the target of touch events.\n *\n * - 'auto': The View can be the target of touch events.\n * - 'none': The View is never the target of touch events.\n * - 'box-none': The View is never the target of touch events but it's\n * subviews can be. It behaves like if the view had the following classes\n * in CSS:\n * ```\n * .box-none {\n * \t\tpointer-events: none;\n * }\n * .box-none * {\n * \t\tpointer-events: all;\n * }\n * ```\n * - 'box-only': The view can be the target of touch events but it's\n * subviews cannot be. It behaves like if the view had the following classes\n * in CSS:\n * ```\n * .box-only {\n * \t\tpointer-events: all;\n * }\n * .box-only * {\n * \t\tpointer-events: none;\n * }\n * ```\n */\n // Since `pointerEvents` does not affect layout/appearance, and we are\n // already deviating from the spec by adding additional modes, we opt to not\n // include `pointerEvents` on `style`. On some platforms, we would need to\n // implement it as a `className` anyways. Using `style` or not is an\n // implementation detail of the platform.\n pointerEvents: PropTypes.oneOf([\n 'box-none',\n 'none',\n 'box-only',\n 'auto',\n ]),\n style: stylePropType,\n\n /**\n * This is a special performance property exposed by RCTView and is useful\n * for scrolling content when there are many subviews, most of which are\n * offscreen. For this property to be effective, it must be applied to a\n * view that contains many subviews that extend outside its bound. The\n * subviews must also have overflow: hidden, as should the containing view\n * (or one of its superviews).\n */\n removeClippedSubviews: PropTypes.bool,\n\n /**\n * Whether this view should render itself (and all of its children) into a\n * single hardware texture on the GPU.\n *\n * On Android, this is useful for animations and interactions that only\n * modify opacity, rotation, translation, and/or scale: in those cases, the\n * view doesn't have to be redrawn and display lists don't need to be\n * re-executed. The texture can just be re-used and re-composited with\n * different parameters. The downside is that this can use up limited video\n * memory, so this prop should be set back to false at the end of the\n * interaction/animation.\n * @platform android\n */\n renderToHardwareTextureAndroid: PropTypes.bool,\n\n /**\n * Whether this view should be rendered as a bitmap before compositing.\n *\n * On iOS, this is useful for animations and interactions that do not\n * modify this component's dimensions nor its children; for example, when\n * translating the position of a static view, rasterization allows the\n * renderer to reuse a cached bitmap of a static view and quickly composite\n * it during each frame.\n *\n * Rasterization incurs an off-screen drawing pass and the bitmap consumes\n * memory. Test and measure when using this property.\n * @platform ios\n */\n shouldRasterizeIOS: PropTypes.bool,\n\n /**\n * Views that are only used to layout their children or otherwise don't draw\n * anything may be automatically removed from the native hierarchy as an\n * optimization. Set this property to `false` to disable this optimization and\n * ensure that this View exists in the native view hierarchy.\n * @platform android\n */\n collapsable: PropTypes.bool,\n\n /**\n * Whether this view needs to rendered offscreen and composited with an alpha\n * in order to preserve 100% correct colors and blending behavior. The default\n * (false) falls back to drawing the component and its children with an alpha\n * applied to the paint used to draw each element instead of rendering the full\n * component offscreen and compositing it back with an alpha value. This default\n * may be noticeable and undesired in the case where the View you are setting\n * an opacity on has multiple overlapping elements (e.g. multiple overlapping\n * Views, or text and a background).\n *\n * Rendering offscreen to preserve correct alpha behavior is extremely\n * expensive and hard to debug for non-native developers, which is why it is\n * not turned on by default. If you do need to enable this property for an\n * animation, consider combining it with renderToHardwareTextureAndroid if the\n * view **contents** are static (i.e. it doesn't need to be redrawn each frame).\n * If that property is enabled, this View will be rendered off-screen once,\n * saved in a hardware texture, and then composited onto the screen with an alpha\n * each frame without having to switch rendering targets on the GPU.\n *\n * @platform android\n */\n needsOffscreenAlphaCompositing: PropTypes.bool,\n },\n\n render: function() {\n // WARNING: This method will not be used in production mode as in that mode we\n // replace wrapper component View with generated native wrapper RCTView. Avoid\n // adding functionality this component that you'd want to be available in both\n // dev and prod modes.\n return ;\n },\n});\n\nconst RCTView = requireNativeComponent('RCTView', View, {\n nativeOnly: {\n nativeBackgroundAndroid: true,\n }\n});\n\nif (__DEV__) {\n const viewConfig = UIManager.viewConfigs && UIManager.viewConfigs.RCTView || {};\n for (const prop in viewConfig.nativeProps) {\n const viewAny: any = View; // Appease flow\n if (!viewAny.propTypes[prop] && !ReactNativeStyleAttributes[prop]) {\n throw new Error(\n 'View is missing propType for native prop `' + prop + '`'\n );\n }\n }\n}\n\nlet ViewToExport = RCTView;\nif (__DEV__) {\n ViewToExport = View;\n} else {\n Object.assign(RCTView, statics);\n}\n\nmodule.exports = ViewToExport;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/View/ViewStylePropTypes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ViewStylePropTypes","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[54,101,146,195,249],"dependencies":["LayoutPropTypes","ReactPropTypes","ColorPropType","ShadowPropTypesIOS","TransformPropTypes"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar LayoutPropTypes=require('LayoutPropTypes');\nvar ReactPropTypes=require('ReactPropTypes');\nvar ColorPropType=require('ColorPropType');\nvar ShadowPropTypesIOS=require('ShadowPropTypesIOS');\nvar TransformPropTypes=require('TransformPropTypes');\n\n\n\n\nvar ViewStylePropTypes=babelHelpers.extends({},\nLayoutPropTypes,\nShadowPropTypesIOS,\nTransformPropTypes,{\nbackfaceVisibility:ReactPropTypes.oneOf(['visible','hidden']),\nbackgroundColor:ColorPropType,\nborderColor:ColorPropType,\nborderTopColor:ColorPropType,\nborderRightColor:ColorPropType,\nborderBottomColor:ColorPropType,\nborderLeftColor:ColorPropType,\nborderRadius:ReactPropTypes.number,\nborderTopLeftRadius:ReactPropTypes.number,\nborderTopRightRadius:ReactPropTypes.number,\nborderBottomLeftRadius:ReactPropTypes.number,\nborderBottomRightRadius:ReactPropTypes.number,\nborderStyle:ReactPropTypes.oneOf(['solid','dotted','dashed']),\nborderWidth:ReactPropTypes.number,\nborderTopWidth:ReactPropTypes.number,\nborderRightWidth:ReactPropTypes.number,\nborderBottomWidth:ReactPropTypes.number,\nborderLeftWidth:ReactPropTypes.number,\nopacity:ReactPropTypes.number,\noverflow:ReactPropTypes.oneOf(['visible','hidden']),\n\n\n\n\n\n\n\nelevation:ReactPropTypes.number});\n\n\nmodule.exports=ViewStylePropTypes;","map":null,"id":"ViewStylePropTypes","source":"/**\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 ViewStylePropTypes\n * @flow\n */\n'use strict';\n\nvar LayoutPropTypes = require('LayoutPropTypes');\nvar ReactPropTypes = require('ReactPropTypes');\nvar ColorPropType = require('ColorPropType');\nvar ShadowPropTypesIOS = require('ShadowPropTypesIOS');\nvar TransformPropTypes = require('TransformPropTypes');\n\n/**\n * Warning: Some of these properties may not be supported in all releases.\n */\nvar ViewStylePropTypes = {\n ...LayoutPropTypes,\n ...ShadowPropTypesIOS,\n ...TransformPropTypes,\n backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']),\n backgroundColor: ColorPropType,\n borderColor: ColorPropType,\n borderTopColor: ColorPropType,\n borderRightColor: ColorPropType,\n borderBottomColor: ColorPropType,\n borderLeftColor: ColorPropType,\n borderRadius: ReactPropTypes.number,\n borderTopLeftRadius: ReactPropTypes.number,\n borderTopRightRadius: ReactPropTypes.number,\n borderBottomLeftRadius: ReactPropTypes.number,\n borderBottomRightRadius: ReactPropTypes.number,\n borderStyle: ReactPropTypes.oneOf(['solid', 'dotted', 'dashed']),\n borderWidth: ReactPropTypes.number,\n borderTopWidth: ReactPropTypes.number,\n borderRightWidth: ReactPropTypes.number,\n borderBottomWidth: ReactPropTypes.number,\n borderLeftWidth: ReactPropTypes.number,\n opacity: ReactPropTypes.number,\n overflow: ReactPropTypes.oneOf(['visible', 'hidden']),\n /**\n * (Android-only) Sets the elevation of a view, using Android's underlying\n * [elevation API](https://developer.android.com/training/material/shadows-clipping.html#Elevation).\n * This adds a drop shadow to the item and affects z-order for overlapping views.\n * Only supported on Android 5.0+, has no effect on earlier versions.\n * @platform android\n */\n elevation: ReactPropTypes.number,\n};\n\nmodule.exports = ViewStylePropTypes;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js":{"metadata":{"mtime":1463609891000},"data":{"name":"UnimplementedView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[188,221,403],"dependencies":["React","StyleSheet","View"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js';\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar UnimplementedView=React.createClass({displayName:'UnimplementedView',\nsetNativeProps:function setNativeProps(){},\n\n\n\n\nrender:function render(){\n\nvar View=require('View');\nreturn (\nReact.createElement(View,{style:[styles.unimplementedView,this.props.style],__source:{fileName:_jsxFileName,lineNumber:23}},\nthis.props.children));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nunimplementedView:{\nborderWidth:1,\nborderColor:'red',\nalignSelf:'flex-start'}});\n\n\n\nmodule.exports=UnimplementedView;","map":null,"id":"UnimplementedView","source":"/**\n * Common implementation for a simple stubbed view. Simply applies the view's styles to the inner\n * View component and renders its children.\n *\n * @providesModule UnimplementedView\n */\n\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar UnimplementedView = React.createClass({\n setNativeProps: function() {\n // Do nothing.\n // This method is required in order to use this view as a Touchable* child.\n // See ensureComponentIsNative.js for more info\n },\n render: function() {\n // Workaround require cycle from requireNativeComponent\n var View = require('View');\n return (\n \n {this.props.children}\n \n );\n },\n});\n\nvar styles = StyleSheet.create({\n unimplementedView: {\n borderWidth: 1,\n borderColor: 'red',\n alignSelf: 'flex-start',\n }\n});\n\nmodule.exports = UnimplementedView;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/BoundingDimensions.js":{"metadata":{"mtime":1463609891000},"data":{"name":"BoundingDimensions","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[43],"dependencies":["PooledClass"],"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\nBoundingDimensions.prototype.destructor=function(){\nthis.width=null;\nthis.height=null;};\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;","map":null,"id":"BoundingDimensions","source":"/**\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\nBoundingDimensions.prototype.destructor = function() {\n this.width = null;\n this.height = null;\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ensureComponentIsNative","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\n\nvar ensureComponentIsNative=function ensureComponentIsNative(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;","map":null,"id":"ensureComponentIsNative","source":"/**\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('fbjs/lib/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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ensurePositiveDelayProps","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\n\nvar ensurePositiveDelayProps=function ensurePositiveDelayProps(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;","map":null,"id":"ensurePositiveDelayProps","source":"/**\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('fbjs/lib/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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/Position.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Position","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[43],"dependencies":["PooledClass"],"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\nPosition.prototype.destructor=function(){\nthis.left=null;\nthis.top=null;};\n\n\nPooledClass.addPoolingTo(Position,twoArgumentPooler);\n\nmodule.exports=Position;","map":null,"id":"Position","source":"/**\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 reference.\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\nPosition.prototype.destructor = function() {\n this.left = null;\n this.top = null;\n};\n\nPooledClass.addPoolingTo(Position, twoArgumentPooler);\n\nmodule.exports = Position;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/Touchable.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Touchable","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[188,232,263,301,347,379,429,476],"dependencies":["BoundingDimensions","Position","React","fbjs/lib/TouchEventUtils","View","fbjs/lib/keyMirror","normalizeColor","queryLayoutByID"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/Touchable.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BoundingDimensions=require('BoundingDimensions');\nvar Position=require('Position');\nvar React=require('React');\nvar TouchEventUtils=require('fbjs/lib/TouchEventUtils');\nvar View=require('View');\n\nvar keyMirror=require('fbjs/lib/keyMirror');\nvar normalizeColor=require('normalizeColor');\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\ncomponentWillUnmount:function componentWillUnmount(){\nthis.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout);\nthis.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout);\nthis.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout);},\n\n\n\n\n\n\n\n\n\ntouchableGetInitialState:function touchableGetInitialState(){\nreturn {\ntouchable:{touchState:undefined,responderID:null}};},\n\n\n\n\n\n\n\ntouchableHandleResponderTerminationRequest:function touchableHandleResponderTerminationRequest(){\nreturn !this.props.rejectResponderTermination;},\n\n\n\n\n\ntouchableHandleStartShouldSetResponder:function touchableHandleStartShouldSetResponder(){\nreturn !this.props.disabled;},\n\n\n\n\n\ntouchableLongPressCancelsPress:function touchableLongPressCancelsPress(){\nreturn true;},\n\n\n\n\n\n\n\ntouchableHandleResponderGrant:function touchableHandleResponderGrant(e){\nvar dispatchID=e.currentTarget;\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 touchableHandleResponderRelease(e){\nthis._receiveSignal(Signals.RESPONDER_RELEASE,e);},\n\n\n\n\n\ntouchableHandleResponderTerminate:function touchableHandleResponderTerminate(e){\nthis._receiveSignal(Signals.RESPONDER_TERMINATED,e);},\n\n\n\n\n\ntouchableHandleResponderMove:function touchableHandleResponderMove(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():{\nleft:PRESS_EXPAND_PX,\nright:PRESS_EXPAND_PX,\ntop:PRESS_EXPAND_PX,\nbottom:PRESS_EXPAND_PX};\n\n\nvar pressExpandLeft=pressRectOffset.left;\nvar pressExpandTop=pressRectOffset.top;\nvar pressExpandRight=pressRectOffset.right;\nvar pressExpandBottom=pressRectOffset.bottom;\n\nvar hitSlop=this.touchableGetHitSlop?\nthis.touchableGetHitSlop():null;\n\nif(hitSlop){\npressExpandLeft+=hitSlop.left;\npressExpandTop+=hitSlop.top;\npressExpandRight+=hitSlop.right;\npressExpandBottom+=hitSlop.bottom;}\n\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);\nvar curState=this.state.touchable.touchState;\nif(curState===States.RESPONDER_INACTIVE_PRESS_IN){\n\nthis._cancelLongPressDelayTimeout();}}else \n\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 _remeasureMetricsOnActivation(){\nqueryLayoutByID(\nthis.state.touchable.responderID,\nnull,\nthis._handleQueryLayout);},\n\n\n\n_handleQueryLayout:function _handleQueryLayout(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 _handleDelay(e){\nthis.touchableDelayTimeout=null;\nthis._receiveSignal(Signals.DELAY,e);},\n\n\n_handleLongDelay:function _handleLongDelay(e){\nthis.longPressDelayTimeout=null;\nvar curState=this.state.touchable.touchState;\nif(curState!==States.RESPONDER_ACTIVE_PRESS_IN&&\ncurState!==States.RESPONDER_ACTIVE_LONG_PRESS_IN){\nconsole.error('Attempted to transition from state `'+curState+'` to `'+\nStates.RESPONDER_ACTIVE_LONG_PRESS_IN+'`, which is not supported. This is '+\n'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.');}else \n{\nthis._receiveSignal(Signals.LONG_PRESS_DETECTED,e);}},\n\n\n\n\n\n\n\n\n\n\n\n_receiveSignal:function _receiveSignal(signal,e){\nvar responderID=this.state.touchable.responderID;\nvar curState=this.state.touchable.touchState;\nvar nextState=Transitions[curState]&&Transitions[curState][signal];\nif(!responderID&&signal===Signals.RESPONDER_RELEASE){\nreturn;}\n\nif(!nextState){\nthrow new Error(\n'Unrecognized signal `'+signal+'` or state `'+curState+\n'` for Touchable responder `'+responderID+'`');}\n\n\nif(nextState===States.ERROR){\nthrow new Error(\n'Touchable cannot transition from `'+curState+'` to `'+signal+\n'` for responder `'+responderID+'`');}\n\n\nif(curState!==nextState){\nthis._performSideEffectsForTransition(curState,nextState,signal,e);\nthis.state.touchable.touchState=nextState;}},\n\n\n\n_cancelLongPressDelayTimeout:function _cancelLongPressDelayTimeout(){\nthis.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout);\nthis.longPressDelayTimeout=null;},\n\n\n_isHighlight:function _isHighlight(state){\nreturn state===States.RESPONDER_ACTIVE_PRESS_IN||\nstate===States.RESPONDER_ACTIVE_LONG_PRESS_IN;},\n\n\n_savePressInLocation:function _savePressInLocation(e){\nvar touch=TouchEventUtils.extractSingleTouch(e.nativeEvent);\nvar pageX=touch&&touch.pageX;\nvar pageY=touch&&touch.pageY;\nvar locationX=touch&&touch.locationX;\nvar locationY=touch&&touch.locationY;\nthis.pressInLocation={pageX:pageX,pageY:pageY,locationX:locationX,locationY:locationY};},\n\n\n_getDistanceBetweenPoints:function _getDistanceBetweenPoints(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 _performSideEffectsForTransition(curState,nextState,signal,e){var _this=this;\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(e);}\n\n\nif(newIsHighlight&&!curIsHighlight){\nthis._savePressInLocation(e);\nthis.touchableHandleActivePressIn&&this.touchableHandleActivePressIn(e);}else \nif(!newIsHighlight&&curIsHighlight&&this.touchableHandleActivePressOut){\nif(this.touchableGetPressOutDelayMS&&this.touchableGetPressOutDelayMS()){\nthis.pressOutDelayTimeout=setTimeout(function(){\n_this.touchableHandleActivePressOut(e);},\nthis.touchableGetPressOutDelayMS());}else \n{\nthis.touchableHandleActivePressOut(e);}}\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,\nTOUCH_TARGET_DEBUG:false,\n\n\n\nrenderDebugView:function renderDebugView(_ref){var color=_ref.color;var hitSlop=_ref.hitSlop;\nif(!Touchable.TOUCH_TARGET_DEBUG){\nreturn null;}\n\nif(!__DEV__){\nthrow Error('Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!');}\n\nvar debugHitSlopStyle={};\nhitSlop=hitSlop||{top:0,bottom:0,left:0,right:0};\nfor(var key in hitSlop){\ndebugHitSlopStyle[key]=-hitSlop[key];}\n\nvar hexColor='#'+('00000000'+normalizeColor(color).toString(16)).substr(-8);\nreturn (\nReact.createElement(View,{\npointerEvents:'none',\nstyle:babelHelpers.extends({\nposition:'absolute',\nborderColor:hexColor.slice(0,-2)+'55',\nborderWidth:1,\nborderStyle:'dashed',\nbackgroundColor:hexColor.slice(0,-2)+'0F'},\ndebugHitSlopStyle),__source:{fileName:_jsxFileName,lineNumber:745}}));}};\n\n\n\n\n\n\nmodule.exports=Touchable;","map":null,"id":"Touchable","source":"/**\n * Copyright (c) 2013-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 Touchable\n */\n\n'use strict';\n\nconst BoundingDimensions = require('BoundingDimensions');\nconst Position = require('Position');\nconst React = require('React'); // eslint-disable-line no-unused-vars\nconst TouchEventUtils = require('fbjs/lib/TouchEventUtils');\nconst View = require('View');\n\nconst keyMirror = require('fbjs/lib/keyMirror');\nconst normalizeColor = require('normalizeColor');\nconst 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 element, 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 whose\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 * Clear all timeouts on unmount\n */\n componentWillUnmount: function() {\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n },\n\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 !this.props.disabled;\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 *\n */\n touchableHandleResponderGrant: function(e) {\n var dispatchID = e.currentTarget;\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() : {\n left: PRESS_EXPAND_PX,\n right: PRESS_EXPAND_PX,\n top: PRESS_EXPAND_PX,\n bottom: PRESS_EXPAND_PX\n };\n\n var pressExpandLeft = pressRectOffset.left;\n var pressExpandTop = pressRectOffset.top;\n var pressExpandRight = pressRectOffset.right;\n var pressExpandBottom = pressRectOffset.bottom;\n\n var hitSlop = this.touchableGetHitSlop ?\n this.touchableGetHitSlop() : null;\n\n if (hitSlop) {\n pressExpandLeft += hitSlop.left;\n pressExpandTop += hitSlop.top;\n pressExpandRight += hitSlop.right;\n pressExpandBottom += hitSlop.bottom;\n }\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 var curState = this.state.touchable.touchState;\n if (curState === States.RESPONDER_INACTIVE_PRESS_IN) {\n // fix for t7967420\n this._cancelLongPressDelayTimeout();\n }\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 var curState = this.state.touchable.touchState;\n if (curState !== States.RESPONDER_ACTIVE_PRESS_IN &&\n curState !== States.RESPONDER_ACTIVE_LONG_PRESS_IN) {\n console.error('Attempted to transition from state `' + curState + '` to `' +\n States.RESPONDER_ACTIVE_LONG_PRESS_IN + '`, which is not supported. This is ' +\n 'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.');\n } else {\n this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n }\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 responderID = this.state.touchable.responderID;\n var curState = this.state.touchable.touchState;\n var nextState = Transitions[curState] && Transitions[curState][signal];\n if (!responderID && signal === Signals.RESPONDER_RELEASE) {\n return;\n }\n if (!nextState) {\n throw new Error(\n 'Unrecognized signal `' + signal + '` or state `' + curState +\n '` for Touchable responder `' + responderID + '`'\n );\n }\n if (nextState === States.ERROR) {\n throw new Error(\n 'Touchable cannot transition from `' + curState + '` to `' + signal +\n '` for responder `' + 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 var locationX = touch && touch.locationX;\n var locationY = touch && touch.locationY;\n this.pressInLocation = {pageX, pageY, locationX, locationY};\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(e);\n }\n\n if (newIsHighlight && !curIsHighlight) {\n this._savePressInLocation(e);\n this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e);\n } else if (!newIsHighlight && curIsHighlight && this.touchableHandleActivePressOut) {\n if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) {\n this.pressOutDelayTimeout = setTimeout(() => {\n this.touchableHandleActivePressOut(e);\n }, this.touchableGetPressOutDelayMS());\n } else {\n this.touchableHandleActivePressOut(e);\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 TOUCH_TARGET_DEBUG: false, // Highlights all touchable targets. Toggle with Inspector.\n /**\n * Renders a debugging overlay to visualize touch target with hitSlop (might not work on Android).\n */\n renderDebugView: ({color, hitSlop}) => {\n if (!Touchable.TOUCH_TARGET_DEBUG) {\n return null;\n }\n if (!__DEV__) {\n throw Error('Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!');\n }\n const debugHitSlopStyle = {};\n hitSlop = hitSlop || {top: 0, bottom: 0, left: 0, right: 0};\n for (const key in hitSlop) {\n debugHitSlopStyle[key] = -hitSlop[key];\n }\n const hexColor = '#' + ('00000000' + normalizeColor(color).toString(16)).substr(-8);\n return (\n \n );\n }\n};\n\nmodule.exports = Touchable;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableBounce.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TouchableBounce"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TouchableHighlight","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[194,243,284,332,385,423,467,518,564,610,675,722,759,791],"dependencies":["ColorPropType","NativeMethodsMixin","React","ReactNativeViewAttributes","StyleSheet","react-timer-mixin","Touchable","TouchableWithoutFeedback","View","ensureComponentIsNative","ensurePositiveDelayProps","fbjs/lib/keyOf","merge","onlyChild"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\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 ensureComponentIsNative=require('ensureComponentIsNative');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar keyOf=require('fbjs/lib/keyOf');\nvar merge=require('merge');\nvar onlyChild=require('onlyChild');\n\n\n\nvar DEFAULT_PROPS={\nactiveOpacity:0.8,\nunderlayColor:'black'};\n\n\nvar PRESS_RETENTION_OFFSET={top:20,left:20,right:20,bottom:30};\n\n\n\n\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:babelHelpers.extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number,\n\n\n\n\nunderlayColor:ColorPropType,\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 getDefaultProps(){return DEFAULT_PROPS;},\n\n\n_computeSyntheticState:function _computeSyntheticState(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 getInitialState(){\nreturn merge(\nthis.touchableGetInitialState(),this._computeSyntheticState(this.props));},\n\n\n\ncomponentDidMount:function componentDidMount(){\nensurePositiveDelayProps(this.props);\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentDidUpdate:function componentDidUpdate(){\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentWillReceiveProps:function componentWillReceiveProps(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 touchableHandleActivePressIn(e){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout=null;\nthis._showUnderlay();\nthis.props.onPressIn&&this.props.onPressIn(e);},\n\n\ntouchableHandleActivePressOut:function touchableHandleActivePressOut(e){\nif(!this._hideTimeout){\nthis._hideUnderlay();}\n\nthis.props.onPressOut&&this.props.onPressOut(e);},\n\n\ntouchableHandlePress:function touchableHandlePress(e){\nthis.clearTimeout(this._hideTimeout);\nthis._showUnderlay();\nthis._hideTimeout=this.setTimeout(this._hideUnderlay,\nthis.props.delayPressOut||100);\nthis.props.onPress&&this.props.onPress(e);},\n\n\ntouchableHandleLongPress:function touchableHandleLongPress(e){\nthis.props.onLongPress&&this.props.onLongPress(e);},\n\n\ntouchableGetPressRectOffset:function touchableGetPressRectOffset(){\nreturn this.props.pressRetentionOffset||PRESS_RETENTION_OFFSET;},\n\n\ntouchableGetHitSlop:function touchableGetHitSlop(){\nreturn this.props.hitSlop;},\n\n\ntouchableGetHighlightDelayMS:function touchableGetHighlightDelayMS(){\nreturn this.props.delayPressIn;},\n\n\ntouchableGetLongPressDelayMS:function touchableGetLongPressDelayMS(){\nreturn this.props.delayLongPress;},\n\n\ntouchableGetPressOutDelayMS:function touchableGetPressOutDelayMS(){\nreturn this.props.delayPressOut;},\n\n\n_showUnderlay:function _showUnderlay(){\nif(!this.isMounted()||!this._hasPressHandler()){\nreturn;}\n\n\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 _hideUnderlay(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout=null;\nif(this._hasPressHandler()&&this.refs[UNDERLAY_REF]){\nthis.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS);\nthis.refs[UNDERLAY_REF].setNativeProps(babelHelpers.extends({},\nINACTIVE_UNDERLAY_PROPS,{\nstyle:this.state.underlayStyle}));\n\nthis.props.onHideUnderlay&&this.props.onHideUnderlay();}},\n\n\n\n_hasPressHandler:function _hasPressHandler(){\nreturn !!(\nthis.props.onPress||\nthis.props.onPressIn||\nthis.props.onPressOut||\nthis.props.onLongPress);},\n\n\n\nrender:function render(){\nreturn (\nReact.createElement(View,{\naccessible:true,\naccessibilityLabel:this.props.accessibilityLabel,\naccessibilityComponentType:this.props.accessibilityComponentType,\naccessibilityTraits:this.props.accessibilityTraits,\nref:UNDERLAY_REF,\nstyle:this.state.underlayStyle,\nonLayout:this.props.onLayout,\nhitSlop:this.props.hitSlop,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate,\ntestID:this.props.testID,__source:{fileName:_jsxFileName,lineNumber:229}},\nReact.cloneElement(\nonlyChild(this.props.children),\n{\nref:CHILD_REF}),\n\n\nTouchable.renderDebugView({color:'green',hitSlop:this.props.hitSlop})));}});\n\n\n\n\n\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;","map":null,"id":"TouchableHighlight","source":"/**\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 * @noflow\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar ColorPropType = require('ColorPropType');\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 ensureComponentIsNative = require('ensureComponentIsNative');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar keyOf = require('fbjs/lib/keyOf');\nvar merge = require('merge');\nvar onlyChild = require('onlyChild');\n\ntype Event = Object;\n\nvar DEFAULT_PROPS = {\n activeOpacity: 0.8,\n underlayColor: 'black',\n};\n\nvar PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\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 * > **NOTE**: TouchableHighlight supports only one child\n * >\n * > If you wish to have several child components, wrap them in a View.\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: ColorPropType,\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(e: Event) {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._showUnderlay();\n this.props.onPressIn && this.props.onPressIn(e);\n },\n\n touchableHandleActivePressOut: function(e: Event) {\n if (!this._hideTimeout) {\n this._hideUnderlay();\n }\n this.props.onPressOut && this.props.onPressOut(e);\n },\n\n touchableHandlePress: function(e: Event) {\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(e);\n },\n\n touchableHandleLongPress: function(e: Event) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function() {\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function() {\n return this.props.hitSlop;\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 if (!this.isMounted() || !this._hasPressHandler()) {\n return;\n }\n\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._hasPressHandler() && 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 _hasPressHandler: function() {\n return !!(\n this.props.onPress ||\n this.props.onPressIn ||\n this.props.onPressOut ||\n this.props.onLongPress\n );\n },\n\n render: function() {\n return (\n \n {React.cloneElement(\n onlyChild(this.props.children),\n {\n ref: CHILD_REF,\n }\n )}\n {Touchable.renderDebugView({color: 'green', hitSlop: this.props.hitSlop})}\n \n );\n }\n});\n\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TouchableNativeFeedback"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TouchableNativeFeedback","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[193,226,258,284],"dependencies":["React","StyleSheet","Text","View"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.ios.js';\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');\n\nvar DummyTouchableNativeFeedback=React.createClass({displayName:'DummyTouchableNativeFeedback',\nrender:function render(){\nreturn (\nReact.createElement(View,{style:[styles.container,this.props.style],__source:{fileName:_jsxFileName,lineNumber:22}},\nReact.createElement(Text,{style:styles.info,__source:{fileName:_jsxFileName,lineNumber:23}},'TouchableNativeFeedback is not supported on this platform!')));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nheight:100,\nwidth:300,\nbackgroundColor:'#ffbcbc',\nborderWidth:1,\nborderColor:'red',\nalignItems:'center',\njustifyContent:'center',\nmargin:10},\n\ninfo:{\ncolor:'#333333',\nmargin:20}});\n\n\n\nmodule.exports=DummyTouchableNativeFeedback;","map":null,"id":"TouchableNativeFeedback","source":"/**\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 TouchableNativeFeedback\n */\n\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nvar DummyTouchableNativeFeedback = React.createClass({\n render: function() {\n return (\n \n TouchableNativeFeedback is not supported on this platform!\n \n );\n },\n});\n\nvar styles = StyleSheet.create({\n container: {\n height: 100,\n width: 300,\n backgroundColor: '#ffbcbc',\n borderWidth: 1,\n borderColor: 'red',\n alignItems: 'center',\n justifyContent: 'center',\n margin: 10,\n },\n info: {\n color: '#333333',\n margin: 20,\n }\n});\n\nmodule.exports = DummyTouchableNativeFeedback;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TouchableOpacity","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[187,231,272,305,349,400,467,521],"dependencies":["Animated","NativeMethodsMixin","React","react-timer-mixin","Touchable","TouchableWithoutFeedback","ensurePositiveDelayProps","flattenStyle"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Animated=require('Animated');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\n\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar flattenStyle=require('flattenStyle');\n\n\n\nvar PRESS_RETENTION_OFFSET={top:20,left:20,right:20,bottom:30};\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],\n\npropTypes:babelHelpers.extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number}),\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nactiveOpacity:0.2};},\n\n\n\ngetInitialState:function getInitialState(){\nreturn babelHelpers.extends({},\nthis.touchableGetInitialState(),{\nanim:new Animated.Value(1)});},\n\n\n\ncomponentDidMount:function componentDidMount(){\nensurePositiveDelayProps(this.props);},\n\n\ncomponentWillReceiveProps:function componentWillReceiveProps(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\n\n\n\nsetOpacityTo:function setOpacityTo(value){\nAnimated.timing(\nthis.state.anim,\n{toValue:value,duration:150}).\nstart();},\n\n\n\n\n\n\ntouchableHandleActivePressIn:function touchableHandleActivePressIn(e){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout=null;\nthis._opacityActive();\nthis.props.onPressIn&&this.props.onPressIn(e);},\n\n\ntouchableHandleActivePressOut:function touchableHandleActivePressOut(e){\nif(!this._hideTimeout){\nthis._opacityInactive();}\n\nthis.props.onPressOut&&this.props.onPressOut(e);},\n\n\ntouchableHandlePress:function touchableHandlePress(e){\nthis.clearTimeout(this._hideTimeout);\nthis._opacityActive();\nthis._hideTimeout=this.setTimeout(\nthis._opacityInactive,\nthis.props.delayPressOut||100);\n\nthis.props.onPress&&this.props.onPress(e);},\n\n\ntouchableHandleLongPress:function touchableHandleLongPress(e){\nthis.props.onLongPress&&this.props.onLongPress(e);},\n\n\ntouchableGetPressRectOffset:function touchableGetPressRectOffset(){\nreturn this.props.pressRetentionOffset||PRESS_RETENTION_OFFSET;},\n\n\ntouchableGetHitSlop:function touchableGetHitSlop(){\nreturn this.props.hitSlop;},\n\n\ntouchableGetHighlightDelayMS:function touchableGetHighlightDelayMS(){\nreturn this.props.delayPressIn||0;},\n\n\ntouchableGetLongPressDelayMS:function touchableGetLongPressDelayMS(){\nreturn this.props.delayLongPress===0?0:\nthis.props.delayLongPress||500;},\n\n\ntouchableGetPressOutDelayMS:function touchableGetPressOutDelayMS(){\nreturn this.props.delayPressOut;},\n\n\n_opacityActive:function _opacityActive(){\nthis.setOpacityTo(this.props.activeOpacity);},\n\n\n_opacityInactive:function _opacityInactive(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout=null;\nvar childStyle=flattenStyle(this.props.style)||{};\nthis.setOpacityTo(\nchildStyle.opacity===undefined?1:childStyle.opacity);},\n\n\n\nrender:function render(){\nreturn (\nReact.createElement(Animated.View,{\naccessible:true,\naccessibilityLabel:this.props.accessibilityLabel,\naccessibilityComponentType:this.props.accessibilityComponentType,\naccessibilityTraits:this.props.accessibilityTraits,\nstyle:[this.props.style,{opacity:this.state.anim}],\ntestID:this.props.testID,\nonLayout:this.props.onLayout,\nhitSlop:this.props.hitSlop,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate,__source:{fileName:_jsxFileName,lineNumber:162}},\nthis.props.children,\nTouchable.renderDebugView({color:'cyan',hitSlop:this.props.hitSlop})));}});\n\n\n\n\n\nmodule.exports=TouchableOpacity;","map":null,"id":"TouchableOpacity","source":"/**\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 * @noflow\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar Animated = require('Animated');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar React = require('React');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar flattenStyle = require('flattenStyle');\n\ntype Event = Object;\n\nvar PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\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 */\nvar TouchableOpacity = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin, NativeMethodsMixin],\n\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active. Defaults to 0.2.\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 {\n ...this.touchableGetInitialState(),\n anim: new Animated.Value(1),\n };\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n },\n\n componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n },\n\n /**\n * Animate the touchable to a new opacity.\n */\n setOpacityTo: function(value: number) {\n Animated.timing(\n this.state.anim,\n {toValue: value, duration: 150}\n ).start();\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(e: Event) {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._opacityActive();\n this.props.onPressIn && this.props.onPressIn(e);\n },\n\n touchableHandleActivePressOut: function(e: Event) {\n if (!this._hideTimeout) {\n this._opacityInactive();\n }\n this.props.onPressOut && this.props.onPressOut(e);\n },\n\n touchableHandlePress: function(e: Event) {\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(e);\n },\n\n touchableHandleLongPress: function(e: Event) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function() {\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function() {\n return this.props.hitSlop;\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 childStyle = flattenStyle(this.props.style) || {};\n this.setOpacityTo(\n childStyle.opacity === undefined ? 1 : childStyle.opacity\n );\n },\n\n render: function() {\n return (\n \n {this.props.children}\n {Touchable.renderDebugView({color: 'cyan', hitSlop: this.props.hitSlop})}\n \n );\n },\n});\n\nmodule.exports = TouchableOpacity;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TouchableWithoutFeedback","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[58,99,132,176,207,254,305,339],"dependencies":["EdgeInsetsPropType","React","react-timer-mixin","Touchable","View","ensurePositiveDelayProps","onlyChild","fbjs/lib/warning"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar View=require('View');\n\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar onlyChild=require('onlyChild');\nvar warning=require('fbjs/lib/warning');\n\n\n\nvar PRESS_RETENTION_OFFSET={top:20,left:20,right:20,bottom:30};\n\n\n\n\n\n\n\n\n\n\nvar TouchableWithoutFeedback=React.createClass({displayName:'TouchableWithoutFeedback',\nmixins:[TimerMixin,Touchable.Mixin],\n\npropTypes:{\naccessible:React.PropTypes.bool,\naccessibilityComponentType:React.PropTypes.oneOf(View.AccessibilityComponentType),\naccessibilityTraits:React.PropTypes.oneOfType([\nReact.PropTypes.oneOf(View.AccessibilityTraits),\nReact.PropTypes.arrayOf(React.PropTypes.oneOf(View.AccessibilityTraits))]),\n\n\n\n\ndisabled:React.PropTypes.bool,\n\n\n\n\nonPress:React.PropTypes.func,\nonPressIn:React.PropTypes.func,\nonPressOut:React.PropTypes.func,\n\n\n\n\n\nonLayout:React.PropTypes.func,\n\nonLongPress:React.PropTypes.func,\n\n\n\n\ndelayPressIn:React.PropTypes.number,\n\n\n\ndelayPressOut:React.PropTypes.number,\n\n\n\ndelayLongPress:React.PropTypes.number,\n\n\n\n\n\n\n\npressRetentionOffset:EdgeInsetsPropType,\n\n\n\n\n\n\n\n\nhitSlop:EdgeInsetsPropType},\n\n\ngetInitialState:function getInitialState(){\nreturn this.touchableGetInitialState();},\n\n\ncomponentDidMount:function componentDidMount(){\nensurePositiveDelayProps(this.props);},\n\n\ncomponentWillReceiveProps:function componentWillReceiveProps(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\n\n\n\n\ntouchableHandlePress:function touchableHandlePress(e){\nthis.props.onPress&&this.props.onPress(e);},\n\n\ntouchableHandleActivePressIn:function touchableHandleActivePressIn(e){\nthis.props.onPressIn&&this.props.onPressIn(e);},\n\n\ntouchableHandleActivePressOut:function touchableHandleActivePressOut(e){\nthis.props.onPressOut&&this.props.onPressOut(e);},\n\n\ntouchableHandleLongPress:function touchableHandleLongPress(e){\nthis.props.onLongPress&&this.props.onLongPress(e);},\n\n\ntouchableGetPressRectOffset:function touchableGetPressRectOffset(){\nreturn this.props.pressRetentionOffset||PRESS_RETENTION_OFFSET;},\n\n\ntouchableGetHitSlop:function touchableGetHitSlop(){\nreturn this.props.hitSlop;},\n\n\ntouchableGetHighlightDelayMS:function touchableGetHighlightDelayMS(){\nreturn this.props.delayPressIn||0;},\n\n\ntouchableGetLongPressDelayMS:function touchableGetLongPressDelayMS(){\nreturn this.props.delayLongPress===0?0:\nthis.props.delayLongPress||500;},\n\n\ntouchableGetPressOutDelayMS:function touchableGetPressOutDelayMS(){\nreturn this.props.delayPressOut||0;},\n\n\nrender:function render(){\n\nvar child=onlyChild(this.props.children);\nvar children=child.props.children;\nwarning(\n!child.type||child.type.displayName!=='Text',\n'TouchableWithoutFeedback does not work well with Text children. Wrap children in a View instead. See '+(\nchild._owner&&child._owner.getName&&child._owner.getName()||''));\n\nif(Touchable.TOUCH_TARGET_DEBUG&&child.type&&child.type.displayName==='View'){\nif(!Array.isArray(children)){\nchildren=[children];}\n\nchildren.push(Touchable.renderDebugView({color:'red',hitSlop:this.props.hitSlop}));}\n\nvar style=Touchable.TOUCH_TARGET_DEBUG&&child.type&&child.type.displayName==='Text'?\n[child.props.style,{color:'red'}]:\nchild.props.style;\nreturn React.cloneElement(child,{\naccessible:this.props.accessible!==false,\naccessibilityLabel:this.props.accessibilityLabel,\naccessibilityComponentType:this.props.accessibilityComponentType,\naccessibilityTraits:this.props.accessibilityTraits,\ntestID:this.props.testID,\nonLayout:this.props.onLayout,\nhitSlop:this.props.hitSlop,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate,\nstyle:style,\nchildren:children});}});\n\n\n\n\nmodule.exports=TouchableWithoutFeedback;","map":null,"id":"TouchableWithoutFeedback","source":"\n/**\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\nconst EdgeInsetsPropType = require('EdgeInsetsPropType');\nconst React = require('React');\nconst TimerMixin = require('react-timer-mixin');\nconst Touchable = require('Touchable');\nconst View = require('View');\n\nconst ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nconst onlyChild = require('onlyChild');\nconst warning = require('fbjs/lib/warning');\n\ntype Event = Object;\n\nconst PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\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 *\n * > **NOTE**: TouchableWithoutFeedback supports only one child\n * >\n * > If you wish to have several child components, wrap them in a View.\n */\nconst TouchableWithoutFeedback = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin],\n\n propTypes: {\n accessible: React.PropTypes.bool,\n accessibilityComponentType: React.PropTypes.oneOf(View.AccessibilityComponentType),\n accessibilityTraits: React.PropTypes.oneOfType([\n React.PropTypes.oneOf(View.AccessibilityTraits),\n React.PropTypes.arrayOf(React.PropTypes.oneOf(View.AccessibilityTraits)),\n ]),\n /**\n * If true, disable all interactions for this component.\n */\n disabled: React.PropTypes.bool,\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 onPress: React.PropTypes.func,\n onPressIn: React.PropTypes.func,\n onPressOut: React.PropTypes.func,\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 onLongPress: React.PropTypes.func,\n\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 * When the scroll view is disabled, this defines how far your touch may\n * move off of the button, before deactivating the button. Once deactivated,\n * try moving it back and you'll see that the button is once again\n * reactivated! Move it back and forth several times while the scroll view\n * is disabled. Ensure you pass in a constant to reduce memory allocations.\n */\n pressRetentionOffset: EdgeInsetsPropType,\n /**\n * This defines how far your touch can start away from the button. This is\n * added to `pressRetentionOffset` when moving off of the button.\n * ** NOTE **\n * The touch area never extends past the parent view bounds and the Z-index\n * of sibling views always takes precedence if a touch hits two overlapping\n * views.\n */\n hitSlop: EdgeInsetsPropType,\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(e: Event) {\n this.props.onPressIn && this.props.onPressIn(e);\n },\n\n touchableHandleActivePressOut: function(e: Event) {\n this.props.onPressOut && this.props.onPressOut(e);\n },\n\n touchableHandleLongPress: function(e: Event) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function(): typeof PRESS_RETENTION_OFFSET {\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function(): ?Object {\n return this.props.hitSlop;\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 const child = onlyChild(this.props.children);\n let children = child.props.children;\n warning(\n !child.type || child.type.displayName !== 'Text',\n 'TouchableWithoutFeedback does not work well with Text children. Wrap children in a View instead. See ' +\n ((child._owner && child._owner.getName && child._owner.getName()) || '')\n );\n if (Touchable.TOUCH_TARGET_DEBUG && child.type && child.type.displayName === 'View') {\n if (!Array.isArray(children)) {\n children = [children];\n }\n children.push(Touchable.renderDebugView({color: 'red', hitSlop: this.props.hitSlop}));\n }\n const style = (Touchable.TOUCH_TARGET_DEBUG && child.type && child.type.displayName === 'Text') ?\n [child.props.style, {color: 'red'}] :\n child.props.style;\n return (React: any).cloneElement(child, {\n accessible: this.props.accessible !== false,\n accessibilityLabel: this.props.accessibilityLabel,\n accessibilityComponentType: this.props.accessibilityComponentType,\n accessibilityTraits: this.props.accessibilityTraits,\n testID: this.props.testID,\n onLayout: this.props.onLayout,\n hitSlop: this.props.hitSlop,\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 style,\n children,\n });\n }\n});\n\nmodule.exports = TouchableWithoutFeedback;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ToolbarAndroid/ToolbarAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ToolbarAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ToolbarAndroid/ToolbarAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ToolbarAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UnimplementedView"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=require('UnimplementedView');","map":null,"id":"ToolbarAndroid","source":"/**\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 ToolbarAndroid\n */\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ToastAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ToastAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[46],"dependencies":["fbjs/lib/warning"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar warning=require('fbjs/lib/warning');\n\nvar ToastAndroid={\n\nshow:function show(\nmessage,\nduration)\n{\nwarning(false,'ToastAndroid is not supported on this platform.');}};\n\n\n\n\nmodule.exports=ToastAndroid;","map":null,"id":"ToastAndroid","source":"/**\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 ToastAndroid\n * @noflow\n */\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nvar ToastAndroid = {\n\n show: function (\n message: string,\n duration: number\n ): void {\n warning(false, 'ToastAndroid is not supported on this platform.');\n },\n\n};\n\nmodule.exports = ToastAndroid;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TimePickerAndroid/TimePickerAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TimePickerAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TimePickerAndroid/TimePickerAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TimePickerAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[46],"dependencies":["fbjs/lib/warning"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar warning=require('fbjs/lib/warning');\n\nvar TimePickerAndroid={\nopen:function open(options){return regeneratorRuntime.async(function open$(_context){while(1){switch(_context.prev=_context.next){case 0:return _context.abrupt('return',\nPromise.reject({\nmessage:'TimePickerAndroid is not supported on this platform.'}));case 1:case 'end':return _context.stop();}}},null,this);}};\n\n\n\n\nmodule.exports=TimePickerAndroid;","map":null,"id":"TimePickerAndroid","source":"/**\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 TimePickerAndroid\n * @flow\n */\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nconst TimePickerAndroid = {\n async open(options: Object): Promise {\n return Promise.reject({\n message: 'TimePickerAndroid is not supported on this platform.'\n });\n },\n};\n\nmodule.exports = TimePickerAndroid;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TextInput/TextInput.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TextInput","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[192,244,292,336,371,408,442,484,525,557,593,635,694,745,776,830,892,941,999],"dependencies":["DocumentSelectionState","EventEmitter","NativeMethodsMixin","Platform","ReactPropTypes","React","ReactNative","ReactChildren","StyleSheet","Text","TextInputState","react-timer-mixin","TouchableWithoutFeedback","UIManager","View","createReactNativeComponentClass","fbjs/lib/emptyFunction","fbjs/lib/invariant","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TextInput/TextInput.js';\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 Platform=require('Platform');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar ReactNative=require('ReactNative');\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');\nvar UIManager=require('UIManager');\nvar View=require('View');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar emptyFunction=require('fbjs/lib/emptyFunction');\nvar invariant=require('fbjs/lib/invariant');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar onlyMultiline={\nonTextInput:true,\nchildren:true};\n\n\nvar notMultiline={};\n\n\n\nif(Platform.OS==='android'){\nvar AndroidTextInput=requireNativeComponent('AndroidTextInput',null);}else \nif(Platform.OS==='ios'){\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\nvar TextInput=React.createClass({displayName:'TextInput',\nstatics:{\n\nState:TextInputState},\n\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\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\n\nautoFocus:PropTypes.bool,\n\n\n\neditable:PropTypes.bool,\n\n\n\n\n\n\n\n\nkeyboardType:PropTypes.oneOf([\n\n'default',\n'email-address',\n'numeric',\n'phone-pad',\n\n'ascii-capable',\n'numbers-and-punctuation',\n'url',\n'number-pad',\n'name-phone-pad',\n'decimal-pad',\n'twitter',\n'web-search']),\n\n\n\n\n\nkeyboardAppearance:PropTypes.oneOf([\n'default',\n'light',\n'dark']),\n\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\nmaxLength:PropTypes.number,\n\n\n\n\n\nnumberOfLines:PropTypes.number,\n\n\n\n\n\nenablesReturnKeyAutomatically:PropTypes.bool,\n\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\nonSelectionChange:PropTypes.func,\n\n\n\n\nonSubmitEditing:PropTypes.func,\n\n\n\n\n\n\nonKeyPress:PropTypes.func,\n\n\n\nonLayout:PropTypes.func,\n\n\n\nplaceholder:PropTypes.string,\n\n\n\nplaceholderTextColor:PropTypes.string,\n\n\n\n\nsecureTextEntry:PropTypes.bool,\n\n\n\nselectionColor:PropTypes.string,\n\n\n\n\n\nselectionState:PropTypes.instanceOf(DocumentSelectionState),\n\n\n\n\n\n\n\n\n\nvalue:PropTypes.string,\n\n\n\n\n\ndefaultValue:PropTypes.string,\n\n\n\n\nclearButtonMode:PropTypes.oneOf([\n'never',\n'while-editing',\n'unless-editing',\n'always']),\n\n\n\n\n\nclearTextOnFocus:PropTypes.bool,\n\n\n\nselectTextOnFocus:PropTypes.bool,\n\n\n\n\n\n\n\nblurOnSubmit:PropTypes.bool,\n\n\n\nstyle:Text.propTypes.style,\n\n\n\n\nunderlineColorAndroid:PropTypes.string}),\n\n\n\n\n\n\nmixins:[NativeMethodsMixin,TimerMixin],\n\nviewConfig:\nPlatform.OS==='ios'&&RCTTextField?\nRCTTextField.viewConfig:\nPlatform.OS==='android'&&AndroidTextInput?\nAndroidTextInput.viewConfig:\n{},\n\n\n\n\nisFocused:function isFocused(){\nreturn TextInputState.currentlyFocusedField()===\nReactNative.findNodeHandle(this.refs.input);},\n\n\ncontextTypes:{\nonFocusRequested:React.PropTypes.func,\nfocusEmitter:React.PropTypes.instanceOf(EventEmitter)},\n\n\n_focusSubscription:undefined,\n\ncomponentDidMount:function componentDidMount(){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 componentWillUnmount(){\nthis._focusSubscription&&this._focusSubscription.remove();\nif(this.isFocused()){\nthis.blur();}},\n\n\n\ngetChildContext:function getChildContext(){\nreturn {isInAParentText:true};},\n\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\n\n\n\nclear:function clear(){\nthis.setNativeProps({text:''});},\n\n\nrender:function render(){\nif(Platform.OS==='ios'){\nreturn this._renderIOS();}else \nif(Platform.OS==='android'){\nreturn this._renderAndroid();}},\n\n\n\n_getText:function _getText(){\nreturn typeof this.props.value==='string'?\nthis.props.value:\nthis.props.defaultValue;},\n\n\n_renderIOS:function _renderIOS(){var _this2=this;\nvar textContainer;\n\nvar onSelectionChange;\nif(this.props.selectionState||this.props.onSelectionChange){\nonSelectionChange=function onSelectionChange(event){\nif(_this2.props.selectionState){\nvar selection=event.nativeEvent.selection;\n_this2.props.selectionState.update(selection.start,selection.end);}\n\n_this2.props.onSelectionChange&&_this2.props.onSelectionChange(event);};}\n\n\n\nvar props=babelHelpers.extends({},this.props);\nprops.style=[styles.input,this.props.style];\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,babelHelpers.extends({\nref:'input'},\nprops,{\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChange:onSelectionChange,\nonSelectionChangeShouldSetResponder:emptyFunction.thatReturnsTrue,\ntext:this._getText(),__source:{fileName:_jsxFileName,lineNumber:420}}));}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,{style:props.style,__source:{fileName:_jsxFileName,lineNumber:447}},children);}\n\nif(props.inputView){\nchildren=[children,props.inputView];}\n\ntextContainer=\nReact.createElement(RCTTextView,babelHelpers.extends({\nref:'input'},\nprops,{\nchildren:children,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChange:onSelectionChange,\nonTextInput:this._onTextInput,\nonSelectionChangeShouldSetResponder:emptyFunction.thatReturnsTrue,\ntext:this._getText(),__source:{fileName:_jsxFileName,lineNumber:453}}));}\n\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\nrejectResponderTermination:true,\naccessible:props.accessible,\naccessibilityLabel:props.accessibilityLabel,\naccessibilityTraits:props.accessibilityTraits,\ntestID:props.testID,__source:{fileName:_jsxFileName,lineNumber:468}},\ntextContainer));},\n\n\n\n\n_renderAndroid:function _renderAndroid(){var _this3=this;\nvar onSelectionChange;\nif(this.props.selectionState||this.props.onSelectionChange){\nonSelectionChange=function onSelectionChange(event){\nif(_this3.props.selectionState){\nvar selection=event.nativeEvent.selection;\n_this3.props.selectionState.update(selection.start,selection.end);}\n\n_this3.props.onSelectionChange&&_this3.props.onSelectionChange(event);};}\n\n\n\nvar autoCapitalize=\nUIManager.AndroidTextInput.Constants.AutoCapitalizationType[this.props.autoCapitalize];\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,{__source:{fileName:_jsxFileName,lineNumber:502}},children);}\n\n\nvar textContainer=\nReact.createElement(AndroidTextInput,{\nref:'input',\nstyle:[this.props.style],\nautoCapitalize:autoCapitalize,\nautoCorrect:this.props.autoCorrect,\nkeyboardType:this.props.keyboardType,\nmostRecentEventCount:0,\nmultiline:this.props.multiline,\nnumberOfLines:this.props.numberOfLines,\nmaxLength:this.props.maxLength,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChange:onSelectionChange,\nonTextInput:this._onTextInput,\nonEndEditing:this.props.onEndEditing,\nonSubmitEditing:this.props.onSubmitEditing,\nblurOnSubmit:this.props.blurOnSubmit,\nonLayout:this.props.onLayout,\npassword:this.props.password||this.props.secureTextEntry,\nplaceholder:this.props.placeholder,\nplaceholderTextColor:this.props.placeholderTextColor,\nselectionColor:this.props.selectionColor,\ntext:this._getText(),\nunderlineColorAndroid:this.props.underlineColorAndroid,\nchildren:children,\neditable:this.props.editable,\nselectTextOnFocus:this.props.selectTextOnFocus,__source:{fileName:_jsxFileName,lineNumber:506}});\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\naccessible:this.props.accessible,\naccessibilityLabel:this.props.accessibilityLabel,\naccessibilityComponentType:this.props.accessibilityComponentType,\ntestID:this.props.testID,__source:{fileName:_jsxFileName,lineNumber:537}},\ntextContainer));},\n\n\n\n\n_onFocus:function _onFocus(event){\nif(this.props.onFocus){\nthis.props.onFocus(event);}\n\n\nif(this.props.selectionState){\nthis.props.selectionState.focus();}},\n\n\n\n_onPress:function _onPress(event){\nif(this.props.editable||this.props.editable===undefined){\nthis.focus();}},\n\n\n\n_onChange:function _onChange(event){\n\n\nthis.refs.input.setNativeProps({\nmostRecentEventCount:event.nativeEvent.eventCount});\n\n\nvar text=event.nativeEvent.text;\nthis.props.onChange&&this.props.onChange(event);\nthis.props.onChangeText&&this.props.onChangeText(text);\n\nif(!this.refs.input){\n\n\nreturn;}\n\n\n\n\n\nif(text!==this.props.value&&typeof this.props.value==='string'){\nthis.refs.input.setNativeProps({\ntext:this.props.value});}},\n\n\n\n\n_onBlur:function _onBlur(event){\nthis.blur();\nif(this.props.onBlur){\nthis.props.onBlur(event);}\n\n\nif(this.props.selectionState){\nthis.props.selectionState.blur();}},\n\n\n\n_onTextInput:function _onTextInput(event){\nthis.props.onTextInput&&this.props.onTextInput(event);}});\n\n\n\nvar styles=StyleSheet.create({\ninput:{\nalignSelf:'stretch'}});\n\n\n\nmodule.exports=TextInput;","map":null,"id":"TextInput","source":"/**\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 Platform = require('Platform');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar ReactNative = require('ReactNative');\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');\nvar UIManager = require('UIManager');\nvar View = require('View');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar onlyMultiline = {\n onTextInput: true, // not supported in Open Source yet\n children: true,\n};\n\nvar notMultiline = {\n // nothing yet\n};\n\nif (Platform.OS === 'android') {\n var AndroidTextInput = requireNativeComponent('AndroidTextInput', null);\n} else if (Platform.OS === 'ios') {\n var RCTTextView = requireNativeComponent('RCTTextView', null);\n var RCTTextField = requireNativeComponent('RCTTextField', null);\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,\n * such as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple\n * example:\n *\n * ```\n * this.setState({text})}\n * value={this.state.text}\n * />\n * ```\n *\n * Note that some props are only available with `multiline={true/false}`.\n * Additionally, border styles that apply to only one side of the element\n * (e.g., `borderBottomColor`, `borderLeftWidth`, etc.) will not be applied if\n * `multiline=false`. To achieve the same effect, you can wrap your `TextInput`\n * in a `View`:\n *\n * ```\n * \n * \n * \n * ```\n */\nvar TextInput = React.createClass({\n statics: {\n /* TODO(brentvatne) docs are needed for this */\n State: TextInputState,\n },\n\n propTypes: {\n ...View.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. The default value is true.\n */\n autoCorrect: PropTypes.bool,\n /**\n * If true, focuses the input on componentDidMount.\n * The default value is false.\n */\n autoFocus: PropTypes.bool,\n /**\n * If false, text is not editable. The default value is true.\n */\n editable: PropTypes.bool,\n /**\n * Determines which keyboard to open, e.g.`numeric`.\n *\n * The following values work across platforms:\n * - default\n * - numeric\n * - email-address\n */\n keyboardType: PropTypes.oneOf([\n // Cross-platform\n 'default',\n 'email-address',\n 'numeric',\n 'phone-pad',\n // iOS-only\n 'ascii-capable',\n 'numbers-and-punctuation',\n 'url',\n 'number-pad',\n 'name-phone-pad',\n 'decimal-pad',\n 'twitter',\n 'web-search',\n ]),\n /**\n * Determines the color of the keyboard.\n * @platform ios\n */\n keyboardAppearance: PropTypes.oneOf([\n 'default',\n 'light',\n 'dark',\n ]),\n /**\n * Determines how the return key should look.\n * @platform ios\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 * Limits the maximum number of characters that can be entered. Use this\n * instead of implementing the logic in JS to avoid flicker.\n */\n maxLength: PropTypes.number,\n /**\n * Sets the number of lines for a TextInput. Use it with multiline set to\n * true to be able to fill the lines.\n * @platform android\n */\n numberOfLines: PropTypes.number,\n /**\n * If true, the keyboard disables the return key when there is no text and\n * automatically enables it when there is text. The default value is false.\n * @platform ios\n */\n enablesReturnKeyAutomatically: PropTypes.bool,\n /**\n * If true, the text input can be multiple lines.\n * The 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 selection is changed\n */\n onSelectionChange: PropTypes.func,\n /**\n * Callback that is called when the text input's submit button is pressed.\n * Invalid if multiline={true} is specified.\n */\n onSubmitEditing: PropTypes.func,\n /**\n * Callback that is called when a key is pressed.\n * Pressed key value is passed as an argument to the callback handler.\n * Fires before onChange callbacks.\n * @platform ios\n */\n onKeyPress: PropTypes.func,\n /**\n * Invoked on mount and layout changes with `{x, y, width, height}`.\n */\n onLayout: PropTypes.func,\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 * If true, the text input obscures the text entered so that sensitive text\n * like passwords stay secure. The default value is false.\n */\n secureTextEntry: PropTypes.bool,\n /**\n * The highlight (and cursor on ios) color of the text input\n */\n selectionColor: PropTypes.string,\n /**\n * See DocumentSelectionState.js, some state that is responsible for\n * maintaining selection information for a document\n * @platform ios\n */\n selectionState: PropTypes.instanceOf(DocumentSelectionState),\n /**\n * The value to show for the text input. TextInput is a controlled\n * component, which means the native value will be forced to match this\n * value prop if provided. For most uses this works great, but in some\n * cases this may cause flickering - one common cause is preventing edits\n * by keeping value the same. In addition to simply setting the same value,\n * either set `editable={false}`, or set/update `maxLength` to prevent\n * unwanted edits without flicker.\n */\n value: PropTypes.string,\n /**\n * Provides an initial value that will change when the user starts typing.\n * Useful for simple use-cases where you don't want to deal with listening\n * to events and updating the value prop to keep the controlled state in sync.\n */\n defaultValue: PropTypes.string,\n /**\n * When the clear button should appear on the right side of the text view\n * @platform ios\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 * @platform ios\n */\n clearTextOnFocus: PropTypes.bool,\n /**\n * If true, all text will automatically be selected on focus\n */\n selectTextOnFocus: PropTypes.bool,\n /**\n * If true, the text field will blur when submitted.\n * The default value is true for single-line fields and false for\n * multiline fields. Note that for multiline fields, setting blurOnSubmit\n * to true means that pressing return will blur the field and trigger the\n * onSubmitEditing event instead of inserting a newline into the field.\n */\n blurOnSubmit: PropTypes.bool,\n /**\n * Styles\n */\n style: Text.propTypes.style,\n /**\n * The color of the textInput underline.\n * @platform 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:\n ((Platform.OS === 'ios' && RCTTextField ?\n RCTTextField.viewConfig :\n (Platform.OS === 'android' && AndroidTextInput ?\n AndroidTextInput.viewConfig :\n {})) : Object),\n\n /**\n * Returns if the input is currently focused.\n */\n isFocused: function(): boolean {\n return TextInputState.currentlyFocusedField() ===\n ReactNative.findNodeHandle(this.refs.input);\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 getChildContext: function(): Object {\n return {isInAParentText: true};\n },\n\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n\n /**\n * Removes all text from the input.\n */\n clear: function() {\n this.setNativeProps({text: ''});\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 _getText: function(): ?string {\n return typeof this.props.value === 'string' ?\n this.props.value :\n this.props.defaultValue;\n },\n\n _renderIOS: function() {\n var textContainer;\n\n var onSelectionChange;\n if (this.props.selectionState || this.props.onSelectionChange) {\n onSelectionChange = (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\n var props = Object.assign({}, this.props);\n props.style = [styles.input, this.props.style];\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 ;\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 onSelectionChange;\n if (this.props.selectionState || this.props.onSelectionChange) {\n onSelectionChange = (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\n var autoCapitalize =\n UIManager.AndroidTextInput.Constants.AutoCapitalizationType[this.props.autoCapitalize];\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\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 if (this.props.selectionState) {\n this.props.selectionState.focus();\n }\n },\n\n _onPress: function(event: Event) {\n if (this.props.editable || this.props.editable === undefined) {\n this.focus();\n }\n },\n\n _onChange: function(event: Event) {\n // Make sure to fire the mostRecentEventCount first so it is already set on\n // native when the text value is set.\n this.refs.input.setNativeProps({\n mostRecentEventCount: event.nativeEvent.eventCount,\n });\n\n var text = event.nativeEvent.text;\n this.props.onChange && this.props.onChange(event);\n this.props.onChangeText && this.props.onChangeText(text);\n\n if (!this.refs.input) {\n // calling `this.props.onChange` or `this.props.onChangeText`\n // may clean up the input itself. Exits here.\n return;\n }\n\n // This is necessary in case native updates the text and JS decides\n // that the update should be ignored and we should stick with the value\n // that we have in JS.\n if (text !== this.props.value && typeof this.props.value === 'string') {\n this.refs.input.setNativeProps({\n text: this.props.value,\n });\n }\n },\n\n _onBlur: function(event: Event) {\n this.blur();\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n\n if (this.props.selectionState) {\n this.props.selectionState.blur();\n }\n },\n\n _onTextInput: function(event: Event) {\n this.props.onTextInput && this.props.onTextInput(event);\n },\n});\n\nvar styles = StyleSheet.create({\n input: {\n alignSelf: 'stretch',\n },\n});\n\nmodule.exports = TextInput;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TextInputState","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[51,86],"dependencies":["Platform","UIManager"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform=require('Platform');\nvar UIManager=require('UIManager');\n\nvar TextInputState={\n\n\n\n_currentlyFocusedID:null,\n\n\n\n\n\ncurrentlyFocusedField:function currentlyFocusedField(){\nreturn this._currentlyFocusedID;},\n\n\n\n\n\n\n\nfocusTextInput:function focusTextInput(textFieldID){\nif(this._currentlyFocusedID!==textFieldID&&textFieldID!==null){\nthis._currentlyFocusedID=textFieldID;\nif(Platform.OS==='ios'){\nUIManager.focus(textFieldID);}else \nif(Platform.OS==='android'){\nUIManager.dispatchViewManagerCommand(\ntextFieldID,\nUIManager.AndroidTextInput.Commands.focusTextInput,\nnull);}}},\n\n\n\n\n\n\n\n\n\n\nblurTextInput:function blurTextInput(textFieldID){\nif(this._currentlyFocusedID===textFieldID&&textFieldID!==null){\nthis._currentlyFocusedID=null;\nif(Platform.OS==='ios'){\nUIManager.blur(textFieldID);}else \nif(Platform.OS==='android'){\nUIManager.dispatchViewManagerCommand(\ntextFieldID,\nUIManager.AndroidTextInput.Commands.blurTextInput,\nnull);}}}};\n\n\n\n\n\n\nmodule.exports=TextInputState;","map":null,"id":"TextInputState","source":"/**\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 TextInputState\n * @flow\n *\n * This class is responsible for coordinating the \"focused\"\n * state for TextInputs. All calls relating to the keyboard\n * should be funneled through here\n */\n'use strict';\n\nvar Platform = require('Platform');\nvar UIManager = require('UIManager');\n\nvar TextInputState = {\n /**\n * Internal state\n */\n _currentlyFocusedID: (null: ?number),\n\n /**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\n currentlyFocusedField: function(): ?number {\n return this._currentlyFocusedID;\n },\n\n /**\n * @param {number} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused\n */\n focusTextInput: function(textFieldID: ?number) {\n if (this._currentlyFocusedID !== textFieldID && textFieldID !== null) {\n this._currentlyFocusedID = textFieldID;\n if (Platform.OS === 'ios') {\n UIManager.focus(textFieldID);\n } else if (Platform.OS === 'android') {\n UIManager.dispatchViewManagerCommand(\n textFieldID,\n UIManager.AndroidTextInput.Commands.focusTextInput,\n null\n );\n }\n }\n },\n\n /**\n * @param {number} textFieldID id of the text field to focus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\n blurTextInput: function(textFieldID: ?number) {\n if (this._currentlyFocusedID === textFieldID && textFieldID !== null) {\n this._currentlyFocusedID = null;\n if (Platform.OS === 'ios') {\n UIManager.blur(textFieldID);\n } else if (Platform.OS === 'android') {\n UIManager.dispatchViewManagerCommand(\n textFieldID,\n UIManager.AndroidTextInput.Commands.blurTextInput,\n null\n );\n }\n }\n }\n};\n\nmodule.exports = TextInputState;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TabBarIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TabBarIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[187,223,256,297,332,377],"dependencies":["ColorPropType","React","StyleSheet","TabBarItemIOS","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\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:babelHelpers.extends({},\nView.propTypes,{\nstyle:View.propTypes.style,\n\n\n\nunselectedTintColor:ColorPropType,\n\n\n\ntintColor:ColorPropType,\n\n\n\nbarTintColor:ColorPropType,\n\n\n\ntranslucent:React.PropTypes.bool}),\n\n\nrender:function render(){\nreturn (\nReact.createElement(RCTTabBar,{\nstyle:[styles.tabGroup,this.props.style],\nunselectedTintColor:this.props.unselectedTintColor,\ntintColor:this.props.tintColor,\nbarTintColor:this.props.barTintColor,\ntranslucent:this.props.translucent!==false,__source:{fileName:_jsxFileName,lineNumber:50}},\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;","map":null,"id":"TabBarIOS","source":"/**\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 ColorPropType = require('ColorPropType');\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 ...View.propTypes,\n style: View.propTypes.style,\n /**\n * Color of text on unselected tabs\n */\n unselectedTintColor: ColorPropType,\n /**\n * Color of the currently selected tab icon\n */\n tintColor: ColorPropType,\n /**\n * Background color of the tab bar\n */\n barTintColor: ColorPropType,\n /**\n * A Boolean value that indicates whether the tab bar is translucent\n */\n translucent: React.PropTypes.bool,\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TabBarItemIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TabBarItemIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[183,211,249,298,330,375],"dependencies":["Image","React","StaticContainer.react","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js';\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:babelHelpers.extends({},\nView.propTypes,{\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\nrenderAsOriginal:React.PropTypes.bool,\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 getInitialState(){\nreturn {\nhasBeenSelected:false};},\n\n\n\ncomponentWillMount:function componentWillMount(){\nif(this.props.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\ncomponentWillReceiveProps:function componentWillReceiveProps(nextProps){\nif(this.state.hasBeenSelected||nextProps.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\nrender:function render(){var _props=\nthis.props;var style=_props.style;var children=_props.children;var props=babelHelpers.objectWithoutProperties(_props,['style','children']);\n\n\n\nif(this.state.hasBeenSelected){\nvar tabContents=\nReact.createElement(StaticContainer,{shouldUpdate:this.props.selected,__source:{fileName:_jsxFileName,lineNumber:111}},\nchildren);}else \n\n{\nvar tabContents=React.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:115}});}\n\n\nreturn (\nReact.createElement(RCTTabBarItem,babelHelpers.extends({},\nprops,{\nstyle:[styles.tab,style],__source:{fileName:_jsxFileName,lineNumber:119}}),\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;","map":null,"id":"TabBarItemIOS","source":"/**\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 * @noflow\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 ...View.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 overridden 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 * If set to true it renders the image as original,\n * it defaults to being displayed as a template\n */\n renderAsOriginal: React.PropTypes.bool,\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 {style, children, ...props} = this.props;\n\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 var tabContents =\n \n {children}\n ;\n } else {\n var tabContents = ;\n }\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SwitchIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SwitchIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[189,238,283,320,353,385,430],"dependencies":["ColorPropType","NativeMethodsMixin","ReactPropTypes","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\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\nvar SWITCH='switch';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SwitchIOS=React.createClass({displayName:'SwitchIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\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:ColorPropType,\n\n\n\n\nthumbTintColor:ColorPropType,\n\n\n\n\ntintColor:ColorPropType}),\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nvalue:false,\ndisabled:false};},\n\n\n\n_onChange:function _onChange(event){\n\n\nthis.refs[SWITCH].setNativeProps({value:this.props.value});\n\nif(this.props.value===event.nativeEvent.value||this.props.disabled){\nreturn;}\n\n\nthis.props.onChange&&this.props.onChange(event);\nthis.props.onValueChange&&this.props.onValueChange(event.nativeEvent.value);},\n\n\nrender:function render(){\nreturn (\nReact.createElement(RCTSwitch,babelHelpers.extends({},\nthis.props,{\nref:SWITCH,\nonChange:this._onChange,\nstyle:[styles.rkSwitch,this.props.style],__source:{fileName:_jsxFileName,lineNumber:99}})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nrkSwitch:{\nheight:31,\nwidth:51}});\n\n\n\nvar RCTSwitch=requireNativeComponent('RCTSwitch',SwitchIOS,{\nnativeOnly:{onChange:true}});\n\n\nmodule.exports=SwitchIOS;","map":null,"id":"SwitchIOS","source":"/**\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 ColorPropType = require('ColorPropType');\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\nvar SWITCH = 'switch';\n\ntype DefaultProps = {\n value: boolean;\n disabled: boolean;\n};\n\ntype Event = Object;\n\n/**\n * @deprecated\n *\n * Use instead for cross-platform compatibility.\n */\nvar SwitchIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.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: ColorPropType,\n\n /**\n * Background color for the switch round button.\n */\n thumbTintColor: ColorPropType,\n\n /**\n * Background color when the switch is turned off.\n */\n tintColor: ColorPropType,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n value: false,\n disabled: false,\n };\n },\n\n _onChange: function(event: Event) {\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 if (this.props.value === event.nativeEvent.value || this.props.disabled) {\n return;\n }\n\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 rkSwitch: {\n height: 31,\n width: 51,\n },\n});\n\nvar RCTSwitch = requireNativeComponent('RCTSwitch', SwitchIOS, {\n nativeOnly: { onChange: true }\n});\n\nmodule.exports = SwitchIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SwitchAndroid/SwitchAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SwitchAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SwitchAndroid/SwitchAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SwitchAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UnimplementedView"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=require('UnimplementedView');","map":null,"id":"SwitchAndroid","source":"/**\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 SwitchAndroid\n */\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Switch/Switch.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Switch","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[177,226,270,301,334,366,411],"dependencies":["ColorPropType","NativeMethodsMixin","Platform","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Switch/Switch.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Switch=React.createClass({displayName:'Switch',\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\n\nvalue:React.PropTypes.bool,\n\n\n\n\ndisabled:React.PropTypes.bool,\n\n\n\nonValueChange:React.PropTypes.func,\n\n\n\ntestID:React.PropTypes.string,\n\n\n\n\n\ntintColor:ColorPropType,\n\n\n\n\nonTintColor:ColorPropType,\n\n\n\n\nthumbTintColor:ColorPropType}),\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nvalue:false,\ndisabled:false};},\n\n\n\nmixins:[NativeMethodsMixin],\n\n_rctSwitch:{},\n_onChange:function _onChange(event){\nif(Platform.OS==='android'){\nthis._rctSwitch.setNativeProps({on:this.props.value});}else \n{\nthis._rctSwitch.setNativeProps({value:this.props.value});}\n\n\nthis.props.onChange&&this.props.onChange(event);\nthis.props.onValueChange&&this.props.onValueChange(event.nativeEvent.value);},\n\n\nrender:function render(){var _this=this;\nvar props=babelHelpers.extends({},this.props);\nprops.onStartShouldSetResponder=function(){return true;};\nprops.onResponderTerminationRequest=function(){return false;};\nif(Platform.OS==='android'){\nprops.enabled=!this.props.disabled;\nprops.on=this.props.value;\nprops.style=this.props.style;}else \nif(Platform.OS==='ios'){\nprops.style=[styles.rctSwitchIOS,this.props.style];}\n\nreturn (\nReact.createElement(RCTSwitch,babelHelpers.extends({},\nprops,{\nref:function ref(_ref){_this._rctSwitch=_ref;},\nonChange:this._onChange,__source:{fileName:_jsxFileName,lineNumber:111}})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nrctSwitchIOS:{\nheight:31,\nwidth:51}});\n\n\n\nif(Platform.OS==='android'){\nvar RCTSwitch=requireNativeComponent('AndroidSwitch',Switch,{\nnativeOnly:{onChange:true,on:true,enabled:true}});}else \n\n{\nvar RCTSwitch=requireNativeComponent('RCTSwitch',Switch,{\nnativeOnly:{onChange:true}});}\n\n\n\nmodule.exports=Switch;","map":null,"id":"Switch","source":"/**\n * Copyright (c) 2013-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 Switch\n * @flow\n */\n'use strict';\n\nvar ColorPropType = require('ColorPropType');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar Platform = require('Platform');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\ntype DefaultProps = {\n value: boolean;\n disabled: boolean;\n};\n\n/**\n * Renders a boolean input.\n *\n * This is a controlled component that requires an `onValueChange` callback that\n * updates the `value` prop in order for the component to reflect user actions.\n * If the `value` prop is not updated, the component will continue to render\n * the supplied `value` prop instead of the expected result of any user actions.\n *\n * @keyword checkbox\n * @keyword toggle\n */\nvar Switch = React.createClass({\n propTypes: {\n ...View.propTypes,\n /**\n * The value of the switch. If true the switch will be turned on.\n * Default value is false.\n */\n value: React.PropTypes.bool,\n /**\n * If true the user won't be able to toggle the switch.\n * Default value is false.\n */\n disabled: React.PropTypes.bool,\n /**\n * Invoked with the new value when the value changes.\n */\n onValueChange: React.PropTypes.func,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: React.PropTypes.string,\n\n /**\n * Background color when the switch is turned off.\n * @platform ios\n */\n tintColor: ColorPropType,\n /**\n * Background color when the switch is turned on.\n * @platform ios\n */\n onTintColor: ColorPropType,\n /**\n * Color of the foreground switch grip.\n * @platform ios\n */\n thumbTintColor: ColorPropType,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n value: false,\n disabled: false,\n };\n },\n\n mixins: [NativeMethodsMixin],\n\n _rctSwitch: {},\n _onChange: function(event: Object) {\n if (Platform.OS === 'android') {\n this._rctSwitch.setNativeProps({on: this.props.value});\n } else {\n this._rctSwitch.setNativeProps({value: this.props.value});\n }\n //Change the props after the native props are set in case the props change removes the component\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n },\n\n render: function() {\n var props = {...this.props};\n props.onStartShouldSetResponder = () => true;\n props.onResponderTerminationRequest = () => false;\n if (Platform.OS === 'android') {\n props.enabled = !this.props.disabled;\n props.on = this.props.value;\n props.style = this.props.style;\n } else if (Platform.OS === 'ios') {\n props.style = [styles.rctSwitchIOS, this.props.style];\n }\n return (\n { this._rctSwitch = ref; }}\n onChange={this._onChange}\n />\n );\n },\n});\n\nvar styles = StyleSheet.create({\n rctSwitchIOS: {\n height: 31,\n width: 51,\n }\n});\n\nif (Platform.OS === 'android') {\n var RCTSwitch = requireNativeComponent('AndroidSwitch', Switch, {\n nativeOnly: { onChange: true, on: true, enabled: true }\n });\n} else {\n var RCTSwitch = requireNativeComponent('RCTSwitch', Switch, {\n nativeOnly: { onChange: true }\n });\n}\n\nmodule.exports = Switch;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/StatusBar/StatusBar.js":{"metadata":{"mtime":1463609891000},"data":{"name":"StatusBar","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[44,80,119,158,205],"dependencies":["React","ColorPropType","Platform","processColor","NativeModules"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar ColorPropType=require('ColorPropType');\nvar Platform=require('Platform');\n\nvar processColor=require('processColor');\n\nvar StatusBarManager=require('NativeModules').StatusBarManager;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction mergePropsStack(propsStack,defaultValues){\nreturn propsStack.reduce(function(prev,cur){\nfor(var prop in cur){\nif(cur[prop]!=null){\nprev[prop]=cur[prop];}}\n\n\nreturn prev;},\nbabelHelpers.extends({},defaultValues));}\n\n\n\n\n\n\nfunction createStackEntry(props){\nreturn {\nbackgroundColor:props.backgroundColor!=null?{\nvalue:props.backgroundColor,\nanimated:props.animated}:\nnull,\nbarStyle:props.barStyle!=null?{\nvalue:props.barStyle,\nanimated:props.animated}:\nnull,\ntranslucent:props.translucent,\nhidden:props.hidden!=null?{\nvalue:props.hidden,\nanimated:props.animated,\ntransition:props.showHideTransition}:\nnull,\nnetworkActivityIndicatorVisible:props.networkActivityIndicatorVisible};}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 StatusBar=React.createClass({displayName:'StatusBar',\nstatics:{\n_propsStack:[],\n_defaultProps:createStackEntry({\nanimated:false,\nshowHideTransition:'fade',\nbackgroundColor:'black',\nbarStyle:'default',\ntranslucent:false,\nhidden:false,\nnetworkActivityIndicatorVisible:false}),\n\n\n_updateImmediate:null,\n\n_currentValues:null,\n\n\n\n\n\n\n\n\ncurrentHeight:StatusBarManager.HEIGHT,\n\n\n\nsetHidden:function setHidden(hidden,animation){\nanimation=animation||'none';\nStatusBar._defaultProps.hidden.value=hidden;\nif(Platform.OS==='ios'){\nStatusBarManager.setHidden(hidden,animation);}else \nif(Platform.OS==='android'){\nStatusBarManager.setHidden(hidden);}},\n\n\n\nsetBarStyle:function setBarStyle(style,animated){\nif(Platform.OS!=='ios'){\nconsole.warn('`setBarStyle` is only available on iOS');\nreturn;}\n\nanimated=animated||false;\nStatusBar._defaultProps.barStyle.value=style;\nStatusBarManager.setStyle(style,animated);},\n\n\nsetNetworkActivityIndicatorVisible:function setNetworkActivityIndicatorVisible(visible){\nif(Platform.OS!=='ios'){\nconsole.warn('`setNetworkActivityIndicatorVisible` is only available on iOS');\nreturn;}\n\nStatusBar._defaultProps.networkActivityIndicatorVisible=visible;\nStatusBarManager.setNetworkActivityIndicatorVisible(visible);},\n\n\nsetBackgroundColor:function setBackgroundColor(color,animated){\nif(Platform.OS!=='android'){\nconsole.warn('`setBackgroundColor` is only available on Android');\nreturn;}\n\nanimated=animated||false;\nStatusBar._defaultProps.backgroundColor.value=color;\nStatusBarManager.setColor(processColor(color),animated);},\n\n\nsetTranslucent:function setTranslucent(translucent){\nif(Platform.OS!=='android'){\nconsole.warn('`setTranslucent` is only available on Android');\nreturn;}\n\nStatusBar._defaultProps.translucent=translucent;\nStatusBarManager.setTranslucent(translucent);}},\n\n\n\npropTypes:{\n\n\n\nhidden:React.PropTypes.bool,\n\n\n\n\nanimated:React.PropTypes.bool,\n\n\n\n\nbackgroundColor:ColorPropType,\n\n\n\n\n\n\n\ntranslucent:React.PropTypes.bool,\n\n\n\n\n\nbarStyle:React.PropTypes.oneOf([\n'default',\n'light-content']),\n\n\n\n\n\n\nnetworkActivityIndicatorVisible:React.PropTypes.bool,\n\n\n\n\n\n\nshowHideTransition:React.PropTypes.oneOf([\n'fade',\n'slide'])},\n\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nanimated:false,\nshowHideTransition:'fade'};},\n\n\n\n_stackEntry:null,\n\ncomponentDidMount:function componentDidMount(){\n\n\n\n\nthis._stackEntry=createStackEntry(this.props);\nStatusBar._propsStack.push(this._stackEntry);\nthis._updatePropsStack();},\n\n\ncomponentWillUnmount:function componentWillUnmount(){\n\n\nvar index=StatusBar._propsStack.indexOf(this._stackEntry);\nStatusBar._propsStack.splice(index,1);\n\nthis._updatePropsStack();},\n\n\ncomponentDidUpdate:function componentDidUpdate(){\nvar index=StatusBar._propsStack.indexOf(this._stackEntry);\nthis._stackEntry=createStackEntry(this.props);\nStatusBar._propsStack[index]=this._stackEntry;\n\nthis._updatePropsStack();},\n\n\n\n\n\n_updatePropsStack:function _updatePropsStack(){\n\nclearImmediate(StatusBar._updateImmediate);\nStatusBar._updateImmediate=setImmediate(function(){\nvar oldProps=StatusBar._currentValues;\nvar mergedProps=mergePropsStack(StatusBar._propsStack,StatusBar._defaultProps);\n\n\nif(Platform.OS==='ios'){\nif(!oldProps||oldProps.barStyle.value!==mergedProps.barStyle.value){\nStatusBarManager.setStyle(\nmergedProps.barStyle.value,\nmergedProps.barStyle.animated);}\n\n\nif(!oldProps||oldProps.hidden.value!==mergedProps.hidden.value){\nStatusBarManager.setHidden(\nmergedProps.hidden.value,\nmergedProps.hidden.animated?\nmergedProps.hidden.transition:\n'none');}\n\n\n\nif(!oldProps||oldProps.networkActivityIndicatorVisible!==mergedProps.networkActivityIndicatorVisible){\nStatusBarManager.setNetworkActivityIndicatorVisible(\nmergedProps.networkActivityIndicatorVisible);}}else \n\n\nif(Platform.OS==='android'){\nif(!oldProps||oldProps.backgroundColor.value!==mergedProps.backgroundColor.value){\nStatusBarManager.setColor(\nprocessColor(mergedProps.backgroundColor.value),\nmergedProps.backgroundColor.animated);}\n\n\nif(!oldProps||oldProps.hidden.value!==mergedProps.hidden.value){\nStatusBarManager.setHidden(mergedProps.hidden.value);}\n\nif(!oldProps||oldProps.translucent!==mergedProps.translucent){\nStatusBarManager.setTranslucent(mergedProps.translucent);}}\n\n\n\nStatusBar._currentValues=mergedProps;});},\n\n\n\nrender:function render(){\nreturn null;}});\n\n\n\nmodule.exports=StatusBar;","map":null,"id":"StatusBar","source":"/**\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 StatusBar\n * @flow\n */\n'use strict';\n\nconst React = require('React');\nconst ColorPropType = require('ColorPropType');\nconst Platform = require('Platform');\n\nconst processColor = require('processColor');\n\nconst StatusBarManager = require('NativeModules').StatusBarManager;\n\nexport type StatusBarStyle = $Enum<{\n 'default': string,\n 'light-content': string,\n}>;\n\nexport type StatusBarAnimation = $Enum<{\n 'none': string,\n 'fade': string,\n 'slide': string,\n}>;\n\ntype DefaultProps = {\n animated: boolean;\n};\n\n/**\n * Merges the prop stack with the default values.\n */\nfunction mergePropsStack(propsStack: Array, defaultValues: Object): Object {\n return propsStack.reduce((prev, cur) => {\n for (let prop in cur) {\n if (cur[prop] != null) {\n prev[prop] = cur[prop];\n }\n }\n return prev;\n }, Object.assign({}, defaultValues));\n}\n\n/**\n * Returns an object to insert in the props stack from the props\n * and the transition/animation info.\n */\nfunction createStackEntry(props: any): any {\n return {\n backgroundColor: props.backgroundColor != null ? {\n value: props.backgroundColor,\n animated: props.animated,\n } : null,\n barStyle: props.barStyle != null ? {\n value: props.barStyle,\n animated: props.animated,\n } : null,\n translucent: props.translucent,\n hidden: props.hidden != null ? {\n value: props.hidden,\n animated: props.animated,\n transition: props.showHideTransition,\n } : null,\n networkActivityIndicatorVisible: props.networkActivityIndicatorVisible,\n };\n}\n\n/**\n * Component to control the app status bar.\n *\n * ### Usage with Navigator\n *\n * It is possible to have multiple `StatusBar` components mounted at the same\n * time. The props will be merged in the order the `StatusBar` components were\n * mounted. One use case is to specify status bar styles per route using `Navigator`.\n *\n * ```\n * \n * \n * \n * \n * \n * }\n * />\n * \n * ```\n *\n * ### Imperative API\n *\n * For cases where using a component is not ideal, there is also an imperative\n * API exposed as static functions on the component. It is however not recommended\n * to use the static API and the component for the same prop because any value\n * set by the static API will get overriden by the one set by the component in\n * the next render.\n */\nconst StatusBar = React.createClass({\n statics: {\n _propsStack: [],\n _defaultProps: createStackEntry({\n animated: false,\n showHideTransition: 'fade',\n backgroundColor: 'black',\n barStyle: 'default',\n translucent: false,\n hidden: false,\n networkActivityIndicatorVisible: false,\n }),\n // Timer for updating the native module values at the end of the frame.\n _updateImmediate: null,\n // The current merged values from the props stack.\n _currentValues: null,\n\n // TODO(janic): Provide a real API to deal with status bar height. See the\n // discussion in #6195.\n /**\n * The current height of the status bar on the device.\n *\n * @platform android\n */\n currentHeight: StatusBarManager.HEIGHT,\n\n // Provide an imperative API as static functions of the component.\n // See the corresponding prop for more detail.\n setHidden(hidden: boolean, animation?: StatusBarAnimation) {\n animation = animation || 'none';\n StatusBar._defaultProps.hidden.value = hidden;\n if (Platform.OS === 'ios') {\n StatusBarManager.setHidden(hidden, animation);\n } else if (Platform.OS === 'android') {\n StatusBarManager.setHidden(hidden);\n }\n },\n\n setBarStyle(style: StatusBarStyle, animated?: boolean) {\n if (Platform.OS !== 'ios') {\n console.warn('`setBarStyle` is only available on iOS');\n return;\n }\n animated = animated || false;\n StatusBar._defaultProps.barStyle.value = style;\n StatusBarManager.setStyle(style, animated);\n },\n\n setNetworkActivityIndicatorVisible(visible: boolean) {\n if (Platform.OS !== 'ios') {\n console.warn('`setNetworkActivityIndicatorVisible` is only available on iOS');\n return;\n }\n StatusBar._defaultProps.networkActivityIndicatorVisible = visible;\n StatusBarManager.setNetworkActivityIndicatorVisible(visible);\n },\n\n setBackgroundColor(color: string, animated?: boolean) {\n if (Platform.OS !== 'android') {\n console.warn('`setBackgroundColor` is only available on Android');\n return;\n }\n animated = animated || false;\n StatusBar._defaultProps.backgroundColor.value = color;\n StatusBarManager.setColor(processColor(color), animated);\n },\n\n setTranslucent(translucent: boolean) {\n if (Platform.OS !== 'android') {\n console.warn('`setTranslucent` is only available on Android');\n return;\n }\n StatusBar._defaultProps.translucent = translucent;\n StatusBarManager.setTranslucent(translucent);\n },\n },\n\n propTypes: {\n /**\n * If the status bar is hidden.\n */\n hidden: React.PropTypes.bool,\n /**\n * If the transition between status bar property changes should be animated.\n * Supported for backgroundColor, barStyle and hidden.\n */\n animated: React.PropTypes.bool,\n /**\n * The background color of the status bar.\n * @platform android\n */\n backgroundColor: ColorPropType,\n /**\n * If the status bar is translucent.\n * When translucent is set to true, the app will draw under the status bar.\n * This is useful when using a semi transparent status bar color.\n *\n * @platform android\n */\n translucent: React.PropTypes.bool,\n /**\n * Sets the color of the status bar text.\n *\n * @platform ios\n */\n barStyle: React.PropTypes.oneOf([\n 'default',\n 'light-content',\n ]),\n /**\n * If the network activity indicator should be visible.\n *\n * @platform ios\n */\n networkActivityIndicatorVisible: React.PropTypes.bool,\n /**\n * The transition effect when showing and hiding the status bar using the `hidden`\n * prop. Defaults to 'fade'.\n *\n * @platform ios\n */\n showHideTransition: React.PropTypes.oneOf([\n 'fade',\n 'slide',\n ]),\n },\n\n getDefaultProps(): DefaultProps {\n return {\n animated: false,\n showHideTransition: 'fade',\n };\n },\n\n _stackEntry: null,\n\n componentDidMount() {\n // Every time a StatusBar component is mounted, we push it's prop to a stack\n // and always update the native status bar with the props from the top of then\n // stack. This allows having multiple StatusBar components and the one that is\n // added last or is deeper in the view hierachy will have priority.\n this._stackEntry = createStackEntry(this.props);\n StatusBar._propsStack.push(this._stackEntry);\n this._updatePropsStack();\n },\n\n componentWillUnmount() {\n // When a StatusBar is unmounted, remove itself from the stack and update\n // the native bar with the next props.\n const index = StatusBar._propsStack.indexOf(this._stackEntry);\n StatusBar._propsStack.splice(index, 1);\n\n this._updatePropsStack();\n },\n\n componentDidUpdate() {\n const index = StatusBar._propsStack.indexOf(this._stackEntry);\n this._stackEntry = createStackEntry(this.props);\n StatusBar._propsStack[index] = this._stackEntry;\n\n this._updatePropsStack();\n },\n\n /**\n * Updates the native status bar with the props from the stack.\n */\n _updatePropsStack() {\n // Send the update to the native module only once at the end of the frame.\n clearImmediate(StatusBar._updateImmediate);\n StatusBar._updateImmediate = setImmediate(() => {\n const oldProps = StatusBar._currentValues;\n const mergedProps = mergePropsStack(StatusBar._propsStack, StatusBar._defaultProps);\n\n // Update the props that have changed using the merged values from the props stack.\n if (Platform.OS === 'ios') {\n if (!oldProps || oldProps.barStyle.value !== mergedProps.barStyle.value) {\n StatusBarManager.setStyle(\n mergedProps.barStyle.value,\n mergedProps.barStyle.animated,\n );\n }\n if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) {\n StatusBarManager.setHidden(\n mergedProps.hidden.value,\n mergedProps.hidden.animated ?\n mergedProps.hidden.transition :\n 'none',\n );\n }\n\n if (!oldProps || oldProps.networkActivityIndicatorVisible !== mergedProps.networkActivityIndicatorVisible) {\n StatusBarManager.setNetworkActivityIndicatorVisible(\n mergedProps.networkActivityIndicatorVisible\n );\n }\n } else if (Platform.OS === 'android') {\n if (!oldProps || oldProps.backgroundColor.value !== mergedProps.backgroundColor.value) {\n StatusBarManager.setColor(\n processColor(mergedProps.backgroundColor.value),\n mergedProps.backgroundColor.animated,\n );\n }\n if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) {\n StatusBarManager.setHidden(mergedProps.hidden.value);\n }\n if (!oldProps || oldProps.translucent !== mergedProps.translucent) {\n StatusBarManager.setTranslucent(mergedProps.translucent);\n }\n }\n // Update the current prop values.\n StatusBar._currentValues = mergedProps;\n });\n },\n\n render(): ?ReactElement {\n return null;\n },\n});\n\nmodule.exports = StatusBar;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"StatusBarIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"StatusBarIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["StatusBar"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar StatusBar=require('StatusBar');\n\n\n\n\n\n\nvar StatusBarIOS={\n\nsetStyle:function setStyle(style,animated){\nconsole.warn('`StatusBarIOS.setStyle` is deprecated. Use `StatusBar.setBarStyle` instead.');\nStatusBar.setBarStyle(style,animated);},\n\n\nsetHidden:function setHidden(hidden,animation){\nconsole.warn('`StatusBarIOS.setHidden` is deprecated. Use `StatusBar.setHidden` instead.');\nStatusBar.setHidden(hidden,animation);},\n\n\nsetNetworkActivityIndicatorVisible:function setNetworkActivityIndicatorVisible(visible){\nconsole.warn(\n'`StatusBarIOS.setNetworkActivityIndicatorVisible` is deprecated. '+\n'Use `StatusBar.setNetworkActivityIndicatorVisible` instead.');\n\nStatusBar.setNetworkActivityIndicatorVisible(visible);}};\n\n\n\nmodule.exports=StatusBarIOS;","map":null,"id":"StatusBarIOS","source":"/**\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 StatusBarIOS\n * @flow\n */\n'use strict';\n\nconst StatusBar = require('StatusBar');\n\nimport type {StatusBarStyle, StatusBarAnimation} from 'StatusBar';\n\n/**\n * Deprecated. Use `StatusBar` instead.\n */\nconst StatusBarIOS = {\n\n setStyle(style: StatusBarStyle, animated?: boolean) {\n console.warn('`StatusBarIOS.setStyle` is deprecated. Use `StatusBar.setBarStyle` instead.');\n StatusBar.setBarStyle(style, animated);\n },\n\n setHidden(hidden: boolean, animation?: StatusBarAnimation) {\n console.warn('`StatusBarIOS.setHidden` is deprecated. Use `StatusBar.setHidden` instead.');\n StatusBar.setHidden(hidden, animation);\n },\n\n setNetworkActivityIndicatorVisible(visible: boolean) {\n console.warn(\n '`StatusBarIOS.setNetworkActivityIndicatorVisible` is deprecated. ' +\n 'Use `StatusBar.setNetworkActivityIndicatorVisible` instead.'\n );\n StatusBar.setNetworkActivityIndicatorVisible(visible);\n },\n};\n\nmodule.exports = StatusBarIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SliderIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SliderIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[179,220,265,302,335,367,412],"dependencies":["Image","NativeMethodsMixin","ReactPropTypes","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.ios.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\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\n\n\n\n\n\n\nvar SliderIOS=React.createClass({displayName:'SliderIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\n\nvalue:PropTypes.number,\n\n\n\n\n\n\nstep: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\n\ndisabled:PropTypes.bool,\n\n\n\n\n\ntrackImage:Image.propTypes.source,\n\n\n\n\n\nminimumTrackImage:Image.propTypes.source,\n\n\n\n\n\nmaximumTrackImage:Image.propTypes.source,\n\n\n\n\nthumbImage:Image.propTypes.source,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonSlidingComplete:PropTypes.func}),\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\ndisabled:false};},\n\n\n\nrender:function render(){\nconsole.warn(\n'SliderIOS is deprecated and will be removed in '+\n'future versions of React Native. Use the cross-platform Slider '+\n'as a drop-in replacement.');var _props=\n\nthis.props;var style=_props.style;var onValueChange=_props.onValueChange;var onSlidingComplete=_props.onSlidingComplete;var props=babelHelpers.objectWithoutProperties(_props,['style','onValueChange','onSlidingComplete']);\nprops.style=[styles.slider,style];\n\nprops.onValueChange=onValueChange&&function(event){\nonValueChange&&onValueChange(event.nativeEvent.value);};\n\n\nprops.onSlidingComplete=onSlidingComplete&&function(event){\nonSlidingComplete&&onSlidingComplete(event.nativeEvent.value);};\n\n\nreturn React.createElement(RCTSlider,babelHelpers.extends({},\nprops,{\nonStartShouldSetResponder:function onStartShouldSetResponder(){return true;},\nonResponderTerminationRequest:function onResponderTerminationRequest(){return false;},__source:{fileName:_jsxFileName,lineNumber:145}}));}});\n\n\n\n\nvar styles=StyleSheet.create({\nslider:{\nheight:40}});\n\n\n\nvar RCTSlider=requireNativeComponent('RCTSlider',SliderIOS);\n\nmodule.exports=SliderIOS;","map":null,"id":"SliderIOS","source":"/**\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 Image = require('Image');\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\n/**\n * **Note:** SliderIOS is deprecated and will be removed in the future. Use the cross-platform\n * Slider as a drop-in replacement with the same API.\n *\n * An iOS-specific component used to select a single value from a range of values.\n */\nvar SliderIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.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 initial value.\n */\n value: PropTypes.number,\n\n /**\n * Step value of the slider. The value should be\n * between 0 and (maximumValue - minimumValue).\n * Default value is 0.\n */\n step: 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 * If true the user won't be able to move the slider.\n * Default value is false.\n */\n disabled: PropTypes.bool,\n\n /**\n * Assigns a single image for the track. Only static images are supported.\n * The center pixel of the image will be stretched to fill the track.\n */\n trackImage: Image.propTypes.source,\n\n /**\n * Assigns a minimum track image. Only static images are supported. The\n * rightmost pixel of the image will be stretched to fill the track.\n */\n minimumTrackImage: Image.propTypes.source,\n\n /**\n * Assigns a maximum track image. Only static images are supported. The\n * leftmost pixel of the image will be stretched to fill the track.\n */\n maximumTrackImage: Image.propTypes.source,\n\n /**\n * Sets an image for the thumb. It only supports static images.\n */\n thumbImage: Image.propTypes.source,\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 getDefaultProps: function() : any {\n return {\n disabled: false,\n };\n },\n\n render: function() {\n console.warn(\n 'SliderIOS is deprecated and will be removed in ' +\n 'future versions of React Native. Use the cross-platform Slider ' +\n 'as a drop-in replacement.');\n \n let {style, onValueChange, onSlidingComplete, ...props} = this.props;\n props.style = [styles.slider, style];\n\n props.onValueChange = onValueChange && ((event: Event) => {\n onValueChange && onValueChange(event.nativeEvent.value);\n });\n\n props.onSlidingComplete = onSlidingComplete && ((event: Event) => {\n onSlidingComplete && onSlidingComplete(event.nativeEvent.value);\n });\n\n return true}\n onResponderTerminationRequest={() => false}\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Slider/Slider.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Slider","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[169,210,254,289,326,359,391,436],"dependencies":["Image","NativeMethodsMixin","Platform","ReactPropTypes","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Slider/Slider.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\n\n\n\nvar Slider=React.createClass({displayName:'Slider',\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\n\nvalue:PropTypes.number,\n\n\n\n\n\n\nstep:PropTypes.number,\n\n\n\n\nminimumValue:PropTypes.number,\n\n\n\n\nmaximumValue:PropTypes.number,\n\n\n\n\n\n\nminimumTrackTintColor:PropTypes.string,\n\n\n\n\n\n\nmaximumTrackTintColor:PropTypes.string,\n\n\n\n\n\ndisabled:PropTypes.bool,\n\n\n\n\n\n\ntrackImage:Image.propTypes.source,\n\n\n\n\n\n\nminimumTrackImage:Image.propTypes.source,\n\n\n\n\n\n\nmaximumTrackImage:Image.propTypes.source,\n\n\n\n\n\nthumbImage:Image.propTypes.source,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonSlidingComplete:PropTypes.func,\n\n\n\n\ntestID:PropTypes.string}),\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\ndisabled:false,\nvalue:0,\nminimumValue:0,\nmaximumValue:1,\nstep:0};},\n\n\n\nrender:function render(){var _props=\nthis.props;var style=_props.style;var onValueChange=_props.onValueChange;var onSlidingComplete=_props.onSlidingComplete;var props=babelHelpers.objectWithoutProperties(_props,['style','onValueChange','onSlidingComplete']);\nprops.style=[styles.slider,style];\n\nprops.onValueChange=onValueChange&&function(event){\nvar userEvent=true;\nif(Platform.OS==='android'){\n\n\nuserEvent=event.nativeEvent.fromUser;}\n\nonValueChange&&userEvent&&onValueChange(event.nativeEvent.value);};\n\n\nprops.onChange=props.onValueChange;\n\nprops.onSlidingComplete=onSlidingComplete&&function(event){\nonSlidingComplete&&onSlidingComplete(event.nativeEvent.value);};\n\n\nreturn React.createElement(RCTSlider,babelHelpers.extends({},\nprops,{\nenabled:!this.props.disabled,\nonStartShouldSetResponder:function onStartShouldSetResponder(){return true;},\nonResponderTerminationRequest:function onResponderTerminationRequest(){return false;},__source:{fileName:_jsxFileName,lineNumber:162}}));}});\n\n\n\n\nvar styles=void 0;\nif(Platform.OS==='ios'){\nstyles=StyleSheet.create({\nslider:{\nheight:40}});}else \n\n\n{\nstyles=StyleSheet.create({\nslider:{}});}\n\n\n\nvar options={};\nif(Platform.OS==='android'){\noptions={\nnativeOnly:{\nenabled:true}};}\n\n\n\nvar RCTSlider=requireNativeComponent('RCTSlider',Slider,options);\n\nmodule.exports=Slider;","map":null,"id":"Slider","source":"/**\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 Slider\n * @flow\n */\n'use strict';\n\nvar Image = require('Image');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar Platform = require('Platform');\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\n/**\n * A component used to select a single value from a range of values.\n */\nvar Slider = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.propTypes,\n\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*, you don't need to update the\n * value during dragging.\n */\n value: PropTypes.number,\n\n /**\n * Step value of the slider. The value should be\n * between 0 and (maximumValue - minimumValue).\n * Default value is 0.\n */\n step: 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 * @platform ios\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 * @platform ios\n */\n maximumTrackTintColor: PropTypes.string,\n\n /**\n * If true the user won't be able to move the slider.\n * Default value is false.\n */\n disabled: PropTypes.bool,\n\n /**\n * Assigns a single image for the track. Only static images are supported.\n * The center pixel of the image will be stretched to fill the track.\n * @platform ios\n */\n trackImage: Image.propTypes.source,\n\n /**\n * Assigns a minimum track image. Only static images are supported. The\n * rightmost pixel of the image will be stretched to fill the track.\n * @platform ios\n */\n minimumTrackImage: Image.propTypes.source,\n\n /**\n * Assigns a maximum track image. Only static images are supported. The\n * leftmost pixel of the image will be stretched to fill the track.\n * @platform ios\n */\n maximumTrackImage: Image.propTypes.source,\n\n /**\n * Sets an image for the thumb. Only static images are supported.\n * @platform ios\n */\n thumbImage: Image.propTypes.source,\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 * Used to locate this view in UI automation tests.\n */\n testID: PropTypes.string,\n },\n\n getDefaultProps: function() : any {\n return {\n disabled: false,\n value: 0,\n minimumValue: 0,\n maximumValue: 1,\n step: 0\n };\n },\n\n render: function() {\n let {style, onValueChange, onSlidingComplete, ...props} = this.props;\n props.style = [styles.slider, style];\n\n props.onValueChange = onValueChange && ((event: Event) => {\n let userEvent = true;\n if (Platform.OS === 'android') {\n // On Android there's a special flag telling us the user is\n // dragging the slider.\n userEvent = event.nativeEvent.fromUser;\n }\n onValueChange && userEvent && onValueChange(event.nativeEvent.value);\n });\n\n props.onChange = props.onValueChange;\n\n props.onSlidingComplete = onSlidingComplete && ((event: Event) => {\n onSlidingComplete && onSlidingComplete(event.nativeEvent.value);\n });\n\n return true}\n onResponderTerminationRequest={() => false}\n />;\n }\n});\n\nlet styles;\nif (Platform.OS === 'ios') {\n styles = StyleSheet.create({\n slider: {\n height: 40,\n },\n });\n} else {\n styles = StyleSheet.create({\n slider: {},\n });\n}\n\nlet options = {};\nif (Platform.OS === 'android') {\n options = {\n nativeOnly: {\n enabled: true,\n }\n };\n}\nconst RCTSlider = requireNativeComponent('RCTSlider', Slider, options);\n\nmodule.exports = Slider;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SegmentedControlIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SegmentedControlIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[212,257,294,327,359,404],"dependencies":["NativeMethodsMixin","ReactPropTypes","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js';\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\n\n\n\nvar SEGMENTED_CONTROL_REFERENCE='segmentedcontrol';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SegmentedControlIOS=React.createClass({displayName:'SegmentedControlIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\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 getDefaultProps(){\nreturn {\nvalues:[],\nenabled:true};},\n\n\n\n_onChange:function _onChange(event){\nthis.props.onChange&&this.props.onChange(event);\nthis.props.onValueChange&&this.props.onValueChange(event.nativeEvent.value);},\n\n\nrender:function render(){\nreturn (\nReact.createElement(RCTSegmentedControl,babelHelpers.extends({},\nthis.props,{\nref:SEGMENTED_CONTROL_REFERENCE,\nstyle:[styles.segmentedControl,this.props.style],\nonChange:this._onChange,__source:{fileName:_jsxFileName,lineNumber:110}})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nsegmentedControl:{\nheight:28}});\n\n\n\nvar RCTSegmentedControl=requireNativeComponent(\n'RCTSegmentedControl',\nSegmentedControlIOS);\n\n\nmodule.exports=SegmentedControlIOS;","map":null,"id":"SegmentedControlIOS","source":"/**\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 PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\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 *\n * #### Programmatically changing selected index\n *\n * The selected index can be changed on the fly by assigning the\n * selectIndex prop to a state variable, then changing that variable.\n * Note that the state variable would need to be updated as the user\n * selects a value and changes the index, as shown in the example below.\n *\n * ````\n * {\n * this.setState({selectedIndex: event.nativeEvent.selectedSegmentIndex});\n * }}\n * />\n * ````\n */\nvar SegmentedControlIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.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: 28,\n },\n});\n\nvar RCTSegmentedControl = requireNativeComponent(\n 'RCTSegmentedControl',\n SegmentedControlIOS\n);\n\nmodule.exports = SegmentedControlIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ScrollView/processDecelerationRate.js":{"metadata":{"mtime":1463609891000},"data":{"name":"processDecelerationRate","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nfunction processDecelerationRate(decelerationRate){\nif(decelerationRate==='normal'){\ndecelerationRate=0.998;}else \nif(decelerationRate==='fast'){\ndecelerationRate=0.99;}\n\nreturn decelerationRate;}\n\n\nmodule.exports=processDecelerationRate;","map":null,"id":"processDecelerationRate","source":"/**\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 processDecelerationRate\n */\n'use strict';\n\nfunction processDecelerationRate(decelerationRate) {\n if (decelerationRate === 'normal') {\n decelerationRate = 0.998;\n } else if (decelerationRate === 'fast') {\n decelerationRate = 0.99;\n }\n return decelerationRate;\n}\n\nmodule.exports = processDecelerationRate;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ScrollView/RecyclerViewBackedScrollView.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RecyclerViewBackedScrollView"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ScrollView/RecyclerViewBackedScrollView.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RecyclerViewBackedScrollView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[43],"dependencies":["ScrollView"],"code":"'use strict';\n\n\n\n\n\n\nmodule.exports=require('ScrollView');","map":null,"id":"RecyclerViewBackedScrollView","source":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule RecyclerViewBackedScrollView\n */\n'use strict';\n\nmodule.exports = require('ScrollView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ScrollView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[185,234,278,317,361,436,490,524,568,611,657,697,737,792,843,888,927,985,1048],"dependencies":["ColorPropType","EdgeInsetsPropType","Platform","PointPropType","NativeModules","React","ReactNative","ScrollResponder","StyleSheet","StyleSheetPropType","View","ViewStylePropTypes","deprecatedPropType","dismissKeyboard","flattenStyle","fbjs/lib/invariant","requireNativeComponent","processDecelerationRate"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar Platform=require('Platform');\nvar PointPropType=require('PointPropType');\nvar RCTScrollView=require('NativeModules').UIManager.RCTScrollView;\nvar RCTScrollViewManager=require('NativeModules').ScrollViewManager;\nvar React=require('React');\nvar ReactNative=require('ReactNative');\nvar ScrollResponder=require('ScrollResponder');\nvar StyleSheet=require('StyleSheet');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar View=require('View');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar deprecatedPropType=require('deprecatedPropType');\nvar dismissKeyboard=require('dismissKeyboard');\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('fbjs/lib/invariant');\nvar requireNativeComponent=require('requireNativeComponent');\nvar processDecelerationRate=require('processDecelerationRate');\nvar PropTypes=React.PropTypes;\n\nvar SCROLLVIEW='ScrollView';\nvar INNERVIEW='InnerScrollView';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ScrollView=React.createClass({displayName:'ScrollView',\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\n\n\n\nautomaticallyAdjustContentInsets:PropTypes.bool,\n\n\n\n\n\ncontentInset:EdgeInsetsPropType,\n\n\n\n\n\ncontentOffset:PointPropType,\n\n\n\n\n\n\n\nbounces:PropTypes.bool,\n\n\n\n\n\n\nbouncesZoom:PropTypes.bool,\n\n\n\n\n\n\nalwaysBounceHorizontal:PropTypes.bool,\n\n\n\n\n\n\nalwaysBounceVertical:PropTypes.bool,\n\n\n\n\n\n\n\ncenterContent:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncontentContainerStyle:StyleSheetPropType(ViewStylePropTypes),\n\n\n\n\n\n\n\n\n\n\ndecelerationRate:PropTypes.oneOfType([\nPropTypes.oneOf(['fast','normal']),\nPropTypes.number]),\n\n\n\n\n\nhorizontal:PropTypes.bool,\n\n\n\n\n\n\n\nindicatorStyle:PropTypes.oneOf([\n'default',\n'black',\n'white']),\n\n\n\n\n\n\ndirectionalLockEnabled:PropTypes.bool,\n\n\n\n\n\ncanCancelContentTouches:PropTypes.bool,\n\n\n\n\n\n\n\n\nkeyboardDismissMode:PropTypes.oneOf([\n'none',\n'interactive',\n'on-drag']),\n\n\n\n\n\n\n\nkeyboardShouldPersistTaps:PropTypes.bool,\n\n\n\n\nmaximumZoomScale:PropTypes.number,\n\n\n\n\nminimumZoomScale:PropTypes.number,\n\n\n\n\nonScroll:PropTypes.func,\n\n\n\n\nonScrollAnimationEnd:PropTypes.func,\n\n\n\n\n\n\n\n\nonContentSizeChange:PropTypes.func,\n\n\n\n\n\n\npagingEnabled:PropTypes.bool,\n\n\n\n\nscrollEnabled:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\nscrollEventThrottle:PropTypes.number,\n\n\n\n\n\n\nscrollIndicatorInsets:EdgeInsetsPropType,\n\n\n\n\n\nscrollsToTop:PropTypes.bool,\n\n\n\nshowsHorizontalScrollIndicator:PropTypes.bool,\n\n\n\nshowsVerticalScrollIndicator:PropTypes.bool,\n\n\n\n\n\n\n\n\nstickyHeaderIndices:PropTypes.arrayOf(PropTypes.number),\nstyle:StyleSheetPropType(ViewStylePropTypes),\n\n\n\n\n\n\n\nsnapToInterval:PropTypes.number,\n\n\n\n\n\n\n\n\nsnapToAlignment:PropTypes.oneOf([\n'start',\n'center',\n'end']),\n\n\n\n\n\n\n\nremoveClippedSubviews:PropTypes.bool,\n\n\n\n\nzoomScale:PropTypes.number,\n\n\n\n\n\n\n\nrefreshControl:PropTypes.element,\n\n\n\n\nonRefreshStart:deprecatedPropType(\nPropTypes.func,\n'Use the `refreshControl` prop instead.'),\n\n\n\n\n\n\n\n\n\nendFillColor:ColorPropType}),\n\n\nmixins:[ScrollResponder.Mixin],\n\ngetInitialState:function getInitialState(){\nreturn this.scrollResponderMixinGetInitialState();},\n\n\nsetNativeProps:function setNativeProps(props){\nthis.refs[SCROLLVIEW].setNativeProps(props);},\n\n\n\n\n\nendRefreshing:function endRefreshing(){\nRCTScrollViewManager.endRefreshing(\nReactNative.findNodeHandle(this));},\n\n\n\n\n\n\n\n\n\ngetScrollResponder:function getScrollResponder(){\nreturn this;},\n\n\ngetScrollableNode:function getScrollableNode(){\nreturn ReactNative.findNodeHandle(this.refs[SCROLLVIEW]);},\n\n\ngetInnerViewNode:function getInnerViewNode(){\nreturn ReactNative.findNodeHandle(this.refs[INNERVIEW]);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollTo:function scrollTo(\ny,\nx,\nanimated)\n{\nif(typeof y==='number'){\nconsole.warn('`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, animated: true})` instead.');}else \n{var _ref=\ny||{};x=_ref.x;y=_ref.y;animated=_ref.animated;}\n\n\nthis.getScrollResponder().scrollResponderScrollTo({x:x||0,y:y||0,animated:animated!==false});},\n\n\n\n\n\nscrollWithoutAnimationTo:function scrollWithoutAnimationTo(){var y=arguments.length<=0||arguments[0]===undefined?0:arguments[0];var x=arguments.length<=1||arguments[1]===undefined?0:arguments[1];\nconsole.warn('`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead');\nthis.scrollTo({x:x,y:y,animated:false});},\n\n\n_handleScroll:function _handleScroll(e){\nif(__DEV__){\nif(this.props.onScroll&&!this.props.scrollEventThrottle&&Platform.OS==='ios'){\nconsole.log(\n'You specified `onScroll` on a but not '+\n'`scrollEventThrottle`. You will only receive one event. '+\n'Using `16` you get all the events but be aware that it may '+\n'cause frame drops, use a bigger number if you don\\'t need as '+\n'much precision.');}}\n\n\n\nif(Platform.OS==='android'){\nif(this.props.keyboardDismissMode==='on-drag'){\ndismissKeyboard();}}\n\n\nthis.scrollResponderHandleScroll(e);},\n\n\n_handleContentOnLayout:function _handleContentOnLayout(e){var _e$nativeEvent$layout=\ne.nativeEvent.layout;var width=_e$nativeEvent$layout.width;var height=_e$nativeEvent$layout.height;\nthis.props.onContentSizeChange&&this.props.onContentSizeChange(width,height);},\n\n\nrender:function render(){\nvar contentContainerStyle=[\nthis.props.horizontal&&styles.contentContainerHorizontal,\nthis.props.contentContainerStyle];\n\nif(__DEV__&&this.props.style){\nvar style=flattenStyle(this.props.style);\nvar childLayoutProps=['alignItems','justifyContent'].\nfilter(function(prop){return style&&style[prop]!==undefined;});\ninvariant(\nchildLayoutProps.length===0,\n'ScrollView child layout ('+JSON.stringify(childLayoutProps)+\n') must be applied through the contentContainerStyle prop.');}\n\n\n\nvar contentSizeChangeProps={};\nif(this.props.onContentSizeChange){\ncontentSizeChangeProps={\nonLayout:this._handleContentOnLayout};}\n\n\n\nvar contentContainer=\nReact.createElement(View,babelHelpers.extends({},\ncontentSizeChangeProps,{\nref:INNERVIEW,\nstyle:contentContainerStyle,\nremoveClippedSubviews:this.props.removeClippedSubviews,\ncollapsable:false,__source:{fileName:_jsxFileName,lineNumber:456}}),\nthis.props.children);\n\n\nvar alwaysBounceHorizontal=\nthis.props.alwaysBounceHorizontal!==undefined?\nthis.props.alwaysBounceHorizontal:\nthis.props.horizontal;\n\nvar alwaysBounceVertical=\nthis.props.alwaysBounceVertical!==undefined?\nthis.props.alwaysBounceVertical:\n!this.props.horizontal;\n\nvar props=babelHelpers.extends({},\nthis.props,{\nalwaysBounceHorizontal:alwaysBounceHorizontal,\nalwaysBounceVertical:alwaysBounceVertical,\nstyle:[styles.base,this.props.style],\nonTouchStart:this.scrollResponderHandleTouchStart,\nonTouchMove:this.scrollResponderHandleTouchMove,\nonTouchEnd:this.scrollResponderHandleTouchEnd,\nonScrollBeginDrag:this.scrollResponderHandleScrollBeginDrag,\nonScrollEndDrag:this.scrollResponderHandleScrollEndDrag,\nonMomentumScrollBegin:this.scrollResponderHandleMomentumScrollBegin,\nonMomentumScrollEnd:this.scrollResponderHandleMomentumScrollEnd,\nonStartShouldSetResponder:this.scrollResponderHandleStartShouldSetResponder,\nonStartShouldSetResponderCapture:this.scrollResponderHandleStartShouldSetResponderCapture,\nonScrollShouldSetResponder:this.scrollResponderHandleScrollShouldSetResponder,\nonScroll:this._handleScroll,\nonResponderGrant:this.scrollResponderHandleResponderGrant,\nonResponderTerminationRequest:this.scrollResponderHandleTerminationRequest,\nonResponderTerminate:this.scrollResponderHandleTerminate,\nonResponderRelease:this.scrollResponderHandleResponderRelease,\nonResponderReject:this.scrollResponderHandleResponderReject,\nsendMomentumEvents:this.props.onMomentumScrollBegin||this.props.onMomentumScrollEnd?true:false});\n\n\nvar onRefreshStart=this.props.onRefreshStart;\nif(onRefreshStart){\n\n\nprops.onRefreshStart=\nfunction(){onRefreshStart&&onRefreshStart(this.endRefreshing);}.bind(this);}var \n\n\ndecelerationRate=this.props.decelerationRate;\nif(decelerationRate){\nprops.decelerationRate=processDecelerationRate(decelerationRate);}\n\n\nvar ScrollViewClass;\nif(Platform.OS==='ios'){\nScrollViewClass=RCTScrollView;}else \nif(Platform.OS==='android'){\nif(this.props.horizontal){\nScrollViewClass=AndroidHorizontalScrollView;}else \n{\nScrollViewClass=AndroidScrollView;}}\n\n\ninvariant(\nScrollViewClass!==undefined,\n'ScrollViewClass must not be undefined');\n\n\nvar refreshControl=this.props.refreshControl;\nif(refreshControl){\nif(Platform.OS==='ios'){\n\nreturn (\nReact.createElement(ScrollViewClass,babelHelpers.extends({},props,{ref:SCROLLVIEW,__source:{fileName:_jsxFileName,lineNumber:532}}),\nrefreshControl,\ncontentContainer));}else \n\n\nif(Platform.OS==='android'){\n\n\n\nreturn React.cloneElement(\nrefreshControl,\n{style:props.style},\nReact.createElement(ScrollViewClass,babelHelpers.extends({},props,{style:styles.base,ref:SCROLLVIEW,__source:{fileName:_jsxFileName,lineNumber:544}}),\ncontentContainer));}}\n\n\n\n\nreturn (\nReact.createElement(ScrollViewClass,babelHelpers.extends({},props,{ref:SCROLLVIEW,__source:{fileName:_jsxFileName,lineNumber:551}}),\ncontentContainer));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nbase:{\nflex:1},\n\ncontentContainerHorizontal:{\nalignSelf:'flex-start',\nflexDirection:'row'}});\n\n\n\nif(Platform.OS==='android'){\nvar nativeOnlyProps={\nnativeOnly:{\nsendMomentumEvents:true}};\n\n\nvar AndroidScrollView=requireNativeComponent('RCTScrollView',ScrollView,nativeOnlyProps);\nvar AndroidHorizontalScrollView=requireNativeComponent(\n'AndroidHorizontalScrollView',\nScrollView,\nnativeOnlyProps);}else \n\nif(Platform.OS==='ios'){\nvar nativeOnlyProps={\nnativeOnly:{\nonMomentumScrollBegin:true,\nonMomentumScrollEnd:true,\nonScrollBeginDrag:true,\nonScrollEndDrag:true}};\n\n\nvar RCTScrollView=requireNativeComponent('RCTScrollView',ScrollView,nativeOnlyProps);}\n\n\nmodule.exports=ScrollView;","map":null,"id":"ScrollView","source":"/**\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 ScrollView\n * @flow\n */\n'use strict';\n\nvar ColorPropType = require('ColorPropType');\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar Platform = require('Platform');\nvar PointPropType = require('PointPropType');\nvar RCTScrollView = require('NativeModules').UIManager.RCTScrollView;\nvar RCTScrollViewManager = require('NativeModules').ScrollViewManager;\nvar React = require('React');\nvar ReactNative = require('ReactNative');\nvar ScrollResponder = require('ScrollResponder');\nvar StyleSheet = require('StyleSheet');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar View = require('View');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar deprecatedPropType = require('deprecatedPropType');\nvar dismissKeyboard = require('dismissKeyboard');\nvar flattenStyle = require('flattenStyle');\nvar invariant = require('fbjs/lib/invariant');\nvar requireNativeComponent = require('requireNativeComponent');\nvar processDecelerationRate = require('processDecelerationRate');\nvar PropTypes = React.PropTypes;\n\nvar SCROLLVIEW = 'ScrollView';\nvar INNERVIEW = 'InnerScrollView';\n\n/**\n * Component that wraps platform ScrollView while providing\n * integration with touch locking \"responder\" system.\n *\n * Keep in mind that ScrollViews must have a bounded height in order to work,\n * since they contain unbounded-height children into a bounded container (via\n * a scroll interaction). In order to bound the height of a ScrollView, either\n * set the height of the view directly (discouraged) or make sure all parent\n * views have bounded height. Forgetting to transfer `{flex: 1}` down the\n * view stack can lead to errors here, which the element inspector makes\n * easy to debug.\n *\n * Doesn't yet support other contained responders from blocking this scroll\n * view from becoming the responder.\n */\nvar ScrollView = React.createClass({\n propTypes: {\n ...View.propTypes,\n /**\n * Controls whether iOS should automatically adjust the content inset\n * for scroll views that are placed behind a navigation bar or\n * tab bar/ toolbar. The default value is true.\n * @platform ios\n */\n automaticallyAdjustContentInsets: PropTypes.bool,\n /**\n * The amount by which the scroll view content is inset from the edges\n * of the scroll view. Defaults to `{top: 0, left: 0, bottom: 0, right: 0}`.\n * @platform ios\n */\n contentInset: EdgeInsetsPropType,\n /**\n * Used to manually set the starting scroll offset.\n * The default value is `{x: 0, y: 0}`.\n * @platform ios\n */\n contentOffset: PointPropType,\n /**\n * When true, the scroll view bounces when it reaches the end of the\n * content if the content is larger then the scroll view along the axis of\n * the scroll direction. When false, it disables all bouncing even if\n * the `alwaysBounce*` props are true. The default value is true.\n * @platform ios\n */\n bounces: PropTypes.bool,\n /**\n * When true, gestures can drive zoom past min/max and the zoom will animate\n * to the min/max value at gesture end, otherwise the zoom will not exceed\n * the limits.\n * @platform ios\n */\n bouncesZoom: PropTypes.bool,\n /**\n * When true, the scroll view bounces horizontally when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is true when `horizontal={true}` and false otherwise.\n * @platform ios\n */\n alwaysBounceHorizontal: PropTypes.bool,\n /**\n * When true, the scroll view bounces vertically when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is false when `horizontal={true}` and true otherwise.\n * @platform ios\n */\n alwaysBounceVertical: PropTypes.bool,\n /**\n * When true, the scroll view automatically centers the content when the\n * content is smaller than the scroll view bounds; when the content is\n * larger than the scroll view, this property has no effect. The default\n * value is false.\n * @platform ios\n */\n centerContent: PropTypes.bool,\n /**\n * These styles will be applied to the scroll view content container which\n * wraps all of the child views. Example:\n *\n * return (\n * \n * \n * );\n * ...\n * var styles = StyleSheet.create({\n * contentContainer: {\n * paddingVertical: 20\n * }\n * });\n */\n contentContainerStyle: StyleSheetPropType(ViewStylePropTypes),\n /**\n * A floating-point number that determines how quickly the scroll view\n * decelerates after the user lifts their finger. You may also use string\n * shortcuts `\"normal\"` and `\"fast\"` which match the underlying iOS settings\n * for `UIScrollViewDecelerationRateNormal` and\n * `UIScrollViewDecelerationRateFast` respectively.\n * - normal: 0.998 (the default)\n * - fast: 0.99\n * @platform ios\n */\n decelerationRate: PropTypes.oneOfType([\n PropTypes.oneOf(['fast', 'normal']),\n PropTypes.number,\n ]),\n /**\n * When true, the scroll view's children are arranged horizontally in a row\n * instead of vertically in a column. The default value is false.\n */\n horizontal: PropTypes.bool,\n /**\n * The style of the scroll indicators.\n * - `default` (the default), same as `black`.\n * - `black`, scroll indicator is black. This style is good against a white content background.\n * - `white`, scroll indicator is white. This style is good against a black content background.\n * @platform ios\n */\n indicatorStyle: PropTypes.oneOf([\n 'default', // default\n 'black',\n 'white',\n ]),\n /**\n * When true, the ScrollView will try to lock to only vertical or horizontal\n * scrolling while dragging. The default value is false.\n * @platform ios\n */\n directionalLockEnabled: PropTypes.bool,\n /**\n * When false, once tracking starts, won't try to drag if the touch moves.\n * The default value is true.\n * @platform ios\n */\n canCancelContentTouches: PropTypes.bool,\n /**\n * Determines whether the keyboard gets dismissed in response to a drag.\n * - 'none' (the default), drags do not dismiss the keyboard.\n * - 'on-drag', the keyboard is dismissed when a drag begins.\n * - 'interactive', the keyboard is dismissed interactively with the drag and moves in\n * synchrony with the touch; dragging upwards cancels the dismissal.\n * On android this is not supported and it will have the same behavior as 'none'.\n */\n keyboardDismissMode: PropTypes.oneOf([\n 'none', // default\n 'interactive',\n 'on-drag',\n ]),\n /**\n * When false, tapping outside of the focused text input when the keyboard\n * is up dismisses the keyboard. When true, the scroll view will not catch\n * taps, and the keyboard will not dismiss automatically. The default value\n * is false.\n */\n keyboardShouldPersistTaps: PropTypes.bool,\n /**\n * The maximum allowed zoom scale. The default value is 1.0.\n * @platform ios\n */\n maximumZoomScale: PropTypes.number,\n /**\n * The minimum allowed zoom scale. The default value is 1.0.\n * @platform ios\n */\n minimumZoomScale: PropTypes.number,\n /**\n * Fires at most once per frame during scrolling. The frequency of the\n * events can be controlled using the `scrollEventThrottle` prop.\n */\n onScroll: PropTypes.func,\n /**\n * Called when a scrolling animation ends.\n * @platform ios\n */\n onScrollAnimationEnd: PropTypes.func,\n /**\n * Called when scrollable content view of the ScrollView changes.\n *\n * Handler function is passed the content width and content height as parameters: `(contentWidth, contentHeight)`\n *\n * It's implemented using onLayout handler attached to the content container\n * which this ScrollView renders.\n */\n onContentSizeChange: PropTypes.func,\n /**\n * When true, the scroll view stops on multiples of the scroll view's size\n * when scrolling. This can be used for horizontal pagination. The default\n * value is false.\n * @platform ios\n */\n pagingEnabled: PropTypes.bool,\n /**\n * When false, the content does not scroll.\n * The default value is true.\n */\n scrollEnabled: PropTypes.bool,\n /**\n * This controls how often the scroll event will be fired while scrolling\n * (as a time interval in ms). A lower number yields better accuracy for code\n * that is tracking the scroll position, but can lead to scroll performance\n * problems due to the volume of information being send over the bridge.\n * You will not notice a difference between values set between 1-16 as the\n * JS run loop is synced to the screen refresh rate. If you do not need precise\n * scroll position tracking, set this value higher to limit the information\n * being sent across the bridge. The default value is zero, which results in\n * the scroll event being sent only once each time the view is scrolled.\n * @platform ios\n */\n scrollEventThrottle: PropTypes.number,\n /**\n * The amount by which the scroll view indicators are inset from the edges\n * of the scroll view. This should normally be set to the same value as\n * the `contentInset`. Defaults to `{0, 0, 0, 0}`.\n * @platform ios\n */\n scrollIndicatorInsets: EdgeInsetsPropType,\n /**\n * When true, the scroll view scrolls to top when the status bar is tapped.\n * The default value is true.\n * @platform ios\n */\n scrollsToTop: PropTypes.bool,\n /**\n * When true, shows a horizontal scroll indicator.\n */\n showsHorizontalScrollIndicator: PropTypes.bool,\n /**\n * When true, shows a vertical scroll indicator.\n */\n showsVerticalScrollIndicator: PropTypes.bool,\n /**\n * An array of child indices determining which children get docked to the\n * top of the screen when scrolling. For example, passing\n * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n * top of the scroll view. This property is not supported in conjunction\n * with `horizontal={true}`.\n * @platform ios\n */\n stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number),\n style: StyleSheetPropType(ViewStylePropTypes),\n /**\n * When set, causes the scroll view to stop at multiples of the value of\n * `snapToInterval`. This can be used for paginating through children\n * that have lengths smaller than the scroll view. Used in combination\n * with `snapToAlignment`.\n * @platform ios\n */\n snapToInterval: PropTypes.number,\n /**\n * When `snapToInterval` is set, `snapToAlignment` will define the relationship\n * of the snapping to the scroll view.\n * - `start` (the default) will align the snap at the left (horizontal) or top (vertical)\n * - `center` will align the snap in the center\n * - `end` will align the snap at the right (horizontal) or bottom (vertical)\n * @platform ios\n */\n snapToAlignment: PropTypes.oneOf([\n 'start', // default\n 'center',\n 'end',\n ]),\n /**\n * Experimental: When true, offscreen child views (whose `overflow` value is\n * `hidden`) are removed from their native backing superview when offscreen.\n * This can improve scrolling performance on long lists. The default value is\n * true.\n */\n removeClippedSubviews: PropTypes.bool,\n /**\n * The current scale of the scroll view content. The default value is 1.0.\n * @platform ios\n */\n zoomScale: PropTypes.number,\n\n /**\n * A RefreshControl component, used to provide pull-to-refresh\n * functionality for the ScrollView.\n *\n * See [RefreshControl](docs/refreshcontrol.html).\n */\n refreshControl: PropTypes.element,\n\n /**\n * @platform ios\n */\n onRefreshStart: deprecatedPropType(\n PropTypes.func,\n 'Use the `refreshControl` prop instead.'\n ),\n\n /**\n * Sometimes a scrollview takes up more space than its content fills. When this is\n * the case, this prop will fill the rest of the scrollview with a color to avoid setting\n * a background and creating unnecessary overdraw. This is an advanced optimization\n * that is not needed in the general case.\n * @platform android\n */\n endFillColor: ColorPropType,\n },\n\n mixins: [ScrollResponder.Mixin],\n\n getInitialState: function() {\n return this.scrollResponderMixinGetInitialState();\n },\n\n setNativeProps: function(props: Object) {\n this.refs[SCROLLVIEW].setNativeProps(props);\n },\n\n /**\n * Deprecated. Use `RefreshControl` instead.\n */\n endRefreshing: function() {\n RCTScrollViewManager.endRefreshing(\n ReactNative.findNodeHandle(this)\n );\n },\n\n /**\n * Returns a reference to the underlying scroll responder, which supports\n * operations like `scrollTo`. All ScrollView-like components should\n * implement this method so that they can be composed while providing access\n * to the underlying scroll responder's methods.\n */\n getScrollResponder: function(): ReactComponent {\n return this;\n },\n\n getScrollableNode: function(): any {\n return ReactNative.findNodeHandle(this.refs[SCROLLVIEW]);\n },\n\n getInnerViewNode: function(): any {\n return ReactNative.findNodeHandle(this.refs[INNERVIEW]);\n },\n\n /**\n * Scrolls to a given x, y offset, either immediately or with a smooth animation.\n *\n * Syntax:\n *\n * `scrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})`\n *\n * Note: The weird argument signature is due to the fact that, for historical reasons,\n * the function also accepts separate arguments as as alternative to the options object.\n * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n */\n scrollTo: function(\n y?: number | { x?: number, y?: number, animated?: boolean },\n x?: number,\n animated?: boolean\n ) {\n if (typeof y === 'number') {\n console.warn('`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, animated: true})` instead.');\n } else {\n ({x, y, animated} = y || {});\n }\n // $FlowFixMe - Don't know how to pass Mixin correctly. Postpone for now\n this.getScrollResponder().scrollResponderScrollTo({x: x || 0, y: y || 0, animated: animated !== false});\n },\n\n /**\n * Deprecated, do not use.\n */\n scrollWithoutAnimationTo: function(y: number = 0, x: number = 0) {\n console.warn('`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead');\n this.scrollTo({x, y, animated: false});\n },\n\n _handleScroll: function(e: Object) {\n if (__DEV__) {\n if (this.props.onScroll && !this.props.scrollEventThrottle && Platform.OS === 'ios') {\n console.log(\n 'You specified `onScroll` on a but not ' +\n '`scrollEventThrottle`. You will only receive one event. ' +\n 'Using `16` you get all the events but be aware that it may ' +\n 'cause frame drops, use a bigger number if you don\\'t need as ' +\n 'much precision.'\n );\n }\n }\n if (Platform.OS === 'android') {\n if (this.props.keyboardDismissMode === 'on-drag') {\n dismissKeyboard();\n }\n }\n this.scrollResponderHandleScroll(e);\n },\n\n _handleContentOnLayout: function(e: Object) {\n var {width, height} = e.nativeEvent.layout;\n this.props.onContentSizeChange && this.props.onContentSizeChange(width, height);\n },\n\n render: function() {\n var contentContainerStyle = [\n this.props.horizontal && styles.contentContainerHorizontal,\n this.props.contentContainerStyle,\n ];\n if (__DEV__ && this.props.style) {\n var style = flattenStyle(this.props.style);\n var childLayoutProps = ['alignItems', 'justifyContent']\n .filter((prop) => style && style[prop] !== undefined);\n invariant(\n childLayoutProps.length === 0,\n 'ScrollView child layout (' + JSON.stringify(childLayoutProps) +\n ') must be applied through the contentContainerStyle prop.'\n );\n }\n\n var contentSizeChangeProps = {};\n if (this.props.onContentSizeChange) {\n contentSizeChangeProps = {\n onLayout: this._handleContentOnLayout,\n };\n }\n\n var contentContainer =\n \n {this.props.children}\n ;\n\n var alwaysBounceHorizontal =\n this.props.alwaysBounceHorizontal !== undefined ?\n this.props.alwaysBounceHorizontal :\n this.props.horizontal;\n\n var alwaysBounceVertical =\n this.props.alwaysBounceVertical !== undefined ?\n this.props.alwaysBounceVertical :\n !this.props.horizontal;\n\n var props = {\n ...this.props,\n alwaysBounceHorizontal,\n alwaysBounceVertical,\n style: ([styles.base, this.props.style]: ?Array),\n onTouchStart: this.scrollResponderHandleTouchStart,\n onTouchMove: this.scrollResponderHandleTouchMove,\n onTouchEnd: this.scrollResponderHandleTouchEnd,\n onScrollBeginDrag: this.scrollResponderHandleScrollBeginDrag,\n onScrollEndDrag: this.scrollResponderHandleScrollEndDrag,\n onMomentumScrollBegin: this.scrollResponderHandleMomentumScrollBegin,\n onMomentumScrollEnd: this.scrollResponderHandleMomentumScrollEnd,\n onStartShouldSetResponder: this.scrollResponderHandleStartShouldSetResponder,\n onStartShouldSetResponderCapture: this.scrollResponderHandleStartShouldSetResponderCapture,\n onScrollShouldSetResponder: this.scrollResponderHandleScrollShouldSetResponder,\n onScroll: this._handleScroll,\n onResponderGrant: this.scrollResponderHandleResponderGrant,\n onResponderTerminationRequest: this.scrollResponderHandleTerminationRequest,\n onResponderTerminate: this.scrollResponderHandleTerminate,\n onResponderRelease: this.scrollResponderHandleResponderRelease,\n onResponderReject: this.scrollResponderHandleResponderReject,\n sendMomentumEvents: (this.props.onMomentumScrollBegin || this.props.onMomentumScrollEnd) ? true : false,\n };\n\n var onRefreshStart = this.props.onRefreshStart;\n if (onRefreshStart) {\n // this is necessary because if we set it on props, even when empty,\n // it'll trigger the default pull-to-refresh behavior on native.\n props.onRefreshStart =\n function() { onRefreshStart && onRefreshStart(this.endRefreshing); }.bind(this);\n }\n\n var { decelerationRate } = this.props;\n if (decelerationRate) {\n props.decelerationRate = processDecelerationRate(decelerationRate);\n }\n\n var ScrollViewClass;\n if (Platform.OS === 'ios') {\n ScrollViewClass = RCTScrollView;\n } else if (Platform.OS === 'android') {\n if (this.props.horizontal) {\n ScrollViewClass = AndroidHorizontalScrollView;\n } else {\n ScrollViewClass = AndroidScrollView;\n }\n }\n invariant(\n ScrollViewClass !== undefined,\n 'ScrollViewClass must not be undefined'\n );\n\n var refreshControl = this.props.refreshControl;\n if (refreshControl) {\n if (Platform.OS === 'ios') {\n // On iOS the RefreshControl is a child of the ScrollView.\n return (\n \n {refreshControl}\n {contentContainer}\n \n );\n } else if (Platform.OS === 'android') {\n // On Android wrap the ScrollView with a AndroidSwipeRefreshLayout.\n // Since the ScrollView is wrapped add the style props to the\n // AndroidSwipeRefreshLayout and use flex: 1 for the ScrollView.\n return React.cloneElement(\n refreshControl,\n {style: props.style},\n \n {contentContainer}\n \n );\n }\n }\n return (\n \n {contentContainer}\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n base: {\n flex: 1,\n },\n contentContainerHorizontal: {\n alignSelf: 'flex-start',\n flexDirection: 'row',\n },\n});\n\nif (Platform.OS === 'android') {\n var nativeOnlyProps = {\n nativeOnly: {\n sendMomentumEvents: true,\n }\n };\n var AndroidScrollView = requireNativeComponent('RCTScrollView', ScrollView, nativeOnlyProps);\n var AndroidHorizontalScrollView = requireNativeComponent(\n 'AndroidHorizontalScrollView',\n ScrollView,\n nativeOnlyProps\n );\n} else if (Platform.OS === 'ios') {\n var nativeOnlyProps = {\n nativeOnly: {\n onMomentumScrollBegin: true,\n onMomentumScrollEnd : true,\n onScrollBeginDrag: true,\n onScrollEndDrag: true,\n }\n };\n var RCTScrollView = requireNativeComponent('RCTScrollView', ScrollView, nativeOnlyProps);\n}\n\nmodule.exports = ScrollView;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RefreshControl","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[193,242,286,317,344,389,478],"dependencies":["ColorPropType","NativeMethodsMixin","Platform","React","View","requireNativeComponent","NativeModules"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nif(Platform.OS==='android'){\nvar RefreshLayoutConsts=require('NativeModules').UIManager.AndroidSwipeRefreshLayout.Constants;}else \n{\nvar RefreshLayoutConsts={SIZE:{}};}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 RefreshControl=React.createClass({displayName:'RefreshControl',\nstatics:{\nSIZE:RefreshLayoutConsts.SIZE},\n\n\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\nonRefresh:React.PropTypes.func,\n\n\n\nrefreshing:React.PropTypes.bool,\n\n\n\n\ntintColor:ColorPropType,\n\n\n\n\ntitleColor:ColorPropType,\n\n\n\n\ntitle:React.PropTypes.string,\n\n\n\n\nenabled:React.PropTypes.bool,\n\n\n\n\ncolors:React.PropTypes.arrayOf(ColorPropType),\n\n\n\n\nprogressBackgroundColor:ColorPropType,\n\n\n\n\nsize:React.PropTypes.oneOf(RefreshLayoutConsts.SIZE.DEFAULT,RefreshLayoutConsts.SIZE.LARGE)}),\n\n\n_nativeRef:{},\n\nrender:function render(){var _this=this;\nreturn (\nReact.createElement(NativeRefreshControl,babelHelpers.extends({},\nthis.props,{\nref:function ref(_ref){return _this._nativeRef=_ref;},\nonRefresh:this._onRefresh,__source:{fileName:_jsxFileName,lineNumber:131}})));},\n\n\n\n\n_onRefresh:function _onRefresh(){\nthis.props.onRefresh&&this.props.onRefresh();\n\nif(this._nativeRef){\nthis._nativeRef.setNativeProps({refreshing:this.props.refreshing});}}});\n\n\n\n\nif(Platform.OS==='ios'){\nvar NativeRefreshControl=requireNativeComponent(\n'RCTRefreshControl',\nRefreshControl);}else \n\nif(Platform.OS==='android'){\nvar NativeRefreshControl=requireNativeComponent(\n'AndroidSwipeRefreshLayout',\nRefreshControl);}\n\n\n\nmodule.exports=RefreshControl;","map":null,"id":"RefreshControl","source":"/**\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 RefreshControl\n * @flow\n */\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst Platform = require('Platform');\nconst React = require('React');\nconst View = require('View');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nif (Platform.OS === 'android') {\n var RefreshLayoutConsts = require('NativeModules').UIManager.AndroidSwipeRefreshLayout.Constants;\n} else {\n var RefreshLayoutConsts = {SIZE: {}};\n}\n\n/**\n * This component is used inside a ScrollView or ListView to add pull to refresh\n * functionality. When the ScrollView is at `scrollY: 0`, swiping down\n * triggers an `onRefresh` event.\n *\n * ### Usage example\n *\n * ``` js\n * class RefreshableList extends Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * refreshing: false,\n * };\n * }\n *\n * _onRefresh() {\n * this.setState({refreshing: true});\n * fetchData().then(() => {\n * this.setState({refreshing: false});\n * });\n * }\n *\n * render() {\n * return (\n * \n * }\n * ...\n * >\n * ...\n * \n * );\n * }\n * ...\n * }\n * ```\n *\n * __Note:__ `refreshing` is a controlled prop, this is why it needs to be set to true\n * in the `onRefresh` function otherwise the refresh indicator will stop immediatly.\n */\nconst RefreshControl = React.createClass({\n statics: {\n SIZE: RefreshLayoutConsts.SIZE,\n },\n\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.propTypes,\n /**\n * Called when the view starts refreshing.\n */\n onRefresh: React.PropTypes.func,\n /**\n * Whether the view should be indicating an active refresh.\n */\n refreshing: React.PropTypes.bool,\n /**\n * The color of the refresh indicator.\n * @platform ios\n */\n tintColor: ColorPropType,\n /**\n * Title color.\n * @platform ios\n */\n titleColor: ColorPropType,\n /**\n * The title displayed under the refresh indicator.\n * @platform ios\n */\n title: React.PropTypes.string,\n /**\n * Whether the pull to refresh functionality is enabled.\n * @platform android\n */\n enabled: React.PropTypes.bool,\n /**\n * The colors (at least one) that will be used to draw the refresh indicator.\n * @platform android\n */\n colors: React.PropTypes.arrayOf(ColorPropType),\n /**\n * The background color of the refresh indicator.\n * @platform android\n */\n progressBackgroundColor: ColorPropType,\n /**\n * Size of the refresh indicator, see RefreshControl.SIZE.\n * @platform android\n */\n size: React.PropTypes.oneOf(RefreshLayoutConsts.SIZE.DEFAULT, RefreshLayoutConsts.SIZE.LARGE),\n },\n\n _nativeRef: {},\n\n render() {\n return (\n this._nativeRef = ref}\n onRefresh={this._onRefresh}\n />\n );\n },\n\n _onRefresh() {\n this.props.onRefresh && this.props.onRefresh();\n\n if (this._nativeRef) {\n this._nativeRef.setNativeProps({refreshing: this.props.refreshing});\n }\n },\n});\n\nif (Platform.OS === 'ios') {\n var NativeRefreshControl = requireNativeComponent(\n 'RCTRefreshControl',\n RefreshControl\n );\n} else if (Platform.OS === 'android') {\n var NativeRefreshControl = requireNativeComponent(\n 'AndroidSwipeRefreshLayout',\n RefreshControl\n );\n}\n\nmodule.exports = RefreshControl;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ProgressViewIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ProgressViewIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[191,232,277,314,347,379,424],"dependencies":["Image","NativeMethodsMixin","ReactPropTypes","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\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\n\nvar ProgressViewIOS=React.createClass({displayName:'ProgressViewIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\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 render(){\nreturn (\nReact.createElement(RCTProgressView,babelHelpers.extends({},\nthis.props,{\nstyle:[styles.progressView,this.props.style],__source:{fileName:_jsxFileName,lineNumber:64}})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nprogressView:{\nheight:2}});\n\n\n\nvar RCTProgressView=requireNativeComponent(\n'RCTProgressView',\nProgressViewIOS);\n\n\nmodule.exports=ProgressViewIOS;","map":null,"id":"ProgressViewIOS","source":"/**\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 PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\n/**\n * Use `ProgressViewIOS` to render a UIProgressView on iOS.\n */\nvar ProgressViewIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.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: 2,\n },\n});\n\nvar RCTProgressView = requireNativeComponent(\n 'RCTProgressView',\n ProgressViewIOS\n);\n\nmodule.exports = ProgressViewIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ProgressBarAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ProgressBarAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UnimplementedView"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=require('UnimplementedView');","map":null,"id":"ProgressBarAndroid","source":"/**\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 ProgressBarAndroid\n */\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Picker/Picker.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Picker","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[178,218,258,297,328,361,407,461,514,553,593],"dependencies":["ColorPropType","PickerIOS","PickerAndroid","Platform","React","StyleSheet","StyleSheetPropType","TextStylePropTypes","UnimplementedView","View","ViewStylePropTypes"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Picker/Picker.js';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\nvar PickerIOS=require('PickerIOS');\nvar PickerAndroid=require('PickerAndroid');\nvar Platform=require('Platform');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar UnimplementedView=require('UnimplementedView');\nvar View=require('View');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar itemStylePropType=StyleSheetPropType(TextStylePropTypes);\n\nvar pickerStyleType=StyleSheetPropType(babelHelpers.extends({},\nViewStylePropTypes,{\ncolor:ColorPropType}));\n\n\nvar MODE_DIALOG='dialog';\nvar MODE_DROPDOWN='dropdown';\n\n\n\n\n\n\n\n\n\n\n\nvar Picker=React.createClass({displayName:'Picker',\n\nstatics:{\n\n\n\nMODE_DIALOG:MODE_DIALOG,\n\n\n\nMODE_DROPDOWN:MODE_DROPDOWN},\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nmode:MODE_DIALOG};},\n\n\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\nstyle:pickerStyleType,\n\n\n\nselectedValue:React.PropTypes.any,\n\n\n\n\n\nonValueChange:React.PropTypes.func,\n\n\n\n\n\nenabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\nmode:React.PropTypes.oneOf(['dialog','dropdown']),\n\n\n\n\nitemStyle:itemStylePropType,\n\n\n\n\nprompt:React.PropTypes.string,\n\n\n\ntestID:React.PropTypes.string}),\n\n\nrender:function render(){\nif(Platform.OS==='ios'){\nreturn React.createElement(PickerIOS,babelHelpers.extends({},this.props,{__source:{fileName:_jsxFileName,lineNumber:112}}),this.props.children);}else \nif(Platform.OS==='android'){\nreturn React.createElement(PickerAndroid,babelHelpers.extends({},this.props,{__source:{fileName:_jsxFileName,lineNumber:114}}),this.props.children);}else \n{\nreturn React.createElement(UnimplementedView,{__source:{fileName:_jsxFileName,lineNumber:116}});}}});\n\n\n\n\n\n\n\nPicker.Item=React.createClass({displayName:'Item',\n\npropTypes:{\n\n\n\nlabel:React.PropTypes.string.isRequired,\n\n\n\n\nvalue:React.PropTypes.any,\n\n\n\n\ncolor:ColorPropType,\n\n\n\ntestID:React.PropTypes.string},\n\n\nrender:function render(){\n\nthrow null;}});\n\n\n\nmodule.exports=Picker;","map":null,"id":"Picker","source":"/**\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 Picker\n * @flow\n */\n\n'use strict';\n\nvar ColorPropType = require('ColorPropType');\nvar PickerIOS = require('PickerIOS');\nvar PickerAndroid = require('PickerAndroid');\nvar Platform = require('Platform');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar UnimplementedView = require('UnimplementedView');\nvar View = require('View');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar itemStylePropType = StyleSheetPropType(TextStylePropTypes);\n\nvar pickerStyleType = StyleSheetPropType({\n ...ViewStylePropTypes,\n color: ColorPropType,\n});\n\nvar MODE_DIALOG = 'dialog';\nvar MODE_DROPDOWN = 'dropdown';\n\n/**\n * Renders the native picker component on iOS and Android. Example:\n *\n * this.setState({language: lang})}>\n * \n * \n * \n */\nvar Picker = React.createClass({\n\n statics: {\n /**\n * On Android, display the options in a dialog.\n */\n MODE_DIALOG: MODE_DIALOG,\n /**\n * On Android, display the options in a dropdown (this is the default).\n */\n MODE_DROPDOWN: MODE_DROPDOWN,\n },\n\n getDefaultProps: function() {\n return {\n mode: MODE_DIALOG,\n };\n },\n\n propTypes: {\n ...View.propTypes,\n style: pickerStyleType,\n /**\n * Value matching value of one of the items. Can be a string or an integer.\n */\n selectedValue: React.PropTypes.any,\n /**\n * Callback for when an item is selected. This is called with the following parameters:\n * - `itemValue`: the `value` prop of the item that was selected\n * - `itemPosition`: the index of the selected item in this picker\n */\n onValueChange: React.PropTypes.func,\n /**\n * If set to false, the picker will be disabled, i.e. the user will not be able to make a\n * selection.\n * @platform android\n */\n enabled: React.PropTypes.bool,\n /**\n * On Android, specifies how to display the selection items when the user taps on the picker:\n *\n * - 'dialog': Show a modal dialog. This is the default.\n * - 'dropdown': Shows a dropdown anchored to the picker view\n *\n * @platform android\n */\n mode: React.PropTypes.oneOf(['dialog', 'dropdown']),\n /**\n * Style to apply to each of the item labels.\n * @platform ios\n */\n itemStyle: itemStylePropType,\n /**\n * Prompt string for this picker, used on Android in dialog mode as the title of the dialog.\n * @platform android\n */\n prompt: React.PropTypes.string,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: React.PropTypes.string,\n },\n\n render: function() {\n if (Platform.OS === 'ios') {\n return {this.props.children};\n } else if (Platform.OS === 'android') {\n return {this.props.children};\n } else {\n return ;\n }\n },\n});\n\n/**\n * Individual selectable item in a Picker.\n */\nPicker.Item = React.createClass({\n\n propTypes: {\n /**\n * Text to display for this item.\n */\n label: React.PropTypes.string.isRequired,\n /**\n * The value to be passed to picker's `onValueChange` callback when\n * this item is selected. Can be a string or an integer.\n */\n value: React.PropTypes.any,\n /**\n * Color of this item's text.\n * @platform android\n */\n color: ColorPropType,\n /**\n * Used to locate the item in end-to-end tests.\n */\n testID: React.PropTypes.string,\n },\n\n render: function() {\n // The items are not rendered directly\n throw null;\n },\n});\n\nmodule.exports = Picker;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Picker/PickerAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PickerAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Picker/PickerAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PickerAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UnimplementedView"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=require('UnimplementedView');","map":null,"id":"PickerAndroid","source":"/**\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 PickerAndroid\n */\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Picker/PickerIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PickerIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Picker/PickerIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PickerIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[190,231,267,308,354,408,448,555],"dependencies":["NativeMethodsMixin","React","ReactChildren","StyleSheet","StyleSheetPropType","TextStylePropTypes","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Picker/PickerIOS.ios.js';\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 StyleSheet=require('StyleSheet');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar View=require('View');\n\nvar itemStylePropType=StyleSheetPropType(TextStylePropTypes);\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar PickerIOS=React.createClass({displayName:'PickerIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\nitemStyle:itemStylePropType,\nonValueChange:React.PropTypes.func,\nselectedValue:React.PropTypes.any}),\n\n\ngetInitialState:function getInitialState(){\nreturn this._stateFromProps(this.props);},\n\n\ncomponentWillReceiveProps:function componentWillReceiveProps(nextProps){\nthis.setState(this._stateFromProps(nextProps));},\n\n\n\n_stateFromProps:function _stateFromProps(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 render(){var _this=this;\nreturn (\nReact.createElement(View,{style:this.props.style,__source:{fileName:_jsxFileName,lineNumber:59}},\nReact.createElement(RCTPickerIOS,{\nref:function ref(picker){return _this._picker=picker;},\nstyle:[styles.pickerIOS,this.props.itemStyle],\nitems:this.state.items,\nselectedIndex:this.state.selectedIndex,\nonChange:this._onChange,__source:{fileName:_jsxFileName,lineNumber:60}})));},\n\n\n\n\n\n_onChange:function _onChange(event){\nif(this.props.onChange){\nthis.props.onChange(event);}\n\nif(this.props.onValueChange){\nthis.props.onValueChange(event.nativeEvent.newValue,event.nativeEvent.newIndex);}\n\n\n\n\n\n\n\n\nif(this._picker&&this.state.selectedIndex!==event.nativeEvent.newIndex){\nthis._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 render(){\n\nreturn null;}});\n\n\n\nvar styles=StyleSheet.create({\npickerIOS:{\n\n\n\nheight:216}});\n\n\n\nvar RCTPickerIOS=requireNativeComponent('RCTPicker',{\npropTypes:{\nstyle:itemStylePropType}},\n\n{\nnativeOnly:{\nitems:true,\nonChange:true,\nselectedIndex:true}});\n\n\n\nmodule.exports=PickerIOS;","map":null,"id":"PickerIOS","source":"/**\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 StyleSheet = require('StyleSheet');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar View = require('View');\n\nvar itemStylePropType = StyleSheetPropType(TextStylePropTypes);\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar PickerIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.propTypes,\n itemStyle: itemStylePropType,\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 this._picker = picker}\n style={[styles.pickerIOS, this.props.itemStyle]}\n items={this.state.items}\n selectedIndex={this.state.selectedIndex}\n onChange={this._onChange}\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, event.nativeEvent.newIndex);\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._picker && this.state.selectedIndex !== event.nativeEvent.newIndex) {\n this._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: 216,\n },\n});\n\nvar RCTPickerIOS = requireNativeComponent('RCTPicker', {\n propTypes: {\n style: itemStylePropType,\n },\n}, {\n nativeOnly: {\n items: true,\n onChange: true,\n selectedIndex: true,\n },\n});\n\nmodule.exports = PickerIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[190,225,265,319,372,406,450,499,531,563,607,655,713],"dependencies":["EventEmitter","Image","NavigationContext","NativeModules","React","ReactNative","StaticContainer.react","StyleSheet","View","fbjs/lib/invariant","logError","requireNativeComponent","resolveAssetSource"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js';\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 RCTNavigatorManager=require('NativeModules').NavigatorManager;\nvar React=require('React');\nvar ReactNative=require('ReactNative');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar invariant=require('fbjs/lib/invariant');\nvar logError=require('logError');\nvar requireNativeComponent=require('requireNativeComponent');\nvar resolveAssetSource=require('resolveAssetSource');\n\nvar TRANSITIONER_REF='transitionerRef';\n\nvar PropTypes=React.PropTypes;\n\nvar __uid=0;\nfunction getuid(){\nreturn __uid++;}\n\n\nvar NavigatorTransitionerIOS=React.createClass({displayName:'NavigatorTransitionerIOS',\nrequestSchedulingNavigation:function requestSchedulingNavigation(cb){\nRCTNavigatorManager.requestSchedulingJavaScriptNavigation(\nReactNative.findNodeHandle(this),\nlogError,\ncb);},\n\n\n\nrender:function render(){\nreturn (\nReact.createElement(RCTNavigator,babelHelpers.extends({},this.props,{__source:{fileName:_jsxFileName,lineNumber:49}})));}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\n\n\n\nnavigationBarHidden:PropTypes.bool,\n\n\n\n\nshadowHidden:PropTypes.bool,\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\nisRequired,\n\n\n\n\nnavigationBarHidden:PropTypes.bool,\n\n\n\n\nshadowHidden: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 componentWillMount(){\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 componentDidMount(){\nthis._emitDidFocus(this.state.routeStack[this.state.observedTopOfStack]);},\n\n\ncomponentWillUnmount:function componentWillUnmount(){\nthis.navigationContext.dispose();\nthis.navigationContext=new NavigationContext();},\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\ntranslucent:true};},\n\n\n\ngetInitialState:function getInitialState(){\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 _handleFocusRequest(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 _getFocusEmitter(){\n\nvar focusEmitter=this._focusEmitter;\nif(!focusEmitter){\nfocusEmitter=new EventEmitter();\nthis._focusEmitter=focusEmitter;}\n\nreturn focusEmitter;},\n\n\ngetChildContext:function getChildContext()\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 _tryLockNavigator(cb){\nthis.refs[TRANSITIONER_REF].requestSchedulingNavigation(\nfunction(acquiredLock){return acquiredLock&&cb();});},\n\n\n\n_handleNavigatorStackChanged:function _handleNavigatorStackChanged(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 _eliminateUnneededChildren(){\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 _emitDidFocus(route){\nthis.navigationContext.emit('didfocus',{route:route});},\n\n\n_emitWillFocus:function _emitWillFocus(route){\nthis.navigationContext.emit('willfocus',{route:route});},\n\n\n\n\n\npush:function push(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\n\n\n\npopN:function popN(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,\nupdatingAllIndicesAtOrBeyond:_this2.state.requestedTopOfStack-n});});}}},\n\n\n\n\n\n\n\n\n\npop:function pop(){\nthis.popN(1);},\n\n\n\n\n\n\n\n\nreplaceAtIndex:function replaceAtIndex(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\n\nreplace:function replace(route){\nthis.replaceAtIndex(route,-1);},\n\n\n\n\n\nreplacePrevious:function replacePrevious(route){\nthis.replaceAtIndex(route,-2);},\n\n\n\n\n\npopToTop:function popToTop(){\nthis.popToRoute(this.state.routeStack[0]);},\n\n\n\n\n\npopToRoute:function popToRoute(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\n\n\n\nreplacePreviousAndPop:function replacePreviousAndPop(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\n\n\n\nresetTo:function resetTo(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\n_handleNavigationComplete:function _handleNavigationComplete(e){\nif(this._toFocusOnNavigationComplete){\nthis._getFocusEmitter().emit('focus',this._toFocusOnNavigationComplete);\nthis._toFocusOnNavigationComplete=null;}\n\nthis._handleNavigatorStackChanged(e);},\n\n\n_routeToStackItem:function _routeToStackItem(routeArg,i){var \ncomponent=routeArg.component;var wrapperStyle=routeArg.wrapperStyle;var passProps=routeArg.passProps;var route=babelHelpers.objectWithoutProperties(routeArg,['component','wrapperStyle','passProps']);var _props=\nthis.props;var itemWrapperStyle=_props.itemWrapperStyle;var props=babelHelpers.objectWithoutProperties(_props,['itemWrapperStyle']);\nvar shouldUpdateChild=\nthis.state.updatingAllIndicesAtOrBeyond!=null&&\nthis.state.updatingAllIndicesAtOrBeyond>=i;\nvar Component=component;\nreturn (\nReact.createElement(StaticContainer,{key:'nav'+i,shouldUpdate:shouldUpdateChild,__source:{fileName:_jsxFileName,lineNumber:655}},\nReact.createElement(RCTNavigatorItem,babelHelpers.extends({},\nprops,\nroute,{\nstyle:[\nstyles.stackItem,\nitemWrapperStyle,\nwrapperStyle],__source:{fileName:_jsxFileName,lineNumber:656}}),\n\nReact.createElement(Component,babelHelpers.extends({\nnavigator:this.navigator,\nroute:route},\npassProps,{__source:{fileName:_jsxFileName,lineNumber:664}})))));},\n\n\n\n\n\n\n_renderNavigationStackItems:function _renderNavigationStackItems(){\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,__source:{fileName:_jsxFileName,lineNumber:683}},\nReact.createElement(NavigatorTransitionerIOS,{\nref:TRANSITIONER_REF,\nstyle:styles.transitioner,\nvertical:this.props.vertical,\nrequestedTopOfStack:this.state.requestedTopOfStack,\nonNavigationComplete:this._handleNavigationComplete,__source:{fileName:_jsxFileName,lineNumber:684}},\nitems)));},\n\n\n\n\n\nrender:function render(){\nreturn (\nReact.createElement(View,{style:this.props.style,__source:{fileName:_jsxFileName,lineNumber:698}},\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\nvar RCTNavigator=requireNativeComponent('RCTNavigator');\nvar RCTNavigatorItem=requireNativeComponent('RCTNavItem');\n\nmodule.exports=NavigatorIOS;","map":null,"id":"NavigatorIOS","source":"/**\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 RCTNavigatorManager = require('NativeModules').NavigatorManager;\nvar React = require('React');\nvar ReactNative = require('ReactNative');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar invariant = require('fbjs/lib/invariant');\nvar logError = require('logError');\nvar requireNativeComponent = require('requireNativeComponent');\nvar resolveAssetSource = require('resolveAssetSource');\n\nvar TRANSITIONER_REF = 'transitionerRef';\n\nvar PropTypes = React.PropTypes;\n\nvar __uid = 0;\nfunction getuid() {\n return __uid++;\n}\n\nvar NavigatorTransitionerIOS = React.createClass({\n requestSchedulingNavigation: function(cb) {\n RCTNavigatorManager.requestSchedulingJavaScriptNavigation(\n ReactNative.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 * > **NOTE**: This Component is not maintained by Facebook\n * >\n * > This component is under community responsibility.\n * > If a pure JavaScript solution fits your needs you may try the `Navigator`\n * > component instead.\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 receive 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 * 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 * Props passed to the NavigatorIOS component will set the default configuration\n * for the navigation bar. Props passed as properties to a route object will set\n * the configuration for that route's navigation bar, overriding any props\n * passed to the NavigatorIOS component.\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 /**\n * A Boolean value that indicates whether the navigation bar is hidden\n */\n navigationBarHidden: PropTypes.bool,\n\n /**\n * A Boolean value that indicates whether to hide the 1px hairline shadow\n */\n shadowHidden: PropTypes.bool,\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 }).isRequired,\n\n /**\n * A Boolean value that indicates whether the navigation bar is hidden by default\n */\n navigationBarHidden: PropTypes.bool,\n\n /**\n * A Boolean value that indicates whether to hide the 1px hairline shadow by default\n */\n shadowHidden: 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 default color used for buttons in the navigation bar\n */\n tintColor: PropTypes.string,\n\n /**\n * The default background color of the navigation bar\n */\n barTintColor: PropTypes.string,\n\n /**\n * The default 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 by default\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 getDefaultProps: function(): Object {\n return {\n translucent: true,\n };\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 /**\n * Navigate forward to a new route\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 /**\n * Go back N pages at once. When N=1, behavior matches `pop()`\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 updatingAllIndicesAtOrBeyond: this.state.requestedTopOfStack - n,\n });\n });\n }\n }\n },\n\n /**\n * Go back one page\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 * Replace the route for the current page and immediately\n * load the view for the new route.\n */\n replace: function(route: Route) {\n this.replaceAtIndex(route, -1);\n },\n\n /**\n * Replace the route/view for the previous page.\n */\n replacePrevious: function(route: Route) {\n this.replaceAtIndex(route, -2);\n },\n\n /**\n * Go back to the top item\n */\n popToTop: function() {\n this.popToRoute(this.state.routeStack[0]);\n },\n\n /**\n * Go back to the item for a particular route object\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 /**\n * Replaces the previous route/view and transitions back to it.\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 /**\n * Replaces the top item and popToTop\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(routeArg: Route, i: number) {\n var {component, wrapperStyle, passProps, ...route} = routeArg;\n var {itemWrapperStyle, ...props} = this.props;\n var shouldUpdateChild =\n this.state.updatingAllIndicesAtOrBeyond != null &&\n this.state.updatingAllIndicesAtOrBeyond >= i;\n var Component = component;\n return (\n \n \n \n \n \n );\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\nvar RCTNavigator = requireNativeComponent('RCTNavigator');\nvar RCTNavigatorItem = requireNativeComponent('RCTNavItem');\n\nmodule.exports = NavigatorIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/MapView/MapView.js":{"metadata":{"mtime":1463609891000},"data":{"name":"MapView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[179,228,269,310,354,385,418,450,491,539,587,645],"dependencies":["ColorPropType","EdgeInsetsPropType","Image","NativeMethodsMixin","Platform","React","StyleSheet","View","deprecatedPropType","processColor","resolveAssetSource","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/MapView/MapView.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=require('ColorPropType');\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar Image=require('Image');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar deprecatedPropType=require('deprecatedPropType');\nvar processColor=require('processColor');\nvar resolveAssetSource=require('resolveAssetSource');\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\n\n\n\n\n\n\n\n\nvar MapView=React.createClass({displayName:'MapView',\n\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\nshowsUserLocation:React.PropTypes.bool,\n\n\n\n\n\n\n\nfollowUserLocation:React.PropTypes.bool,\n\n\n\n\n\n\nshowsPointsOfInterest:React.PropTypes.bool,\n\n\n\n\n\n\nshowsCompass:React.PropTypes.bool,\n\n\n\n\n\nzoomEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\nrotateEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\npitchEnabled:React.PropTypes.bool,\n\n\n\n\n\nscrollEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\nmapType:React.PropTypes.oneOf([\n'standard',\n'satellite',\n'hybrid']),\n\n\n\n\n\n\n\n\nregion:React.PropTypes.shape({\n\n\n\nlatitude:React.PropTypes.number.isRequired,\nlongitude:React.PropTypes.number.isRequired,\n\n\n\n\n\nlatitudeDelta:React.PropTypes.number,\nlongitudeDelta:React.PropTypes.number}),\n\n\n\n\n\n\nannotations:React.PropTypes.arrayOf(React.PropTypes.shape({\n\n\n\nlatitude:React.PropTypes.number.isRequired,\nlongitude:React.PropTypes.number.isRequired,\n\n\n\n\nanimateDrop:React.PropTypes.bool,\n\n\n\n\ndraggable:React.PropTypes.bool,\n\n\n\n\nonDragStateChange:React.PropTypes.func,\n\n\n\n\n\nonFocus:React.PropTypes.func,\n\n\n\n\n\nonBlur:React.PropTypes.func,\n\n\n\n\ntitle:React.PropTypes.string,\nsubtitle:React.PropTypes.string,\n\n\n\n\nleftCalloutView:React.PropTypes.element,\nrightCalloutView:React.PropTypes.element,\ndetailCalloutView:React.PropTypes.element,\n\n\n\n\n\n\n\n\n\n\ntintColor:ColorPropType,\n\n\n\n\nimage:Image.propTypes.source,\n\n\n\n\nview:React.PropTypes.element,\n\n\n\n\nid:React.PropTypes.string,\n\n\n\n\nhasLeftCallout:deprecatedPropType(\nReact.PropTypes.bool,\n'Use `leftCalloutView` instead.'),\n\nhasRightCallout:deprecatedPropType(\nReact.PropTypes.bool,\n'Use `rightCalloutView` instead.'),\n\nonLeftCalloutPress:deprecatedPropType(\nReact.PropTypes.func,\n'Use `leftCalloutView` instead.'),\n\nonRightCalloutPress:deprecatedPropType(\nReact.PropTypes.func,\n'Use `rightCalloutView` instead.')})),\n\n\n\n\n\n\n\noverlays:React.PropTypes.arrayOf(React.PropTypes.shape({\n\n\n\ncoordinates:React.PropTypes.arrayOf(React.PropTypes.shape({\nlatitude:React.PropTypes.number.isRequired,\nlongitude:React.PropTypes.number.isRequired})),\n\n\n\n\n\nlineWidth:React.PropTypes.number,\nstrokeColor:ColorPropType,\nfillColor:ColorPropType,\n\n\n\n\nid:React.PropTypes.string})),\n\n\n\n\n\n\nmaxDelta:React.PropTypes.number,\n\n\n\n\n\nminDelta:React.PropTypes.number,\n\n\n\n\n\n\nlegalLabelInsets:EdgeInsetsPropType,\n\n\n\n\nonRegionChange:React.PropTypes.func,\n\n\n\n\nonRegionChangeComplete:React.PropTypes.func,\n\n\n\n\nonAnnotationPress:React.PropTypes.func,\n\n\n\n\nactive:React.PropTypes.bool}),\n\n\nstatics:{\n\n\n\n\n\n\n\nPinColors:{\nRED:'#ff3b30',\nGREEN:'#4cd964',\nPURPLE:'#c969e0'}},\n\n\n\nrender:function render(){var _this=this;\nvar children=[];var _props=this.props;var annotations=_props.annotations;var overlays=_props.overlays;var followUserLocation=_props.followUserLocation;\nannotations=annotations&&annotations.map(function(annotation){var \n\nid=\n\n\n\n\n\n\nannotation.id;var image=annotation.image;var tintColor=annotation.tintColor;var view=annotation.view;var leftCalloutView=annotation.leftCalloutView;var rightCalloutView=annotation.rightCalloutView;var detailCalloutView=annotation.detailCalloutView;\n\nif(!view&&image&&tintColor){\nview=React.createElement(Image,{\nstyle:{\ntintColor:processColor(tintColor)},\n\nsource:image,__source:{fileName:_jsxFileName,lineNumber:340}});\n\nimage=undefined;}\n\nif(view){\nif(image){\nconsole.warn('`image` and `view` both set on annotation. Image will be ignored.');}\n\nvar viewIndex=children.length;\nchildren.push(React.cloneElement(view,{\n\nstyle:[styles.annotationView,view.props.style||{}]}));}\n\n\nif(leftCalloutView){\nvar leftCalloutViewIndex=children.length;\nchildren.push(React.cloneElement(leftCalloutView,{\nstyle:[styles.calloutView,leftCalloutView.props.style||{}]}));}\n\n\nif(rightCalloutView){\nvar rightCalloutViewIndex=children.length;\nchildren.push(React.cloneElement(rightCalloutView,{\nstyle:[styles.calloutView,rightCalloutView.props.style||{}]}));}\n\n\nif(detailCalloutView){\nvar detailCalloutViewIndex=children.length;\nchildren.push(React.cloneElement(detailCalloutView,{\nstyle:[styles.calloutView,detailCalloutView.props.style||{}]}));}\n\n\n\nvar result=babelHelpers.extends({},\nannotation,{\ntintColor:tintColor&&processColor(tintColor),\nimage:image,\nviewIndex:viewIndex,\nleftCalloutViewIndex:leftCalloutViewIndex,\nrightCalloutViewIndex:rightCalloutViewIndex,\ndetailCalloutViewIndex:detailCalloutViewIndex,\nview:undefined,\nleftCalloutView:undefined,\nrightCalloutView:undefined,\ndetailCalloutView:undefined});\n\nresult.id=id||encodeURIComponent(JSON.stringify(result));\nresult.image=image&&resolveAssetSource(image);\nreturn result;});\n\noverlays=overlays&&overlays.map(function(overlay){var \nid=overlay.id;var fillColor=overlay.fillColor;var strokeColor=overlay.strokeColor;\nvar result=babelHelpers.extends({},\noverlay,{\nstrokeColor:strokeColor&&processColor(strokeColor),\nfillColor:fillColor&&processColor(fillColor)});\n\nresult.id=id||encodeURIComponent(JSON.stringify(result));\nreturn result;});\n\n\nvar findByAnnotationId=function findByAnnotationId(annotationId){\nif(!annotations){\nreturn null;}\n\nfor(var i=0,l=annotations.length;i;\n\nconst MapView = React.createClass({\n\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.propTypes,\n /**\n * Used to style and layout the `MapView`. See `StyleSheet.js` and\n * `ViewStylePropTypes.js` for more info.\n */\n style: View.propTypes.style,\n\n /**\n * If `true` the app will ask for the user's location and display it on\n * the map. Default value is `false`.\n *\n * **NOTE**: on iOS, you need to add the `NSLocationWhenInUseUsageDescription`\n * key in Info.plist to enable geolocation, otherwise it will fail silently.\n */\n showsUserLocation: React.PropTypes.bool,\n\n /**\n * If `true` the map will follow the user's location whenever it changes.\n * Note that this has no effect unless `showsUserLocation` is enabled.\n * Default value is `true`.\n * @platform ios\n */\n followUserLocation: React.PropTypes.bool,\n\n /**\n * If `false` points of interest won't be displayed on the map.\n * Default value is `true`.\n * @platform ios\n */\n showsPointsOfInterest: React.PropTypes.bool,\n\n /**\n * If `false` compass won't be displayed on the map.\n * Default value is `true`.\n * @platform ios\n */\n showsCompass: React.PropTypes.bool,\n\n /**\n * If `false` the user won't be able to pinch/zoom the map.\n * Default value is `true`.\n */\n zoomEnabled: React.PropTypes.bool,\n\n /**\n * When this property is set to `true` and a valid camera is associated with\n * the map, the camera’s heading angle is used to rotate the plane of the\n * map around its center point. When this property is set to `false`, the\n * camera’s heading angle is ignored and the map is always oriented so\n * that true north is situated at the top of the map view\n */\n rotateEnabled: React.PropTypes.bool,\n\n /**\n * When this property is set to `true` and a valid camera is associated\n * with the map, the camera’s pitch angle is used to tilt the plane\n * of the map. When this property is set to `false`, the camera’s pitch\n * angle is ignored and the map is always displayed as if the user\n * is looking straight down onto it.\n */\n pitchEnabled: React.PropTypes.bool,\n\n /**\n * If `false` the user won't be able to change the map region being displayed.\n * Default value is `true`.\n */\n scrollEnabled: React.PropTypes.bool,\n\n /**\n * The map type to be displayed.\n *\n * - standard: standard road map (default)\n * - satellite: satellite view\n * - hybrid: satellite view with roads and points of interest overlaid\n *\n * @platform ios\n */\n mapType: React.PropTypes.oneOf([\n 'standard',\n 'satellite',\n 'hybrid',\n ]),\n\n /**\n * The region to be displayed by the map.\n *\n * The region is defined by the center coordinates and the span of\n * coordinates to display.\n */\n region: React.PropTypes.shape({\n /**\n * Coordinates for the center of the map.\n */\n latitude: React.PropTypes.number.isRequired,\n longitude: React.PropTypes.number.isRequired,\n\n /**\n * Distance between the minimum and the maximum latitude/longitude\n * to be displayed.\n */\n latitudeDelta: React.PropTypes.number,\n longitudeDelta: React.PropTypes.number,\n }),\n\n /**\n * Map annotations with title/subtitle.\n * @platform ios\n */\n annotations: React.PropTypes.arrayOf(React.PropTypes.shape({\n /**\n * The location of the annotation.\n */\n latitude: React.PropTypes.number.isRequired,\n longitude: React.PropTypes.number.isRequired,\n\n /**\n * Whether the pin drop should be animated or not\n */\n animateDrop: React.PropTypes.bool,\n\n /**\n * Whether the pin should be draggable or not\n */\n draggable: React.PropTypes.bool,\n\n /**\n * Event that fires when the annotation drag state changes.\n */\n onDragStateChange: React.PropTypes.func,\n\n /**\n * Event that fires when the annotation gets was tapped by the user\n * and the callout view was displayed.\n */\n onFocus: React.PropTypes.func,\n\n /**\n * Event that fires when another annotation or the mapview itself\n * was tapped and a previously shown annotation will be closed.\n */\n onBlur: React.PropTypes.func,\n\n /**\n * Annotation title/subtile.\n */\n title: React.PropTypes.string,\n subtitle: React.PropTypes.string,\n\n /**\n * Callout views.\n */\n leftCalloutView: React.PropTypes.element,\n rightCalloutView: React.PropTypes.element,\n detailCalloutView: React.PropTypes.element,\n\n /**\n * The pin color. This can be any valid color string, or you can use one\n * of the predefined PinColors constants. Applies to both standard pins\n * and custom pin images.\n *\n * Note that on iOS 8 and earlier, only the standard PinColor constants\n * are supported for regular pins. For custom pin images, any tintColor\n * value is supported on all iOS versions.\n */\n tintColor: ColorPropType,\n\n /**\n * Custom pin image. This must be a static image resource inside the app.\n */\n image: Image.propTypes.source,\n\n /**\n * Custom pin view. If set, this replaces the pin or custom pin image.\n */\n view: React.PropTypes.element,\n\n /**\n * annotation id\n */\n id: React.PropTypes.string,\n\n /**\n * Deprecated. Use the left/right/detailsCalloutView props instead.\n */\n hasLeftCallout: deprecatedPropType(\n React.PropTypes.bool,\n 'Use `leftCalloutView` instead.'\n ),\n hasRightCallout: deprecatedPropType(\n React.PropTypes.bool,\n 'Use `rightCalloutView` instead.'\n ),\n onLeftCalloutPress: deprecatedPropType(\n React.PropTypes.func,\n 'Use `leftCalloutView` instead.'\n ),\n onRightCalloutPress: deprecatedPropType(\n React.PropTypes.func,\n 'Use `rightCalloutView` instead.'\n ),\n })),\n\n /**\n * Map overlays\n * @platform ios\n */\n overlays: React.PropTypes.arrayOf(React.PropTypes.shape({\n /**\n * Polyline coordinates\n */\n coordinates: React.PropTypes.arrayOf(React.PropTypes.shape({\n latitude: React.PropTypes.number.isRequired,\n longitude: React.PropTypes.number.isRequired\n })),\n\n /**\n * Line attributes\n */\n lineWidth: React.PropTypes.number,\n strokeColor: ColorPropType,\n fillColor: ColorPropType,\n\n /**\n * Overlay id\n */\n id: React.PropTypes.string\n })),\n\n /**\n * Maximum size of area that can be displayed.\n * @platform ios\n */\n maxDelta: React.PropTypes.number,\n\n /**\n * Minimum size of area that can be displayed.\n * @platform ios\n */\n minDelta: React.PropTypes.number,\n\n /**\n * Insets for the map's legal label, originally at bottom left of the map.\n * See `EdgeInsetsPropType.js` for more information.\n * @platform ios\n */\n legalLabelInsets: EdgeInsetsPropType,\n\n /**\n * Callback that is called continuously when the user is dragging the map.\n */\n onRegionChange: React.PropTypes.func,\n\n /**\n * Callback that is called once, when the user is done moving the map.\n */\n onRegionChangeComplete: React.PropTypes.func,\n\n /**\n * Deprecated. Use annotation onFocus and onBlur instead.\n */\n onAnnotationPress: React.PropTypes.func,\n\n /**\n * @platform android\n */\n active: React.PropTypes.bool,\n },\n\n statics: {\n /**\n * Standard iOS MapView pin color constants, to be used with the\n * `annotation.tintColor` property. On iOS 8 and earlier these are the\n * only supported values when using regular pins. On iOS 9 and later\n * you are not obliged to use these, but they are useful for matching\n * the standard iOS look and feel.\n */\n PinColors: {\n RED: '#ff3b30',\n GREEN: '#4cd964',\n PURPLE: '#c969e0',\n },\n },\n\n render: function() {\n let children = [], {annotations, overlays, followUserLocation} = this.props;\n annotations = annotations && annotations.map((annotation: Object) => {\n let {\n id,\n image,\n tintColor,\n view,\n leftCalloutView,\n rightCalloutView,\n detailCalloutView,\n } = annotation;\n\n if (!view && image && tintColor) {\n view = ;\n image = undefined;\n }\n if (view) {\n if (image) {\n console.warn('`image` and `view` both set on annotation. Image will be ignored.');\n }\n var viewIndex = children.length;\n children.push(React.cloneElement(view, {\n // $FlowFixMe - An array of styles should be fine\n style: [styles.annotationView, view.props.style || {}]\n }));\n }\n if (leftCalloutView) {\n var leftCalloutViewIndex = children.length;\n children.push(React.cloneElement(leftCalloutView, {\n style: [styles.calloutView, leftCalloutView.props.style || {}]\n }));\n }\n if (rightCalloutView) {\n var rightCalloutViewIndex = children.length;\n children.push(React.cloneElement(rightCalloutView, {\n style: [styles.calloutView, rightCalloutView.props.style || {}]\n }));\n }\n if (detailCalloutView) {\n var detailCalloutViewIndex = children.length;\n children.push(React.cloneElement(detailCalloutView, {\n style: [styles.calloutView, detailCalloutView.props.style || {}]\n }));\n }\n\n let result = {\n ...annotation,\n tintColor: tintColor && processColor(tintColor),\n image,\n viewIndex,\n leftCalloutViewIndex,\n rightCalloutViewIndex,\n detailCalloutViewIndex,\n view: undefined,\n leftCalloutView: undefined,\n rightCalloutView: undefined,\n detailCalloutView: undefined,\n };\n result.id = id || encodeURIComponent(JSON.stringify(result));\n result.image = image && resolveAssetSource(image);\n return result;\n });\n overlays = overlays && overlays.map((overlay: Object) => {\n let {id, fillColor, strokeColor} = overlay;\n let result = {\n ...overlay,\n strokeColor: strokeColor && processColor(strokeColor),\n fillColor: fillColor && processColor(fillColor),\n };\n result.id = id || encodeURIComponent(JSON.stringify(result));\n return result;\n });\n\n const findByAnnotationId = (annotationId: string) => {\n if (!annotations) {\n return null;\n }\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].id === annotationId) {\n return annotations[i];\n }\n }\n return null;\n };\n\n // TODO: these should be separate events, to reduce bridge traffic\n let onPress, onAnnotationDragStateChange, onAnnotationFocus, onAnnotationBlur;\n if (annotations) {\n onPress = (event: Event) => {\n if (event.nativeEvent.action === 'annotation-click') {\n // TODO: Remove deprecated onAnnotationPress API call later.\n this.props.onAnnotationPress &&\n this.props.onAnnotationPress(event.nativeEvent.annotation);\n } else if (event.nativeEvent.action === 'callout-click') {\n const annotation = findByAnnotationId(event.nativeEvent.annotationId);\n if (annotation) {\n // Pass the right function\n if (event.nativeEvent.side === 'left' && annotation.onLeftCalloutPress) {\n annotation.onLeftCalloutPress(event.nativeEvent);\n } else if (event.nativeEvent.side === 'right' && annotation.onRightCalloutPress) {\n annotation.onRightCalloutPress(event.nativeEvent);\n }\n }\n }\n };\n onAnnotationDragStateChange = (event: Event) => {\n const annotation = findByAnnotationId(event.nativeEvent.annotationId);\n if (annotation) {\n // Update location\n annotation.latitude = event.nativeEvent.latitude;\n annotation.longitude = event.nativeEvent.longitude;\n // Call callback\n annotation.onDragStateChange &&\n annotation.onDragStateChange(event.nativeEvent);\n }\n };\n onAnnotationFocus = (event: Event) => {\n const annotation = findByAnnotationId(event.nativeEvent.annotationId);\n if (annotation && annotation.onFocus) {\n annotation.onFocus(event.nativeEvent);\n }\n };\n onAnnotationBlur = (event: Event) => {\n const annotation = findByAnnotationId(event.nativeEvent.annotationId);\n if (annotation && annotation.onBlur) {\n annotation.onBlur(event.nativeEvent);\n }\n };\n }\n\n // TODO: these should be separate events, to reduce bridge traffic\n if (this.props.onRegionChange || this.props.onRegionChangeComplete) {\n var onChange = (event: Event) => {\n if (event.nativeEvent.continuous) {\n this.props.onRegionChange &&\n this.props.onRegionChange(event.nativeEvent.region);\n } else {\n this.props.onRegionChangeComplete &&\n this.props.onRegionChangeComplete(event.nativeEvent.region);\n }\n };\n }\n\n // followUserLocation defaults to true if showUserLocation is set\n if (followUserLocation === undefined) {\n followUserLocation = this.props.showUserLocation;\n }\n\n return (\n \n );\n },\n});\n\nconst styles = StyleSheet.create({\n annotationView: {\n position: 'absolute',\n backgroundColor: 'transparent',\n },\n calloutView: {\n position: 'absolute',\n backgroundColor: 'white',\n },\n});\n\nconst RCTMap = requireNativeComponent('RCTMap', MapView, {\n nativeOnly: {\n onAnnotationDragStateChange: true,\n onAnnotationFocus: true,\n onAnnotationBlur: true,\n onChange: true,\n onPress: true\n }\n});\n\nmodule.exports = MapView;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Intent/IntentAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"IntentAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Intent/IntentAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"IntentAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports={\nopenURL:function openURL(url){\nconsole.error('IntentAndroid is not supported on iOS');}};","map":null,"id":"IntentAndroid","source":"/**\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 IntentAndroid\n */\n'use strict';\n\nmodule.exports = {\n openURL: function(url) {\n console.error('IntentAndroid is not supported on iOS');\n },\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"DrawerLayoutAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"DrawerLayoutAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UnimplementedView"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=require('UnimplementedView');","map":null,"id":"DrawerLayoutAndroid","source":"/**\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 DrawerLayoutAndroid\n */\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"DatePickerAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"DatePickerAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[46],"dependencies":["fbjs/lib/warning"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar warning=require('fbjs/lib/warning');\n\nvar DatePickerAndroid={\nopen:function open(options){return regeneratorRuntime.async(function open$(_context){while(1){switch(_context.prev=_context.next){case 0:return _context.abrupt('return',\nPromise.reject({\nmessage:'DatePickerAndroid is not supported on this platform.'}));case 1:case 'end':return _context.stop();}}},null,this);}};\n\n\n\n\nmodule.exports=DatePickerAndroid;","map":null,"id":"DatePickerAndroid","source":"/**\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 DatePickerAndroid\n * @flow\n */\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nconst DatePickerAndroid = {\n async open(options: Object): Promise {\n return Promise.reject({\n message: 'DatePickerAndroid is not supported on this platform.'\n });\n },\n};\n\nmodule.exports = DatePickerAndroid;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"DatePickerIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"DatePickerIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[199,244,281,314,346,391],"dependencies":["NativeMethodsMixin","ReactPropTypes","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js';\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');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DatePickerIOS=React.createClass({displayName:'DatePickerIOS',\n\n_picker:undefined,\n\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\ndate:PropTypes.instanceOf(Date).isRequired,\n\n\n\n\n\n\n\n\nonDateChange:PropTypes.func.isRequired,\n\n\n\n\n\n\nmaximumDate:PropTypes.instanceOf(Date),\n\n\n\n\n\n\nminimumDate:PropTypes.instanceOf(Date),\n\n\n\n\nmode:PropTypes.oneOf(['date','time','datetime']),\n\n\n\n\nminuteInterval:PropTypes.oneOf([1,2,3,4,5,6,10,12,15,20,30]),\n\n\n\n\n\n\n\n\ntimeZoneOffsetInMinutes:PropTypes.number}),\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nmode:'datetime'};},\n\n\n\n_onChange:function _onChange(event){\nvar nativeTimeStamp=event.nativeEvent.timestamp;\nthis.props.onDateChange&&this.props.onDateChange(\nnew Date(nativeTimeStamp));\n\nthis.props.onChange&&this.props.onChange(event);\n\n\n\n\n\nvar propsTimeStamp=this.props.date.getTime();\nif(this._picker&&nativeTimeStamp!==propsTimeStamp){\nthis._picker.setNativeProps({\ndate:propsTimeStamp});}},\n\n\n\n\nrender:function render(){var _this=this;\nvar props=this.props;\nreturn (\nReact.createElement(View,{style:props.style,__source:{fileName:_jsxFileName,lineNumber:121}},\nReact.createElement(RCTDatePickerIOS,{\nref:function ref(picker){return _this._picker=picker;},\nstyle:styles.datePickerIOS,\ndate:props.date.getTime(),\nmaximumDate:\nprops.maximumDate?props.maximumDate.getTime():undefined,\n\nminimumDate:\nprops.minimumDate?props.minimumDate.getTime():undefined,\n\nmode:props.mode,\nminuteInterval:props.minuteInterval,\ntimeZoneOffsetInMinutes:props.timeZoneOffsetInMinutes,\nonChange:this._onChange,__source:{fileName:_jsxFileName,lineNumber:122}})));}});\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ndatePickerIOS:{\nheight:216,\nwidth:320}});\n\n\n\nvar RCTDatePickerIOS=requireNativeComponent('RCTDatePicker',DatePickerIOS,{\nnativeOnly:{onChange:true}});\n\n\nmodule.exports=DatePickerIOS;","map":null,"id":"DatePickerIOS","source":"/**\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 DatePickerIOS\n * @flow\n *\n * This is a controlled component version of RCTDatePickerIOS\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 DefaultProps = {\n mode: 'date' | 'time' | 'datetime';\n};\n\ntype Event = Object;\n\n/**\n * Use `DatePickerIOS` to render a date/time picker (selector) on iOS. This is\n * a controlled component, so you must hook in to the `onDateChange` callback\n * and update the `date` prop in order for the component to update, otherwise\n * the user's change will be reverted immediately to reflect `props.date` as the\n * source of truth.\n */\nvar DatePickerIOS = React.createClass({\n // TOOD: Put a better type for _picker\n _picker: (undefined: ?$FlowFixMe),\n\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.propTypes,\n /**\n * The currently selected date.\n */\n date: PropTypes.instanceOf(Date).isRequired,\n\n /**\n * Date change handler.\n *\n * This is called when the user changes the date or time in the UI.\n * The first and only argument is a Date object representing the new\n * date and time.\n */\n onDateChange: PropTypes.func.isRequired,\n\n /**\n * Maximum date.\n *\n * Restricts the range of possible date/time values.\n */\n maximumDate: PropTypes.instanceOf(Date),\n\n /**\n * Minimum date.\n *\n * Restricts the range of possible date/time values.\n */\n minimumDate: PropTypes.instanceOf(Date),\n\n /**\n * The date picker mode.\n */\n mode: PropTypes.oneOf(['date', 'time', 'datetime']),\n\n /**\n * The interval at which minutes can be selected.\n */\n minuteInterval: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30]),\n\n /**\n * Timezone offset in minutes.\n *\n * By default, the date picker will use the device's timezone. With this\n * parameter, it is possible to force a certain timezone offset. For\n * instance, to show times in Pacific Standard Time, pass -7 * 60.\n */\n timeZoneOffsetInMinutes: PropTypes.number,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n mode: 'datetime',\n };\n },\n\n _onChange: function(event: Event) {\n var nativeTimeStamp = event.nativeEvent.timestamp;\n this.props.onDateChange && this.props.onDateChange(\n new Date(nativeTimeStamp)\n );\n this.props.onChange && this.props.onChange(event);\n\n // We expect the onChange* handlers to be in charge of updating our `date`\n // prop. That way they can also disallow/undo/mutate the selection of\n // certain values. In other words, the embedder of this component should\n // be the source of truth, not the native component.\n var propsTimeStamp = this.props.date.getTime();\n if (this._picker && nativeTimeStamp !== propsTimeStamp) {\n this._picker.setNativeProps({\n date: propsTimeStamp,\n });\n }\n },\n\n render: function() {\n var props = this.props;\n return (\n \n this._picker = picker }\n style={styles.datePickerIOS}\n date={props.date.getTime()}\n maximumDate={\n props.maximumDate ? props.maximumDate.getTime() : undefined\n }\n minimumDate={\n props.minimumDate ? props.minimumDate.getTime() : undefined\n }\n mode={props.mode}\n minuteInterval={props.minuteInterval}\n timeZoneOffsetInMinutes={props.timeZoneOffsetInMinutes}\n onChange={this._onChange}\n />\n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n datePickerIOS: {\n height: 216,\n width: 320,\n },\n});\n\nvar RCTDatePickerIOS = requireNativeComponent('RCTDatePicker', DatePickerIOS, {\n nativeOnly: { onChange: true },\n});\n\nmodule.exports = DatePickerIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/Clipboard/Clipboard.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Clipboard","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48,107],"dependencies":["NativeModules","deprecatedCallback"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Clipboard=require('NativeModules').Clipboard;\nvar deprecatedCallback=require('deprecatedCallback');\n\n\n\n\nmodule.exports={\n\n\n\n\n\n\n\n\ngetString:function getString(){\nreturn deprecatedCallback(\nClipboard.getString(),\nArray.prototype.slice.call(arguments),\n'success-first',\n'Clipboard.getString(callback) is deprecated. Use the returned Promise instead');},\n\n\n\n\n\n\n\n\n\n\n\nsetString:function setString(content){\nClipboard.setString(content);}};","map":null,"id":"Clipboard","source":"/**\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 Clipboard\n * @flow\n */\n'use strict';\n\nconst Clipboard = require('NativeModules').Clipboard;\nconst deprecatedCallback = require('deprecatedCallback');\n\n/**\n * `Clipboard` gives you an interface for setting and getting content from Clipboard on both iOS and Android\n */\nmodule.exports = {\n /**\n * Get content of string type, this method returns a `Promise`, so you can use following code to get clipboard content\n * ```javascript\n * async _getContent() {\n * var content = await Clipboard.getString();\n * }\n * ```\n */\n getString(): Promise {\n return deprecatedCallback(\n Clipboard.getString(),\n Array.prototype.slice.call(arguments),\n 'success-first',\n 'Clipboard.getString(callback) is deprecated. Use the returned Promise instead'\n );\n },\n /**\n * Set content of string type. You can use following code to set clipboard content\n * ```javascript\n * _setContent() {\n * Clipboard.setString('hello world');\n * }\n * ```\n * @param the content to be stored in the clipboard.\n */\n setString(content: string) {\n Clipboard.setString(content);\n }\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ActivityIndicatorIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ActivityIndicatorIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[214,259,296,329,361,406],"dependencies":["NativeMethodsMixin","ReactPropTypes","React","StyleSheet","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js';\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\nvar GRAY='#999999';\n\n\n\n\n\n\n\n\nvar ActivityIndicatorIOS=React.createClass({displayName:'ActivityIndicatorIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\n\n\nanimating:PropTypes.bool,\n\n\n\ncolor:PropTypes.string,\n\n\n\nhidesWhenStopped:PropTypes.bool,\n\n\n\nsize:PropTypes.oneOf([\n'small',\n'large']),\n\n\n\n\n\n\nonLayout:PropTypes.func}),\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nanimating:true,\ncolor:GRAY,\nhidesWhenStopped:true,\nsize:'small'};},\n\n\n\nrender:function render(){var _props=\nthis.props;var onLayout=_props.onLayout;var style=_props.style;var props=babelHelpers.objectWithoutProperties(_props,['onLayout','style']);\nvar sizeStyle=this.props.size==='large'?styles.sizeLarge:styles.sizeSmall;\nreturn (\nReact.createElement(View,{\nonLayout:onLayout,\nstyle:[styles.container,style],__source:{fileName:_jsxFileName,lineNumber:76}},\nReact.createElement(RCTActivityIndicatorView,babelHelpers.extends({},props,{style:sizeStyle,__source:{fileName:_jsxFileName,lineNumber:79}}))));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nalignItems:'center',\njustifyContent:'center'},\n\nsizeSmall:{\nwidth:20,\nheight:20},\n\nsizeLarge:{\nwidth:36,\nheight:36}});\n\n\n\nvar RCTActivityIndicatorView=requireNativeComponent(\n'RCTActivityIndicatorView',\nActivityIndicatorIOS,\n{nativeOnly:{activityIndicatorViewStyle:true}});\n\n\nmodule.exports=ActivityIndicatorIOS;","map":null,"id":"ActivityIndicatorIOS","source":"/**\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 ActivityIndicatorIOS\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\nvar GRAY = '#999999';\n\ntype DefaultProps = {\n animating: boolean;\n color: string;\n hidesWhenStopped: boolean;\n size: 'small' | 'large';\n};\n\nvar ActivityIndicatorIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...View.propTypes,\n /**\n * Whether to show the indicator (true, the default) or hide it (false).\n */\n animating: PropTypes.bool,\n /**\n * The foreground color of the spinner (default is gray).\n */\n color: PropTypes.string,\n /**\n * Whether the indicator should hide when not animating (true by default).\n */\n hidesWhenStopped: PropTypes.bool,\n /**\n * Size of the indicator. Small has a height of 20, large has a height of 36.\n */\n size: PropTypes.oneOf([\n 'small',\n 'large',\n ]),\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n */\n onLayout: PropTypes.func,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n animating: true,\n color: GRAY,\n hidesWhenStopped: true,\n size: 'small',\n };\n },\n\n render: function() {\n var {onLayout, style, ...props} = this.props;\n var sizeStyle = (this.props.size === 'large') ? styles.sizeLarge : styles.sizeSmall;\n return (\n \n \n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n sizeSmall: {\n width: 20,\n height: 20,\n },\n sizeLarge: {\n width: 36,\n height: 36,\n }\n});\n\nvar RCTActivityIndicatorView = requireNativeComponent(\n 'RCTActivityIndicatorView',\n ActivityIndicatorIOS,\n {nativeOnly: {activityIndicatorViewStyle: true}},\n);\n\nmodule.exports = ActivityIndicatorIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Navigator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[213,276,320,371,438,510,571,622,657,690,730,770,809,837,872,911,954],"dependencies":["NativeModules","Dimensions","InteractionMixin","NavigationContext","NavigatorBreadcrumbNavigationBar","NavigatorNavigationBar","NavigatorSceneConfigs","PanResponder","React","StyleSheet","Subscribable","react-timer-mixin","View","clamp","flattenStyle","fbjs/lib/invariant","rebound"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js';\n\n\n\n\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 AnimationsDebugModule=require('NativeModules').AnimationsDebugModule;\nvar Dimensions=require('Dimensions');\nvar InteractionMixin=require('InteractionMixin');\nvar NavigationContext=require('NavigationContext');\nvar NavigatorBreadcrumbNavigationBar=require('NavigatorBreadcrumbNavigationBar');\nvar NavigatorNavigationBar=require('NavigatorNavigationBar');\nvar NavigatorSceneConfigs=require('NavigatorSceneConfigs');\nvar PanResponder=require('PanResponder');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Subscribable=require('Subscribable');\nvar TimerMixin=require('react-timer-mixin');\nvar View=require('View');\n\nvar clamp=require('clamp');\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('fbjs/lib/invariant');\nvar rebound=require('rebound');\n\nvar PropTypes=React.PropTypes;\n\n\n\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar SCREEN_HEIGHT=Dimensions.get('window').height;\nvar SCENE_DISABLED_NATIVE_PROPS={\npointerEvents:'none',\nstyle:{\ntop:SCREEN_HEIGHT,\nbottom:-SCREEN_HEIGHT,\nopacity:0}};\n\n\n\nvar __uid=0;\nfunction getuid(){\nreturn __uid++;}\n\n\nfunction getRouteID(route){\nif(route===null||typeof route!=='object'){\nreturn String(route);}\n\n\nvar key='__navigatorRouteID';\n\nif(!route.hasOwnProperty(key)){\nObject.defineProperty(route,key,{\nenumerable:false,\nconfigurable:false,\nwritable:false,\nvalue:getuid()});}\n\n\nreturn route[key];}\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1,\noverflow:'hidden'},\n\ndefaultSceneStyle:{\nposition:'absolute',\nleft:0,\nright:0,\nbottom:0,\ntop:0},\n\nbaseScene:{\nposition:'absolute',\noverflow:'hidden',\nleft:0,\nright:0,\nbottom:0,\ntop:0},\n\ndisabledScene:{\ntop:SCREEN_HEIGHT,\nbottom:-SCREEN_HEIGHT},\n\ntransitioner:{\nflex:1,\nbackgroundColor:'transparent',\noverflow:'hidden'}});\n\n\n\nvar GESTURE_ACTIONS=[\n'pop',\n'jumpBack',\n'jumpForward'];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 Navigator=React.createClass({displayName:'Navigator',\n\npropTypes:{\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconfigureScene:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\nrenderScene:PropTypes.func.isRequired,\n\n\n\n\n\n\n\ninitialRoute:PropTypes.object,\n\n\n\n\n\n\ninitialRouteStack:PropTypes.arrayOf(PropTypes.object),\n\n\n\n\nonWillFocus:PropTypes.func,\n\n\n\n\n\nonDidFocus:PropTypes.func,\n\n\n\n\n\n\nnavigationBar:PropTypes.node,\n\n\n\n\nnavigator:PropTypes.object,\n\n\n\n\nsceneStyle:View.propTypes.style},\n\n\nstatics:{\nBreadcrumbNavigationBar:NavigatorBreadcrumbNavigationBar,\nNavigationBar:NavigatorNavigationBar,\nSceneConfigs:NavigatorSceneConfigs},\n\n\nmixins:[TimerMixin,InteractionMixin,Subscribable.Mixin],\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\nconfigureScene:function configureScene(){return NavigatorSceneConfigs.PushFromRight;},\nsceneStyle:styles.defaultSceneStyle};},\n\n\n\ngetInitialState:function getInitialState(){var _this=this;\nthis._navigationBarNavigator=this.props.navigationBarNavigator||this;\n\nthis._renderedSceneMap=new Map();\n\nvar routeStack=this.props.initialRouteStack||[this.props.initialRoute];\ninvariant(\nrouteStack.length>=1,\n'Navigator requires props.initialRoute or props.initialRouteStack.');\n\nvar initialRouteIndex=routeStack.length-1;\nif(this.props.initialRoute){\ninitialRouteIndex=routeStack.indexOf(this.props.initialRoute);\ninvariant(\ninitialRouteIndex!==-1,\n'initialRoute is not in initialRouteStack.');}\n\n\nreturn {\nsceneConfigStack:routeStack.map(\nfunction(route){return _this.props.configureScene(route,routeStack);}),\n\nrouteStack:routeStack,\npresentedIndex:initialRouteIndex,\ntransitionFromIndex:null,\nactiveGesture:null,\npendingGestureProgress:null,\ntransitionQueue:[]};},\n\n\n\ncomponentWillMount:function componentWillMount(){var _this2=this;\n\nthis.__defineGetter__('navigationContext',this._getNavigationContext);\n\nthis._subRouteFocus=[];\nthis.parentNavigator=this.props.navigator;\nthis._handlers={};\nthis.springSystem=new rebound.SpringSystem();\nthis.spring=this.springSystem.createSpring();\nthis.spring.setRestSpeedThreshold(0.05);\nthis.spring.setCurrentValue(0).setAtRest();\nthis.spring.addListener({\nonSpringEndStateChange:function onSpringEndStateChange(){\nif(!_this2._interactionHandle){\n_this2._interactionHandle=_this2.createInteractionHandle();}},\n\n\nonSpringUpdate:function onSpringUpdate(){\n_this2._handleSpringUpdate();},\n\nonSpringAtRest:function onSpringAtRest(){\n_this2._completeTransition();}});\n\n\nthis.panGesture=PanResponder.create({\nonMoveShouldSetPanResponder:this._handleMoveShouldSetPanResponder,\nonPanResponderRelease:this._handlePanResponderRelease,\nonPanResponderMove:this._handlePanResponderMove,\nonPanResponderTerminate:this._handlePanResponderTerminate});\n\nthis._interactionHandle=null;\nthis._emitWillFocus(this.state.routeStack[this.state.presentedIndex]);},\n\n\ncomponentDidMount:function componentDidMount(){\nthis._handleSpringUpdate();\nthis._emitDidFocus(this.state.routeStack[this.state.presentedIndex]);},\n\n\ncomponentWillUnmount:function componentWillUnmount(){\nif(this._navigationContext){\nthis._navigationContext.dispose();\nthis._navigationContext=null;}\n\n\nthis.spring.destroy();\n\nif(this._interactionHandle){\nthis.clearInteractionHandle(this._interactionHandle);}},\n\n\n\n\n\n\n\n\n\n\n\n\nimmediatelyResetRouteStack:function immediatelyResetRouteStack(nextRouteStack){var _this3=this;\nvar destIndex=nextRouteStack.length-1;\nthis.setState({\nrouteStack:nextRouteStack,\nsceneConfigStack:nextRouteStack.map(\nfunction(route){return _this3.props.configureScene(route,nextRouteStack);}),\n\npresentedIndex:destIndex,\nactiveGesture:null,\ntransitionFromIndex:null,\ntransitionQueue:[]},\nfunction(){\n_this3._handleSpringUpdate();\n_this3._navBar&&_this3._navBar.immediatelyRefresh();\n_this3._emitDidFocus(_this3.state.routeStack[_this3.state.presentedIndex]);});},\n\n\n\n_transitionTo:function _transitionTo(destIndex,velocity,jumpSpringTo,cb){\nif(destIndex===this.state.presentedIndex){\nreturn;}\n\nif(this.state.transitionFromIndex!==null){\nthis.state.transitionQueue.push({\ndestIndex:destIndex,\nvelocity:velocity,\ncb:cb});\n\nreturn;}\n\nthis.state.transitionFromIndex=this.state.presentedIndex;\nthis.state.presentedIndex=destIndex;\nthis.state.transitionCb=cb;\nthis._onAnimationStart();\nif(AnimationsDebugModule){\nAnimationsDebugModule.startRecordingFps();}\n\nvar sceneConfig=this.state.sceneConfigStack[this.state.transitionFromIndex]||\nthis.state.sceneConfigStack[this.state.presentedIndex];\ninvariant(\nsceneConfig,\n'Cannot configure scene at index '+this.state.transitionFromIndex);\n\nif(jumpSpringTo!=null){\nthis.spring.setCurrentValue(jumpSpringTo);}\n\nthis.spring.setOvershootClampingEnabled(true);\nthis.spring.getSpringConfig().friction=sceneConfig.springFriction;\nthis.spring.getSpringConfig().tension=sceneConfig.springTension;\nthis.spring.setVelocity(velocity||sceneConfig.defaultTransitionVelocity);\nthis.spring.setEndValue(1);},\n\n\n\n\n\n\n_handleSpringUpdate:function _handleSpringUpdate(){\nif(!this.isMounted()){\nreturn;}\n\n\nif(this.state.transitionFromIndex!=null){\nthis._transitionBetween(\nthis.state.transitionFromIndex,\nthis.state.presentedIndex,\nthis.spring.getCurrentValue());}else \n\nif(this.state.activeGesture!=null){\nvar presentedToIndex=this.state.presentedIndex+this._deltaForGestureAction(this.state.activeGesture);\nthis._transitionBetween(\nthis.state.presentedIndex,\npresentedToIndex,\nthis.spring.getCurrentValue());}},\n\n\n\n\n\n\n\n_completeTransition:function _completeTransition(){\nif(!this.isMounted()){\nreturn;}\n\n\nif(this.spring.getCurrentValue()!==1&&this.spring.getCurrentValue()!==0){\n\n\nif(this.state.pendingGestureProgress){\nthis.state.pendingGestureProgress=null;}\n\nreturn;}\n\nthis._onAnimationEnd();\nvar presentedIndex=this.state.presentedIndex;\nvar didFocusRoute=this._subRouteFocus[presentedIndex]||this.state.routeStack[presentedIndex];\nthis._emitDidFocus(didFocusRoute);\nif(AnimationsDebugModule){\nAnimationsDebugModule.stopRecordingFps(Date.now());}\n\nthis.state.transitionFromIndex=null;\nthis.spring.setCurrentValue(0).setAtRest();\nthis._hideScenes();\nif(this.state.transitionCb){\nthis.state.transitionCb();\nthis.state.transitionCb=null;}\n\nif(this._interactionHandle){\nthis.clearInteractionHandle(this._interactionHandle);\nthis._interactionHandle=null;}\n\nif(this.state.pendingGestureProgress){\n\n\nvar gestureToIndex=this.state.presentedIndex+this._deltaForGestureAction(this.state.activeGesture);\nthis._enableScene(gestureToIndex);\nthis.spring.setEndValue(this.state.pendingGestureProgress);\nreturn;}\n\nif(this.state.transitionQueue.length){\nvar queuedTransition=this.state.transitionQueue.shift();\nthis._enableScene(queuedTransition.destIndex);\nthis._emitWillFocus(this.state.routeStack[queuedTransition.destIndex]);\nthis._transitionTo(\nqueuedTransition.destIndex,\nqueuedTransition.velocity,\nnull,\nqueuedTransition.cb);}},\n\n\n\n\n_emitDidFocus:function _emitDidFocus(route){\nthis.navigationContext.emit('didfocus',{route:route});\n\nif(this.props.onDidFocus){\nthis.props.onDidFocus(route);}},\n\n\n\n_emitWillFocus:function _emitWillFocus(route){\nthis.navigationContext.emit('willfocus',{route:route});\n\nvar navBar=this._navBar;\nif(navBar&&navBar.handleWillFocus){\nnavBar.handleWillFocus(route);}\n\nif(this.props.onWillFocus){\nthis.props.onWillFocus(route);}},\n\n\n\n\n\n\n_hideScenes:function _hideScenes(){\nvar gesturingToIndex=null;\nif(this.state.activeGesture){\ngesturingToIndex=this.state.presentedIndex+this._deltaForGestureAction(this.state.activeGesture);}\n\nfor(var i=0;i=this.state.routeStack.length-1&&\ngestureName==='jumpForward';\nreturn wouldOverswipeForward||wouldOverswipeBack;},\n\n\n_deltaForGestureAction:function _deltaForGestureAction(gestureAction){\nswitch(gestureAction){\ncase 'pop':\ncase 'jumpBack':\nreturn -1;\ncase 'jumpForward':\nreturn 1;\ndefault:\ninvariant(false,'Unsupported gesture action '+gestureAction);\nreturn;}},\n\n\n\n_handlePanResponderRelease:function _handlePanResponderRelease(e,gestureState){var _this4=this;\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nvar releaseGestureAction=this.state.activeGesture;\nif(!releaseGestureAction){\n\nreturn;}\n\nvar releaseGesture=sceneConfig.gestures[releaseGestureAction];\nvar destIndex=this.state.presentedIndex+this._deltaForGestureAction(this.state.activeGesture);\nif(this.spring.getCurrentValue()===0){\n\nthis.spring.setCurrentValue(0).setAtRest();\nthis._completeTransition();\nreturn;}\n\nvar isTravelVertical=releaseGesture.direction==='top-to-bottom'||releaseGesture.direction==='bottom-to-top';\nvar isTravelInverted=releaseGesture.direction==='right-to-left'||releaseGesture.direction==='bottom-to-top';\nvar velocity,gestureDistance;\nif(isTravelVertical){\nvelocity=isTravelInverted?-gestureState.vy:gestureState.vy;\ngestureDistance=isTravelInverted?-gestureState.dy:gestureState.dy;}else \n{\nvelocity=isTravelInverted?-gestureState.vx:gestureState.vx;\ngestureDistance=isTravelInverted?-gestureState.dx:gestureState.dx;}\n\nvar transitionVelocity=clamp(-10,velocity,10);\nif(Math.abs(velocity)releaseGesture.fullDistance*releaseGesture.stillCompletionRatio;\ntransitionVelocity=hasGesturedEnoughToComplete?releaseGesture.snapVelocity:-releaseGesture.snapVelocity;}\n\nif(transitionVelocity<0||this._doesGestureOverswipe(releaseGestureAction)){\n\n\nif(this.state.transitionFromIndex==null){\n\nvar transitionBackToPresentedIndex=this.state.presentedIndex;\n\nthis.state.presentedIndex=destIndex;\nthis._transitionTo(\ntransitionBackToPresentedIndex,\n-transitionVelocity,\n1-this.spring.getCurrentValue());}}else \n\n\n{\n\nthis._emitWillFocus(this.state.routeStack[destIndex]);\nthis._transitionTo(\ndestIndex,\ntransitionVelocity,\nnull,\nfunction(){\nif(releaseGestureAction==='pop'){\n_this4._cleanScenesPastIndex(destIndex);}});}\n\n\n\n\nthis._detachGesture();},\n\n\n_handlePanResponderTerminate:function _handlePanResponderTerminate(e,gestureState){\nif(this.state.activeGesture==null){\nreturn;}\n\nvar destIndex=this.state.presentedIndex+this._deltaForGestureAction(this.state.activeGesture);\nthis._detachGesture();\nvar transitionBackToPresentedIndex=this.state.presentedIndex;\n\nthis.state.presentedIndex=destIndex;\nthis._transitionTo(\ntransitionBackToPresentedIndex,\nnull,\n1-this.spring.getCurrentValue());},\n\n\n\n_attachGesture:function _attachGesture(gestureId){\nthis.state.activeGesture=gestureId;\nvar gesturingToIndex=this.state.presentedIndex+this._deltaForGestureAction(this.state.activeGesture);\nthis._enableScene(gesturingToIndex);},\n\n\n_detachGesture:function _detachGesture(){\nthis.state.activeGesture=null;\nthis.state.pendingGestureProgress=null;\nthis._hideScenes();},\n\n\n_handlePanResponderMove:function _handlePanResponderMove(e,gestureState){\nif(this._isMoveGestureAttached!==undefined){\ninvariant(\nthis._expectingGestureGrant,\n'Responder granted unexpectedly.');\n\nthis._attachGesture(this._expectingGestureGrant);\nthis._onAnimationStart();\nthis._expectingGestureGrant=undefined;}\n\n\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nif(this.state.activeGesture){\nvar gesture=sceneConfig.gestures[this.state.activeGesture];\nreturn this._moveAttachedGesture(gesture,gestureState);}\n\nvar matchedGesture=this._matchGestureAction(GESTURE_ACTIONS,sceneConfig.gestures,gestureState);\nif(matchedGesture){\nthis._attachGesture(matchedGesture);}},\n\n\n\n_moveAttachedGesture:function _moveAttachedGesture(gesture,gestureState){\nvar isTravelVertical=gesture.direction==='top-to-bottom'||gesture.direction==='bottom-to-top';\nvar isTravelInverted=gesture.direction==='right-to-left'||gesture.direction==='bottom-to-top';\nvar distance=isTravelVertical?gestureState.dy:gestureState.dx;\ndistance=isTravelInverted?-distance:distance;\nvar gestureDetectMovement=gesture.gestureDetectMovement;\nvar nextProgress=(distance-gestureDetectMovement)/(\ngesture.fullDistance-gestureDetectMovement);\nif(nextProgress<0&&gesture.isDetachable){\nvar gesturingToIndex=this.state.presentedIndex+this._deltaForGestureAction(this.state.activeGesture);\nthis._transitionBetween(this.state.presentedIndex,gesturingToIndex,0);\nthis._detachGesture();\nif(this.state.pendingGestureProgress!=null){\nthis.spring.setCurrentValue(0);}\n\nreturn;}\n\nif(this._doesGestureOverswipe(this.state.activeGesture)){\nvar frictionConstant=gesture.overswipe.frictionConstant;\nvar frictionByDistance=gesture.overswipe.frictionByDistance;\nvar frictionRatio=1/(frictionConstant+Math.abs(nextProgress)*frictionByDistance);\nnextProgress*=frictionRatio;}\n\nnextProgress=clamp(0,nextProgress,1);\nif(this.state.transitionFromIndex!=null){\nthis.state.pendingGestureProgress=nextProgress;}else \nif(this.state.pendingGestureProgress){\nthis.spring.setEndValue(nextProgress);}else \n{\nthis.spring.setCurrentValue(nextProgress);}},\n\n\n\n_matchGestureAction:function _matchGestureAction(eligibleGestures,gestures,gestureState){var _this5=this;\nif(!gestures||!eligibleGestures||!eligibleGestures.some){\nreturn null;}\n\nvar matchedGesture=null;\neligibleGestures.some(function(gestureName,gestureIndex){\nvar gesture=gestures[gestureName];\nif(!gesture){\nreturn;}\n\nif(gesture.overswipe==null&&_this5._doesGestureOverswipe(gestureName)){\n\nreturn false;}\n\nvar isTravelVertical=gesture.direction==='top-to-bottom'||gesture.direction==='bottom-to-top';\nvar isTravelInverted=gesture.direction==='right-to-left'||gesture.direction==='bottom-to-top';\nvar startedLoc=isTravelVertical?gestureState.y0:gestureState.x0;\nvar currentLoc=isTravelVertical?gestureState.moveY:gestureState.moveX;\nvar travelDist=isTravelVertical?gestureState.dy:gestureState.dx;\nvar oppositeAxisTravelDist=\nisTravelVertical?gestureState.dx:gestureState.dy;\nvar edgeHitWidth=gesture.edgeHitWidth;\nif(isTravelInverted){\nstartedLoc=-startedLoc;\ncurrentLoc=-currentLoc;\ntravelDist=-travelDist;\noppositeAxisTravelDist=-oppositeAxisTravelDist;\nedgeHitWidth=isTravelVertical?\n-(SCREEN_HEIGHT-edgeHitWidth):\n-(SCREEN_WIDTH-edgeHitWidth);}\n\nif(startedLoc===0){\nstartedLoc=currentLoc;}\n\nvar moveStartedInRegion=gesture.edgeHitWidth==null||\nstartedLoc=gesture.gestureDetectMovement;\nif(!moveTravelledFarEnough){\nreturn false;}\n\nvar directionIsCorrect=Math.abs(travelDist)>Math.abs(oppositeAxisTravelDist)*gesture.directionRatio;\nif(directionIsCorrect){\nmatchedGesture=gestureName;\nreturn true;}else \n{\n_this5._eligibleGestures=_this5._eligibleGestures.slice().splice(gestureIndex,1);}});\n\n\nreturn matchedGesture||null;},\n\n\n_transitionSceneStyle:function _transitionSceneStyle(fromIndex,toIndex,progress,index){\nvar viewAtIndex=this.refs['scene_'+index];\nif(viewAtIndex===null||viewAtIndex===undefined){\nreturn;}\n\n\nvar sceneConfigIndex=fromIndex=0&&fromIndex>=0){\nnavBar.updateProgress(progress,fromIndex,toIndex);}},\n\n\n\n_handleResponderTerminationRequest:function _handleResponderTerminationRequest(){\nreturn false;},\n\n\n_getDestIndexWithinBounds:function _getDestIndexWithinBounds(n){\nvar currentIndex=this.state.presentedIndex;\nvar destIndex=currentIndex+n;\ninvariant(\ndestIndex>=0,\n'Cannot jump before the first route.');\n\nvar maxIndex=this.state.routeStack.length-1;\ninvariant(\nmaxIndex>=destIndex,\n'Cannot jump past the last route.');\n\nreturn destIndex;},\n\n\n_jumpN:function _jumpN(n){\nvar destIndex=this._getDestIndexWithinBounds(n);\nthis._enableScene(destIndex);\nthis._emitWillFocus(this.state.routeStack[destIndex]);\nthis._transitionTo(destIndex);},\n\n\n\n\n\njumpTo:function jumpTo(route){\nvar destIndex=this.state.routeStack.indexOf(route);\ninvariant(\ndestIndex!==-1,\n'Cannot jump to route that is not in the route stack');\n\nthis._jumpN(destIndex-this.state.presentedIndex);},\n\n\n\n\n\njumpForward:function jumpForward(){\nthis._jumpN(1);},\n\n\n\n\n\njumpBack:function jumpBack(){\nthis._jumpN(-1);},\n\n\n\n\n\n\npush:function push(route){var _this6=this;\ninvariant(!!route,'Must supply route to push');\nvar activeLength=this.state.presentedIndex+1;\nvar activeStack=this.state.routeStack.slice(0,activeLength);\nvar activeAnimationConfigStack=this.state.sceneConfigStack.slice(0,activeLength);\nvar nextStack=activeStack.concat([route]);\nvar destIndex=nextStack.length-1;\nvar nextAnimationConfigStack=activeAnimationConfigStack.concat([\nthis.props.configureScene(route,nextStack)]);\n\nthis._emitWillFocus(nextStack[destIndex]);\nthis.setState({\nrouteStack:nextStack,\nsceneConfigStack:nextAnimationConfigStack},\nfunction(){\n_this6._enableScene(destIndex);\n_this6._transitionTo(destIndex);});},\n\n\n\n_popN:function _popN(n){var _this7=this;\nif(n===0){\nreturn;}\n\ninvariant(\nthis.state.presentedIndex-n>=0,\n'Cannot pop below zero');\n\nvar popIndex=this.state.presentedIndex-n;\nthis._enableScene(popIndex);\nthis._emitWillFocus(this.state.routeStack[popIndex]);\nthis._transitionTo(\npopIndex,\nnull,\nnull,\nfunction(){\n_this7._cleanScenesPastIndex(popIndex);});},\n\n\n\n\n\n\n\npop:function pop(){\nif(this.state.transitionQueue.length){\n\n\n\n\n\n\nreturn;}\n\n\nif(this.state.presentedIndex>0){\nthis._popN(1);}},\n\n\n\n\n\n\n\n\n\nreplaceAtIndex:function replaceAtIndex(route,index,cb){var _this8=this;\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\nvar nextRouteStack=this.state.routeStack.slice();\nvar nextAnimationModeStack=this.state.sceneConfigStack.slice();\nnextRouteStack[index]=route;\nnextAnimationModeStack[index]=this.props.configureScene(route,nextRouteStack);\n\nif(index===this.state.presentedIndex){\nthis._emitWillFocus(route);}\n\nthis.setState({\nrouteStack:nextRouteStack,\nsceneConfigStack:nextAnimationModeStack},\nfunction(){\nif(index===_this8.state.presentedIndex){\n_this8._emitDidFocus(route);}\n\ncb&&cb();});},\n\n\n\n\n\n\nreplace:function replace(route){\nthis.replaceAtIndex(route,this.state.presentedIndex);},\n\n\n\n\n\nreplacePrevious:function replacePrevious(route){\nthis.replaceAtIndex(route,this.state.presentedIndex-1);},\n\n\n\n\n\npopToTop:function popToTop(){\nthis.popToRoute(this.state.routeStack[0]);},\n\n\n\n\n\n\npopToRoute:function popToRoute(route){\nvar indexOfRoute=this.state.routeStack.indexOf(route);\ninvariant(\nindexOfRoute!==-1,\n'Calling popToRoute for a route that doesn\\'t exist!');\n\nvar numToPop=this.state.presentedIndex-indexOfRoute;\nthis._popN(numToPop);},\n\n\n\n\n\nreplacePreviousAndPop:function replacePreviousAndPop(route){\nif(this.state.routeStack.length<2){\nreturn;}\n\nthis.replacePrevious(route);\nthis.pop();},\n\n\n\n\n\nresetTo:function resetTo(route){var _this9=this;\ninvariant(!!route,'Must supply route to push');\nthis.replaceAtIndex(route,0,function(){\n\n\nif(_this9.state.presentedIndex>0){\n_this9._popN(_this9.state.presentedIndex);}});},\n\n\n\n\n\n\n\ngetCurrentRoutes:function getCurrentRoutes(){\n\nreturn this.state.routeStack.slice();},\n\n\n_cleanScenesPastIndex:function _cleanScenesPastIndex(index){\nvar newStackLength=index+1;\n\nif(newStackLength\n * {\n * var nextIndex = route.index + 1;\n * navigator.push({\n * name: 'Scene ' + nextIndex,\n * index: nextIndex,\n * });\n * }}\n * onBack={() => {\n * if (route.index > 0) {\n * navigator.pop();\n * }\n * }}\n * />\n * }\n * />\n * ```\n */\nvar Navigator = React.createClass({\n\n propTypes: {\n /**\n * Optional function that allows configuration about scene animations and\n * gestures. Will be invoked with the route and the routeStack and should\n * return a scene configuration object\n *\n * ```\n * (route, routeStack) => Navigator.SceneConfigs.FloatFromRight\n * ```\n *\n * Available options are:\n *\n * - Navigator.SceneConfigs.PushFromRight (default)\n * - Navigator.SceneConfigs.FloatFromRight\n * - Navigator.SceneConfigs.FloatFromLeft\n * - Navigator.SceneConfigs.FloatFromBottom\n * - Navigator.SceneConfigs.FloatFromBottomAndroid\n * - Navigator.SceneConfigs.FadeAndroid\n * - Navigator.SceneConfigs.HorizontalSwipeJump\n * - Navigator.SceneConfigs.HorizontalSwipeJumpFromRight\n * - Navigator.SceneConfigs.VerticalUpSwipeJump\n * - Navigator.SceneConfigs.VerticalDownSwipeJump\n *\n */\n configureScene: PropTypes.func,\n\n /**\n * Required function which renders the scene for a given route. Will be\n * invoked with the route and the navigator object\n *\n * ```\n * (route, navigator) =>\n * \n * ```\n */\n renderScene: PropTypes.func.isRequired,\n\n /**\n * Specify a route to start on. A route is an object that the navigator\n * will use to identify each scene to render. `initialRoute` must be\n * a route in the `initialRouteStack` if both props are provided. The\n * `initialRoute` will default to the last item in the `initialRouteStack`.\n */\n initialRoute: PropTypes.object,\n\n /**\n * Provide a set of routes to initially mount. Required if no initialRoute\n * is provided. Otherwise, it will default to an array containing only the\n * `initialRoute`\n */\n initialRouteStack: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * Will emit the target route upon mounting and before each nav transition\n */\n onWillFocus: PropTypes.func,\n\n /**\n * Will be called with the new route of each scene after the transition is\n * complete or after the initial mounting\n */\n onDidFocus: PropTypes.func,\n\n /**\n * Optionally provide a component as navigation bar that persists across scene\n * transitions. The component will receive two props: `navigator` and `navState`.\n * It will be rerendered when the routes change.\n */\n navigationBar: PropTypes.node,\n\n /**\n * Optionally provide the navigator object from a parent Navigator\n */\n navigator: PropTypes.object,\n\n /**\n * Styles to apply to the container of each scene\n */\n sceneStyle: View.propTypes.style,\n },\n\n statics: {\n BreadcrumbNavigationBar: NavigatorBreadcrumbNavigationBar,\n NavigationBar: NavigatorNavigationBar,\n SceneConfigs: NavigatorSceneConfigs,\n },\n\n mixins: [TimerMixin, InteractionMixin, Subscribable.Mixin],\n\n getDefaultProps: function() {\n return {\n configureScene: () => NavigatorSceneConfigs.PushFromRight,\n sceneStyle: styles.defaultSceneStyle,\n };\n },\n\n getInitialState: function() {\n this._navigationBarNavigator = this.props.navigationBarNavigator || this;\n\n this._renderedSceneMap = new Map();\n\n var routeStack = this.props.initialRouteStack || [this.props.initialRoute];\n invariant(\n routeStack.length >= 1,\n 'Navigator requires props.initialRoute or props.initialRouteStack.'\n );\n var initialRouteIndex = routeStack.length - 1;\n if (this.props.initialRoute) {\n initialRouteIndex = routeStack.indexOf(this.props.initialRoute);\n invariant(\n initialRouteIndex !== -1,\n 'initialRoute is not in initialRouteStack.'\n );\n }\n return {\n sceneConfigStack: routeStack.map(\n (route) => this.props.configureScene(route, routeStack)\n ),\n routeStack,\n presentedIndex: initialRouteIndex,\n transitionFromIndex: null,\n activeGesture: null,\n pendingGestureProgress: null,\n transitionQueue: [],\n };\n },\n\n componentWillMount: function() {\n // TODO(t7489503): Don't need this once ES6 Class landed.\n this.__defineGetter__('navigationContext', this._getNavigationContext);\n\n this._subRouteFocus = [];\n this.parentNavigator = this.props.navigator;\n this._handlers = {};\n this.springSystem = new rebound.SpringSystem();\n this.spring = this.springSystem.createSpring();\n this.spring.setRestSpeedThreshold(0.05);\n this.spring.setCurrentValue(0).setAtRest();\n this.spring.addListener({\n onSpringEndStateChange: () => {\n if (!this._interactionHandle) {\n this._interactionHandle = this.createInteractionHandle();\n }\n },\n onSpringUpdate: () => {\n this._handleSpringUpdate();\n },\n onSpringAtRest: () => {\n this._completeTransition();\n },\n });\n this.panGesture = PanResponder.create({\n onMoveShouldSetPanResponder: this._handleMoveShouldSetPanResponder,\n onPanResponderRelease: this._handlePanResponderRelease,\n onPanResponderMove: this._handlePanResponderMove,\n onPanResponderTerminate: this._handlePanResponderTerminate,\n });\n this._interactionHandle = null;\n this._emitWillFocus(this.state.routeStack[this.state.presentedIndex]);\n },\n\n componentDidMount: function() {\n this._handleSpringUpdate();\n this._emitDidFocus(this.state.routeStack[this.state.presentedIndex]);\n },\n\n componentWillUnmount: function() {\n if (this._navigationContext) {\n this._navigationContext.dispose();\n this._navigationContext = null;\n }\n\n this.spring.destroy();\n\n if (this._interactionHandle) {\n this.clearInteractionHandle(this._interactionHandle);\n }\n },\n\n /**\n * Reset every scene with an array of routes.\n *\n * @param {RouteStack} nextRouteStack Next route stack to reinitialize. This\n * doesn't accept stack item `id`s, which implies that all existing items are\n * destroyed, and then potentially recreated according to `routeStack`. Does\n * not animate, immediately replaces and rerenders navigation bar and stack\n * items.\n */\n immediatelyResetRouteStack: function(nextRouteStack) {\n var destIndex = nextRouteStack.length - 1;\n this.setState({\n routeStack: nextRouteStack,\n sceneConfigStack: nextRouteStack.map(\n route => this.props.configureScene(route, nextRouteStack)\n ),\n presentedIndex: destIndex,\n activeGesture: null,\n transitionFromIndex: null,\n transitionQueue: [],\n }, () => {\n this._handleSpringUpdate();\n this._navBar && this._navBar.immediatelyRefresh();\n this._emitDidFocus(this.state.routeStack[this.state.presentedIndex]);\n });\n },\n\n _transitionTo: function(destIndex, velocity, jumpSpringTo, cb) {\n if (destIndex === this.state.presentedIndex) {\n return;\n }\n if (this.state.transitionFromIndex !== null) {\n this.state.transitionQueue.push({\n destIndex,\n velocity,\n cb,\n });\n return;\n }\n this.state.transitionFromIndex = this.state.presentedIndex;\n this.state.presentedIndex = destIndex;\n this.state.transitionCb = cb;\n this._onAnimationStart();\n if (AnimationsDebugModule) {\n AnimationsDebugModule.startRecordingFps();\n }\n var sceneConfig = this.state.sceneConfigStack[this.state.transitionFromIndex] ||\n this.state.sceneConfigStack[this.state.presentedIndex];\n invariant(\n sceneConfig,\n 'Cannot configure scene at index ' + this.state.transitionFromIndex\n );\n if (jumpSpringTo != null) {\n this.spring.setCurrentValue(jumpSpringTo);\n }\n this.spring.setOvershootClampingEnabled(true);\n this.spring.getSpringConfig().friction = sceneConfig.springFriction;\n this.spring.getSpringConfig().tension = sceneConfig.springTension;\n this.spring.setVelocity(velocity || sceneConfig.defaultTransitionVelocity);\n this.spring.setEndValue(1);\n },\n\n /**\n * This happens for each frame of either a gesture or a transition. If both are\n * happening, we only set values for the transition and the gesture will catch up later\n */\n _handleSpringUpdate: function() {\n if (!this.isMounted()) {\n return;\n }\n // Prioritize handling transition in progress over a gesture:\n if (this.state.transitionFromIndex != null) {\n this._transitionBetween(\n this.state.transitionFromIndex,\n this.state.presentedIndex,\n this.spring.getCurrentValue()\n );\n } else if (this.state.activeGesture != null) {\n var presentedToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._transitionBetween(\n this.state.presentedIndex,\n presentedToIndex,\n this.spring.getCurrentValue()\n );\n }\n },\n\n /**\n * This happens at the end of a transition started by transitionTo, and when the spring catches up to a pending gesture\n */\n _completeTransition: function() {\n if (!this.isMounted()) {\n return;\n }\n\n if (this.spring.getCurrentValue() !== 1 && this.spring.getCurrentValue() !== 0) {\n // The spring has finished catching up to a gesture in progress. Remove the pending progress\n // and we will be in a normal activeGesture state\n if (this.state.pendingGestureProgress) {\n this.state.pendingGestureProgress = null;\n }\n return;\n }\n this._onAnimationEnd();\n var presentedIndex = this.state.presentedIndex;\n var didFocusRoute = this._subRouteFocus[presentedIndex] || this.state.routeStack[presentedIndex];\n this._emitDidFocus(didFocusRoute);\n if (AnimationsDebugModule) {\n AnimationsDebugModule.stopRecordingFps(Date.now());\n }\n this.state.transitionFromIndex = null;\n this.spring.setCurrentValue(0).setAtRest();\n this._hideScenes();\n if (this.state.transitionCb) {\n this.state.transitionCb();\n this.state.transitionCb = null;\n }\n if (this._interactionHandle) {\n this.clearInteractionHandle(this._interactionHandle);\n this._interactionHandle = null;\n }\n if (this.state.pendingGestureProgress) {\n // A transition completed, but there is already another gesture happening.\n // Enable the scene and set the spring to catch up with the new gesture\n var gestureToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._enableScene(gestureToIndex);\n this.spring.setEndValue(this.state.pendingGestureProgress);\n return;\n }\n if (this.state.transitionQueue.length) {\n var queuedTransition = this.state.transitionQueue.shift();\n this._enableScene(queuedTransition.destIndex);\n this._emitWillFocus(this.state.routeStack[queuedTransition.destIndex]);\n this._transitionTo(\n queuedTransition.destIndex,\n queuedTransition.velocity,\n null,\n queuedTransition.cb\n );\n }\n },\n\n _emitDidFocus: function(route) {\n this.navigationContext.emit('didfocus', {route: route});\n\n if (this.props.onDidFocus) {\n this.props.onDidFocus(route);\n }\n },\n\n _emitWillFocus: function(route) {\n this.navigationContext.emit('willfocus', {route: route});\n\n var navBar = this._navBar;\n if (navBar && navBar.handleWillFocus) {\n navBar.handleWillFocus(route);\n }\n if (this.props.onWillFocus) {\n this.props.onWillFocus(route);\n }\n },\n\n /**\n * Hides all scenes that we are not currently on, gesturing to, or transitioning from\n */\n _hideScenes: function() {\n var gesturingToIndex = null;\n if (this.state.activeGesture) {\n gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n }\n for (var i = 0; i < this.state.routeStack.length; i++) {\n if (i === this.state.presentedIndex ||\n i === this.state.transitionFromIndex ||\n i === gesturingToIndex) {\n continue;\n }\n this._disableScene(i);\n }\n },\n\n /**\n * Push a scene off the screen, so that opacity:0 scenes will not block touches sent to the presented scenes\n */\n _disableScene: function(sceneIndex) {\n this.refs['scene_' + sceneIndex] &&\n this.refs['scene_' + sceneIndex].setNativeProps(SCENE_DISABLED_NATIVE_PROPS);\n },\n\n /**\n * Put the scene back into the state as defined by props.sceneStyle, so transitions can happen normally\n */\n _enableScene: function(sceneIndex) {\n // First, determine what the defined styles are for scenes in this navigator\n var sceneStyle = flattenStyle([styles.baseScene, this.props.sceneStyle]);\n // Then restore the pointer events and top value for this scene\n var enabledSceneNativeProps = {\n pointerEvents: 'auto',\n style: {\n top: sceneStyle.top,\n bottom: sceneStyle.bottom,\n },\n };\n if (sceneIndex !== this.state.transitionFromIndex &&\n sceneIndex !== this.state.presentedIndex) {\n // If we are not in a transition from this index, make sure opacity is 0\n // to prevent the enabled scene from flashing over the presented scene\n enabledSceneNativeProps.style.opacity = 0;\n }\n this.refs['scene_' + sceneIndex] &&\n this.refs['scene_' + sceneIndex].setNativeProps(enabledSceneNativeProps);\n },\n\n _onAnimationStart: function() {\n var fromIndex = this.state.presentedIndex;\n var toIndex = this.state.presentedIndex;\n if (this.state.transitionFromIndex != null) {\n fromIndex = this.state.transitionFromIndex;\n } else if (this.state.activeGesture) {\n toIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n }\n this._setRenderSceneToHardwareTextureAndroid(fromIndex, true);\n this._setRenderSceneToHardwareTextureAndroid(toIndex, true);\n var navBar = this._navBar;\n if (navBar && navBar.onAnimationStart) {\n navBar.onAnimationStart(fromIndex, toIndex);\n }\n },\n\n _onAnimationEnd: function() {\n var max = this.state.routeStack.length - 1;\n for (var index = 0; index <= max; index++) {\n this._setRenderSceneToHardwareTextureAndroid(index, false);\n }\n\n var navBar = this._navBar;\n if (navBar && navBar.onAnimationEnd) {\n navBar.onAnimationEnd();\n }\n },\n\n _setRenderSceneToHardwareTextureAndroid: function(sceneIndex, shouldRenderToHardwareTexture) {\n var viewAtIndex = this.refs['scene_' + sceneIndex];\n if (viewAtIndex === null || viewAtIndex === undefined) {\n return;\n }\n viewAtIndex.setNativeProps({renderToHardwareTextureAndroid: shouldRenderToHardwareTexture});\n },\n\n _handleTouchStart: function() {\n this._eligibleGestures = GESTURE_ACTIONS;\n },\n\n _handleMoveShouldSetPanResponder: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n if (!sceneConfig) {\n return false;\n }\n this._expectingGestureGrant =\n this._matchGestureAction(this._eligibleGestures, sceneConfig.gestures, gestureState);\n return !!this._expectingGestureGrant;\n },\n\n _doesGestureOverswipe: function(gestureName) {\n var wouldOverswipeBack = this.state.presentedIndex <= 0 &&\n (gestureName === 'pop' || gestureName === 'jumpBack');\n var wouldOverswipeForward = this.state.presentedIndex >= this.state.routeStack.length - 1 &&\n gestureName === 'jumpForward';\n return wouldOverswipeForward || wouldOverswipeBack;\n },\n\n _deltaForGestureAction: function(gestureAction) {\n switch (gestureAction) {\n case 'pop':\n case 'jumpBack':\n return -1;\n case 'jumpForward':\n return 1;\n default:\n invariant(false, 'Unsupported gesture action ' + gestureAction);\n return;\n }\n },\n\n _handlePanResponderRelease: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n var releaseGestureAction = this.state.activeGesture;\n if (!releaseGestureAction) {\n // The gesture may have been detached while responder, so there is no action here\n return;\n }\n var releaseGesture = sceneConfig.gestures[releaseGestureAction];\n var destIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n if (this.spring.getCurrentValue() === 0) {\n // The spring is at zero, so the gesture is already complete\n this.spring.setCurrentValue(0).setAtRest();\n this._completeTransition();\n return;\n }\n var isTravelVertical = releaseGesture.direction === 'top-to-bottom' || releaseGesture.direction === 'bottom-to-top';\n var isTravelInverted = releaseGesture.direction === 'right-to-left' || releaseGesture.direction === 'bottom-to-top';\n var velocity, gestureDistance;\n if (isTravelVertical) {\n velocity = isTravelInverted ? -gestureState.vy : gestureState.vy;\n gestureDistance = isTravelInverted ? -gestureState.dy : gestureState.dy;\n } else {\n velocity = isTravelInverted ? -gestureState.vx : gestureState.vx;\n gestureDistance = isTravelInverted ? -gestureState.dx : gestureState.dx;\n }\n var transitionVelocity = clamp(-10, velocity, 10);\n if (Math.abs(velocity) < releaseGesture.notMoving) {\n // The gesture velocity is so slow, is \"not moving\"\n var hasGesturedEnoughToComplete = gestureDistance > releaseGesture.fullDistance * releaseGesture.stillCompletionRatio;\n transitionVelocity = hasGesturedEnoughToComplete ? releaseGesture.snapVelocity : -releaseGesture.snapVelocity;\n }\n if (transitionVelocity < 0 || this._doesGestureOverswipe(releaseGestureAction)) {\n // This gesture is to an overswiped region or does not have enough velocity to complete\n // If we are currently mid-transition, then this gesture was a pending gesture. Because this gesture takes no action, we can stop here\n if (this.state.transitionFromIndex == null) {\n // There is no current transition, so we need to transition back to the presented index\n var transitionBackToPresentedIndex = this.state.presentedIndex;\n // slight hack: change the presented index for a moment in order to transitionTo correctly\n this.state.presentedIndex = destIndex;\n this._transitionTo(\n transitionBackToPresentedIndex,\n -transitionVelocity,\n 1 - this.spring.getCurrentValue()\n );\n }\n } else {\n // The gesture has enough velocity to complete, so we transition to the gesture's destination\n this._emitWillFocus(this.state.routeStack[destIndex]);\n this._transitionTo(\n destIndex,\n transitionVelocity,\n null,\n () => {\n if (releaseGestureAction === 'pop') {\n this._cleanScenesPastIndex(destIndex);\n }\n }\n );\n }\n this._detachGesture();\n },\n\n _handlePanResponderTerminate: function(e, gestureState) {\n if (this.state.activeGesture == null) {\n return;\n }\n var destIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._detachGesture();\n var transitionBackToPresentedIndex = this.state.presentedIndex;\n // slight hack: change the presented index for a moment in order to transitionTo correctly\n this.state.presentedIndex = destIndex;\n this._transitionTo(\n transitionBackToPresentedIndex,\n null,\n 1 - this.spring.getCurrentValue()\n );\n },\n\n _attachGesture: function(gestureId) {\n this.state.activeGesture = gestureId;\n var gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._enableScene(gesturingToIndex);\n },\n\n _detachGesture: function() {\n this.state.activeGesture = null;\n this.state.pendingGestureProgress = null;\n this._hideScenes();\n },\n\n _handlePanResponderMove: function(e, gestureState) {\n if (this._isMoveGestureAttached !== undefined) {\n invariant(\n this._expectingGestureGrant,\n 'Responder granted unexpectedly.'\n );\n this._attachGesture(this._expectingGestureGrant);\n this._onAnimationStart();\n this._expectingGestureGrant = undefined;\n }\n\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n if (this.state.activeGesture) {\n var gesture = sceneConfig.gestures[this.state.activeGesture];\n return this._moveAttachedGesture(gesture, gestureState);\n }\n var matchedGesture = this._matchGestureAction(GESTURE_ACTIONS, sceneConfig.gestures, gestureState);\n if (matchedGesture) {\n this._attachGesture(matchedGesture);\n }\n },\n\n _moveAttachedGesture: function(gesture, gestureState) {\n var isTravelVertical = gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\n var isTravelInverted = gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\n var distance = isTravelVertical ? gestureState.dy : gestureState.dx;\n distance = isTravelInverted ? -distance : distance;\n var gestureDetectMovement = gesture.gestureDetectMovement;\n var nextProgress = (distance - gestureDetectMovement) /\n (gesture.fullDistance - gestureDetectMovement);\n if (nextProgress < 0 && gesture.isDetachable) {\n var gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._transitionBetween(this.state.presentedIndex, gesturingToIndex, 0);\n this._detachGesture();\n if (this.state.pendingGestureProgress != null) {\n this.spring.setCurrentValue(0);\n }\n return;\n }\n if (this._doesGestureOverswipe(this.state.activeGesture)) {\n var frictionConstant = gesture.overswipe.frictionConstant;\n var frictionByDistance = gesture.overswipe.frictionByDistance;\n var frictionRatio = 1 / ((frictionConstant) + (Math.abs(nextProgress) * frictionByDistance));\n nextProgress *= frictionRatio;\n }\n nextProgress = clamp(0, nextProgress, 1);\n if (this.state.transitionFromIndex != null) {\n this.state.pendingGestureProgress = nextProgress;\n } else if (this.state.pendingGestureProgress) {\n this.spring.setEndValue(nextProgress);\n } else {\n this.spring.setCurrentValue(nextProgress);\n }\n },\n\n _matchGestureAction: function(eligibleGestures, gestures, gestureState) {\n if (!gestures || !eligibleGestures || !eligibleGestures.some) {\n return null;\n }\n var matchedGesture = null;\n eligibleGestures.some((gestureName, gestureIndex) => {\n var gesture = gestures[gestureName];\n if (!gesture) {\n return;\n }\n if (gesture.overswipe == null && this._doesGestureOverswipe(gestureName)) {\n // cannot swipe past first or last scene without overswiping\n return false;\n }\n var isTravelVertical = gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\n var isTravelInverted = gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\n var startedLoc = isTravelVertical ? gestureState.y0 : gestureState.x0;\n var currentLoc = isTravelVertical ? gestureState.moveY : gestureState.moveX;\n var travelDist = isTravelVertical ? gestureState.dy : gestureState.dx;\n var oppositeAxisTravelDist =\n isTravelVertical ? gestureState.dx : gestureState.dy;\n var edgeHitWidth = gesture.edgeHitWidth;\n if (isTravelInverted) {\n startedLoc = -startedLoc;\n currentLoc = -currentLoc;\n travelDist = -travelDist;\n oppositeAxisTravelDist = -oppositeAxisTravelDist;\n edgeHitWidth = isTravelVertical ?\n -(SCREEN_HEIGHT - edgeHitWidth) :\n -(SCREEN_WIDTH - edgeHitWidth);\n }\n if (startedLoc === 0) {\n startedLoc = currentLoc;\n }\n var moveStartedInRegion = gesture.edgeHitWidth == null ||\n startedLoc < edgeHitWidth;\n if (!moveStartedInRegion) {\n return false;\n }\n var moveTravelledFarEnough = travelDist >= gesture.gestureDetectMovement;\n if (!moveTravelledFarEnough) {\n return false;\n }\n var directionIsCorrect = Math.abs(travelDist) > Math.abs(oppositeAxisTravelDist) * gesture.directionRatio;\n if (directionIsCorrect) {\n matchedGesture = gestureName;\n return true;\n } else {\n this._eligibleGestures = this._eligibleGestures.slice().splice(gestureIndex, 1);\n }\n });\n return matchedGesture || null;\n },\n\n _transitionSceneStyle: function(fromIndex, toIndex, progress, index) {\n var viewAtIndex = this.refs['scene_' + index];\n if (viewAtIndex === null || viewAtIndex === undefined) {\n return;\n }\n // Use toIndex animation when we move forwards. Use fromIndex when we move back\n var sceneConfigIndex = fromIndex < toIndex ? toIndex : fromIndex;\n var sceneConfig = this.state.sceneConfigStack[sceneConfigIndex];\n // this happens for overswiping when there is no scene at toIndex\n if (!sceneConfig) {\n sceneConfig = this.state.sceneConfigStack[sceneConfigIndex - 1];\n }\n var styleToUse = {};\n var useFn = index < fromIndex || index < toIndex ?\n sceneConfig.animationInterpolators.out :\n sceneConfig.animationInterpolators.into;\n var directionAdjustedProgress = fromIndex < toIndex ? progress : 1 - progress;\n var didChange = useFn(styleToUse, directionAdjustedProgress);\n if (didChange) {\n viewAtIndex.setNativeProps({style: styleToUse});\n }\n },\n\n _transitionBetween: function(fromIndex, toIndex, progress) {\n this._transitionSceneStyle(fromIndex, toIndex, progress, fromIndex);\n this._transitionSceneStyle(fromIndex, toIndex, progress, toIndex);\n var navBar = this._navBar;\n if (navBar && navBar.updateProgress && toIndex >= 0 && fromIndex >= 0) {\n navBar.updateProgress(progress, fromIndex, toIndex);\n }\n },\n\n _handleResponderTerminationRequest: function() {\n return false;\n },\n\n _getDestIndexWithinBounds: function(n) {\n var currentIndex = this.state.presentedIndex;\n var destIndex = currentIndex + n;\n invariant(\n destIndex >= 0,\n 'Cannot jump before the first route.'\n );\n var maxIndex = this.state.routeStack.length - 1;\n invariant(\n maxIndex >= destIndex,\n 'Cannot jump past the last route.'\n );\n return destIndex;\n },\n\n _jumpN: function(n) {\n var destIndex = this._getDestIndexWithinBounds(n);\n this._enableScene(destIndex);\n this._emitWillFocus(this.state.routeStack[destIndex]);\n this._transitionTo(destIndex);\n },\n\n /**\n * Transition to an existing scene without unmounting\n */\n jumpTo: function(route) {\n var destIndex = this.state.routeStack.indexOf(route);\n invariant(\n destIndex !== -1,\n 'Cannot jump to route that is not in the route stack'\n );\n this._jumpN(destIndex - this.state.presentedIndex);\n },\n\n /**\n * Jump forward to the next scene in the route stack.\n */\n jumpForward: function() {\n this._jumpN(1);\n },\n\n /**\n * Jump backward without unmounting the current scene.\n */\n jumpBack: function() {\n this._jumpN(-1);\n },\n\n /**\n * Navigate forward to a new scene, squashing any scenes that you could\n * `jumpForward` to.\n */\n push: function(route) {\n invariant(!!route, 'Must supply route to push');\n var activeLength = this.state.presentedIndex + 1;\n var activeStack = this.state.routeStack.slice(0, activeLength);\n var activeAnimationConfigStack = this.state.sceneConfigStack.slice(0, activeLength);\n var nextStack = activeStack.concat([route]);\n var destIndex = nextStack.length - 1;\n var nextAnimationConfigStack = activeAnimationConfigStack.concat([\n this.props.configureScene(route, nextStack),\n ]);\n this._emitWillFocus(nextStack[destIndex]);\n this.setState({\n routeStack: nextStack,\n sceneConfigStack: nextAnimationConfigStack,\n }, () => {\n this._enableScene(destIndex);\n this._transitionTo(destIndex);\n });\n },\n\n _popN: function(n) {\n if (n === 0) {\n return;\n }\n invariant(\n this.state.presentedIndex - n >= 0,\n 'Cannot pop below zero'\n );\n var popIndex = this.state.presentedIndex - n;\n this._enableScene(popIndex);\n this._emitWillFocus(this.state.routeStack[popIndex]);\n this._transitionTo(\n popIndex,\n null, // default velocity\n null, // no spring jumping\n () => {\n this._cleanScenesPastIndex(popIndex);\n }\n );\n },\n\n /**\n * Transition back and unmount the current scene.\n */\n pop: function() {\n if (this.state.transitionQueue.length) {\n // This is the workaround to prevent user from firing multiple `pop()`\n // calls that may pop the routes beyond the limit.\n // Because `this.state.presentedIndex` does not update until the\n // transition starts, we can't reliably use `this.state.presentedIndex`\n // to know whether we can safely keep popping the routes or not at this\n // moment.\n return;\n }\n\n if (this.state.presentedIndex > 0) {\n this._popN(1);\n }\n },\n\n /**\n * Replace a scene as specified by an index\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, index, cb) {\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 var nextRouteStack = this.state.routeStack.slice();\n var nextAnimationModeStack = this.state.sceneConfigStack.slice();\n nextRouteStack[index] = route;\n nextAnimationModeStack[index] = this.props.configureScene(route, nextRouteStack);\n\n if (index === this.state.presentedIndex) {\n this._emitWillFocus(route);\n }\n this.setState({\n routeStack: nextRouteStack,\n sceneConfigStack: nextAnimationModeStack,\n }, () => {\n if (index === this.state.presentedIndex) {\n this._emitDidFocus(route);\n }\n cb && cb();\n });\n },\n\n /**\n * Replace the current scene with a new route.\n */\n replace: function(route) {\n this.replaceAtIndex(route, this.state.presentedIndex);\n },\n\n /**\n * Replace the previous scene.\n */\n replacePrevious: function(route) {\n this.replaceAtIndex(route, this.state.presentedIndex - 1);\n },\n\n /**\n * Pop to the first scene in the stack, unmounting every other scene.\n */\n popToTop: function() {\n this.popToRoute(this.state.routeStack[0]);\n },\n\n /**\n * Pop to a particular scene, as specified by its route.\n * All scenes after it will be unmounted.\n */\n popToRoute: function(route) {\n var indexOfRoute = this.state.routeStack.indexOf(route);\n invariant(\n indexOfRoute !== -1,\n 'Calling popToRoute for a route that doesn\\'t exist!'\n );\n var numToPop = this.state.presentedIndex - indexOfRoute;\n this._popN(numToPop);\n },\n\n /**\n * Replace the previous scene and pop to it.\n */\n replacePreviousAndPop: function(route) {\n if (this.state.routeStack.length < 2) {\n return;\n }\n this.replacePrevious(route);\n this.pop();\n },\n\n /**\n * Navigate to a new scene and reset route stack.\n */\n resetTo: function(route) {\n invariant(!!route, 'Must supply route to push');\n this.replaceAtIndex(route, 0, () => {\n // Do not use popToRoute here, because race conditions could prevent the\n // route from existing at this time. Instead, just go to index 0\n if (this.state.presentedIndex > 0) {\n this._popN(this.state.presentedIndex);\n }\n });\n },\n\n /**\n * Returns the current list of routes.\n */\n getCurrentRoutes: function() {\n // Clone before returning to avoid caller mutating the stack\n return this.state.routeStack.slice();\n },\n\n _cleanScenesPastIndex: function(index) {\n var newStackLength = index + 1;\n // Remove any unneeded rendered routes.\n if (newStackLength < this.state.routeStack.length) {\n this.setState({\n sceneConfigStack: this.state.sceneConfigStack.slice(0, newStackLength),\n routeStack: this.state.routeStack.slice(0, newStackLength),\n });\n }\n },\n\n _renderScene: function(route, i) {\n var disabledSceneStyle = null;\n var disabledScenePointerEvents = 'auto';\n if (i !== this.state.presentedIndex) {\n disabledSceneStyle = styles.disabledScene;\n disabledScenePointerEvents = 'none';\n }\n return (\n {\n return (this.state.transitionFromIndex != null) || (this.state.transitionFromIndex != null);\n }}\n pointerEvents={disabledScenePointerEvents}\n style={[styles.baseScene, this.props.sceneStyle, disabledSceneStyle]}>\n {this.props.renderScene(\n route,\n this\n )}\n \n );\n },\n\n _renderNavigationBar: function() {\n let { navigationBar } = this.props;\n if (!navigationBar) {\n return null;\n }\n return React.cloneElement(navigationBar, {\n ref: (navBar) => {\n this._navBar = navBar;\n if (navigationBar && typeof navigationBar.ref === 'function') {\n navigationBar.ref(navBar);\n }\n },\n navigator: this._navigationBarNavigator,\n navState: this.state,\n });\n },\n\n render: function() {\n var newRenderedSceneMap = new Map();\n var scenes = this.state.routeStack.map((route, index) => {\n var renderedScene;\n if (this._renderedSceneMap.has(route) &&\n index !== this.state.presentedIndex) {\n renderedScene = this._renderedSceneMap.get(route);\n } else {\n renderedScene = this._renderScene(route, index);\n }\n newRenderedSceneMap.set(route, renderedScene);\n return renderedScene;\n });\n this._renderedSceneMap = newRenderedSceneMap;\n return (\n \n \n {scenes}\n \n {this._renderNavigationBar()}\n \n );\n },\n\n _getNavigationContext: function() {\n if (!this._navigationContext) {\n this._navigationContext = new NavigationContext();\n }\n return this._navigationContext;\n }\n});\n\nmodule.exports = Navigator;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorBreadcrumbNavigationBar","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[252,343,427,484,515,548,580,611,664,695],"dependencies":["NavigatorBreadcrumbNavigationBarStyles","NavigatorNavigationBarStylesAndroid","NavigatorNavigationBarStylesIOS","Platform","React","StyleSheet","View","immutable","guid","fbjs/lib/invariant"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js';\n\n\n\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 NavigatorBreadcrumbNavigationBarStyles=require('NavigatorBreadcrumbNavigationBarStyles');\nvar NavigatorNavigationBarStylesAndroid=require('NavigatorNavigationBarStylesAndroid');\nvar NavigatorNavigationBarStylesIOS=require('NavigatorNavigationBarStylesIOS');\nvar Platform=require('Platform');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');var _require=\n\nrequire('immutable');var Map=_require.Map;\n\nvar guid=require('guid');\nvar invariant=require('fbjs/lib/invariant');\n\nvar Interpolators=NavigatorBreadcrumbNavigationBarStyles.Interpolators;\nvar NavigatorNavigationBarStyles=Platform.OS==='android'?\nNavigatorNavigationBarStylesAndroid:NavigatorNavigationBarStylesIOS;\nvar PropTypes=React.PropTypes;\n\n\n\n\nvar CRUMB_PROPS=Interpolators.map(function(){return {style:{}};});\nvar ICON_PROPS=Interpolators.map(function(){return {style:{}};});\nvar SEPARATOR_PROPS=Interpolators.map(function(){return {style:{}};});\nvar TITLE_PROPS=Interpolators.map(function(){return {style:{}};});\nvar RIGHT_BUTTON_PROPS=Interpolators.map(function(){return {style:{}};});\n\n\nvar navStatePresentedIndex=function navStatePresentedIndex(navState){\nif(navState.presentedIndex!==undefined){\nreturn navState.presentedIndex;}\n\n\nreturn navState.observedTopOfStack;};\n\n\n\n\n\n\n\n\n\n\nvar initStyle=function initStyle(index,presentedIndex){\nreturn index===presentedIndex?NavigatorBreadcrumbNavigationBarStyles.Center[index]:\nindexfromIndex?progress:1-progress;\nvar oldDistToCenter=index-fromIndex;\nvar newDistToCenter=index-toIndex;\nvar interpolate;\ninvariant(\nInterpolators[index],\n'Cannot find breadcrumb interpolators for '+index);\n\nif(oldDistToCenter>0&&newDistToCenter===0||\nnewDistToCenter>0&&oldDistToCenter===0){\ninterpolate=Interpolators[index].RightToCenter;}else \nif(oldDistToCenter<0&&newDistToCenter===0||\nnewDistToCenter<0&&oldDistToCenter===0){\ninterpolate=Interpolators[index].CenterToLeft;}else \nif(oldDistToCenter===newDistToCenter){\ninterpolate=Interpolators[index].RightToCenter;}else \n{\ninterpolate=Interpolators[index].RightToLeft;}\n\n\nif(interpolate.Crumb(CRUMB_PROPS[index].style,amount)){\nthis._setPropsIfExists('crumb_'+index,CRUMB_PROPS[index]);}\n\nif(interpolate.Icon(ICON_PROPS[index].style,amount)){\nthis._setPropsIfExists('icon_'+index,ICON_PROPS[index]);}\n\nif(interpolate.Separator(SEPARATOR_PROPS[index].style,amount)){\nthis._setPropsIfExists('separator_'+index,SEPARATOR_PROPS[index]);}\n\nif(interpolate.Title(TITLE_PROPS[index].style,amount)){\nthis._setPropsIfExists('title_'+index,TITLE_PROPS[index]);}\n\nvar right=this.refs['right_'+index];\n\nvar rightButtonStyle=RIGHT_BUTTON_PROPS[index].style;\nif(right&&interpolate.RightItem(rightButtonStyle,amount)){\nright.setNativeProps({\nstyle:rightButtonStyle,\npointerEvents:rightButtonStyle.opacity===0?'none':'auto'});}},\n\n\n\n\nupdateProgress:function updateProgress(progress,fromIndex,toIndex){\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index<=max;index++){\nthis._updateIndexProgress(progress,index,fromIndex,toIndex);}},\n\n\n\nonAnimationStart:function onAnimationStart(fromIndex,toIndex){\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index<=max;index++){\nthis._setRenderViewsToHardwareTextureAndroid(index,true);}},\n\n\n\nonAnimationEnd:function onAnimationEnd(){\nvar max=this.props.navState.routeStack.length-1;\nfor(var index=0;index<=max;index++){\nthis._setRenderViewsToHardwareTextureAndroid(index,false);}},\n\n\n\n_setRenderViewsToHardwareTextureAndroid:function _setRenderViewsToHardwareTextureAndroid(index,renderToHardwareTexture){\nvar props={\nrenderToHardwareTextureAndroid:renderToHardwareTexture};\n\n\nthis._setPropsIfExists('icon_'+index,props);\nthis._setPropsIfExists('separator_'+index,props);\nthis._setPropsIfExists('title_'+index,props);\nthis._setPropsIfExists('right_'+index,props);},\n\n\ncomponentWillMount:function componentWillMount(){\nthis._reset();},\n\n\nrender:function render(){\nvar navState=this.props.navState;\nvar icons=navState&&navState.routeStack.map(this._getBreadcrumb);\nvar titles=navState.routeStack.map(this._getTitle);\nvar buttons=navState.routeStack.map(this._getRightButton);\nreturn (\nReact.createElement(View,{\nkey:this._key,\nstyle:[styles.breadCrumbContainer,this.props.style],__source:{fileName:_jsxFileName,lineNumber:192}},\ntitles,\nicons,\nbuttons));},\n\n\n\n\nimmediatelyRefresh:function immediatelyRefresh(){\nthis._reset();\nthis.forceUpdate();},\n\n\n_reset:function _reset(){\nthis._key=guid();\nthis._descriptors={\ncrumb:new Map(),\ntitle:new Map(),\nright:new Map()};},\n\n\n\n_getBreadcrumb:function _getBreadcrumb(route,index){\nif(this._descriptors.crumb.has(route)){\nreturn this._descriptors.crumb.get(route);}\n\n\nvar navBarRouteMapper=this.props.routeMapper;\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\n\nvar breadcrumbDescriptor=\nReact.createElement(View,{\nkey:'crumb_'+index,\nref:'crumb_'+index,\nstyle:firstStyles.Crumb,__source:{fileName:_jsxFileName,lineNumber:225}},\nReact.createElement(View,{ref:'icon_'+index,style:firstStyles.Icon,__source:{fileName:_jsxFileName,lineNumber:229}},\nnavBarRouteMapper.iconForRoute(route,this.props.navigator)),\n\nReact.createElement(View,{ref:'separator_'+index,style:firstStyles.Separator,__source:{fileName:_jsxFileName,lineNumber:232}},\nnavBarRouteMapper.separatorForRoute(route,this.props.navigator)));\n\n\n\n\nthis._descriptors.crumb=this._descriptors.crumb.set(route,breadcrumbDescriptor);\nreturn breadcrumbDescriptor;},\n\n\n_getTitle:function _getTitle(route,index){\nif(this._descriptors.title.has(route)){\nreturn this._descriptors.title.get(route);}\n\n\nvar titleContent=this.props.routeMapper.titleContentForRoute(\nthis.props.navState.routeStack[index],\nthis.props.navigator);\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\n\nvar titleDescriptor=\nReact.createElement(View,{\nkey:'title_'+index,\nref:'title_'+index,\nstyle:firstStyles.Title,__source:{fileName:_jsxFileName,lineNumber:254}},\ntitleContent);\n\n\nthis._descriptors.title=this._descriptors.title.set(route,titleDescriptor);\nreturn titleDescriptor;},\n\n\n_getRightButton:function _getRightButton(route,index){\nif(this._descriptors.right.has(route)){\nreturn this._descriptors.right.get(route);}\n\nvar rightContent=this.props.routeMapper.rightContentForRoute(\nthis.props.navState.routeStack[index],\nthis.props.navigator);\n\nif(!rightContent){\nthis._descriptors.right=this._descriptors.right.set(route,null);\nreturn null;}\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\nvar rightButtonDescriptor=\nReact.createElement(View,{\nkey:'right_'+index,\nref:'right_'+index,\nstyle:firstStyles.RightItem,__source:{fileName:_jsxFileName,lineNumber:279}},\nrightContent);\n\n\nthis._descriptors.right=this._descriptors.right.set(route,rightButtonDescriptor);\nreturn rightButtonDescriptor;},\n\n\n_setPropsIfExists:function _setPropsIfExists(ref,props){\nvar ref=this.refs[ref];\nref&&ref.setNativeProps(props);}});\n\n\n\nvar styles=StyleSheet.create({\nbreadCrumbContainer:{\noverflow:'hidden',\nposition:'absolute',\nheight:NavigatorNavigationBarStyles.General.TotalNavHeight,\ntop:0,\nleft:0,\nright:0}});\n\n\n\nmodule.exports=NavigatorBreadcrumbNavigationBar;","map":null,"id":"NavigatorBreadcrumbNavigationBar","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorBreadcrumbNavigationBar\n */\n'use strict';\n\nvar NavigatorBreadcrumbNavigationBarStyles = require('NavigatorBreadcrumbNavigationBarStyles');\nvar NavigatorNavigationBarStylesAndroid = require('NavigatorNavigationBarStylesAndroid');\nvar NavigatorNavigationBarStylesIOS = require('NavigatorNavigationBarStylesIOS');\nvar Platform = require('Platform');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar { Map } = require('immutable');\n\nvar guid = require('guid');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Interpolators = NavigatorBreadcrumbNavigationBarStyles.Interpolators;\nvar NavigatorNavigationBarStyles = Platform.OS === 'android' ?\n NavigatorNavigationBarStylesAndroid : NavigatorNavigationBarStylesIOS;\nvar PropTypes = React.PropTypes;\n\n/**\n * Reusable props objects.\n */\nvar CRUMB_PROPS = Interpolators.map(() => ({style: {}}));\nvar ICON_PROPS = Interpolators.map(() => ({style: {}}));\nvar SEPARATOR_PROPS = Interpolators.map(() => ({style: {}}));\nvar TITLE_PROPS = Interpolators.map(() => ({style: {}}));\nvar RIGHT_BUTTON_PROPS = Interpolators.map(() => ({style: {}}));\n\n\nvar navStatePresentedIndex = function(navState) {\n if (navState.presentedIndex !== undefined) {\n return navState.presentedIndex;\n }\n // TODO: rename `observedTopOfStack` to `presentedIndex` in `NavigatorIOS`\n return navState.observedTopOfStack;\n};\n\n\n/**\n * The first route is initially rendered using a different style than all\n * future routes.\n *\n * @param {number} index Index of breadcrumb.\n * @return {object} Style config for initial rendering of index.\n */\nvar initStyle = function(index, presentedIndex) {\n return index === presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Center[index] :\n index < presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Left[index] :\n NavigatorBreadcrumbNavigationBarStyles.Right[index];\n};\n\nvar NavigatorBreadcrumbNavigationBar = React.createClass({\n propTypes: {\n navigator: PropTypes.shape({\n push: PropTypes.func,\n pop: PropTypes.func,\n replace: PropTypes.func,\n popToRoute: PropTypes.func,\n popToTop: PropTypes.func,\n }),\n routeMapper: PropTypes.shape({\n rightContentForRoute: PropTypes.func,\n titleContentForRoute: PropTypes.func,\n iconForRoute: PropTypes.func,\n }),\n navState: React.PropTypes.shape({\n routeStack: React.PropTypes.arrayOf(React.PropTypes.object),\n presentedIndex: React.PropTypes.number,\n }),\n style: View.propTypes.style,\n },\n\n statics: {\n Styles: NavigatorBreadcrumbNavigationBarStyles,\n },\n\n _updateIndexProgress: function(progress, index, fromIndex, toIndex) {\n var amount = toIndex > fromIndex ? progress : (1 - progress);\n var oldDistToCenter = index - fromIndex;\n var newDistToCenter = index - toIndex;\n var interpolate;\n invariant(\n Interpolators[index],\n 'Cannot find breadcrumb interpolators for ' + index\n );\n if (oldDistToCenter > 0 && newDistToCenter === 0 ||\n newDistToCenter > 0 && oldDistToCenter === 0) {\n interpolate = Interpolators[index].RightToCenter;\n } else if (oldDistToCenter < 0 && newDistToCenter === 0 ||\n newDistToCenter < 0 && oldDistToCenter === 0) {\n interpolate = Interpolators[index].CenterToLeft;\n } else if (oldDistToCenter === newDistToCenter) {\n interpolate = Interpolators[index].RightToCenter;\n } else {\n interpolate = Interpolators[index].RightToLeft;\n }\n\n if (interpolate.Crumb(CRUMB_PROPS[index].style, amount)) {\n this._setPropsIfExists('crumb_' + index, CRUMB_PROPS[index]);\n }\n if (interpolate.Icon(ICON_PROPS[index].style, amount)) {\n this._setPropsIfExists('icon_' + index, ICON_PROPS[index]);\n }\n if (interpolate.Separator(SEPARATOR_PROPS[index].style, amount)) {\n this._setPropsIfExists('separator_' + index, SEPARATOR_PROPS[index]);\n }\n if (interpolate.Title(TITLE_PROPS[index].style, amount)) {\n this._setPropsIfExists('title_' + index, TITLE_PROPS[index]);\n }\n var right = this.refs['right_' + index];\n\n const rightButtonStyle = RIGHT_BUTTON_PROPS[index].style;\n if (right && interpolate.RightItem(rightButtonStyle, amount)) {\n right.setNativeProps({\n style: rightButtonStyle,\n pointerEvents: rightButtonStyle.opacity === 0 ? 'none' : 'auto',\n });\n }\n },\n\n updateProgress: function(progress, fromIndex, toIndex) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._updateIndexProgress(progress, index, fromIndex, toIndex);\n }\n },\n\n onAnimationStart: function(fromIndex, toIndex) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._setRenderViewsToHardwareTextureAndroid(index, true);\n }\n },\n\n onAnimationEnd: function() {\n var max = this.props.navState.routeStack.length - 1;\n for (var index = 0; index <= max; index++) {\n this._setRenderViewsToHardwareTextureAndroid(index, false);\n }\n },\n\n _setRenderViewsToHardwareTextureAndroid: function(index, renderToHardwareTexture) {\n var props = {\n renderToHardwareTextureAndroid: renderToHardwareTexture,\n };\n\n this._setPropsIfExists('icon_' + index, props);\n this._setPropsIfExists('separator_' + index, props);\n this._setPropsIfExists('title_' + index, props);\n this._setPropsIfExists('right_' + index, props);\n },\n\n componentWillMount: function() {\n this._reset();\n },\n\n render: function() {\n var navState = this.props.navState;\n var icons = navState && navState.routeStack.map(this._getBreadcrumb);\n var titles = navState.routeStack.map(this._getTitle);\n var buttons = navState.routeStack.map(this._getRightButton);\n return (\n \n {titles}\n {icons}\n {buttons}\n \n );\n },\n\n immediatelyRefresh: function() {\n this._reset();\n this.forceUpdate();\n },\n\n _reset() {\n this._key = guid();\n this._descriptors = {\n crumb: new Map(),\n title: new Map(),\n right: new Map(),\n };\n },\n\n _getBreadcrumb: function(route, index) {\n if (this._descriptors.crumb.has(route)) {\n return this._descriptors.crumb.get(route);\n }\n\n var navBarRouteMapper = this.props.routeMapper;\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n\n var breadcrumbDescriptor = (\n \n \n {navBarRouteMapper.iconForRoute(route, this.props.navigator)}\n \n \n {navBarRouteMapper.separatorForRoute(route, this.props.navigator)}\n \n \n );\n\n this._descriptors.crumb = this._descriptors.crumb.set(route, breadcrumbDescriptor);\n return breadcrumbDescriptor;\n },\n\n _getTitle: function(route, index) {\n if (this._descriptors.title.has(route)) {\n return this._descriptors.title.get(route);\n }\n\n var titleContent = this.props.routeMapper.titleContentForRoute(\n this.props.navState.routeStack[index],\n this.props.navigator\n );\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n\n var titleDescriptor = (\n \n {titleContent}\n \n );\n this._descriptors.title = this._descriptors.title.set(route, titleDescriptor);\n return titleDescriptor;\n },\n\n _getRightButton: function(route, index) {\n if (this._descriptors.right.has(route)) {\n return this._descriptors.right.get(route);\n }\n var rightContent = this.props.routeMapper.rightContentForRoute(\n this.props.navState.routeStack[index],\n this.props.navigator\n );\n if (!rightContent) {\n this._descriptors.right = this._descriptors.right.set(route, null);\n return null;\n }\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n var rightButtonDescriptor = (\n \n {rightContent}\n \n );\n this._descriptors.right = this._descriptors.right.set(route, rightButtonDescriptor);\n return rightButtonDescriptor;\n },\n\n _setPropsIfExists: function(ref, props) {\n var ref = this.refs[ref];\n ref && ref.setNativeProps(props);\n },\n});\n\nvar styles = StyleSheet.create({\n breadCrumbContainer: {\n overflow: 'hidden',\n position: 'absolute',\n height: NavigatorNavigationBarStyles.General.TotalNavHeight,\n top: 0,\n left: 0,\n right: 0,\n },\n});\n\nmodule.exports = NavigatorBreadcrumbNavigationBar;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorBreadcrumbNavigationBarStyles"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorBreadcrumbNavigationBarStyles","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[64,123,195,240],"dependencies":["Dimensions","NavigatorNavigationBarStylesIOS","buildStyleInterpolator","merge"],"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\nvar Dimensions=require('Dimensions');\nvar NavigatorNavigationBarStylesIOS=require('NavigatorNavigationBarStylesIOS');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\nvar merge=require('merge');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar STATUS_BAR_HEIGHT=NavigatorNavigationBarStylesIOS.General.StatusBarHeight;\nvar NAV_BAR_HEIGHT=NavigatorNavigationBarStylesIOS.General.NavBarHeight;\n\nvar SPACING=4;\nvar ICON_WIDTH=40;\nvar SEPARATOR_WIDTH=9;\nvar CRUMB_WIDTH=ICON_WIDTH+SEPARATOR_WIDTH;\n\nvar OPACITY_RATIO=100;\nvar ICON_INACTIVE_OPACITY=0.6;\nvar MAX_BREADCRUMBS=10;\n\nvar CRUMB_BASE={\nposition:'absolute',\nflexDirection:'row',\ntop:STATUS_BAR_HEIGHT,\nwidth:CRUMB_WIDTH,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\nvar ICON_BASE={\nwidth:ICON_WIDTH,\nheight:NAV_BAR_HEIGHT};\n\n\nvar SEPARATOR_BASE={\nwidth:SEPARATOR_WIDTH,\nheight:NAV_BAR_HEIGHT};\n\n\nvar TITLE_BASE={\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\n\nvar FIRST_TITLE_BASE=merge(TITLE_BASE,{\nleft:0,\nright:0,\nalignItems:'center',\nheight:NAV_BAR_HEIGHT});\n\n\nvar RIGHT_BUTTON_BASE={\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nright:SPACING,\noverflow:'hidden',\nopacity:1,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\n\n\n\n\nvar LEFT=[];\nvar CENTER=[];\nvar RIGHT=[];\nfor(var i=0;ifromIndex?progress:1-progress;\nvar oldDistToCenter=index-fromIndex;\nvar newDistToCenter=index-toIndex;\nvar interpolate;\nif(oldDistToCenter>0&&newDistToCenter===0||\nnewDistToCenter>0&&oldDistToCenter===0){\ninterpolate=this.props.navigationStyles.Interpolators.RightToCenter;}else \nif(oldDistToCenter<0&&newDistToCenter===0||\nnewDistToCenter<0&&oldDistToCenter===0){\ninterpolate=this.props.navigationStyles.Interpolators.CenterToLeft;}else \nif(oldDistToCenter===newDistToCenter){\ninterpolate=this.props.navigationStyles.Interpolators.RightToCenter;}else \n{\ninterpolate=this.props.navigationStyles.Interpolators.RightToLeft;}\n\n\nCOMPONENT_NAMES.forEach(function(componentName){\nvar component=this._components[componentName].get(this.props.navState.routeStack[index]);\nvar props=this._getReusableProps(componentName,index);\nif(component&&interpolate[componentName](props.style,amount)){\nprops.pointerEvents=props.style.opacity===0?'none':'box-none';\ncomponent.setNativeProps(props);}},\n\nthis);},\n\n\nupdateProgress:function updateProgress(\nprogress,\nfromIndex,\ntoIndex)\n{\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index<=max;index++){\nthis._updateIndexProgress(progress,index,fromIndex,toIndex);}},\n\n\n\nrender:function render(){var _this2=this;\nvar navBarStyle={\nheight:this.props.navigationStyles.General.TotalNavHeight};\n\nvar navState=this.props.navState;\nvar components=navState.routeStack.map(function(route,index){return (\nCOMPONENT_NAMES.map(function(componentName){return (\n_this2._getComponent(componentName,route,index));}));});\n\n\n\nreturn (\nReact.createElement(View,{\nkey:this._key,\nstyle:[styles.navBarContainer,navBarStyle,this.props.style],__source:{fileName:_jsxFileName,lineNumber:178}},\ncomponents));},\n\n\n\n\n_getComponent:function _getComponent(\ncomponentName,\nroute,\nindex)\n{var _this3=this;\nif(this._descriptors[componentName].includes(route)){\nreturn this._descriptors[componentName].get(route);}\n\n\nvar rendered=null;\n\nvar content=this.props.routeMapper[componentName](\nthis.props.navState.routeStack[index],\nthis.props.navigator,\nindex,\nthis.props.navState);\n\nif(!content){\nreturn null;}\n\n\nvar componentIsActive=index===navStatePresentedIndex(this.props.navState);\nvar initialStage=componentIsActive?\nthis.props.navigationStyles.Stages.Center:\nthis.props.navigationStyles.Stages.Left;\nrendered=\nReact.createElement(View,{\nref:function ref(_ref){\n_this3._components[componentName]=_this3._components[componentName].set(route,_ref);},\n\npointerEvents:componentIsActive?'box-none':'none',\nstyle:initialStage[componentName],__source:{fileName:_jsxFileName,lineNumber:212}},\ncontent);\n\n\n\nthis._descriptors[componentName]=this._descriptors[componentName].set(route,rendered);\nreturn rendered;}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nnavBarContainer:{\nposition:'absolute',\ntop:0,\nleft:0,\nright:0,\nbackgroundColor:'transparent'}});\n\n\n\nmodule.exports=NavigatorNavigationBar;","map":null,"id":"NavigatorNavigationBar","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorNavigationBar\n */\n'use strict';\n\nvar React = require('React');\nvar NavigatorNavigationBarStylesAndroid = require('NavigatorNavigationBarStylesAndroid');\nvar NavigatorNavigationBarStylesIOS = require('NavigatorNavigationBarStylesIOS');\nvar Platform = require('Platform');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar guid = require('guid');\n\nvar { Map } = require('immutable');\n\nvar COMPONENT_NAMES = ['Title', 'LeftButton', 'RightButton'];\n\nvar NavigatorNavigationBarStyles = Platform.OS === 'android' ?\n NavigatorNavigationBarStylesAndroid : NavigatorNavigationBarStylesIOS;\n\nvar navStatePresentedIndex = function(navState) {\n if (navState.presentedIndex !== undefined) {\n return navState.presentedIndex;\n }\n // TODO: rename `observedTopOfStack` to `presentedIndex` in `NavigatorIOS`\n return navState.observedTopOfStack;\n};\n\nvar NavigatorNavigationBar = React.createClass({\n\n propTypes: {\n navigator: React.PropTypes.object,\n routeMapper: React.PropTypes.shape({\n Title: React.PropTypes.func.isRequired,\n LeftButton: React.PropTypes.func.isRequired,\n RightButton: React.PropTypes.func.isRequired,\n }).isRequired,\n navState: React.PropTypes.shape({\n routeStack: React.PropTypes.arrayOf(React.PropTypes.object),\n presentedIndex: React.PropTypes.number,\n }),\n navigationStyles: React.PropTypes.object,\n style: View.propTypes.style,\n },\n\n statics: {\n Styles: NavigatorNavigationBarStyles,\n StylesAndroid: NavigatorNavigationBarStylesAndroid,\n StylesIOS: NavigatorNavigationBarStylesIOS,\n },\n\n getDefaultProps() {\n return {\n navigationStyles: NavigatorNavigationBarStyles,\n };\n },\n\n componentWillMount: function() {\n this._reset();\n },\n\n /**\n * Stop transtion, immediately resets the cached state and re-render the\n * whole view.\n */\n immediatelyRefresh() {\n this._reset();\n this.forceUpdate();\n },\n\n _reset() {\n this._key = guid();\n this._reusableProps = {};\n this._components = {};\n this._descriptors = {};\n\n COMPONENT_NAMES.forEach(componentName => {\n this._components[componentName] = new Map();\n this._descriptors[componentName] = new Map();\n });\n },\n\n _getReusableProps: function(\n /*string*/componentName,\n /*number*/index\n ) /*object*/ {\n var propStack = this._reusableProps[componentName];\n if (!propStack) {\n propStack = this._reusableProps[componentName] = [];\n }\n var props = propStack[index];\n if (!props) {\n props = propStack[index] = {style:{}};\n }\n return props;\n },\n\n _updateIndexProgress: function(\n /*number*/progress,\n /*number*/index,\n /*number*/fromIndex,\n /*number*/toIndex\n ) {\n var amount = toIndex > fromIndex ? progress : (1 - progress);\n var oldDistToCenter = index - fromIndex;\n var newDistToCenter = index - toIndex;\n var interpolate;\n if (oldDistToCenter > 0 && newDistToCenter === 0 ||\n newDistToCenter > 0 && oldDistToCenter === 0) {\n interpolate = this.props.navigationStyles.Interpolators.RightToCenter;\n } else if (oldDistToCenter < 0 && newDistToCenter === 0 ||\n newDistToCenter < 0 && oldDistToCenter === 0) {\n interpolate = this.props.navigationStyles.Interpolators.CenterToLeft;\n } else if (oldDistToCenter === newDistToCenter) {\n interpolate = this.props.navigationStyles.Interpolators.RightToCenter;\n } else {\n interpolate = this.props.navigationStyles.Interpolators.RightToLeft;\n }\n\n COMPONENT_NAMES.forEach(function (componentName) {\n var component = this._components[componentName].get(this.props.navState.routeStack[index]);\n var props = this._getReusableProps(componentName, index);\n if (component && interpolate[componentName](props.style, amount)) {\n props.pointerEvents = props.style.opacity === 0 ? 'none' : 'box-none';\n component.setNativeProps(props);\n }\n }, this);\n },\n\n updateProgress: function(\n /*number*/progress,\n /*number*/fromIndex,\n /*number*/toIndex\n ) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._updateIndexProgress(progress, index, fromIndex, toIndex);\n }\n },\n\n render: function() {\n var navBarStyle = {\n height: this.props.navigationStyles.General.TotalNavHeight,\n };\n var navState = this.props.navState;\n var components = navState.routeStack.map((route, index) =>\n COMPONENT_NAMES.map(componentName =>\n this._getComponent(componentName, route, index)\n )\n );\n\n return (\n \n {components}\n \n );\n },\n\n _getComponent: function(\n /*string*/componentName,\n /*object*/route,\n /*number*/index\n ) /*?Object*/ {\n if (this._descriptors[componentName].includes(route)) {\n return this._descriptors[componentName].get(route);\n }\n\n var rendered = null;\n\n var content = this.props.routeMapper[componentName](\n this.props.navState.routeStack[index],\n this.props.navigator,\n index,\n this.props.navState\n );\n if (!content) {\n return null;\n }\n\n var componentIsActive = index === navStatePresentedIndex(this.props.navState);\n var initialStage = componentIsActive ?\n this.props.navigationStyles.Stages.Center :\n this.props.navigationStyles.Stages.Left;\n rendered = (\n {\n this._components[componentName] = this._components[componentName].set(route, ref);\n }}\n pointerEvents={componentIsActive ? 'box-none' : 'none'}\n style={initialStage[componentName]}>\n {content}\n \n );\n\n this._descriptors[componentName] = this._descriptors[componentName].set(route, rendered);\n return rendered;\n },\n\n});\n\n\nvar styles = StyleSheet.create({\n navBarContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n backgroundColor: 'transparent',\n },\n});\n\nmodule.exports = NavigatorNavigationBar;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBarStylesAndroid.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorNavigationBarStylesAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[76,121],"dependencies":["buildStyleInterpolator","merge"],"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\nvar buildStyleInterpolator=require('buildStyleInterpolator');\nvar merge=require('merge');\n\n\nvar NAV_BAR_HEIGHT=56;\nvar TITLE_LEFT=72;\nvar BUTTON_SIZE=24;\nvar TOUCH_TARGT_SIZE=48;\nvar BUTTON_HORIZONTAL_MARGIN=16;\n\nvar BUTTON_EFFECTIVE_MARGIN=BUTTON_HORIZONTAL_MARGIN-(TOUCH_TARGT_SIZE-BUTTON_SIZE)/2;\nvar NAV_ELEMENT_HEIGHT=NAV_BAR_HEIGHT;\n\nvar BASE_STYLES={\nTitle:{\nposition:'absolute',\nbottom:0,\nleft:0,\nright:0,\nalignItems:'flex-start',\nheight:NAV_ELEMENT_HEIGHT,\nbackgroundColor:'transparent',\nmarginLeft:TITLE_LEFT},\n\nLeftButton:{\nposition:'absolute',\ntop:0,\nleft:BUTTON_EFFECTIVE_MARGIN,\noverflow:'hidden',\nheight:NAV_ELEMENT_HEIGHT,\nbackgroundColor:'transparent'},\n\nRightButton:{\nposition:'absolute',\ntop:0,\nright:BUTTON_EFFECTIVE_MARGIN,\noverflow:'hidden',\nalignItems:'flex-end',\nheight:NAV_ELEMENT_HEIGHT,\nbackgroundColor:'transparent'}};\n\n\n\n\n\n\n\n\n\n\nvar Stages={\nLeft:{\nTitle:merge(BASE_STYLES.Title,{opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{opacity:0}),\nRightButton:merge(BASE_STYLES.RightButton,{opacity:0})},\n\nCenter:{\nTitle:merge(BASE_STYLES.Title,{opacity:1}),\nLeftButton:merge(BASE_STYLES.LeftButton,{opacity:1}),\nRightButton:merge(BASE_STYLES.RightButton,{opacity:1})},\n\nRight:{\nTitle:merge(BASE_STYLES.Title,{opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{opacity:0}),\nRightButton:merge(BASE_STYLES.RightButton,{opacity:0})}};\n\n\n\n\nvar opacityRatio=100;\n\nfunction buildSceneInterpolators(startStyles,endStyles){\nreturn {\nTitle:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Title.opacity,\nto:endStyles.Title.opacity,\nmin:0,\nmax:1},\n\nleft:{\ntype:'linear',\nfrom:startStyles.Title.left,\nto:endStyles.Title.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nLeftButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.LeftButton.opacity,\nto:endStyles.LeftButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.LeftButton.left,\nto:endStyles.LeftButton.left,\nmin:0,\nmax:1}}),\n\n\nRightButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.RightButton.opacity,\nto:endStyles.RightButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.RightButton.left,\nto:endStyles.RightButton.left,\nmin:0,\nmax:1,\nextrapolate:true}})};}\n\n\n\n\n\nvar Interpolators={\n\nRightToCenter:buildSceneInterpolators(Stages.Right,Stages.Center),\n\nCenterToLeft:buildSceneInterpolators(Stages.Center,Stages.Left),\n\nRightToLeft:buildSceneInterpolators(Stages.Right,Stages.Left)};\n\n\n\nmodule.exports={\nGeneral:{\nNavBarHeight:NAV_BAR_HEIGHT,\nStatusBarHeight:0,\nTotalNavHeight:NAV_BAR_HEIGHT},\n\nInterpolators:Interpolators,\nStages:Stages};","map":null,"id":"NavigatorNavigationBarStylesAndroid","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorNavigationBarStylesAndroid\n */\n'use strict';\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\nvar merge = require('merge');\n\n// Android Material Design\nvar NAV_BAR_HEIGHT = 56;\nvar TITLE_LEFT = 72;\nvar BUTTON_SIZE = 24;\nvar TOUCH_TARGT_SIZE = 48;\nvar BUTTON_HORIZONTAL_MARGIN = 16;\n\nvar BUTTON_EFFECTIVE_MARGIN = BUTTON_HORIZONTAL_MARGIN - (TOUCH_TARGT_SIZE - BUTTON_SIZE) / 2;\nvar NAV_ELEMENT_HEIGHT = NAV_BAR_HEIGHT;\n\nvar BASE_STYLES = {\n Title: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n alignItems: 'flex-start',\n height: NAV_ELEMENT_HEIGHT,\n backgroundColor: 'transparent',\n marginLeft: TITLE_LEFT,\n },\n LeftButton: {\n position: 'absolute',\n top: 0,\n left: BUTTON_EFFECTIVE_MARGIN,\n overflow: 'hidden',\n height: NAV_ELEMENT_HEIGHT,\n backgroundColor: 'transparent',\n },\n RightButton: {\n position: 'absolute',\n top: 0,\n right: BUTTON_EFFECTIVE_MARGIN,\n overflow: 'hidden',\n alignItems: 'flex-end',\n height: NAV_ELEMENT_HEIGHT,\n backgroundColor: 'transparent',\n },\n};\n\n// There are 3 stages: left, center, right. All previous navigation\n// items are in the left stage. The current navigation item is in the\n// center stage. All upcoming navigation items are in the right stage.\n// Another way to think of the stages is in terms of transitions. When\n// we move forward in the navigation stack, we perform a\n// right-to-center transition on the new navigation item and a\n// center-to-left transition on the current navigation item.\nvar Stages = {\n Left: {\n Title: merge(BASE_STYLES.Title, { opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { opacity: 0 }),\n RightButton: merge(BASE_STYLES.RightButton, { opacity: 0 }),\n },\n Center: {\n Title: merge(BASE_STYLES.Title, { opacity: 1 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { opacity: 1 }),\n RightButton: merge(BASE_STYLES.RightButton, { opacity: 1 }),\n },\n Right: {\n Title: merge(BASE_STYLES.Title, { opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { opacity: 0 }),\n RightButton: merge(BASE_STYLES.RightButton, { opacity: 0 }),\n },\n};\n\n\nvar opacityRatio = 100;\n\nfunction buildSceneInterpolators(startStyles, endStyles) {\n return {\n Title: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Title.opacity,\n to: endStyles.Title.opacity,\n min: 0,\n max: 1,\n },\n left: {\n type: 'linear',\n from: startStyles.Title.left,\n to: endStyles.Title.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n LeftButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.LeftButton.opacity,\n to: endStyles.LeftButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.LeftButton.left,\n to: endStyles.LeftButton.left,\n min: 0,\n max: 1,\n },\n }),\n RightButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.RightButton.opacity,\n to: endStyles.RightButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.RightButton.left,\n to: endStyles.RightButton.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n };\n}\n\nvar Interpolators = {\n // Animating *into* the center stage from the right\n RightToCenter: buildSceneInterpolators(Stages.Right, Stages.Center),\n // Animating out of the center stage, to the left\n CenterToLeft: buildSceneInterpolators(Stages.Center, Stages.Left),\n // Both stages (animating *past* the center stage)\n RightToLeft: buildSceneInterpolators(Stages.Right, Stages.Left),\n};\n\n\nmodule.exports = {\n General: {\n NavBarHeight: NAV_BAR_HEIGHT,\n StatusBarHeight: 0,\n TotalNavHeight: NAV_BAR_HEIGHT,\n },\n Interpolators,\n Stages,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBarStylesIOS.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorNavigationBarStylesIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[64,115,160],"dependencies":["Dimensions","buildStyleInterpolator","merge"],"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\nvar Dimensions=require('Dimensions');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\nvar merge=require('merge');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar NAV_BAR_HEIGHT=44;\nvar STATUS_BAR_HEIGHT=20;\nvar NAV_HEIGHT=NAV_BAR_HEIGHT+STATUS_BAR_HEIGHT;\n\nvar BASE_STYLES={\nTitle:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:0,\nright:0,\nalignItems:'center',\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'},\n\nLeftButton:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:0,\noverflow:'hidden',\nopacity:1,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'},\n\nRightButton:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nright:0,\noverflow:'hidden',\nopacity:1,\nalignItems:'flex-end',\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'}};\n\n\n\n\n\n\n\n\n\n\nvar Stages={\nLeft:{\nTitle:merge(BASE_STYLES.Title,{left:-SCREEN_WIDTH/2,opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:-SCREEN_WIDTH/3,opacity:0}),\nRightButton:merge(BASE_STYLES.RightButton,{opacity:0})},\n\nCenter:{\nTitle:merge(BASE_STYLES.Title,{left:0,opacity:1}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:0,opacity:1}),\nRightButton:merge(BASE_STYLES.RightButton,{opacity:1})},\n\nRight:{\nTitle:merge(BASE_STYLES.Title,{left:SCREEN_WIDTH/2,opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:0,opacity:0}),\nRightButton:merge(BASE_STYLES.RightButton,{opacity:0})}};\n\n\n\n\nvar opacityRatio=100;\n\nfunction buildSceneInterpolators(startStyles,endStyles){\nreturn {\nTitle:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Title.opacity,\nto:endStyles.Title.opacity,\nmin:0,\nmax:1},\n\nleft:{\ntype:'linear',\nfrom:startStyles.Title.left,\nto:endStyles.Title.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nLeftButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.LeftButton.opacity,\nto:endStyles.LeftButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.LeftButton.left,\nto:endStyles.LeftButton.left,\nmin:0,\nmax:1}}),\n\n\nRightButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.RightButton.opacity,\nto:endStyles.RightButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.RightButton.left,\nto:endStyles.RightButton.left,\nmin:0,\nmax:1,\nextrapolate:true}})};}\n\n\n\n\n\nvar Interpolators={\n\nRightToCenter:buildSceneInterpolators(Stages.Right,Stages.Center),\n\nCenterToLeft:buildSceneInterpolators(Stages.Center,Stages.Left),\n\nRightToLeft:buildSceneInterpolators(Stages.Right,Stages.Left)};\n\n\n\nmodule.exports={\nGeneral:{\nNavBarHeight:NAV_BAR_HEIGHT,\nStatusBarHeight:STATUS_BAR_HEIGHT,\nTotalNavHeight:NAV_HEIGHT},\n\nInterpolators:Interpolators,\nStages:Stages};","map":null,"id":"NavigatorNavigationBarStylesIOS","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorNavigationBarStylesIOS\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\nvar merge = require('merge');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar NAV_BAR_HEIGHT = 44;\nvar STATUS_BAR_HEIGHT = 20;\nvar NAV_HEIGHT = NAV_BAR_HEIGHT + STATUS_BAR_HEIGHT;\n\nvar BASE_STYLES = {\n Title: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 0,\n right: 0,\n alignItems: 'center',\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n LeftButton: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 0,\n overflow: 'hidden',\n opacity: 1,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n RightButton: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n right: 0,\n overflow: 'hidden',\n opacity: 1,\n alignItems: 'flex-end',\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n};\n\n// There are 3 stages: left, center, right. All previous navigation\n// items are in the left stage. The current navigation item is in the\n// center stage. All upcoming navigation items are in the right stage.\n// Another way to think of the stages is in terms of transitions. When\n// we move forward in the navigation stack, we perform a\n// right-to-center transition on the new navigation item and a\n// center-to-left transition on the current navigation item.\nvar Stages = {\n Left: {\n Title: merge(BASE_STYLES.Title, { left: -SCREEN_WIDTH / 2, opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: -SCREEN_WIDTH / 3, opacity: 0 }),\n RightButton: merge(BASE_STYLES.RightButton, { opacity: 0 }),\n },\n Center: {\n Title: merge(BASE_STYLES.Title, { left: 0, opacity: 1 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: 0, opacity: 1 }),\n RightButton: merge(BASE_STYLES.RightButton, { opacity: 1 }),\n },\n Right: {\n Title: merge(BASE_STYLES.Title, { left: SCREEN_WIDTH / 2, opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: 0, opacity: 0 }),\n RightButton: merge(BASE_STYLES.RightButton, { opacity: 0 }),\n },\n};\n\n\nvar opacityRatio = 100;\n\nfunction buildSceneInterpolators(startStyles, endStyles) {\n return {\n Title: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Title.opacity,\n to: endStyles.Title.opacity,\n min: 0,\n max: 1,\n },\n left: {\n type: 'linear',\n from: startStyles.Title.left,\n to: endStyles.Title.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n LeftButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.LeftButton.opacity,\n to: endStyles.LeftButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.LeftButton.left,\n to: endStyles.LeftButton.left,\n min: 0,\n max: 1,\n },\n }),\n RightButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.RightButton.opacity,\n to: endStyles.RightButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.RightButton.left,\n to: endStyles.RightButton.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n };\n}\n\nvar Interpolators = {\n // Animating *into* the center stage from the right\n RightToCenter: buildSceneInterpolators(Stages.Right, Stages.Center),\n // Animating out of the center stage, to the left\n CenterToLeft: buildSceneInterpolators(Stages.Center, Stages.Left),\n // Both stages (animating *past* the center stage)\n RightToLeft: buildSceneInterpolators(Stages.Right, Stages.Left),\n};\n\n\nmodule.exports = {\n General: {\n NavBarHeight: NAV_BAR_HEIGHT,\n StatusBarHeight: STATUS_BAR_HEIGHT,\n TotalNavHeight: NAV_HEIGHT,\n },\n Interpolators,\n Stages,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorSceneConfigs.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigatorSceneConfigs","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[64,102,153],"dependencies":["Dimensions","PixelRatio","buildStyleInterpolator"],"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\nvar Dimensions=require('Dimensions');\nvar PixelRatio=require('PixelRatio');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar SCREEN_HEIGHT=Dimensions.get('window').height;\n\nvar ToTheLeftIOS={\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:-SCREEN_WIDTH*0.3,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nopacity:{\nvalue:1.0,\ntype:'constant'}};\n\n\n\nvar FadeToTheLeft={\n\n\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:-Math.round(Dimensions.get('window').width*0.3),y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\n\n\n\n\n\n\n\n\n\n\ntransformScale:{\nfrom:{x:1,y:1,z:1},\nto:{x:0.95,y:0.95,z:1},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nopacity:{\nfrom:1,\nto:0.3,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\ntranslateX:{\nfrom:0,\nto:-Math.round(Dimensions.get('window').width*0.3),\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nscaleX:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nscaleY:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true}};\n\n\n\nvar FadeToTheRight=babelHelpers.extends({},\nFadeToTheLeft,{\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:Math.round(SCREEN_WIDTH*0.3),y:0,z:0}},\n\ntranslateX:{\nfrom:0,\nto:Math.round(SCREEN_WIDTH*0.3)}});\n\n\n\nvar FadeIn={\nopacity:{\nfrom:0,\nto:1,\nmin:0.5,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100}};\n\n\n\nvar FadeOut={\nopacity:{\nfrom:1,\nto:0,\nmin:0,\nmax:0.5,\ntype:'linear',\nextrapolate:false,\nround:100}};\n\n\n\nvar ToTheLeft={\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:-Dimensions.get('window').width,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntranslateX:{\nfrom:0,\nto:-Dimensions.get('window').width,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar ToTheUp={\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:0,y:-Dimensions.get('window').height,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\ntranslateY:{\nfrom:0,\nto:-Dimensions.get('window').height,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar ToTheDown={\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:0,y:Dimensions.get('window').height,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\ntranslateY:{\nfrom:0,\nto:Dimensions.get('window').height,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar FromTheRight={\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntransformTranslate:{\nfrom:{x:Dimensions.get('window').width,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\ntranslateX:{\nfrom:Dimensions.get('window').width,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\nscaleX:{\nvalue:1,\ntype:'constant'},\n\nscaleY:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar FromTheLeft=babelHelpers.extends({},\nFromTheRight,{\ntransformTranslate:{\nfrom:{x:-SCREEN_WIDTH,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateX:{\nfrom:-SCREEN_WIDTH,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}});\n\n\n\nvar FromTheDown=babelHelpers.extends({},\nFromTheRight,{\ntransformTranslate:{\nfrom:{y:SCREEN_HEIGHT,x:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:SCREEN_HEIGHT,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}});\n\n\n\nvar FromTheTop=babelHelpers.extends({},\nFromTheRight,{\ntransformTranslate:{\nfrom:{y:-SCREEN_HEIGHT,x:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:-SCREEN_HEIGHT,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}});\n\n\n\nvar ToTheBack={\n\n\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntransformScale:{\nfrom:{x:1,y:1,z:1},\nto:{x:0.95,y:0.95,z:1},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nopacity:{\nfrom:1,\nto:0.3,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\nscaleX:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nscaleY:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true}};\n\n\n\nvar FromTheFront={\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntransformTranslate:{\nfrom:{x:0,y:Dimensions.get('window').height,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:Dimensions.get('window').height,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nscaleX:{\nvalue:1,\ntype:'constant'},\n\nscaleY:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar ToTheBackAndroid={\nopacity:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar FromTheFrontAndroid={\nopacity:{\nfrom:0,\nto:1,\nmin:0.5,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\ntransformTranslate:{\nfrom:{x:0,y:100,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:100,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar BaseOverswipeConfig={\nfrictionConstant:1,\nfrictionByDistance:1.5};\n\n\nvar BaseLeftToRightGesture={\n\n\nisDetachable:false,\n\n\ngestureDetectMovement:2,\n\n\nnotMoving:0.3,\n\n\ndirectionRatio:0.66,\n\n\nsnapVelocity:2,\n\n\nedgeHitWidth:30,\n\n\nstillCompletionRatio:3/5,\n\nfullDistance:SCREEN_WIDTH,\n\ndirection:'left-to-right'};\n\n\n\nvar BaseRightToLeftGesture=babelHelpers.extends({},\nBaseLeftToRightGesture,{\ndirection:'right-to-left'});\n\n\nvar BaseDownUpGesture=babelHelpers.extends({},\nBaseLeftToRightGesture,{\nfullDistance:SCREEN_HEIGHT,\ndirection:'down-to-up'});\n\n\nvar BaseUpDownGesture=babelHelpers.extends({},\nBaseLeftToRightGesture,{\nfullDistance:SCREEN_HEIGHT,\ndirection:'up-to-down'});\n\n\nvar BaseConfig={\n\ngestures:{\npop:BaseLeftToRightGesture},\n\n\n\nspringFriction:26,\nspringTension:200,\n\n\ndefaultTransitionVelocity:1.5,\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheRight),\nout:buildStyleInterpolator(FadeToTheLeft)}};\n\n\n\nvar NavigatorSceneConfigs={\nPushFromRight:babelHelpers.extends({},\nBaseConfig,{\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheRight),\nout:buildStyleInterpolator(ToTheLeftIOS)}}),\n\n\nFloatFromRight:babelHelpers.extends({},\nBaseConfig),\n\n\nFloatFromLeft:babelHelpers.extends({},\nBaseConfig,{\ngestures:{\npop:BaseRightToLeftGesture},\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheLeft),\nout:buildStyleInterpolator(FadeToTheRight)}}),\n\n\nFloatFromBottom:babelHelpers.extends({},\nBaseConfig,{\ngestures:{\npop:babelHelpers.extends({},\nBaseLeftToRightGesture,{\nedgeHitWidth:150,\ndirection:'top-to-bottom',\nfullDistance:SCREEN_HEIGHT})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheFront),\nout:buildStyleInterpolator(ToTheBack)}}),\n\n\nFloatFromBottomAndroid:babelHelpers.extends({},\nBaseConfig,{\ngestures:null,\ndefaultTransitionVelocity:3,\nspringFriction:20,\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheFrontAndroid),\nout:buildStyleInterpolator(ToTheBackAndroid)}}),\n\n\nFadeAndroid:babelHelpers.extends({},\nBaseConfig,{\ngestures:null,\nanimationInterpolators:{\ninto:buildStyleInterpolator(FadeIn),\nout:buildStyleInterpolator(FadeOut)}}),\n\n\nHorizontalSwipeJump:babelHelpers.extends({},\nBaseConfig,{\ngestures:{\njumpBack:babelHelpers.extends({},\nBaseLeftToRightGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true}),\n\njumpForward:babelHelpers.extends({},\nBaseRightToLeftGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheRight),\nout:buildStyleInterpolator(ToTheLeft)}}),\n\n\nHorizontalSwipeJumpFromRight:babelHelpers.extends({},\nBaseConfig,{\ngestures:{\njumpBack:babelHelpers.extends({},\nBaseRightToLeftGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true}),\n\njumpForward:babelHelpers.extends({},\nBaseLeftToRightGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true}),\n\npop:BaseRightToLeftGesture},\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheLeft),\nout:buildStyleInterpolator(FadeToTheRight)}}),\n\n\nVerticalUpSwipeJump:babelHelpers.extends({},\nBaseConfig,{\ngestures:{\njumpBack:babelHelpers.extends({},\nBaseDownUpGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true}),\n\njumpForward:babelHelpers.extends({},\nBaseDownUpGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheDown),\nout:buildStyleInterpolator(ToTheUp)}}),\n\n\nVerticalDownSwipeJump:babelHelpers.extends({},\nBaseConfig,{\ngestures:{\njumpBack:babelHelpers.extends({},\nBaseUpDownGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true}),\n\njumpForward:babelHelpers.extends({},\nBaseUpDownGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheTop),\nout:buildStyleInterpolator(ToTheDown)}})};\n\n\n\n\nmodule.exports=NavigatorSceneConfigs;","map":null,"id":"NavigatorSceneConfigs","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorSceneConfigs\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar PixelRatio = require('PixelRatio');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar SCREEN_HEIGHT = Dimensions.get('window').height;\n\nvar ToTheLeftIOS = {\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: -SCREEN_WIDTH * 0.3, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n};\n\nvar FadeToTheLeft = {\n // Rotate *requires* you to break out each individual component of\n // rotation (x, y, z, w)\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: -Math.round(Dimensions.get('window').width * 0.3), y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n // Uncomment to try rotation:\n // Quick guide to reasoning about rotations:\n // http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/#Quaternions\n // transformRotateRadians: {\n // from: {x: 0, y: 0, z: 0, w: 1},\n // to: {x: 0, y: 0, z: -0.47, w: 0.87},\n // min: 0,\n // max: 1,\n // type: 'linear',\n // extrapolate: true\n // },\n transformScale: {\n from: {x: 1, y: 1, z: 1},\n to: {x: 0.95, y: 0.95, z: 1},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n opacity: {\n from: 1,\n to: 0.3,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n translateX: {\n from: 0,\n to: -Math.round(Dimensions.get('window').width * 0.3),\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n scaleX: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n scaleY: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n};\n\nvar FadeToTheRight = {\n ...FadeToTheLeft,\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: Math.round(SCREEN_WIDTH * 0.3), y: 0, z: 0},\n },\n translateX: {\n from: 0,\n to: Math.round(SCREEN_WIDTH * 0.3),\n }\n};\n\nvar FadeIn = {\n opacity: {\n from: 0,\n to: 1,\n min: 0.5,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n};\n\nvar FadeOut = {\n opacity: {\n from: 1,\n to: 0,\n min: 0,\n max: 0.5,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n};\n\nvar ToTheLeft = {\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: -Dimensions.get('window').width, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n translateX: {\n from: 0,\n to: -Dimensions.get('window').width,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar ToTheUp = {\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: 0, y: -Dimensions.get('window').height, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n translateY: {\n from: 0,\n to: -Dimensions.get('window').height,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar ToTheDown = {\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: 0, y: Dimensions.get('window').height, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n translateY: {\n from: 0,\n to: Dimensions.get('window').height,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar FromTheRight = {\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n transformTranslate: {\n from: {x: Dimensions.get('window').width, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n\n translateX: {\n from: Dimensions.get('window').width,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n\n scaleX: {\n value: 1,\n type: 'constant',\n },\n scaleY: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar FromTheLeft = {\n ...FromTheRight,\n transformTranslate: {\n from: {x: -SCREEN_WIDTH, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateX: {\n from: -SCREEN_WIDTH,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar FromTheDown = {\n ...FromTheRight,\n transformTranslate: {\n from: {y: SCREEN_HEIGHT, x: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: SCREEN_HEIGHT,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar FromTheTop = {\n ...FromTheRight,\n transformTranslate: {\n from: {y: -SCREEN_HEIGHT, x: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: -SCREEN_HEIGHT,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar ToTheBack = {\n // Rotate *requires* you to break out each individual component of\n // rotation (x, y, z, w)\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n transformScale: {\n from: {x: 1, y: 1, z: 1},\n to: {x: 0.95, y: 0.95, z: 1},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n opacity: {\n from: 1,\n to: 0.3,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n scaleX: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n scaleY: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n};\n\nvar FromTheFront = {\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n transformTranslate: {\n from: {x: 0, y: Dimensions.get('window').height, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: Dimensions.get('window').height,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n scaleX: {\n value: 1,\n type: 'constant',\n },\n scaleY: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar ToTheBackAndroid = {\n opacity: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar FromTheFrontAndroid = {\n opacity: {\n from: 0,\n to: 1,\n min: 0.5,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n transformTranslate: {\n from: {x: 0, y: 100, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: 100,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar BaseOverswipeConfig = {\n frictionConstant: 1,\n frictionByDistance: 1.5,\n};\n\nvar BaseLeftToRightGesture = {\n\n // If the gesture can end and restart during one continuous touch\n isDetachable: false,\n\n // How far the swipe must drag to start transitioning\n gestureDetectMovement: 2,\n\n // Amplitude of release velocity that is considered still\n notMoving: 0.3,\n\n // Fraction of directional move required.\n directionRatio: 0.66,\n\n // Velocity to transition with when the gesture release was \"not moving\"\n snapVelocity: 2,\n\n // Region that can trigger swipe. iOS default is 30px from the left edge\n edgeHitWidth: 30,\n\n // Ratio of gesture completion when non-velocity release will cause action\n stillCompletionRatio: 3 / 5,\n\n fullDistance: SCREEN_WIDTH,\n\n direction: 'left-to-right',\n\n};\n\nvar BaseRightToLeftGesture = {\n ...BaseLeftToRightGesture,\n direction: 'right-to-left',\n};\n\nvar BaseDownUpGesture = {\n ...BaseLeftToRightGesture,\n fullDistance: SCREEN_HEIGHT,\n direction: 'down-to-up',\n};\n\nvar BaseUpDownGesture = {\n ...BaseLeftToRightGesture,\n fullDistance: SCREEN_HEIGHT,\n direction: 'up-to-down',\n};\n\nvar BaseConfig = {\n // A list of all gestures that are enabled on this scene\n gestures: {\n pop: BaseLeftToRightGesture,\n },\n\n // Rebound spring parameters when transitioning FROM this scene\n springFriction: 26,\n springTension: 200,\n\n // Velocity to start at when transitioning without gesture\n defaultTransitionVelocity: 1.5,\n\n // Animation interpolators for horizontal transitioning:\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheRight),\n out: buildStyleInterpolator(FadeToTheLeft),\n },\n};\n\nvar NavigatorSceneConfigs = {\n PushFromRight: {\n ...BaseConfig,\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheRight),\n out: buildStyleInterpolator(ToTheLeftIOS),\n },\n },\n FloatFromRight: {\n ...BaseConfig,\n // We will want to customize this soon\n },\n FloatFromLeft: {\n ...BaseConfig,\n gestures: {\n pop: BaseRightToLeftGesture,\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheLeft),\n out: buildStyleInterpolator(FadeToTheRight),\n },\n },\n FloatFromBottom: {\n ...BaseConfig,\n gestures: {\n pop: {\n ...BaseLeftToRightGesture,\n edgeHitWidth: 150,\n direction: 'top-to-bottom',\n fullDistance: SCREEN_HEIGHT,\n }\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheFront),\n out: buildStyleInterpolator(ToTheBack),\n },\n },\n FloatFromBottomAndroid: {\n ...BaseConfig,\n gestures: null,\n defaultTransitionVelocity: 3,\n springFriction: 20,\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheFrontAndroid),\n out: buildStyleInterpolator(ToTheBackAndroid),\n },\n },\n FadeAndroid: {\n ...BaseConfig,\n gestures: null,\n animationInterpolators: {\n into: buildStyleInterpolator(FadeIn),\n out: buildStyleInterpolator(FadeOut),\n },\n },\n HorizontalSwipeJump: {\n ...BaseConfig,\n gestures: {\n jumpBack: {\n ...BaseLeftToRightGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n jumpForward: {\n ...BaseRightToLeftGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheRight),\n out: buildStyleInterpolator(ToTheLeft),\n },\n },\n HorizontalSwipeJumpFromRight: {\n ...BaseConfig,\n gestures: {\n jumpBack: {\n ...BaseRightToLeftGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n jumpForward: {\n ...BaseLeftToRightGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n pop: BaseRightToLeftGesture,\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheLeft),\n out: buildStyleInterpolator(FadeToTheRight),\n },\n },\n VerticalUpSwipeJump: {\n ...BaseConfig,\n gestures: {\n jumpBack: {\n ...BaseDownUpGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n jumpForward: {\n ...BaseDownUpGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheDown),\n out: buildStyleInterpolator(ToTheUp),\n },\n },\n VerticalDownSwipeJump: {\n ...BaseConfig,\n gestures: {\n jumpBack: {\n ...BaseUpDownGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n jumpForward: {\n ...BaseUpDownGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheTop),\n out: buildStyleInterpolator(ToTheDown),\n },\n },\n};\n\nmodule.exports = NavigatorSceneConfigs;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationAnimatedValueSubscription.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationAnimatedValueSubscription","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';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\n\n\nNavigationAnimatedValueSubscription=function(){\n\n\n\nfunction NavigationAnimatedValueSubscription(value,callback){babelHelpers.classCallCheck(this,NavigationAnimatedValueSubscription);\nthis._value=value;\nthis._token=value.addListener(callback);}babelHelpers.createClass(NavigationAnimatedValueSubscription,[{key:'remove',value:function remove()\n\n\n{\nthis._value.removeListener(this._token);}}]);return NavigationAnimatedValueSubscription;}();\n\n\n\nmodule.exports=NavigationAnimatedValueSubscription;","map":null,"id":"NavigationAnimatedValueSubscription","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationAnimatedValueSubscription\n * @flow\n */\n'use strict';\n\nimport type {\n NavigationAnimatedValue\n} from 'NavigationTypeDefinition';\n\nclass NavigationAnimatedValueSubscription {\n _value: NavigationAnimatedValue;\n _token: string;\n\n constructor(value: NavigationAnimatedValue, callback: Function) {\n this._value = value;\n this._token = value.addListener(callback);\n }\n\n remove(): void {\n this._value.removeListener(this._token);\n }\n}\n\nmodule.exports = NavigationAnimatedValueSubscription;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationCard.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationCard","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[223,280,365,438,502,579,661,730,772,828,889,921],"dependencies":["Animated","NavigationCardStackPanResponder","NavigationCardStackStyleInterpolator","NavigationContainer","NavigationPagerPanResponder","NavigationPagerStyleInterpolator","NavigationPointerEventsContainer","NavigationPropTypes","React","ReactComponentWithPureRenderMixin","StyleSheet","View"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationCard.js';\n\n\n\n\n\n\n\n\n\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 Animated=require('Animated');\nvar NavigationCardStackPanResponder=require('NavigationCardStackPanResponder');\nvar NavigationCardStackStyleInterpolator=require('NavigationCardStackStyleInterpolator');\nvar NavigationContainer=require('NavigationContainer');\nvar NavigationPagerPanResponder=require('NavigationPagerPanResponder');\nvar NavigationPagerStyleInterpolator=require('NavigationPagerStyleInterpolator');\nvar NavigationPointerEventsContainer=require('NavigationPointerEventsContainer');\nvar NavigationPropTypes=require('NavigationPropTypes');\nvar React=require('React');\nvar ReactComponentWithPureRenderMixin=require('ReactComponentWithPureRenderMixin');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPropTypes=React.PropTypes;var \n\nSceneView=function(_React$Component){babelHelpers.inherits(SceneView,_React$Component);function SceneView(){babelHelpers.classCallCheck(this,SceneView);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(SceneView).apply(this,arguments));}babelHelpers.createClass(SceneView,[{key:'shouldComponentUpdate',value:function shouldComponentUpdate(\n\n\n\n\n\n\nnextProps,nextState){\nreturn (\nnextProps.sceneRendererProps.scene.navigationState!==\nthis.props.sceneRendererProps.scene.navigationState);}},{key:'render',value:function render()\n\n\n\n{\nreturn this.props.sceneRenderer(this.props.sceneRendererProps);}}]);return SceneView;}(React.Component);SceneView.propTypes={sceneRenderer:PropTypes.func.isRequired,sceneRendererProps:NavigationPropTypes.SceneRenderer};var \n\n\n\n\n\n\nNavigationCard=function(_React$Component2){babelHelpers.inherits(NavigationCard,_React$Component2);function NavigationCard(){babelHelpers.classCallCheck(this,NavigationCard);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationCard).apply(this,arguments));}babelHelpers.createClass(NavigationCard,[{key:'shouldComponentUpdate',value:function shouldComponentUpdate(\n\n\n\n\n\n\n\n\n\n\n\nnextProps,nextState){\nreturn ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\nthis,\nnextProps,\nnextState);}},{key:'render',value:function render()\n\n\n\n{var _props=\n\n\n\n\n\n\nthis.props;var panHandlers=_props.panHandlers;var pointerEvents=_props.pointerEvents;var renderScene=_props.renderScene;var style=_props.style;var props=babelHelpers.objectWithoutProperties(_props,['panHandlers','pointerEvents','renderScene','style']);\n\nvar viewStyle=style===undefined?\nNavigationCardStackStyleInterpolator.forHorizontal(props):\nstyle;\n\nvar viewPanHandlers=panHandlers===undefined?\nNavigationCardStackPanResponder.forHorizontal(props):\npanHandlers;\n\nreturn (\nReact.createElement(Animated.View,babelHelpers.extends({},\nviewPanHandlers,{\npointerEvents:pointerEvents,\nref:this.props.onComponentRef,\nstyle:[styles.main,viewStyle],__source:{fileName:_jsxFileName,lineNumber:129}}),\nReact.createElement(SceneView,{\nsceneRenderer:renderScene,\nsceneRendererProps:props,__source:{fileName:_jsxFileName,lineNumber:134}})));}}]);return NavigationCard;}(React.Component);NavigationCard.propTypes=babelHelpers.extends({},NavigationPropTypes.SceneRenderer,{onComponentRef:PropTypes.func.isRequired,panHandlers:NavigationPropTypes.panHandlers,pointerEvents:PropTypes.string.isRequired,renderScene:PropTypes.func.isRequired,style:PropTypes.any});\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nmain:{\nbackgroundColor:'#E9E9EF',\nbottom:0,\nleft:0,\nposition:'absolute',\nright:0,\nshadowColor:'black',\nshadowOffset:{width:0,height:0},\nshadowOpacity:0.4,\nshadowRadius:10,\ntop:0}});\n\n\n\nNavigationCard=NavigationPointerEventsContainer.create(NavigationCard);\nNavigationCard=NavigationContainer.create(NavigationCard);\n\n\nNavigationCard.CardStackPanResponder=NavigationCardStackPanResponder;\nNavigationCard.CardStackStyleInterpolator=NavigationCardStackStyleInterpolator;\nNavigationCard.PagerPanResponder=NavigationPagerPanResponder;\nNavigationCard.PagerStyleInterpolator=NavigationPagerStyleInterpolator;\n\nmodule.exports=NavigationCard;","map":null,"id":"NavigationCard","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationCard\n * @flow\n */\n'use strict';\n\nconst Animated = require('Animated');\nconst NavigationCardStackPanResponder = require('NavigationCardStackPanResponder');\nconst NavigationCardStackStyleInterpolator = require('NavigationCardStackStyleInterpolator');\nconst NavigationContainer = require('NavigationContainer');\nconst NavigationPagerPanResponder = require('NavigationPagerPanResponder');\nconst NavigationPagerStyleInterpolator = require('NavigationPagerStyleInterpolator');\nconst NavigationPointerEventsContainer = require('NavigationPointerEventsContainer');\nconst NavigationPropTypes = require('NavigationPropTypes');\nconst React = require('React');\nconst ReactComponentWithPureRenderMixin = require('ReactComponentWithPureRenderMixin');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\nimport type {\n NavigationPanPanHandlers,\n NavigationSceneRenderer,\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\ntype SceneViewProps = {\n sceneRenderer: NavigationSceneRenderer,\n sceneRendererProps: NavigationSceneRendererProps,\n};\n\ntype Props = NavigationSceneRendererProps & {\n onComponentRef: (ref: any) => void,\n panHandlers: ?NavigationPanPanHandlers,\n pointerEvents: string,\n renderScene: NavigationSceneRenderer,\n style: any,\n};\n\nconst {PropTypes} = React;\n\nclass SceneView extends React.Component {\n\n static propTypes = {\n sceneRenderer: PropTypes.func.isRequired,\n sceneRendererProps: NavigationPropTypes.SceneRenderer,\n };\n\n shouldComponentUpdate(nextProps: SceneViewProps, nextState: any): boolean {\n return (\n nextProps.sceneRendererProps.scene.navigationState !==\n this.props.sceneRendererProps.scene.navigationState\n );\n }\n\n render(): ?ReactElement {\n return this.props.sceneRenderer(this.props.sceneRendererProps);\n }\n}\n\n/**\n * Component that renders the scene as card for the .\n */\nclass NavigationCard extends React.Component {\n props: Props;\n\n static propTypes = {\n ...NavigationPropTypes.SceneRenderer,\n onComponentRef: PropTypes.func.isRequired,\n panHandlers: NavigationPropTypes.panHandlers,\n pointerEvents: PropTypes.string.isRequired,\n renderScene: PropTypes.func.isRequired,\n style: PropTypes.any,\n };\n\n shouldComponentUpdate(nextProps: Props, nextState: any): boolean {\n return ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\n this,\n nextProps,\n nextState\n );\n }\n\n render(): ReactElement {\n const {\n panHandlers,\n pointerEvents,\n renderScene,\n style,\n ...props, /* NavigationSceneRendererProps */\n } = this.props;\n\n const viewStyle = style === undefined ?\n NavigationCardStackStyleInterpolator.forHorizontal(props) :\n style;\n\n const viewPanHandlers = panHandlers === undefined ?\n NavigationCardStackPanResponder.forHorizontal(props) :\n panHandlers;\n\n return (\n \n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n main: {\n backgroundColor: '#E9E9EF',\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n shadowColor: 'black',\n shadowOffset: {width: 0, height: 0},\n shadowOpacity: 0.4,\n shadowRadius: 10,\n top: 0,\n },\n});\n\nNavigationCard = NavigationPointerEventsContainer.create(NavigationCard);\nNavigationCard = NavigationContainer.create(NavigationCard);\n\n// Export these buil-in interaction modules.\nNavigationCard.CardStackPanResponder = NavigationCardStackPanResponder;\nNavigationCard.CardStackStyleInterpolator = NavigationCardStackStyleInterpolator;\nNavigationCard.PagerPanResponder = NavigationPagerPanResponder;\nNavigationCard.PagerStyleInterpolator = NavigationPagerStyleInterpolator;\n\nmodule.exports = NavigationCard;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationCardStack.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationCardStack","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[242,296,364,437,505,573,615,671,732,774],"dependencies":["NavigationAnimatedView","NavigationCard","NavigationCardStackStyleInterpolator","NavigationContainer","NavigationCardStackPanResponder","NavigationPropTypes","React","ReactComponentWithPureRenderMixin","StyleSheet","fbjs/lib/emptyFunction"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationCardStack.js';\n\n\n\n\n\n\n\n\n\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 NavigationAnimatedView=require('NavigationAnimatedView');\nvar NavigationCard=require('NavigationCard');\nvar NavigationCardStackStyleInterpolator=require('NavigationCardStackStyleInterpolator');\nvar NavigationContainer=require('NavigationContainer');\nvar NavigationCardStackPanResponder=require('NavigationCardStackPanResponder');\nvar NavigationPropTypes=require('NavigationPropTypes');\nvar React=require('React');\nvar ReactComponentWithPureRenderMixin=require('ReactComponentWithPureRenderMixin');\nvar StyleSheet=require('StyleSheet');\n\nvar emptyFunction=require('fbjs/lib/emptyFunction');var \n\nPropTypes=React.PropTypes;var \nDirections=NavigationCardStackPanResponder.Directions;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\n\n\n\n\n\n\n\nNavigationCardStack=function(_React$Component){babelHelpers.inherits(NavigationCardStack,_React$Component);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction NavigationCardStack(props,context){babelHelpers.classCallCheck(this,NavigationCardStack);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationCardStack).call(this,\nprops,context));}babelHelpers.createClass(NavigationCardStack,[{key:'componentWillMount',value:function componentWillMount()\n\n\n{\nthis._renderScene=this._renderScene.bind(this);}},{key:'shouldComponentUpdate',value:function shouldComponentUpdate(\n\n\nnextProps,nextState){\nreturn ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\nthis,\nnextProps,\nnextState);}},{key:'render',value:function render()\n\n\n\n{\nreturn (\nReact.createElement(NavigationAnimatedView,{\nnavigationState:this.props.navigationState,\nrenderOverlay:this.props.renderOverlay,\nrenderScene:this._renderScene,\n\nstyle:[styles.animatedView,this.props.style],__source:{fileName:_jsxFileName,lineNumber:119}}));}},{key:'_renderScene',value:function _renderScene(\n\n\n\n\nprops){\nvar isVertical=this.props.direction==='vertical';\n\nvar style=isVertical?\nNavigationCardStackStyleInterpolator.forVertical(props):\nNavigationCardStackStyleInterpolator.forHorizontal(props);\n\nvar panHandlers=isVertical?\nNavigationCardStackPanResponder.forVertical(props):\nNavigationCardStackPanResponder.forHorizontal(props);\n\nreturn (\nReact.createElement(NavigationCard,babelHelpers.extends({},\nprops,{\nkey:'card_'+props.scene.key,\npanHandlers:panHandlers,\nrenderScene:this.props.renderScene,\nstyle:style,__source:{fileName:_jsxFileName,lineNumber:141}})));}}]);return NavigationCardStack;}(React.Component);NavigationCardStack.propTypes={direction:PropTypes.oneOf([Directions.HORIZONTAL,Directions.VERTICAL]),navigationState:NavigationPropTypes.navigationParentState.isRequired,renderOverlay:PropTypes.func,renderScene:PropTypes.func.isRequired};NavigationCardStack.defaultProps={direction:Directions.HORIZONTAL,renderOverlay:emptyFunction.thatReturnsNull};\n\n\n\n\n\nvar styles=StyleSheet.create({\nanimatedView:{\nflex:1}});\n\n\n\nmodule.exports=NavigationContainer.create(NavigationCardStack);","map":null,"id":"NavigationCardStack","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationCardStack\n * @flow\n */\n'use strict';\n\nconst NavigationAnimatedView = require('NavigationAnimatedView');\nconst NavigationCard = require('NavigationCard');\nconst NavigationCardStackStyleInterpolator = require('NavigationCardStackStyleInterpolator');\nconst NavigationContainer = require('NavigationContainer');\nconst NavigationCardStackPanResponder = require('NavigationCardStackPanResponder');\nconst NavigationPropTypes = require('NavigationPropTypes');\nconst React = require('React');\nconst ReactComponentWithPureRenderMixin = require('ReactComponentWithPureRenderMixin');\nconst StyleSheet = require('StyleSheet');\n\nconst emptyFunction = require('fbjs/lib/emptyFunction');\n\nconst {PropTypes} = React;\nconst {Directions} = NavigationCardStackPanResponder;\n\nimport type {\n NavigationParentState,\n NavigationSceneRenderer,\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\nimport type {\n NavigationGestureDirection,\n} from 'NavigationCardStackPanResponder';\n\ntype Props = {\n direction: NavigationGestureDirection,\n navigationState: NavigationParentState,\n renderOverlay: ?NavigationSceneRenderer,\n renderScene: NavigationSceneRenderer,\n};\n\ntype DefaultProps = {\n direction: NavigationGestureDirection,\n renderOverlay: ?NavigationSceneRenderer,\n};\n\n/**\n * A controlled navigation view that renders a stack of cards.\n *\n * +------------+\n * +-+ |\n * +-+ | |\n * | | | |\n * | | | Focused |\n * | | | Card |\n * | | | |\n * +-+ | |\n * +-+ |\n * +------------+\n */\nclass NavigationCardStack extends React.Component {\n _renderScene : NavigationSceneRenderer;\n\n static propTypes = {\n direction: PropTypes.oneOf([Directions.HORIZONTAL, Directions.VERTICAL]),\n navigationState: NavigationPropTypes.navigationParentState.isRequired,\n renderOverlay: PropTypes.func,\n renderScene: PropTypes.func.isRequired,\n };\n\n static defaultProps: DefaultProps = {\n direction: Directions.HORIZONTAL,\n renderOverlay: emptyFunction.thatReturnsNull,\n };\n\n constructor(props: Props, context: any) {\n super(props, context);\n }\n\n componentWillMount(): void {\n this._renderScene = this._renderScene.bind(this);\n }\n\n shouldComponentUpdate(nextProps: Object, nextState: void): boolean {\n return ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\n this,\n nextProps,\n nextState\n );\n }\n\n render(): ReactElement {\n return (\n \n );\n }\n\n _renderScene(props: NavigationSceneRendererProps): ReactElement {\n const isVertical = this.props.direction === 'vertical';\n\n const style = isVertical ?\n NavigationCardStackStyleInterpolator.forVertical(props) :\n NavigationCardStackStyleInterpolator.forHorizontal(props);\n\n const panHandlers = isVertical ?\n NavigationCardStackPanResponder.forVertical(props) :\n NavigationCardStackPanResponder.forHorizontal(props);\n\n return (\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n animatedView: {\n flex: 1,\n },\n});\n\nmodule.exports = NavigationContainer.create(NavigationCardStack);\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationCardStackPanResponder.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationCardStackPanResponder","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48,104,158],"dependencies":["Animated","NavigationAbstractPanResponder","clamp"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Animated=require('Animated');\nvar NavigationAbstractPanResponder=require('NavigationAbstractPanResponder');\n\nvar clamp=require('clamp');\n\n\n\n\n\n\n\n\n\nvar ANIMATION_DURATION=250;\n\n\n\n\n\n\nvar POSITION_THRESHOLD=1/3;\n\n\n\n\nvar RESPOND_THRESHOLD=15;\n\n\n\n\n\n\nvar RESPOND_POSITION_MAX_HORIZONTAL=30;\nvar RESPOND_POSITION_MAX_VERTICAL=null;\n\n\n\n\nvar DISTANCE_THRESHOLD=100;\n\n\n\n\nvar Directions={\n'HORIZONTAL':'horizontal',\n'VERTICAL':'vertical'};\n\n\n\n\n\n\n\nvar Actions={\n\n\n\nBACK:{type:'back'}};var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNavigationCardStackPanResponder=function(_NavigationAbstractPa){babelHelpers.inherits(NavigationCardStackPanResponder,_NavigationAbstractPa);\n\n\n\n\n\n\nfunction NavigationCardStackPanResponder(\ndirection,\nprops)\n{babelHelpers.classCallCheck(this,NavigationCardStackPanResponder);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationCardStackPanResponder).call(this));\n\n_this._isResponding=false;\n_this._isVertical=direction===Directions.VERTICAL;\n_this._props=props;\n_this._startValue=0;return _this;}babelHelpers.createClass(NavigationCardStackPanResponder,[{key:'onMoveShouldSetPanResponder',value:function onMoveShouldSetPanResponder(\n\n\nevent,gesture){\nvar props=this._props;\n\nif(props.navigationState.index!==props.scene.index){\nreturn false;}\n\n\nvar layout=props.layout;\nvar isVertical=this._isVertical;\nvar index=props.navigationState.index;\nvar currentDragDistance=gesture[isVertical?'dy':'dx'];\nvar currentDragPosition=gesture[isVertical?'moveY':'moveX'];\nvar maxDragDistance=isVertical?\nlayout.height.__getValue():\nlayout.width.__getValue();\n\nvar positionMax=isVertical?\nRESPOND_POSITION_MAX_VERTICAL:\nRESPOND_POSITION_MAX_HORIZONTAL;\n\nif(positionMax!=null&¤tDragPosition>positionMax){\nreturn false;}\n\n\nreturn (\nMath.abs(currentDragDistance)>RESPOND_THRESHOLD&&\nmaxDragDistance>0&&\nindex>0);}},{key:'onPanResponderGrant',value:function onPanResponderGrant()\n\n\n\n{var _this2=this;\nthis._isResponding=false;\nthis._props.position.stopAnimation(function(value){\n_this2._isResponding=true;\n_this2._startValue=value;});}},{key:'onPanResponderMove',value:function onPanResponderMove(\n\n\n\nevent,gesture){\nif(!this._isResponding){\nreturn;}\n\n\nvar props=this._props;\nvar layout=props.layout;\nvar isVertical=this._isVertical;\nvar axis=isVertical?'dy':'dx';\nvar index=props.navigationState.index;\nvar distance=isVertical?\nlayout.height.__getValue():\nlayout.width.__getValue();\n\nvar value=clamp(\nindex-1,\nthis._startValue-gesture[axis]/distance,\nindex);\n\n\nprops.position.setValue(value);}},{key:'onPanResponderRelease',value:function onPanResponderRelease(\n\n\nevent,gesture){var _this3=this;\nif(!this._isResponding){\nreturn;}\n\n\nthis._isResponding=false;\n\nvar props=this._props;\nvar isVertical=this._isVertical;\nvar axis=isVertical?'dy':'dx';\nvar index=props.navigationState.index;\nvar distance=gesture[axis];\n\nprops.position.stopAnimation(function(value){\n_this3._reset();\nif(distance>DISTANCE_THRESHOLD||value<=index-POSITION_THRESHOLD){\nprops.onNavigate(Actions.BACK);}});}},{key:'onPanResponderTerminate',value:function onPanResponderTerminate()\n\n\n\n\n{\nthis._isResponding=false;\nthis._reset();}},{key:'_reset',value:function _reset()\n\n\n{\nvar props=this._props;\nAnimated.timing(\nprops.position,\n{\ntoValue:props.navigationState.index,\nduration:ANIMATION_DURATION}).\n\nstart();}}]);return NavigationCardStackPanResponder;}(NavigationAbstractPanResponder);\n\n\n\nfunction createPanHandlers(\ndirection,\nprops)\n{\nvar responder=new NavigationCardStackPanResponder(direction,props);\nreturn responder.panHandlers;}\n\n\nfunction forHorizontal(\nprops)\n{\nreturn createPanHandlers(Directions.HORIZONTAL,props);}\n\n\nfunction forVertical(\nprops)\n{\nreturn createPanHandlers(Directions.VERTICAL,props);}\n\n\nmodule.exports={\n\nANIMATION_DURATION:ANIMATION_DURATION,\nDISTANCE_THRESHOLD:DISTANCE_THRESHOLD,\nPOSITION_THRESHOLD:POSITION_THRESHOLD,\nRESPOND_THRESHOLD:RESPOND_THRESHOLD,\n\n\nActions:Actions,\nDirections:Directions,\n\n\nforHorizontal:forHorizontal,\nforVertical:forVertical};","map":null,"id":"NavigationCardStackPanResponder","source":"/**\n * Copyright (c) 2013-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 NavigationCardStackPanResponder\n * @flow\n * @typechecks\n */\n'use strict';\n\nconst Animated = require('Animated');\nconst NavigationAbstractPanResponder = require('NavigationAbstractPanResponder');\n\nconst clamp = require('clamp');\n\nimport type {\n NavigationPanPanHandlers,\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\n/**\n * The duration of the card animation in milliseconds.\n */\nconst ANIMATION_DURATION = 250;\n\n/**\n * The threshold to invoke the `onNavigate` action.\n * For instance, `1 / 3` means that moving greater than 1 / 3 of the width of\n * the view will navigate.\n */\nconst POSITION_THRESHOLD = 1 / 3;\n\n/**\n * The threshold (in pixels) to start the gesture action.\n */\nconst RESPOND_THRESHOLD = 15;\n\n/**\n * The distance from the edge of the navigator which gesture response can start for.\n * For horizontal scroll views, a distance of 30 from the left of the screen is the\n * standard maximum position to start touch responsiveness.\n */\nconst RESPOND_POSITION_MAX_HORIZONTAL = 30;\nconst RESPOND_POSITION_MAX_VERTICAL = null;\n\n/**\n * The threshold (in pixels) to finish the gesture action.\n */\nconst DISTANCE_THRESHOLD = 100;\n\n/**\n * Primitive gesture directions.\n */\nconst Directions = {\n 'HORIZONTAL': 'horizontal',\n 'VERTICAL': 'vertical',\n};\n\nexport type NavigationGestureDirection = 'horizontal' | 'vertical';\n\n/**\n * Primitive gesture actions.\n */\nconst Actions = {\n // The gesture to navigate backward.\n // This is done by swiping from the left to the right or from the top to the\n // bottom.\n BACK: {type: 'back'},\n};\n\n/**\n * Pan responder that handles gesture for a card in the cards stack.\n *\n * +------------+\n * +-+ |\n * +-+ | |\n * | | | |\n * | | | Focused |\n * | | | Card |\n * | | | |\n * +-+ | |\n * +-+ |\n * +------------+\n */\nclass NavigationCardStackPanResponder extends NavigationAbstractPanResponder {\n\n _isResponding: boolean;\n _isVertical: boolean;\n _props: NavigationSceneRendererProps;\n _startValue: number;\n\n constructor(\n direction: NavigationGestureDirection,\n props: NavigationSceneRendererProps,\n ) {\n super();\n this._isResponding = false;\n this._isVertical = direction === Directions.VERTICAL;\n this._props = props;\n this._startValue = 0;\n }\n\n onMoveShouldSetPanResponder(event: any, gesture: any): boolean {\n const props = this._props;\n\n if (props.navigationState.index !== props.scene.index) {\n return false;\n }\n\n const layout = props.layout;\n const isVertical = this._isVertical;\n const index = props.navigationState.index;\n const currentDragDistance = gesture[isVertical ? 'dy' : 'dx'];\n const currentDragPosition = gesture[isVertical ? 'moveY' : 'moveX'];\n const maxDragDistance = isVertical ?\n layout.height.__getValue() :\n layout.width.__getValue();\n\n const positionMax = isVertical ?\n RESPOND_POSITION_MAX_VERTICAL :\n RESPOND_POSITION_MAX_HORIZONTAL;\n\n if (positionMax != null && currentDragPosition > positionMax) {\n return false;\n }\n\n return (\n Math.abs(currentDragDistance) > RESPOND_THRESHOLD &&\n maxDragDistance > 0 &&\n index > 0\n );\n }\n\n onPanResponderGrant(): void {\n this._isResponding = false;\n this._props.position.stopAnimation((value: number) => {\n this._isResponding = true;\n this._startValue = value;\n });\n }\n\n onPanResponderMove(event: any, gesture: any): void {\n if (!this._isResponding) {\n return;\n }\n\n const props = this._props;\n const layout = props.layout;\n const isVertical = this._isVertical;\n const axis = isVertical ? 'dy' : 'dx';\n const index = props.navigationState.index;\n const distance = isVertical ?\n layout.height.__getValue() :\n layout.width.__getValue();\n\n const value = clamp(\n index - 1,\n this._startValue - (gesture[axis] / distance),\n index\n );\n\n props.position.setValue(value);\n }\n\n onPanResponderRelease(event: any, gesture: any): void {\n if (!this._isResponding) {\n return;\n }\n\n this._isResponding = false;\n\n const props = this._props;\n const isVertical = this._isVertical;\n const axis = isVertical ? 'dy' : 'dx';\n const index = props.navigationState.index;\n const distance = gesture[axis];\n\n props.position.stopAnimation((value: number) => {\n this._reset();\n if (distance > DISTANCE_THRESHOLD || value <= index - POSITION_THRESHOLD) {\n props.onNavigate(Actions.BACK);\n }\n });\n }\n\n onPanResponderTerminate(): void {\n this._isResponding = false;\n this._reset();\n }\n\n _reset(): void {\n const props = this._props;\n Animated.timing(\n props.position,\n {\n toValue: props.navigationState.index,\n duration: ANIMATION_DURATION,\n }\n ).start();\n }\n}\n\nfunction createPanHandlers(\n direction: NavigationGestureDirection,\n props: NavigationSceneRendererProps,\n): NavigationPanPanHandlers {\n const responder = new NavigationCardStackPanResponder(direction, props);\n return responder.panHandlers;\n}\n\nfunction forHorizontal(\n props: NavigationSceneRendererProps,\n): NavigationPanPanHandlers {\n return createPanHandlers(Directions.HORIZONTAL, props);\n}\n\nfunction forVertical(\n props: NavigationSceneRendererProps,\n): NavigationPanPanHandlers {\n return createPanHandlers(Directions.VERTICAL, props);\n}\n\nmodule.exports = {\n // constants\n ANIMATION_DURATION,\n DISTANCE_THRESHOLD,\n POSITION_THRESHOLD,\n RESPOND_THRESHOLD,\n\n // enums\n Actions,\n Directions,\n\n // methods.\n forHorizontal,\n forVertical,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationCardStackStyleInterpolator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationCardStackStyleInterpolator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\n\n\n\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 forInitial(props){var \n\nnavigationState=\n\nprops.navigationState;var scene=props.scene;\n\nvar focused=navigationState.index===scene.index;\nvar opacity=focused?1:0;\n\nvar translate=focused?0:1000000;\nreturn {\nopacity:opacity,\ntransform:[\n{translateX:translate},\n{translateY:translate}]};}\n\n\n\n\nfunction forHorizontal(props){var \n\nlayout=\n\n\nprops.layout;var position=props.position;var scene=props.scene;\n\nif(!layout.isMeasured){\nreturn forInitial(props);}\n\n\nvar index=scene.index;\nvar inputRange=[index-1,index,index+1];\nvar width=layout.initWidth;\n\nvar opacity=position.interpolate({\ninputRange:inputRange,\noutputRange:[1,1,0.3]});\n\n\nvar scale=position.interpolate({\ninputRange:inputRange,\noutputRange:[1,1,0.95]});\n\n\nvar translateY=0;\nvar translateX=position.interpolate({\ninputRange:inputRange,\noutputRange:[width,0,-10]});\n\n\nreturn {\nopacity:opacity,\ntransform:[\n{scale:scale},\n{translateX:translateX},\n{translateY:translateY}]};}\n\n\n\n\nfunction forVertical(props){var \n\nlayout=\n\n\nprops.layout;var position=props.position;var scene=props.scene;\n\nif(!layout.isMeasured){\nreturn forInitial(props);}\n\n\nvar index=scene.index;\nvar inputRange=[index-1,index,index+1];\nvar height=layout.initHeight;\n\nvar opacity=position.interpolate({\ninputRange:inputRange,\noutputRange:[1,1,0.3]});\n\n\nvar scale=position.interpolate({\ninputRange:inputRange,\noutputRange:[1,1,0.95]});\n\n\nvar translateX=0;\nvar translateY=position.interpolate({\ninputRange:inputRange,\noutputRange:[height,0,-10]});\n\n\nreturn {\nopacity:opacity,\ntransform:[\n{scale:scale},\n{translateX:translateX},\n{translateY:translateY}]};}\n\n\n\n\nmodule.exports={\nforHorizontal:forHorizontal,\nforVertical:forVertical};","map":null,"id":"NavigationCardStackStyleInterpolator","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationCardStackStyleInterpolator\n * @flow\n */\n'use strict';\n\nimport type {\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\n/**\n * Utility that builds the style for the card in the cards stack.\n *\n * +------------+\n * +-+ |\n * +-+ | |\n * | | | |\n * | | | Focused |\n * | | | Card |\n * | | | |\n * +-+ | |\n * +-+ |\n * +------------+\n */\n\n/**\n * Render the initial style when the initial layout isn't measured yet.\n */\nfunction forInitial(props: NavigationSceneRendererProps): Object {\n const {\n navigationState,\n scene,\n } = props;\n\n const focused = navigationState.index === scene.index;\n const opacity = focused ? 1 : 0;\n // If not focused, move the scene to the far away.\n const translate = focused ? 0 : 1000000;\n return {\n opacity,\n transform: [\n { translateX: translate },\n { translateY: translate },\n ],\n };\n}\n\nfunction forHorizontal(props: NavigationSceneRendererProps): Object {\n const {\n layout,\n position,\n scene,\n } = props;\n\n if (!layout.isMeasured) {\n return forInitial(props);\n }\n\n const index = scene.index;\n const inputRange = [index - 1, index, index + 1];\n const width = layout.initWidth;\n\n const opacity = position.interpolate({\n inputRange,\n outputRange: [1, 1, 0.3],\n });\n\n const scale = position.interpolate({\n inputRange,\n outputRange: [1, 1, 0.95],\n });\n\n const translateY = 0;\n const translateX = position.interpolate({\n inputRange,\n outputRange: [width, 0, -10],\n });\n\n return {\n opacity,\n transform: [\n { scale },\n { translateX },\n { translateY },\n ],\n };\n}\n\nfunction forVertical(props: NavigationSceneRendererProps): Object {\n const {\n layout,\n position,\n scene,\n } = props;\n\n if (!layout.isMeasured) {\n return forInitial(props);\n }\n\n const index = scene.index;\n const inputRange = [index - 1, index, index + 1];\n const height = layout.initHeight;\n\n const opacity = position.interpolate({\n inputRange,\n outputRange: [1, 1, 0.3],\n });\n\n const scale = position.interpolate({\n inputRange,\n outputRange: [1, 1, 0.95],\n });\n\n const translateX = 0;\n const translateY = position.interpolate({\n inputRange,\n outputRange: [height, 0, -10],\n });\n\n return {\n opacity,\n transform: [\n { scale },\n { translateX },\n { translateY },\n ],\n };\n}\n\nmodule.exports = {\n forHorizontal,\n forVertical,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationHeader.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationHeader","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[222,256,305,363,428,491,561,645],"dependencies":["React","react-native","NavigationContainer","NavigationHeaderTitle","NavigationHeaderBackButton","NavigationPropTypes","NavigationHeaderStyleInterpolator","ReactComponentWithPureRenderMixin"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationHeader.js';\n\n\n\n\n\n\n\n\n\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 React=require('React');\nvar ReactNative=require('react-native');\nvar NavigationContainer=require('NavigationContainer');\nvar NavigationHeaderTitle=require('NavigationHeaderTitle');\nvar NavigationHeaderBackButton=require('NavigationHeaderBackButton');\nvar NavigationPropTypes=require('NavigationPropTypes');\nvar NavigationHeaderStyleInterpolator=require('NavigationHeaderStyleInterpolator');\nvar ReactComponentWithPureRenderMixin=require('ReactComponentWithPureRenderMixin');var \n\n\nAnimated=\n\n\n\nReactNative.Animated;var Platform=ReactNative.Platform;var StyleSheet=ReactNative.StyleSheet;var View=ReactNative.View;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar APPBAR_HEIGHT=Platform.OS==='ios'?44:56;\nvar STATUSBAR_HEIGHT=Platform.OS==='ios'?20:0;var \nPropTypes=React.PropTypes;var \n\nNavigationHeader=function(_React$Component){babelHelpers.inherits(NavigationHeader,_React$Component);function NavigationHeader(){babelHelpers.classCallCheck(this,NavigationHeader);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationHeader).apply(this,arguments));}babelHelpers.createClass(NavigationHeader,[{key:'shouldComponentUpdate',value:function shouldComponentUpdate(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nnextProps,nextState){\nreturn ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\nthis,\nnextProps,\nnextState);}},{key:'render',value:function render()\n\n\n\n{var _this2=this;var _props=\nthis.props;var scenes=_props.scenes;var style=_props.style;var viewProps=_props.viewProps;\n\nvar scenesProps=scenes.map(function(scene){\nvar props=NavigationPropTypes.extractSceneRendererProps(_this2.props);\nprops.scene=scene;\nreturn props;});\n\n\nreturn (\nReact.createElement(View,babelHelpers.extends({style:[styles.appbar,style]},viewProps,{__source:{fileName:_jsxFileName,lineNumber:124}}),\nscenesProps.map(this._renderLeft,this),\nscenesProps.map(this._renderTitle,this),\nscenesProps.map(this._renderRight,this)));}},{key:'_renderLeft',value:function _renderLeft(\n\n\n\n\nprops){\nreturn this._renderSubView(\nprops,\n'left',\nthis.props.renderLeftComponent,\nNavigationHeaderStyleInterpolator.forLeft);}},{key:'_renderTitle',value:function _renderTitle(\n\n\n\nprops){\nreturn this._renderSubView(\nprops,\n'title',\nthis.props.renderTitleComponent,\nNavigationHeaderStyleInterpolator.forCenter);}},{key:'_renderRight',value:function _renderRight(\n\n\n\nprops){\nreturn this._renderSubView(\nprops,\n'right',\nthis.props.renderRightComponent,\nNavigationHeaderStyleInterpolator.forRight);}},{key:'_renderSubView',value:function _renderSubView(\n\n\n\n\nprops,\nname,\nrenderer,\nstyleInterpolator)\n{var \n\nscene=\n\nprops.scene;var navigationState=props.navigationState;var \n\n\nindex=\n\n\nscene.index;var isStale=scene.isStale;var key=scene.key;\n\nvar offset=navigationState.index-index;\n\nif(Math.abs(offset)>2){\n\n\nreturn null;}\n\n\nvar subView=renderer(props);\nif(subView===null){\nreturn null;}\n\n\nvar pointerEvents=offset!==0||isStale?'none':'box-none';\nreturn (\nReact.createElement(Animated.View,{\npointerEvents:pointerEvents,\nkey:name+'_'+key,\nstyle:[\nstyles[name],\nstyleInterpolator(props)],__source:{fileName:_jsxFileName,lineNumber:191}},\n\nsubView));}}]);return NavigationHeader;}(React.Component);NavigationHeader.defaultProps={renderTitleComponent:function renderTitleComponent(props){var navigationState=props.navigationState;var title=String(navigationState.title||'');return React.createElement(NavigationHeaderTitle,{__source:{fileName:_jsxFileName,lineNumber:85}},title);},renderLeftComponent:function renderLeftComponent(props){return props.scene.index>0?React.createElement(NavigationHeaderBackButton,{__source:{fileName:_jsxFileName,lineNumber:89}}):null;},renderRightComponent:function renderRightComponent(props){return null;}};NavigationHeader.propTypes=babelHelpers.extends({},NavigationPropTypes.SceneRenderer,{renderLeftComponent:PropTypes.func,renderRightComponent:PropTypes.func,renderTitleComponent:PropTypes.func,style:View.propTypes.style,viewProps:PropTypes.shape(View.propTypes)});\n\n\n\n\n\nvar styles=StyleSheet.create({\nappbar:{\nalignItems:'center',\nbackgroundColor:Platform.OS==='ios'?'#EFEFF2':'#FFF',\nborderBottomColor:'rgba(0, 0, 0, .15)',\nborderBottomWidth:Platform.OS==='ios'?StyleSheet.hairlineWidth:0,\nelevation:2,\nflexDirection:'row',\nheight:APPBAR_HEIGHT+STATUSBAR_HEIGHT,\njustifyContent:'flex-start',\nleft:0,\nmarginBottom:16,\nposition:'absolute',\nright:0,\ntop:0},\n\n\ntitle:{\nbottom:0,\nleft:APPBAR_HEIGHT,\nmarginTop:STATUSBAR_HEIGHT,\nposition:'absolute',\nright:APPBAR_HEIGHT,\ntop:0},\n\n\nleft:{\nbottom:0,\nleft:0,\nmarginTop:STATUSBAR_HEIGHT,\nposition:'absolute',\ntop:0},\n\n\nright:{\nbottom:0,\nmarginTop:STATUSBAR_HEIGHT,\nposition:'absolute',\nright:0,\ntop:0}});\n\n\n\nvar NavigationHeaderContainer=NavigationContainer.create(NavigationHeader);\n\nNavigationHeaderContainer.HEIGHT=APPBAR_HEIGHT+STATUSBAR_HEIGHT;\nNavigationHeaderContainer.Title=NavigationHeaderTitle;\nNavigationHeaderContainer.BackButton=NavigationHeaderBackButton;\n\nmodule.exports=NavigationHeaderContainer;","map":null,"id":"NavigationHeader","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationHeader\n * @flow\n */\n'use strict';\n\nconst React = require('React');\nconst ReactNative = require('react-native');\nconst NavigationContainer = require('NavigationContainer');\nconst NavigationHeaderTitle = require('NavigationHeaderTitle');\nconst NavigationHeaderBackButton = require('NavigationHeaderBackButton');\nconst NavigationPropTypes = require('NavigationPropTypes');\nconst NavigationHeaderStyleInterpolator = require('NavigationHeaderStyleInterpolator');\nconst ReactComponentWithPureRenderMixin = require('ReactComponentWithPureRenderMixin');\n\nconst {\n Animated,\n Platform,\n StyleSheet,\n View,\n} = ReactNative;\n\nimport type {\n NavigationSceneRenderer,\n NavigationSceneRendererProps,\n NavigationStyleInterpolator,\n} from 'NavigationTypeDefinition';\n\ntype DefaultProps = {\n renderLeftComponent: NavigationSceneRenderer,\n renderRightComponent: NavigationSceneRenderer,\n renderTitleComponent: NavigationSceneRenderer,\n};\n\ntype Props = NavigationSceneRendererProps & {\n renderLeftComponent: NavigationSceneRenderer,\n renderRightComponent: NavigationSceneRenderer,\n renderTitleComponent: NavigationSceneRenderer,\n style?: any;\n viewProps?: any;\n};\n\ntype SubViewName = 'left' | 'title' | 'right';\n\nconst APPBAR_HEIGHT = Platform.OS === 'ios' ? 44 : 56;\nconst STATUSBAR_HEIGHT = Platform.OS === 'ios' ? 20 : 0;\nconst {PropTypes} = React;\n\nclass NavigationHeader extends React.Component {\n props: Props;\n\n static defaultProps = {\n\n renderTitleComponent: (props: NavigationSceneRendererProps) => {\n const {navigationState} = props;\n const title = String(navigationState.title || '');\n return {title};\n },\n\n renderLeftComponent: (props: NavigationSceneRendererProps) => {\n return props.scene.index > 0 ? : null;\n },\n\n renderRightComponent: (props: NavigationSceneRendererProps) => {\n return null;\n },\n };\n\n static propTypes = {\n ...NavigationPropTypes.SceneRenderer,\n renderLeftComponent: PropTypes.func,\n renderRightComponent: PropTypes.func,\n renderTitleComponent: PropTypes.func,\n style: View.propTypes.style,\n viewProps: PropTypes.shape(View.propTypes),\n };\n\n shouldComponentUpdate(nextProps: Props, nextState: any): boolean {\n return ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\n this,\n nextProps,\n nextState\n );\n }\n\n render(): ReactElement {\n const { scenes, style, viewProps } = this.props;\n\n const scenesProps = scenes.map(scene => {\n const props = NavigationPropTypes.extractSceneRendererProps(this.props);\n props.scene = scene;\n return props;\n });\n\n return (\n \n {scenesProps.map(this._renderLeft, this)}\n {scenesProps.map(this._renderTitle, this)}\n {scenesProps.map(this._renderRight, this)}\n \n );\n }\n\n _renderLeft(props: NavigationSceneRendererProps): ?ReactElement {\n return this._renderSubView(\n props,\n 'left',\n this.props.renderLeftComponent,\n NavigationHeaderStyleInterpolator.forLeft,\n );\n }\n\n _renderTitle(props: NavigationSceneRendererProps): ?ReactElement {\n return this._renderSubView(\n props,\n 'title',\n this.props.renderTitleComponent,\n NavigationHeaderStyleInterpolator.forCenter,\n );\n }\n\n _renderRight(props: NavigationSceneRendererProps): ?ReactElement {\n return this._renderSubView(\n props,\n 'right',\n this.props.renderRightComponent,\n NavigationHeaderStyleInterpolator.forRight,\n );\n }\n\n _renderSubView(\n props: NavigationSceneRendererProps,\n name: SubViewName,\n renderer: NavigationSceneRenderer,\n styleInterpolator: NavigationStyleInterpolator,\n ): ?ReactElement {\n const {\n scene,\n navigationState,\n } = props;\n\n const {\n index,\n isStale,\n key,\n } = scene;\n\n const offset = navigationState.index - index;\n\n if (Math.abs(offset) > 2) {\n // Scene is far away from the active scene. Hides it to avoid unnecessary\n // rendering.\n return null;\n }\n\n const subView = renderer(props);\n if (subView === null) {\n return null;\n }\n\n const pointerEvents = offset !== 0 || isStale ? 'none' : 'box-none';\n return (\n \n {subView}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n appbar: {\n alignItems: 'center',\n backgroundColor: Platform.OS === 'ios' ? '#EFEFF2' : '#FFF',\n borderBottomColor: 'rgba(0, 0, 0, .15)',\n borderBottomWidth: Platform.OS === 'ios' ? StyleSheet.hairlineWidth : 0,\n elevation: 2,\n flexDirection: 'row',\n height: APPBAR_HEIGHT + STATUSBAR_HEIGHT,\n justifyContent: 'flex-start',\n left: 0,\n marginBottom: 16, // This is needed for elevation shadow\n position: 'absolute',\n right: 0,\n top: 0,\n },\n\n title: {\n bottom: 0,\n left: APPBAR_HEIGHT,\n marginTop: STATUSBAR_HEIGHT,\n position: 'absolute',\n right: APPBAR_HEIGHT,\n top: 0,\n },\n\n left: {\n bottom: 0,\n left: 0,\n marginTop: STATUSBAR_HEIGHT,\n position: 'absolute',\n top: 0,\n },\n\n right: {\n bottom: 0,\n marginTop: STATUSBAR_HEIGHT,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\n\nconst NavigationHeaderContainer = NavigationContainer.create(NavigationHeader);\n\nNavigationHeaderContainer.HEIGHT = APPBAR_HEIGHT + STATUSBAR_HEIGHT;\nNavigationHeaderContainer.Title = NavigationHeaderTitle;\nNavigationHeaderContainer.BackButton = NavigationHeaderBackButton;\n\nmodule.exports = NavigationHeaderContainer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationHeaderBackButton.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationHeaderBackButton","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[216,250,299,359,904],"dependencies":["react","react-native","NavigationContainer","NavigationRootContainer","./assets/back-icon.png"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationHeaderBackButton.js';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('react');\nvar ReactNative=require('react-native');\nvar NavigationContainer=require('NavigationContainer');\nvar NavigationRootContainer=require('NavigationRootContainer');var \n\n\nImage=\n\n\n\nReactNative.Image;var Platform=ReactNative.Platform;var StyleSheet=ReactNative.StyleSheet;var TouchableOpacity=ReactNative.TouchableOpacity;\n\n\n\n\n\nvar NavigationHeaderBackButton=function NavigationHeaderBackButton(props){return (\nReact.createElement(TouchableOpacity,{style:styles.buttonContainer,onPress:function onPress(){return props.onNavigate(NavigationRootContainer.getBackAction());},__source:{fileName:_jsxFileName,lineNumber:36}},\nReact.createElement(Image,{style:styles.button,source:require('./assets/back-icon.png'),__source:{fileName:_jsxFileName,lineNumber:37}})));};\n\n\n\nNavigationHeaderBackButton.propTypes={\nonNavigate:React.PropTypes.func.isRequired};\n\n\nvar styles=StyleSheet.create({\nbuttonContainer:{\nflex:1,\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'center'},\n\nbutton:{\nheight:24,\nwidth:24,\nmargin:Platform.OS==='ios'?10:16,\nresizeMode:'contain'}});\n\n\n\nmodule.exports=NavigationContainer.create(NavigationHeaderBackButton);","map":null,"id":"NavigationHeaderBackButton","source":"/**\n * The examples provided by Facebook are for non-commercial testing and\n * evaluation purposes only.\n *\n * Facebook reserves all rights not expressly granted.\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 MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL\n * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\n * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @providesModule NavigationHeaderBackButton\n * @flow\n*/\n'use strict';\n\nconst React = require('react');\nconst ReactNative = require('react-native');\nconst NavigationContainer = require('NavigationContainer');\nconst NavigationRootContainer = require('NavigationRootContainer');\n\nconst {\n Image,\n Platform,\n StyleSheet,\n TouchableOpacity,\n} = ReactNative;\n\ntype Props = {\n onNavigate: Function\n}\n\nconst NavigationHeaderBackButton = (props: Props) => (\n props.onNavigate(NavigationRootContainer.getBackAction())}>\n \n \n);\n\nNavigationHeaderBackButton.propTypes = {\n onNavigate: React.PropTypes.func.isRequired\n};\n\nconst styles = StyleSheet.create({\n buttonContainer: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n button: {\n height: 24,\n width: 24,\n margin: Platform.OS === 'ios' ? 10 : 16,\n resizeMode: 'contain'\n }\n});\n\nmodule.exports = NavigationContainer.create(NavigationHeaderBackButton);\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationHeaderStyleInterpolator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationHeaderStyleInterpolator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction forLeft(props){var \nposition=props.position;var scene=props.scene;var \nindex=scene.index;\nreturn {\nopacity:position.interpolate({\ninputRange:[index-1,index,index+1],\noutputRange:[0,1,0]})};}\n\n\n\n\nfunction forCenter(props){var \nposition=props.position;var scene=props.scene;var \nindex=scene.index;\nreturn {\nopacity:position.interpolate({\ninputRange:[index-1,index,index+1],\noutputRange:[0,1,0]}),\n\ntransform:[\n{\ntranslateX:position.interpolate({\ninputRange:[index-1,index+1],\noutputRange:[200,-200]})}]};}\n\n\n\n\n\n\nfunction forRight(props){var \nposition=props.position;var scene=props.scene;var \nindex=scene.index;\nreturn {\nopacity:position.interpolate({\ninputRange:[index-1,index,index+1],\noutputRange:[0,1,0]})};}\n\n\n\n\nmodule.exports={\nforCenter:forCenter,\nforLeft:forLeft,\nforRight:forRight};","map":null,"id":"NavigationHeaderStyleInterpolator","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationHeaderStyleInterpolator\n * @flow\n */\n'use strict';\n\n\nimport type {\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\n/**\n * Utility that builds the style for the navigation header.\n *\n * +-------------+-------------+-------------+\n * | | | |\n * | Left | Title | Right |\n * | Component | Component | Component |\n * | | | |\n * +-------------+-------------+-------------+\n */\n\nfunction forLeft(props: NavigationSceneRendererProps): Object {\n const {position, scene} = props;\n const {index} = scene;\n return {\n opacity: position.interpolate({\n inputRange: [ index - 1, index, index + 1 ],\n outputRange: [ 0, 1, 0 ],\n }),\n };\n}\n\nfunction forCenter(props: NavigationSceneRendererProps): Object {\n const {position, scene} = props;\n const {index} = scene;\n return {\n opacity:position.interpolate({\n inputRange: [ index - 1, index, index + 1 ],\n outputRange: [ 0, 1, 0 ],\n }),\n transform: [\n {\n translateX: position.interpolate({\n inputRange: [ index - 1, index + 1 ],\n outputRange: [ 200, -200 ],\n }),\n }\n ],\n };\n}\n\nfunction forRight(props: NavigationSceneRendererProps): Object {\n const {position, scene} = props;\n const {index} = scene;\n return {\n opacity: position.interpolate({\n inputRange: [ index - 1, index, index + 1 ],\n outputRange: [ 0, 1, 0 ],\n }),\n };\n}\n\nmodule.exports = {\n forCenter,\n forLeft,\n forRight,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationHeaderTitle.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationHeaderTitle","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[222,256],"dependencies":["react","react-native"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationHeaderTitle.js';\n\n\n\n\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 React=require('react');\nvar ReactNative=require('react-native');var \n\n\nPlatform=\n\n\n\nReactNative.Platform;var StyleSheet=ReactNative.StyleSheet;var View=ReactNative.View;var Text=ReactNative.Text;\n\n\n\n\n\n\n\n\nvar NavigationHeaderTitle=function NavigationHeaderTitle(_ref){var children=_ref.children;var style=_ref.style;var textStyle=_ref.textStyle;var viewProps=_ref.viewProps;return (\nReact.createElement(View,babelHelpers.extends({style:[styles.title,style]},viewProps,{__source:{fileName:_jsxFileName,lineNumber:48}}),\nReact.createElement(Text,{style:[styles.titleText,textStyle],__source:{fileName:_jsxFileName,lineNumber:49}},children)));};\n\n\n\nvar styles=StyleSheet.create({\ntitle:{\nflex:1,\nflexDirection:'row',\nalignItems:'center',\nmarginHorizontal:16},\n\n\ntitleText:{\nflex:1,\nfontSize:18,\nfontWeight:'500',\ncolor:'rgba(0, 0, 0, .9)',\ntextAlign:Platform.OS==='ios'?'center':'left'}});\n\n\n\nNavigationHeaderTitle.propTypes={\nchildren:React.PropTypes.string.isRequired,\nstyle:View.propTypes.style,\ntextStyle:Text.propTypes.style};\n\n\nmodule.exports=NavigationHeaderTitle;","map":null,"id":"NavigationHeaderTitle","source":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationHeaderTitle\n * @flow\n */\n'use strict';\n\nconst React = require('react');\nconst ReactNative = require('react-native');\n\nconst {\n Platform,\n StyleSheet,\n View,\n Text,\n} = ReactNative;\n\ntype Props = {\n children: ReactElement;\n style: any;\n textStyle: any;\n viewProps: any;\n}\n\nconst NavigationHeaderTitle = ({ children, style, textStyle, viewProps }: Props) => (\n \n {children}\n \n);\n\nconst styles = StyleSheet.create({\n title: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n marginHorizontal: 16\n },\n\n titleText: {\n flex: 1,\n fontSize: 18,\n fontWeight: '500',\n color: 'rgba(0, 0, 0, .9)',\n textAlign: Platform.OS === 'ios' ? 'center' : 'left'\n }\n});\n\nNavigationHeaderTitle.propTypes = {\n children: React.PropTypes.string.isRequired,\n style: View.propTypes.style,\n textStyle: Text.propTypes.style\n};\n\nmodule.exports = NavigationHeaderTitle;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationLegacyNavigator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationLegacyNavigator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[234,295,370,424,492,563,633,717,793,870,952,1024,1085,1129,1185],"dependencies":["Animated","NavigationAnimatedValueSubscription","NavigationAnimatedView","NavigationCard","NavigationCardStackStyleInterpolator","NavigationContext","NavigationLegacyNavigatorRouteStack","NavigationCardStackPanResponder","NavigationPagerPanResponder","NavigationPagerStyleInterpolator","NavigatorBreadcrumbNavigationBar","NavigatorNavigationBar","NavigatorSceneConfigs","React","ReactComponentWithPureRenderMixin"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationLegacyNavigator.js';\n\n\n\n\n\n\n\n\n\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 Animated=require('Animated');\nvar NavigationAnimatedValueSubscription=require('NavigationAnimatedValueSubscription');\nvar NavigationAnimatedView=require('NavigationAnimatedView');\nvar NavigationCard=require('NavigationCard');\nvar NavigationCardStackStyleInterpolator=require('NavigationCardStackStyleInterpolator');\nvar NavigationContext=require('NavigationContext');\nvar NavigationLegacyNavigatorRouteStack=require('NavigationLegacyNavigatorRouteStack');\nvar NavigationCardStackPanResponder=require('NavigationCardStackPanResponder');\nvar NavigationPagerPanResponder=require('NavigationPagerPanResponder');\nvar NavigationPagerStyleInterpolator=require('NavigationPagerStyleInterpolator');\nvar NavigatorBreadcrumbNavigationBar=require('NavigatorBreadcrumbNavigationBar');\nvar NavigatorNavigationBar=require('NavigatorNavigationBar');\nvar NavigatorSceneConfigs=require('NavigatorSceneConfigs');\nvar React=require('React');\nvar ReactComponentWithPureRenderMixin=require('ReactComponentWithPureRenderMixin');\n\n\n\n\n\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 RouteStack=NavigationLegacyNavigatorRouteStack;var \n\n\n\n\n\n\n\n\n\nNavigationLegacyNavigator=function(_React$Component){babelHelpers.inherits(NavigationLegacyNavigator,_React$Component);\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 NavigationLegacyNavigator(props,context){babelHelpers.classCallCheck(this,NavigationLegacyNavigator);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationLegacyNavigator).call(this,\nprops,context));\n\nvar stack=_this._getInitialRouteStack();\n\n\n\n\n_this._previousStack=stack;\n_this._stack=stack;\n_this._useAnimation=false;\n\n\n_this.parentNavigator=props.navigator;\n_this.navigationContext=new NavigationContext();\n\n_this.state={\nrouteStack:stack.toArray(),\npresentedIndex:stack.index};return _this;}babelHelpers.createClass(NavigationLegacyNavigator,[{key:'jumpTo',value:function jumpTo(\n\n\n\nroute){\nthis._applyStack(this._stack.jumpTo(route));}},{key:'jumpForward',value:function jumpForward()\n\n\n{\nthis._applyStack(this._stack.jumpForward());}},{key:'jumpBack',value:function jumpBack()\n\n\n{\nthis._applyStack(this._stack.jumpBack());}},{key:'push',value:function push(\n\n\nroute){\nthis._applyStack(this._stack.push(route));}},{key:'pop',value:function pop()\n\n\n{\nthis._applyStack(this._stack.pop());}},{key:'replaceAtIndex',value:function replaceAtIndex(\n\n\nroute,index){\nthis._applyStack(this._stack.replaceAtIndex(index,route));}},{key:'replace',value:function replace(\n\n\nroute){\nthis.replaceAtIndex(route,this._stack.index);}},{key:'replacePrevious',value:function replacePrevious(\n\n\nroute){\nthis.replaceAtIndex(route,this._stack.index-1);}},{key:'popToTop',value:function popToTop()\n\n\n{\nthis._applyStack(this._stack.slice(0,1));}},{key:'popToRoute',value:function popToRoute(\n\n\nroute){\nthis._applyStack(this._stack.popToRoute(route));}},{key:'replacePreviousAndPop',value:function replacePreviousAndPop(\n\n\nroute){\nthis._applyStack(this._stack.replacePreviousAndPop(route));}},{key:'resetTo',value:function resetTo(\n\n\nroute){\nthis._applyStack(this._stack.resetTo(route));}},{key:'immediatelyResetRouteStack',value:function immediatelyResetRouteStack(\n\n\nroutes){\nthis._applyStack(this._stack.resetRoutes(routes),true);}},{key:'getCurrentRoutes',value:function getCurrentRoutes()\n\n\n{\nreturn this._stack.toArray();}},{key:'shouldComponentUpdate',value:function shouldComponentUpdate(\n\n\n\n\nnextProps,nextState){\nreturn ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\nthis,\nnextProps,\nnextState);}},{key:'componentWillMount',value:function componentWillMount()\n\n\n\n{\nthis._applyAnimation=this._applyAnimation.bind(this);\nthis._onNavigate=this._onNavigate.bind(this);\nthis._onNavigationBarRef=this._onNavigationBarRef.bind(this);\nthis._onPositionChange=this._onPositionChange.bind(this);\nthis._renderCard=this._renderCard.bind(this);\nthis._renderHeader=this._renderHeader.bind(this);\nthis._renderScene=this._renderScene.bind(this);\n\nthis._willFocus();}},{key:'componentDidMount',value:function componentDidMount()\n\n\n{\nthis._didFocus();}},{key:'componentWillUnmount',value:function componentWillUnmount()\n\n\n{\nthis._positionListener&&this._positionListener.remove();}},{key:'componentWillUpdate',value:function componentWillUpdate(\n\n\nnextProps,nextState){\nthis._willFocus();}},{key:'componentDidUpdate',value:function componentDidUpdate(\n\n\nprevProps,prevState){\nif(this._useAnimation){\n\nreturn;}\n\nthis._didFocus();}},{key:'render',value:function render()\n\n\n{\nreturn (\nReact.createElement(NavigationAnimatedView,{\napplyAnimation:this._applyAnimation,\nnavigationState:this._stack.toNavigationState(),\nonNavigate:this._onNavigate,\nrenderOverlay:this._renderHeader,\nrenderScene:this._renderCard,\nstyle:this.props.style,__source:{fileName:_jsxFileName,lineNumber:236}}));}},{key:'_getInitialRouteStack',value:function _getInitialRouteStack()\n\n\n\n\n{var _props=\nthis.props;var initialRouteStack=_props.initialRouteStack;var initialRoute=_props.initialRoute;\nvar routes=initialRouteStack||[initialRoute];\nvar index=initialRoute?\nroutes.indexOf(initialRoute):\nroutes.length-1;\nreturn new RouteStack(index,routes);}},{key:'_renderHeader',value:function _renderHeader(\n\n\nprops){\n\n\nthis._positionListener&&this._positionListener.remove();\nthis._positionListener=new NavigationAnimatedValueSubscription(\nprops.position,\nthis._onPositionChange);var _props2=\n\n\nthis.props;var navigationBar=_props2.navigationBar;var navigationBarNavigator=_props2.navigationBarNavigator;\nif(!navigationBar){\nreturn null;}\n\n\nreturn React.cloneElement(\nnavigationBar,\n{\nkey:'header_'+props.scene.key,\nref:this._onNavigationBarRef,\nnavigator:navigationBarNavigator||this,\nnavState:babelHelpers.extends({},this.state)});}},{key:'_renderCard',value:function _renderCard(\n\n\n\n\nprops){var \nscene=props.scene;var \nconfigureScene=this.props.configureScene;\n\n\nvar styleGetter=NavigationCardStackStyleInterpolator.forHorizontal;\nvar panResponderGetter=NavigationCardStackPanResponder.forHorizontal;\n\nif(configureScene){\nvar route=RouteStack.getRouteByNavigationState(scene.navigationState);\nvar config=configureScene(route,this.state.routeStack);\n\nif(config){\nvar gestures=config.gestures||{};\nif(gestures.pop&&gestures.pop.direction==='left-to-right'){}else \n\nif(gestures.pop&&gestures.pop.direction==='top-to-bottom'){\nstyleGetter=NavigationCardStackStyleInterpolator.forVertical;\npanResponderGetter=NavigationCardStackPanResponder.forVertical;}else \nif(\ngestures.jumpBack&&\ngestures.jumpForward&&\ngestures.jumpBack.direction==='left-to-right'&&\ngestures.jumpForward.direction==='right-to-left')\n{\nstyleGetter=NavigationPagerStyleInterpolator.forHorizontal;\npanResponderGetter=NavigationPagerPanResponder.forHorizontal;}else \nif(__DEV__){\nconsole.warn('unsupported scene configuration',config);}}}\n\n\n\n\nvar style=styleGetter(props);\nvar panHandlers=panResponderGetter(props);\n\nreturn (\nReact.createElement(NavigationCard,babelHelpers.extends({},\nprops,{\nkey:'card_'+props.scene.key,\npanHandlers:panHandlers,\nrenderScene:this._renderScene,\nstyle:style,__source:{fileName:_jsxFileName,lineNumber:318}})));}},{key:'_renderScene',value:function _renderScene(\n\n\n\n\nprops){var \nnavigationState=props.scene.navigationState;\nvar route=RouteStack.getRouteByNavigationState(navigationState);\nreturn this.props.renderScene(route,this);}},{key:'_applyStack',value:function _applyStack(\n\n\n\nstack,\nnoAnimation)\n{\nif(stack!==this._stack){\nthis._previousStack=this._stack;\nthis._stack=stack;\n\nthis._useAnimation=noAnimation||\nthis._previousStack.index!==stack.index;\n\nthis.setState({\npresentedIndex:stack.index,\nrouteStack:stack.toArray()});}}},{key:'_onNavigationBarRef',value:function _onNavigationBarRef(\n\n\n\n\nnavigationBarRef){\nthis._navigationBarRef=navigationBarRef;var \nnavigationBar=this.props.navigationBar;\nif(navigationBar&&typeof navigationBar.ref==='function'){\nnavigationBar.ref(navigationBarRef);}}},{key:'_onPositionChange',value:function _onPositionChange(\n\n\n\ndata){\nvar fromIndex=this._previousStack.index;\nvar toIndex=this._stack.index;\n\nif(\nfromIndex!==toIndex&&\nthis._navigationBarRef&&\ntypeof this._navigationBarRef.updateProgress==='function')\n{\nvar progress=(data.value-fromIndex)/(toIndex-fromIndex);\nthis._navigationBarRef.updateProgress(progress,fromIndex,toIndex);}\n\n\nvar diff=this._stack.index-data.value;\n\n\nif(diff<0.05){\nthis._didFocus();}}},{key:'_applyAnimation',value:function _applyAnimation(\n\n\n\n\nposition,\nnextState,\nprevState)\n{var \nindex=nextState.index;\n\nif(!this._useAnimation){\nposition.setValue(index);\nreturn;}\n\n\nAnimated.timing(\nposition,\n{\nduration:500,\ntoValue:index}).\n\nstart();}},{key:'_willFocus',value:function _willFocus()\n\n\n{\nvar route=this._stack.get(this._stack.index);\nif(this._routeToFocus===route){\nreturn;}\n\nthis._routeToFocus=route;\nthis.navigationContext.emit('willfocus',{route:route});\nthis.props.onWillFocus&&this.props.onWillFocus(route);}},{key:'_didFocus',value:function _didFocus()\n\n\n{\nvar route=this._stack.get(this._stack.index);\nif(this._routeFocused===route){\nreturn;}\n\nthis._routeFocused=route;\nthis.navigationContext.emit('didfocus',{route:route});\nthis.props.onDidFocus&&this.props.onDidFocus(route);}},{key:'_onNavigate',value:function _onNavigate(\n\n\naction){\nswitch(action){\ncase NavigationCardStackPanResponder.Actions.BACK:\nthis.pop();\nbreak;\ncase NavigationPagerPanResponder.Actions.JUMP_BACK:\nthis.jumpBack();\nbreak;\ncase NavigationPagerPanResponder.Actions.JUMP_FORWARD:\nthis.jumpForward();\nbreak;\ndefault:\nif(__DEV__){\nconsole.warn('unsupported gesture action',action);}}}}]);return NavigationLegacyNavigator;}(React.Component);\n\n\n\n\n\n\nNavigationLegacyNavigator.BreadcrumbNavigationBar=NavigatorBreadcrumbNavigationBar;\nNavigationLegacyNavigator.NavigationBar=NavigatorNavigationBar;\nNavigationLegacyNavigator.SceneConfigs=NavigatorSceneConfigs;\n\nmodule.exports=NavigationLegacyNavigator;","map":null,"id":"NavigationLegacyNavigator","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationLegacyNavigator\n * @flow\n */\n'use strict';\n\nconst Animated = require('Animated');\nconst NavigationAnimatedValueSubscription = require('NavigationAnimatedValueSubscription');\nconst NavigationAnimatedView = require('NavigationAnimatedView');\nconst NavigationCard = require('NavigationCard');\nconst NavigationCardStackStyleInterpolator = require('NavigationCardStackStyleInterpolator');\nconst NavigationContext = require('NavigationContext');\nconst NavigationLegacyNavigatorRouteStack = require('NavigationLegacyNavigatorRouteStack');\nconst NavigationCardStackPanResponder = require('NavigationCardStackPanResponder');\nconst NavigationPagerPanResponder = require('NavigationPagerPanResponder');\nconst NavigationPagerStyleInterpolator = require('NavigationPagerStyleInterpolator');\nconst NavigatorBreadcrumbNavigationBar = require('NavigatorBreadcrumbNavigationBar');\nconst NavigatorNavigationBar = require('NavigatorNavigationBar');\nconst NavigatorSceneConfigs = require('NavigatorSceneConfigs');\nconst React = require('React');\nconst ReactComponentWithPureRenderMixin = require('ReactComponentWithPureRenderMixin');\n\nimport type {\n NavigationActionCaller,\n NavigationAnimatedValue,\n NavigationAnimationSetter,\n NavigationParentState,\n NavigationSceneRenderer,\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\ntype Props = {\n configureScene: any,\n initialRoute: any,\n initialRouteStack: any,\n navigationBar: any,\n navigationBarNavigator: any,\n navigator: any,\n onDidFocus: any,\n onWillFocus: any,\n renderScene: any,\n renderScene: any,\n style: any,\n};\n\ntype State = {\n presentedIndex: number,\n routeStack: Array,\n};\n\nconst RouteStack = NavigationLegacyNavigatorRouteStack;\n\n/**\n * NavigationLegacyNavigator is meant to replace Navigator seemlessly with\n * minimum API changes.\n *\n * While the APIs remain compatible with Navigator, it is built with good\n * intention by using the new Navigation API such as\n * `NavigationAnimatedView`...etc.\n */\nclass NavigationLegacyNavigator extends React.Component {\n static BreadcrumbNavigationBar: any;\n static NavigationBar: any;\n static SceneConfigs: any;\n\n _applyAnimation: NavigationAnimationSetter;\n _navigationBarRef: any;\n _onNavigationBarRef: (ref: any) => void;\n _onPositionChange: (data: {value: number}) => void;\n _positionListener: ?NavigationAnimatedValueSubscription;\n _previousStack: NavigationLegacyNavigatorRouteStack;\n _renderCard: NavigationSceneRenderer;\n _renderHeader: NavigationSceneRenderer;\n _renderScene: NavigationSceneRenderer;\n _routeFocused: any;\n _routeToFocus: any;\n _onNavigate: NavigationActionCaller;\n _stack: NavigationLegacyNavigatorRouteStack;\n _useAnimation: boolean;\n\n navigationContext: NavigationContext;\n parentNavigator: any;\n props: Props;\n state: State;\n\n constructor(props: Props, context: any) {\n super(props, context);\n\n const stack = this._getInitialRouteStack();\n\n // Unfortunately, due to historical reasons, the `state` has been exposed\n // as public members of the navigator, therefore we'd keep private state\n // as private members.\n this._previousStack = stack;\n this._stack = stack;\n this._useAnimation = false;\n\n // Legacy members portred from `Navigator`.\n this.parentNavigator = props.navigator;\n this.navigationContext = new NavigationContext();\n\n this.state = {\n routeStack: stack.toArray(),\n presentedIndex: stack.index,\n };\n }\n\n jumpTo(route: any): void {\n this._applyStack(this._stack.jumpTo(route));\n }\n\n jumpForward(): void {\n this._applyStack(this._stack.jumpForward());\n }\n\n jumpBack(): void {\n this._applyStack(this._stack.jumpBack());\n }\n\n push(route: any): void {\n this._applyStack(this._stack.push(route));\n }\n\n pop(): void {\n this._applyStack(this._stack.pop());\n }\n\n replaceAtIndex(route: any, index: number): void {\n this._applyStack(this._stack.replaceAtIndex(index, route));\n }\n\n replace(route: any): void {\n this.replaceAtIndex(route, this._stack.index);\n }\n\n replacePrevious(route: any): void {\n this.replaceAtIndex(route, this._stack.index - 1);\n }\n\n popToTop(): void {\n this._applyStack(this._stack.slice(0, 1));\n }\n\n popToRoute(route: any): void {\n this._applyStack(this._stack.popToRoute(route));\n }\n\n replacePreviousAndPop(route: any): void {\n this._applyStack(this._stack.replacePreviousAndPop(route));\n }\n\n resetTo(route: any): void {\n this._applyStack(this._stack.resetTo(route));\n }\n\n immediatelyResetRouteStack(routes: Array): void {\n this._applyStack(this._stack.resetRoutes(routes), true);\n }\n\n getCurrentRoutes(): Array {\n return this._stack.toArray();\n }\n\n // Life cycle and private methods below.\n\n shouldComponentUpdate(nextProps: Object, nextState: Object): boolean {\n return ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\n this,\n nextProps,\n nextState\n );\n }\n\n componentWillMount(): void {\n this._applyAnimation = this._applyAnimation.bind(this);\n this._onNavigate = this._onNavigate.bind(this);\n this._onNavigationBarRef = this._onNavigationBarRef.bind(this);\n this._onPositionChange = this._onPositionChange.bind(this);\n this._renderCard = this._renderCard.bind(this);\n this._renderHeader = this._renderHeader.bind(this);\n this._renderScene = this._renderScene.bind(this);\n\n this._willFocus();\n }\n\n componentDidMount(): void {\n this._didFocus();\n }\n\n componentWillUnmount(): void {\n this._positionListener && this._positionListener.remove();\n }\n\n componentWillUpdate(nextProps: Props, nextState: State): void {\n this._willFocus();\n }\n\n componentDidUpdate(prevProps: Props, prevState: State): void {\n if (this._useAnimation) {\n // will play animation.\n return;\n }\n this._didFocus();\n }\n\n render(): ReactElement {\n return (\n \n );\n }\n\n _getInitialRouteStack(): RouteStack {\n const {initialRouteStack, initialRoute} = this.props;\n const routes = initialRouteStack || [initialRoute];\n const index = initialRoute ?\n routes.indexOf(initialRoute) :\n routes.length - 1;\n return new RouteStack(index, routes);\n }\n\n _renderHeader(props: NavigationSceneRendererProps): ?ReactElement {\n // `_renderHeader` is always called before `_renderCard`. We should\n // subscribe to the position here.\n this._positionListener && this._positionListener.remove();\n this._positionListener = new NavigationAnimatedValueSubscription(\n props.position,\n this._onPositionChange,\n );\n\n const {navigationBar, navigationBarNavigator} = this.props;\n if (!navigationBar) {\n return null;\n }\n\n return React.cloneElement(\n navigationBar,\n {\n key: 'header_' + props.scene.key,\n ref: this._onNavigationBarRef,\n navigator: navigationBarNavigator || this,\n navState: {...this.state},\n }\n );\n }\n\n _renderCard(props: NavigationSceneRendererProps): ReactElement {\n const {scene} = props;\n const {configureScene} = this.props;\n\n // Default getters for style and pan responders.\n let styleGetter = NavigationCardStackStyleInterpolator.forHorizontal;\n let panResponderGetter = NavigationCardStackPanResponder.forHorizontal;\n\n if (configureScene) {\n const route = RouteStack.getRouteByNavigationState(scene.navigationState);\n const config = configureScene(route, this.state.routeStack);\n\n if (config) {\n const gestures = config.gestures || {};\n if (gestures.pop && gestures.pop.direction === 'left-to-right') {\n // pass, will use default getters.\n } else if (gestures.pop && gestures.pop.direction === 'top-to-bottom') {\n styleGetter = NavigationCardStackStyleInterpolator.forVertical;\n panResponderGetter = NavigationCardStackPanResponder.forVertical;\n } else if (\n gestures.jumpBack &&\n gestures.jumpForward &&\n gestures.jumpBack.direction === 'left-to-right' &&\n gestures.jumpForward.direction === 'right-to-left'\n ) {\n styleGetter = NavigationPagerStyleInterpolator.forHorizontal;\n panResponderGetter = NavigationPagerPanResponder.forHorizontal;\n } else if (__DEV__) {\n console.warn('unsupported scene configuration', config);\n }\n }\n }\n\n const style = styleGetter(props);\n const panHandlers = panResponderGetter(props);\n\n return (\n \n );\n }\n\n _renderScene(props: NavigationSceneRendererProps): ReactElement {\n const {navigationState} = props.scene;\n const route = RouteStack.getRouteByNavigationState(navigationState);\n return this.props.renderScene(route, this);\n }\n\n _applyStack(\n stack: NavigationLegacyNavigatorRouteStack,\n noAnimation: ?boolean,\n ): void {\n if (stack !== this._stack) {\n this._previousStack = this._stack;\n this._stack = stack;\n\n this._useAnimation = noAnimation ||\n this._previousStack.index !== stack.index;\n\n this.setState({\n presentedIndex: stack.index,\n routeStack: stack.toArray(),\n });\n }\n }\n\n _onNavigationBarRef(navigationBarRef: any): void {\n this._navigationBarRef = navigationBarRef;\n const {navigationBar} = this.props;\n if (navigationBar && typeof navigationBar.ref === 'function') {\n navigationBar.ref(navigationBarRef);\n }\n }\n\n _onPositionChange(data: {value: number}): void {\n const fromIndex = this._previousStack.index;\n const toIndex = this._stack.index;\n\n if (\n fromIndex !== toIndex &&\n this._navigationBarRef &&\n typeof this._navigationBarRef.updateProgress === 'function'\n ) {\n const progress = (data.value - fromIndex) / (toIndex - fromIndex);\n this._navigationBarRef.updateProgress(progress, fromIndex, toIndex);\n }\n\n const diff = this._stack.index - data.value;\n // When animation stops, the `diff` can still be very a small non-zero value\n // (e.g. 0.00000002). Call `willFocus` when `diff` is small enough.\n if (diff < 0.05) {\n this._didFocus();\n }\n }\n\n _applyAnimation(\n position: NavigationAnimatedValue,\n nextState: NavigationParentState,\n prevState: NavigationParentState,\n ): void {\n const {index} = nextState;\n\n if (!this._useAnimation) {\n position.setValue(index);\n return;\n }\n\n Animated.timing(\n position,\n {\n duration: 500,\n toValue: index,\n }\n ).start();\n }\n\n _willFocus(): void {\n const route = this._stack.get(this._stack.index);\n if (this._routeToFocus === route) {\n return;\n }\n this._routeToFocus = route;\n this.navigationContext.emit('willfocus', {route: route});\n this.props.onWillFocus && this.props.onWillFocus(route);\n }\n\n _didFocus(): void {\n const route = this._stack.get(this._stack.index);\n if (this._routeFocused === route) {\n return;\n }\n this._routeFocused = route;\n this.navigationContext.emit('didfocus', {route: route});\n this.props.onDidFocus && this.props.onDidFocus(route);\n }\n\n _onNavigate(action: any): void {\n switch (action) {\n case NavigationCardStackPanResponder.Actions.BACK:\n this.pop();\n break;\n case NavigationPagerPanResponder.Actions.JUMP_BACK:\n this.jumpBack();\n break;\n case NavigationPagerPanResponder.Actions.JUMP_FORWARD:\n this.jumpForward();\n break;\n default:\n if (__DEV__) {\n console.warn('unsupported gesture action', action);\n }\n }\n }\n}\n\n// Legacy static members.\nNavigationLegacyNavigator.BreadcrumbNavigationBar = NavigatorBreadcrumbNavigationBar;\nNavigationLegacyNavigator.NavigationBar = NavigatorNavigationBar;\nNavigationLegacyNavigator.SceneConfigs = NavigatorSceneConfigs;\n\nmodule.exports = NavigationLegacyNavigator;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationLegacyNavigatorRouteStack.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationLegacyNavigatorRouteStack","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\n\n\n\nfunction isRouteEmpty(route){\nreturn route===undefined||route===null||route===''||false;}\n\n\nfunction areRouteNodesEqual(\none,\ntwo)\n{\nif(one===two){\nreturn true;}\n\n\nif(one.length!==two.length){\nreturn false;}\n\nfor(var ii=0,jj=one.length;ii0,\n'routes must not be an empty array');\n\n\ninvariant(\nindex>-1&&index<=routes.length-1,\n'RouteStack: index out of bound');\n\n\n\nvar routeNodes=void 0;\nif(routes[0] instanceof RouteNode){\n\nrouteNodes=routes;}else \n{\n\nrouteNodes=routes.map(function(route){\ninvariant(!isRouteEmpty(route),'route must not be mepty');\nreturn new RouteNode(route);});}\n\n\n\nthis._routeNodes=routeNodes;\nthis._index=index;\nthis._key=String(_nextRouteStackID++);}babelHelpers.createClass(RouteStack,[{key:'toArray',value:function toArray()\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\nreturn this._routeNodes.map(function(node){return node.route;});}},{key:'toNavigationState',value:function toNavigationState()\n\n\n{\nreturn {\nindex:this._index,\nkey:this._key,\nchildren:this._routeNodes.map(function(node){return node.toNavigationState();})};}},{key:'get',value:function get(\n\n\n\nindex){\nif(index<0||index>this._routeNodes.length-1){\nreturn null;}\n\nreturn this._routeNodes[index].route;}},{key:'keyOf',value:function keyOf(\n\n\n\n\n\n\n\n\nroute){\nif(isRouteEmpty(route)){\nreturn null;}\n\nvar index=this.indexOf(route);\nreturn index>-1?\nthis._routeNodes[index].key:\nnull;}},{key:'indexOf',value:function indexOf(\n\n\nroute){\nif(isRouteEmpty(route)){\nreturn -1;}\n\n\nfor(var ii=0,jj=this._routeNodes.length;ii-1,\n'Calling popToRoute for a route that doesn\\'t exist!');\n\nreturn this.slice(0,index+1);}},{key:'jumpTo',value:function jumpTo(\n\n\nroute){\nvar index=this.indexOf(route);\nreturn this.jumpToIndex(index);}},{key:'jumpToIndex',value:function jumpToIndex(\n\n\nindex){\ninvariant(\nindex>-1&&index=this._routeNodes.length){\nreturn this;}\n\nreturn this._update(index,this._routeNodes);}},{key:'jumpBack',value:function jumpBack()\n\n\n{\nvar index=this._index-1;\nif(index<0){\nreturn this;}\n\nreturn this._update(index,this._routeNodes);}},{key:'replaceAtIndex',value:function replaceAtIndex(\n\n\n\n\n\n\n\n\nindex,route){\ninvariant(\n!isRouteEmpty(route),\n'Must supply route to replace');\n\n\nif(this.get(index)===route){\nreturn this;}\n\n\ninvariant(this.indexOf(route)===-1,'route must be unique');\n\nvar size=this._routeNodes.length;\nif(index<0){\nindex+=size;}\n\n\nif(index<0||index>=size){\nreturn this;}\n\n\nvar routeNodes=this._routeNodes.slice(0);\nrouteNodes[index]=new RouteNode(route);\nreturn this._update(index,routeNodes);}},{key:'replacePreviousAndPop',value:function replacePreviousAndPop(\n\n\nroute){\nif(this._index<1){\n\nreturn this;}\n\n\nvar index=this.indexOf(route);\ninvariant(\nindex===-1||index===this._index-1,\n'route already exists in the stack');\n\n\nreturn this.replaceAtIndex(this._index-1,route).popToRoute(route);}},{key:'resetTo',value:function resetTo(\n\n\n\n\n\n\n\n\nroute){\ninvariant(!isRouteEmpty(route),'Must supply route');\nvar index=this.indexOf(route);\nif(index===this._index){\n\nreturn this;}\n\ninvariant(index===-1,'route already exists in the stack');\nvar routeNodes=this._routeNodes.slice(0,this._index);\nrouteNodes.push(new RouteNode(route));\nreturn this._update(routeNodes.length-1,routeNodes);}},{key:'resetRoutes',value:function resetRoutes(\n\n\nroutes){\nvar index=routes.length-1;\nreturn new RouteStack(index,routes);}},{key:'forEach',value:function forEach(\n\n\n\ncallback,context){\nthis._routeNodes.forEach(function(node,index){\ncallback.call(context,node.route,index,node.key);});}},{key:'mapToArray',value:function mapToArray(\n\n\n\ncallback,context){\nreturn this._routeNodes.map(function(node,index){\nreturn callback.call(context,node.route,index,node.key);});}},{key:'_update',value:function _update(\n\n\n\nindex,routeNodes){\nif(\nthis._index===index&&\nareRouteNodesEqual(this._routeNodes,routeNodes))\n{\nreturn this;}\n\n\nreturn new RouteStack(index,routeNodes);}},{key:'size',get:function get(){return this._routeNodes.length;}},{key:'index',get:function get(){return this._index;}}]);return RouteStack;}();\n\n\n\nmodule.exports=RouteStack;","map":null,"id":"NavigationLegacyNavigatorRouteStack","source":"/**\n * Copyright (c) 2013-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 NavigationLegacyNavigatorRouteStack\n * @flow\n */\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {\n NavigationState,\n NavigationParentState,\n} from 'NavigationTypeDefinition';\n\ntype IterationCallback = (route: any, index: number, key: string) => void;\n\nfunction isRouteEmpty(route: any): boolean {\n return (route === undefined || route === null || route === '') || false;\n}\n\nfunction areRouteNodesEqual(\n one: Array,\n two: Array,\n): boolean {\n if (one === two) {\n return true;\n }\n\n if (one.length !== two.length) {\n return false;\n }\n for (let ii = 0, jj = one.length; ii < jj; ii++) {\n if (one[ii] !== two[ii]) {\n return false;\n }\n }\n return true;\n}\n\nlet _nextRouteNodeID = 0;\n\n/**\n * Private struct class that holds the key for a route.\n */\nclass RouteNode {\n key: string;\n route: any;\n\n /**\n * Cast `navigationState` as `RouteNode`.\n * Also see `RouteNode#toNavigationState`.\n */\n static fromNavigationState(navigationState: NavigationState): RouteNode {\n invariant(\n navigationState instanceof RouteNode,\n 'navigationState should be an instacne of RouteNode'\n );\n return navigationState;\n }\n\n constructor(route: any) {\n // Key value gets bigger incrementally. Developer can compare the\n // keys of two routes then know which route is added to the stack\n // earlier.\n const key = String(_nextRouteNodeID++);\n if (__DEV__ ) {\n // Ensure the immutability of the node.\n Object.defineProperty(this, 'key' , {\n enumerable: true,\n configurable: false,\n writable: false,\n value: key,\n });\n Object.defineProperty(this, 'route' , {\n enumerable: true,\n configurable: false,\n writable: false,\n value: route,\n });\n } else {\n this.key = key;\n this.route = route;\n }\n }\n\n toNavigationState(): NavigationState {\n return this;\n }\n}\n\nlet _nextRouteStackID = 0;\n\n/**\n * The data structure that holds a list of routes and the focused index\n * of the routes. This data structure is implemented as immutable data\n * and mutation (e.g. push, pop...etc) will yields a new instance.\n */\nclass RouteStack {\n _index: number;\n _key: string;\n _routeNodes: Array;\n\n static getRouteByNavigationState(navigationState: NavigationState): any {\n return RouteNode.fromNavigationState(navigationState).route;\n }\n\n constructor(index: number, routes: Array) {\n invariant(\n routes.length > 0,\n 'routes must not be an empty array'\n );\n\n invariant(\n index > -1 && index <= routes.length - 1,\n 'RouteStack: index out of bound'\n );\n\n\n let routeNodes;\n if (routes[0] instanceof RouteNode) {\n // The array is already an array of .\n routeNodes = routes;\n } else {\n // Wrap the route with .\n routeNodes = routes.map((route) => {\n invariant(!isRouteEmpty(route), 'route must not be mepty');\n return new RouteNode(route);\n });\n }\n\n this._routeNodes = routeNodes;\n this._index = index;\n this._key = String(_nextRouteStackID++);\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get size(): number {\n return this._routeNodes.length;\n }\n\n /* $FlowFixMe - get/set properties not yet supported */\n get index(): number {\n return this._index;\n }\n\n // Export as...\n toArray(): Array {\n return this._routeNodes.map(node => node.route);\n }\n\n toNavigationState(): NavigationParentState {\n return {\n index: this._index,\n key: this._key,\n children: this._routeNodes.map(node => node.toNavigationState()),\n };\n }\n\n get(index: number): any {\n if (index < 0 || index > this._routeNodes.length - 1) {\n return null;\n }\n return this._routeNodes[index].route;\n }\n\n /**\n * Returns the key associated with the route.\n * When a route is added to a stack, the stack creates a key for this route.\n * The key will persist until the initial stack and its derived stack\n * no longer contains this route.\n */\n keyOf(route: any): ?string {\n if (isRouteEmpty(route)) {\n return null;\n }\n const index = this.indexOf(route);\n return index > -1 ?\n this._routeNodes[index].key :\n null;\n }\n\n indexOf(route: any): number {\n if (isRouteEmpty(route)) {\n return -1;\n }\n\n for (let ii = 0, jj = this._routeNodes.length; ii < jj; ii++) {\n const node = this._routeNodes[ii];\n if (node.route === route) {\n return ii;\n }\n }\n\n return -1;\n }\n\n slice(begin: ?number, end: ?number): RouteStack {\n // check `begin` and `end` first to keep @flow happy.\n const routeNodes = (end === undefined || end === null) ?\n this._routeNodes.slice(begin || 0) :\n this._routeNodes.slice(begin || 0, end || 0);\n\n const index = Math.min(this._index, routeNodes.length - 1);\n return this._update(index, routeNodes);\n }\n\n /**\n * Returns a new stack with the provided route appended,\n * starting at this stack size.\n */\n push(route: any): RouteStack {\n\n invariant(\n !isRouteEmpty(route),\n 'Must supply route to push'\n );\n\n invariant(this.indexOf(route) === -1, 'route must be unique');\n\n // When pushing, removes the rest of the routes past the current index.\n const routeNodes = this._routeNodes.slice(0, this._index + 1);\n routeNodes.push(new RouteNode(route));\n return this._update(routeNodes.length - 1, routeNodes);\n }\n\n /**\n * Returns a new stack a size ones less than this stack,\n * excluding the last index in this stack.\n */\n pop(): RouteStack {\n if (this._routeNodes.length <= 1) {\n return this;\n }\n\n // When popping, removes the rest of the routes past the current index.\n const routeNodes = this._routeNodes.slice(0, this._index);\n return this._update(routeNodes.length - 1, routeNodes);\n }\n\n popToRoute(route: any): RouteStack {\n const index = this.indexOf(route);\n invariant(\n index > -1,\n 'Calling popToRoute for a route that doesn\\'t exist!'\n );\n return this.slice(0, index + 1);\n }\n\n jumpTo(route: any): RouteStack {\n const index = this.indexOf(route);\n return this.jumpToIndex(index);\n }\n\n jumpToIndex(index: number): RouteStack {\n invariant(\n index > -1 && index < this._routeNodes.length,\n 'jumpToIndex: index out of bound'\n );\n\n return this._update(index, this._routeNodes);\n }\n\n jumpForward(): RouteStack {\n const index = this._index + 1;\n if (index >= this._routeNodes.length) {\n return this;\n }\n return this._update(index, this._routeNodes);\n }\n\n jumpBack(): RouteStack {\n const index = this._index - 1;\n if (index < 0) {\n return this;\n }\n return this._update(index, this._routeNodes);\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(index: number, route: any): RouteStack {\n invariant(\n !isRouteEmpty(route),\n 'Must supply route to replace'\n );\n\n if (this.get(index) === route) {\n return this;\n }\n\n invariant(this.indexOf(route) === -1, 'route must be unique');\n\n const size = this._routeNodes.length;\n if (index < 0) {\n index += size;\n }\n\n if (index < 0 || index >= size) {\n return this;\n }\n\n const routeNodes = this._routeNodes.slice(0);\n routeNodes[index] = new RouteNode(route);\n return this._update(index, routeNodes);\n }\n\n replacePreviousAndPop(route: any): RouteStack {\n if (this._index < 1) {\n // stack is too small.\n return this;\n }\n\n const index = this.indexOf(route);\n invariant(\n index === -1 || index === this._index - 1,\n 'route already exists in the stack'\n );\n\n return this.replaceAtIndex(this._index - 1, route).popToRoute(route);\n }\n\n // Reset\n\n /**\n * Replace the current active route with a new route, and pops out\n * the rest routes after it.\n */\n resetTo(route: any): RouteStack {\n invariant(!isRouteEmpty(route), 'Must supply route');\n const index = this.indexOf(route);\n if (index === this._index) {\n // Already has this active route.\n return this;\n }\n invariant(index === -1, 'route already exists in the stack');\n const routeNodes = this._routeNodes.slice(0, this._index);\n routeNodes.push(new RouteNode(route));\n return this._update(routeNodes.length - 1, routeNodes);\n }\n\n resetRoutes(routes: Array): RouteStack {\n const index = routes.length - 1;\n return new RouteStack(index, routes);\n }\n\n // Iterations\n forEach(callback: IterationCallback, context: ?Object): void {\n this._routeNodes.forEach((node, index) => {\n callback.call(context, node.route, index, node.key);\n });\n }\n\n mapToArray(callback: IterationCallback, context: ?Object): Array {\n return this._routeNodes.map((node, index) => {\n return callback.call(context, node.route, index, node.key);\n });\n }\n\n _update(index: number, routeNodes: Array): RouteStack {\n if (\n this._index === index &&\n areRouteNodesEqual(this._routeNodes, routeNodes)\n ) {\n return this;\n }\n\n return new RouteStack(index, routeNodes);\n }\n}\n\nmodule.exports = RouteStack;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationPagerPanResponder.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationPagerPanResponder","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48,104,183,238],"dependencies":["Animated","NavigationAbstractPanResponder","NavigationCardStackPanResponder","clamp"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Animated=require('Animated');\nvar NavigationAbstractPanResponder=require('NavigationAbstractPanResponder');\nvar NavigationCardStackPanResponder=require('NavigationCardStackPanResponder');\n\nvar clamp=require('clamp');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nANIMATION_DURATION=\n\n\n\n\nNavigationCardStackPanResponder.ANIMATION_DURATION;var DISTANCE_THRESHOLD=NavigationCardStackPanResponder.DISTANCE_THRESHOLD;var POSITION_THRESHOLD=NavigationCardStackPanResponder.POSITION_THRESHOLD;var RESPOND_THRESHOLD=NavigationCardStackPanResponder.RESPOND_THRESHOLD;var Directions=NavigationCardStackPanResponder.Directions;\n\n\n\n\nvar Actions={\nJUMP_BACK:{type:'jump_back'},\nJUMP_FORWARD:{type:'jump_forward'}};var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNavigationPagerPanResponder=function(_NavigationAbstractPa){babelHelpers.inherits(NavigationPagerPanResponder,_NavigationAbstractPa);\n\n\n\n\n\n\nfunction NavigationPagerPanResponder(\ndirection,\nprops)\n{babelHelpers.classCallCheck(this,NavigationPagerPanResponder);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationPagerPanResponder).call(this));\n\n_this._isResponding=false;\n_this._isVertical=direction===Directions.VERTICAL;\n_this._props=props;\n_this._startValue=0;return _this;}babelHelpers.createClass(NavigationPagerPanResponder,[{key:'onMoveShouldSetPanResponder',value:function onMoveShouldSetPanResponder(\n\n\nevent,gesture){\nvar props=this._props;\n\nif(props.navigationState.index!==props.scene.index){\nreturn false;}\n\n\nvar layout=props.layout;\nvar isVertical=this._isVertical;\nvar axis=isVertical?'dy':'dx';\nvar index=props.navigationState.index;\nvar distance=isVertical?\nlayout.height.__getValue():\nlayout.width.__getValue();\n\nreturn (\nMath.abs(gesture[axis])>RESPOND_THRESHOLD&&\ndistance>0&&\nindex>0);}},{key:'onPanResponderGrant',value:function onPanResponderGrant()\n\n\n\n{var _this2=this;\nthis._isResponding=false;\nthis._props.position.stopAnimation(function(value){\n_this2._isResponding=true;\n_this2._startValue=value;});}},{key:'onPanResponderMove',value:function onPanResponderMove(\n\n\n\nevent,gesture){\nif(!this._isResponding){\nreturn;}var _props=\n\n\n\n\n\n\n\nthis._props;var layout=_props.layout;var navigationState=_props.navigationState;var position=_props.position;var scenes=_props.scenes;\n\nvar isVertical=this._isVertical;\nvar axis=isVertical?'dy':'dx';\nvar index=navigationState.index;\nvar distance=isVertical?\nlayout.height.__getValue():\nlayout.width.__getValue();\n\nvar prevIndex=Math.max(\n0,\nindex-1);\n\n\nvar nextIndex=Math.min(\nindex+1,\nscenes.length-1);\n\n\nvar value=clamp(\nprevIndex,\nthis._startValue-gesture[axis]/distance,\nnextIndex);\n\n\nposition.setValue(value);}},{key:'onPanResponderRelease',value:function onPanResponderRelease(\n\n\nevent,gesture){var _this3=this;\nif(!this._isResponding){\nreturn;}\n\n\nthis._isResponding=false;var _props2=\n\n\n\n\n\nthis._props;var navigationState=_props2.navigationState;var onNavigate=_props2.onNavigate;var position=_props2.position;\n\nvar isVertical=this._isVertical;\nvar axis=isVertical?'dy':'dx';\nvar index=navigationState.index;\nvar distance=gesture[axis];\n\nposition.stopAnimation(function(value){\n_this3._reset();\nif(\ndistance>DISTANCE_THRESHOLD||\nvalue<=index-POSITION_THRESHOLD)\n{\nonNavigate(Actions.JUMP_BACK);\nreturn;}\n\n\nif(\ndistance<-DISTANCE_THRESHOLD||\nvalue>=index+POSITION_THRESHOLD)\n{\nonNavigate(Actions.JUMP_FORWARD);}});}},{key:'onPanResponderTerminate',value:function onPanResponderTerminate()\n\n\n\n\n{\nthis._isResponding=false;\nthis._reset();}},{key:'_reset',value:function _reset()\n\n\n{\nvar props=this._props;\nAnimated.timing(\nprops.position,\n{\ntoValue:props.navigationState.index,\nduration:ANIMATION_DURATION}).\n\nstart();}}]);return NavigationPagerPanResponder;}(NavigationAbstractPanResponder);\n\n\n\nfunction createPanHandlers(\ndirection,\nprops)\n{\nvar responder=new NavigationPagerPanResponder(direction,props);\nreturn responder.panHandlers;}\n\n\nfunction forHorizontal(\nprops)\n{\nreturn createPanHandlers(Directions.HORIZONTAL,props);}\n\n\nmodule.exports={\nActions:Actions,\nforHorizontal:forHorizontal};","map":null,"id":"NavigationPagerPanResponder","source":"/**\n * Copyright (c) 2013-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 NavigationPagerPanResponder\n * @flow\n * @typechecks\n */\n'use strict';\n\nconst Animated = require('Animated');\nconst NavigationAbstractPanResponder = require('NavigationAbstractPanResponder');\nconst NavigationCardStackPanResponder = require('NavigationCardStackPanResponder');\n\nconst clamp = require('clamp');\n\nimport type {\n NavigationPanPanHandlers,\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\nimport type {\n NavigationGestureDirection,\n} from 'NavigationCardStackPanResponder';\n\n\n\n/**\n * Primitive gesture directions.\n */\nconst {\n ANIMATION_DURATION,\n DISTANCE_THRESHOLD,\n POSITION_THRESHOLD,\n RESPOND_THRESHOLD,\n Directions,\n} = NavigationCardStackPanResponder;\n\n/**\n * Primitive gesture actions.\n */\nconst Actions = {\n JUMP_BACK: {type: 'jump_back'},\n JUMP_FORWARD: {type: 'jump_forward'},\n};\n\n/**\n * Pan responder that handles gesture for a card in the cards list.\n *\n * +-------------+-------------+-------------+\n * | | | |\n * | | | |\n * | | | |\n * | Next | Focused | Previous |\n * | Card | Card | Card |\n * | | | |\n * | | | |\n * | | | |\n * +-------------+-------------+-------------+\n */\nclass NavigationPagerPanResponder extends NavigationAbstractPanResponder {\n\n _isResponding: boolean;\n _isVertical: boolean;\n _props: NavigationSceneRendererProps;\n _startValue: number;\n\n constructor(\n direction: NavigationGestureDirection,\n props: NavigationSceneRendererProps,\n ) {\n super();\n this._isResponding = false;\n this._isVertical = direction === Directions.VERTICAL;\n this._props = props;\n this._startValue = 0;\n }\n\n onMoveShouldSetPanResponder(event: any, gesture: any): boolean {\n const props = this._props;\n\n if (props.navigationState.index !== props.scene.index) {\n return false;\n }\n\n const layout = props.layout;\n const isVertical = this._isVertical;\n const axis = isVertical ? 'dy' : 'dx';\n const index = props.navigationState.index;\n const distance = isVertical ?\n layout.height.__getValue() :\n layout.width.__getValue();\n\n return (\n Math.abs(gesture[axis]) > RESPOND_THRESHOLD &&\n distance > 0 &&\n index > 0\n );\n }\n\n onPanResponderGrant(): void {\n this._isResponding = false;\n this._props.position.stopAnimation((value: number) => {\n this._isResponding = true;\n this._startValue = value;\n });\n }\n\n onPanResponderMove(event: any, gesture: any): void {\n if (!this._isResponding) {\n return;\n }\n\n const {\n layout,\n navigationState,\n position,\n scenes,\n } = this._props;\n\n const isVertical = this._isVertical;\n const axis = isVertical ? 'dy' : 'dx';\n const index = navigationState.index;\n const distance = isVertical ?\n layout.height.__getValue() :\n layout.width.__getValue();\n\n const prevIndex = Math.max(\n 0,\n index - 1,\n );\n\n const nextIndex = Math.min(\n index + 1,\n scenes.length - 1,\n );\n\n const value = clamp(\n prevIndex,\n this._startValue - (gesture[axis] / distance),\n nextIndex,\n );\n\n position.setValue(value);\n }\n\n onPanResponderRelease(event: any, gesture: any): void {\n if (!this._isResponding) {\n return;\n }\n\n this._isResponding = false;\n\n const {\n navigationState,\n onNavigate,\n position,\n } = this._props;\n\n const isVertical = this._isVertical;\n const axis = isVertical ? 'dy' : 'dx';\n const index = navigationState.index;\n const distance = gesture[axis];\n\n position.stopAnimation((value: number) => {\n this._reset();\n if (\n distance > DISTANCE_THRESHOLD ||\n value <= index - POSITION_THRESHOLD\n ) {\n onNavigate(Actions.JUMP_BACK);\n return;\n }\n\n if (\n distance < -DISTANCE_THRESHOLD ||\n value >= index + POSITION_THRESHOLD\n ) {\n onNavigate(Actions.JUMP_FORWARD);\n }\n });\n }\n\n onPanResponderTerminate(): void {\n this._isResponding = false;\n this._reset();\n }\n\n _reset(): void {\n const props = this._props;\n Animated.timing(\n props.position,\n {\n toValue: props.navigationState.index,\n duration: ANIMATION_DURATION,\n }\n ).start();\n }\n}\n\nfunction createPanHandlers(\n direction: NavigationGestureDirection,\n props: NavigationSceneRendererProps,\n): NavigationPanPanHandlers {\n const responder = new NavigationPagerPanResponder(direction, props);\n return responder.panHandlers;\n}\n\nfunction forHorizontal(\n props: NavigationSceneRendererProps,\n): NavigationPanPanHandlers {\n return createPanHandlers(Directions.HORIZONTAL, props);\n}\n\nmodule.exports = {\n Actions,\n forHorizontal,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationPagerStyleInterpolator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationPagerStyleInterpolator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\n\n\n\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 forInitial(props){var \n\nnavigationState=\n\nprops.navigationState;var scene=props.scene;\n\nvar focused=navigationState.index===scene.index;\nvar opacity=focused?1:0;\n\nvar dir=scene.index>navigationState.index?1:-1;\nvar translate=focused?0:1000000*dir;\nreturn {\nopacity:opacity,\ntransform:[\n{translateX:translate},\n{translateY:translate}]};}\n\n\n\n\nfunction forHorizontal(props){var \n\nlayout=\n\n\nprops.layout;var position=props.position;var scene=props.scene;\n\nif(!layout.isMeasured){\nreturn forInitial(props);}\n\n\nvar index=scene.index;\nvar inputRange=[index-1,index,index+1];\n\nvar width=layout.initWidth;\nvar translateX=position.interpolate({\ninputRange:inputRange,\noutputRange:[width,0,-width]});\n\n\nreturn {\nopacity:1,\nshadowColor:'transparent',\nshadowRadius:0,\ntransform:[\n{scale:1},\n{translateX:translateX},\n{translateY:0}]};}\n\n\n\n\nmodule.exports={\nforHorizontal:forHorizontal};","map":null,"id":"NavigationPagerStyleInterpolator","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationPagerStyleInterpolator\n * @flow\n */\n'use strict';\n\nimport type {\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\n/**\n * Utility that builds the style for the card in the cards list.\n *\n * +-------------+-------------+-------------+\n * | | | |\n * | | | |\n * | | | |\n * | Next | Focused | Previous |\n * | Card | Card | Card |\n * | | | |\n * | | | |\n * | | | |\n * +-------------+-------------+-------------+\n */\n\n/**\n * Render the initial style when the initial layout isn't measured yet.\n */\nfunction forInitial(props: NavigationSceneRendererProps): Object {\n const {\n navigationState,\n scene,\n } = props;\n\n const focused = navigationState.index === scene.index;\n const opacity = focused ? 1 : 0;\n // If not focused, move the scene to the far away.\n const dir = scene.index > navigationState.index ? 1 : -1;\n const translate = focused ? 0 : (1000000 * dir);\n return {\n opacity,\n transform: [\n { translateX: translate },\n { translateY: translate },\n ],\n };\n}\n\nfunction forHorizontal(props: NavigationSceneRendererProps): Object {\n const {\n layout,\n position,\n scene,\n } = props;\n\n if (!layout.isMeasured) {\n return forInitial(props);\n }\n\n const index = scene.index;\n const inputRange = [index - 1, index, index + 1];\n\n const width = layout.initWidth;\n const translateX = position.interpolate({\n inputRange,\n outputRange: [width, 0, -width],\n });\n\n return {\n opacity : 1,\n shadowColor: 'transparent',\n shadowRadius: 0,\n transform: [\n { scale: 1 },\n { translateX },\n { translateY: 0 },\n ],\n };\n}\n\nmodule.exports = {\n forHorizontal,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationPointerEventsContainer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationPointerEventsContainer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[238,296,359],"dependencies":["React","NavigationAnimatedValueSubscription","fbjs/lib/invariant"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/NavigationExperimental/NavigationPointerEventsContainer.js';\n\n\n\n\n\n\n\n\n\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 React=require('React');\nvar NavigationAnimatedValueSubscription=require('NavigationAnimatedValueSubscription');\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\n\n\nvar MIN_POSITION_OFFSET=0.01;\n\n\n\n\n\n\nfunction create(\nComponent)\n{var \n\nContainer=function(_React$Component){babelHelpers.inherits(Container,_React$Component);\n\n\n\n\n\n\n\n\n\nfunction Container(props,context){babelHelpers.classCallCheck(this,Container);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(Container).call(this,\nprops,context));\n_this._pointerEvents=_this._computePointerEvents();return _this;}babelHelpers.createClass(Container,[{key:'componentWillMount',value:function componentWillMount()\n\n\n{\nthis._onPositionChange=this._onPositionChange.bind(this);\nthis._onComponentRef=this._onComponentRef.bind(this);}},{key:'componentDidMount',value:function componentDidMount()\n\n\n{\nthis._bindPosition(this.props);}},{key:'componentWillUnmount',value:function componentWillUnmount()\n\n\n{\nthis._positionListener&&this._positionListener.remove();}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps(\n\n\nnextProps){\nthis._bindPosition(nextProps);}},{key:'render',value:function render()\n\n\n{\nthis._pointerEvents=this._computePointerEvents();\nreturn (\nReact.createElement(Component,babelHelpers.extends({},\nthis.props,{\npointerEvents:this._pointerEvents,\nonComponentRef:this._onComponentRef,__source:{fileName:_jsxFileName,lineNumber:92}})));}},{key:'_onComponentRef',value:function _onComponentRef(\n\n\n\n\ncomponent){\nthis._component=component;\nif(component){\ninvariant(\ntypeof component.setNativeProps==='function',\n'component must implement method `setNativeProps`');}}},{key:'_bindPosition',value:function _bindPosition(\n\n\n\n\nprops){\nthis._positionListener&&this._positionListener.remove();\nthis._positionListener=new NavigationAnimatedValueSubscription(\nprops.position,\nthis._onPositionChange);}},{key:'_onPositionChange',value:function _onPositionChange()\n\n\n\n{\nif(this._component){\nvar pointerEvents=this._computePointerEvents();\nif(this._pointerEvents!==pointerEvents){\nthis._pointerEvents=pointerEvents;\nthis._component.setNativeProps({pointerEvents:pointerEvents});}}}},{key:'_computePointerEvents',value:function _computePointerEvents()\n\n\n\n\n{var _props=\n\n\n\n\nthis.props;var navigationState=_props.navigationState;var position=_props.position;var scene=_props.scene;\n\nif(scene.isStale||navigationState.index!==scene.index){\n\nreturn scene.index>navigationState.index?\n'box-only':\n'none';}\n\n\nvar offset=position.__getAnimatedValue()-navigationState.index;\nif(Math.abs(offset)>MIN_POSITION_OFFSET){\n\n\n\nreturn 'box-only';}\n\n\nreturn 'auto';}}]);return Container;}(React.Component);\n\n\nreturn Container;}\n\n\nmodule.exports={\ncreate:create};","map":null,"id":"NavigationPointerEventsContainer","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationPointerEventsContainer\n * @flow\n */\n'use strict';\n\nconst React = require('React');\nconst NavigationAnimatedValueSubscription = require('NavigationAnimatedValueSubscription');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\ntype Props = NavigationSceneRendererProps;\n\nconst MIN_POSITION_OFFSET = 0.01;\n\n/**\n * Create a higher-order component that automatically computes the\n * `pointerEvents` property for a component whenever navigation position\n * changes.\n */\nfunction create(\n Component: ReactClass,\n): ReactClass {\n\n class Container extends React.Component {\n\n _component: any;\n _onComponentRef: (view: any) => void;\n _onPositionChange: (data: {value: number}) => void;\n _pointerEvents: string;\n _positionListener: ?NavigationAnimatedValueSubscription;\n\n props: Props;\n\n constructor(props: Props, context: any) {\n super(props, context);\n this._pointerEvents = this._computePointerEvents();\n }\n\n componentWillMount(): void {\n this._onPositionChange = this._onPositionChange.bind(this);\n this._onComponentRef = this._onComponentRef.bind(this);\n }\n\n componentDidMount(): void {\n this._bindPosition(this.props);\n }\n\n componentWillUnmount(): void {\n this._positionListener && this._positionListener.remove();\n }\n\n componentWillReceiveProps(nextProps: Props): void {\n this._bindPosition(nextProps);\n }\n\n render(): ReactElement {\n this._pointerEvents = this._computePointerEvents();\n return (\n \n );\n }\n\n _onComponentRef(component: any): void {\n this._component = component;\n if (component) {\n invariant(\n typeof component.setNativeProps === 'function',\n 'component must implement method `setNativeProps`',\n );\n }\n }\n\n _bindPosition(props: NavigationSceneRendererProps): void {\n this._positionListener && this._positionListener.remove();\n this._positionListener = new NavigationAnimatedValueSubscription(\n props.position,\n this._onPositionChange,\n );\n }\n\n _onPositionChange(): void {\n if (this._component) {\n const pointerEvents = this._computePointerEvents();\n if (this._pointerEvents !== pointerEvents) {\n this._pointerEvents = pointerEvents;\n this._component.setNativeProps({pointerEvents});\n }\n }\n }\n\n _computePointerEvents(): string {\n const {\n navigationState,\n position,\n scene,\n } = this.props;\n\n if (scene.isStale || navigationState.index !== scene.index) {\n // The scene isn't focused.\n return scene.index > navigationState.index ?\n 'box-only' :\n 'none';\n }\n\n const offset = position.__getAnimatedValue() - navigationState.index;\n if (Math.abs(offset) > MIN_POSITION_OFFSET) {\n // The positon is still away from scene's index.\n // Scene's children should not receive touches until the position\n // is close enough to scene's index.\n return 'box-only';\n }\n\n return 'auto';\n }\n }\n return Container;\n}\n\nmodule.exports = {\n create,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/ListView/ListView.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ListView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[212,253,287,336,395,438,485,527,585,640,670,5178,5407],"dependencies":["ListViewDataSource","React","ReactNative","NativeModules","ScrollView","ScrollResponder","StaticRenderer","react-timer-mixin","react-clone-referenced-element","isEmpty","merge","fbjs/lib/warning","fbjs/lib/invariant"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/ListView/ListView.js';\n\n\n\n\n\n\n\n\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 ListViewDataSource=require('ListViewDataSource');\nvar React=require('React');\nvar ReactNative=require('ReactNative');\nvar RCTScrollViewManager=require('NativeModules').ScrollViewManager;\nvar ScrollView=require('ScrollView');\nvar ScrollResponder=require('ScrollResponder');\nvar StaticRenderer=require('StaticRenderer');\nvar TimerMixin=require('react-timer-mixin');\n\nvar cloneReferencedElement=require('react-clone-referenced-element');\nvar isEmpty=require('isEmpty');\nvar merge=require('merge');\n\nvar PropTypes=React.PropTypes;\n\nvar DEFAULT_PAGE_SIZE=1;\nvar DEFAULT_INITIAL_ROWS=10;\nvar DEFAULT_SCROLL_RENDER_AHEAD=1000;\nvar DEFAULT_END_REACHED_THRESHOLD=1000;\nvar DEFAULT_SCROLL_CALLBACK_THROTTLE=50;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 ListView=React.createClass({displayName:'ListView',\nmixins:[ScrollResponder.Mixin,TimerMixin],\n\nstatics:{\nDataSource:ListViewDataSource},\n\n\n\n\n\n\n\n\n\npropTypes:babelHelpers.extends({},\nScrollView.propTypes,{\n\n\n\ndataSource:PropTypes.instanceOf(ListViewDataSource).isRequired,\n\n\n\n\n\n\n\n\nrenderSeparator:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\n\nrenderRow:PropTypes.func.isRequired,\n\n\n\n\n\ninitialListSize:PropTypes.number,\n\n\n\n\n\nonEndReached:PropTypes.func,\n\n\n\nonEndReachedThreshold:PropTypes.number,\n\n\n\n\n\n\n\npageSize:PropTypes.number,\n\n\n\n\n\n\n\n\nrenderFooter:PropTypes.func,\nrenderHeader:PropTypes.func,\n\n\n\n\n\n\n\n\n\nrenderSectionHeader:PropTypes.func,\n\n\n\n\n\n\nrenderScrollComponent:React.PropTypes.func.isRequired,\n\n\n\n\nscrollRenderAheadDistance:React.PropTypes.number,\n\n\n\n\n\n\n\n\n\nonChangeVisibleRows:React.PropTypes.func,\n\n\n\n\n\nremoveClippedSubviews:React.PropTypes.bool,\n\n\n\n\n\n\n\n\nstickyHeaderIndices:PropTypes.arrayOf(PropTypes.number),\n\n\n\n\n\nenableEmptySections:PropTypes.bool}),\n\n\n\n\n\ngetMetrics:function getMetrics(){\nreturn {\ncontentLength:this.scrollProperties.contentLength,\ntotalRows:this.props.enableEmptySections?this.props.dataSource.getRowAndSectionCount():this.props.dataSource.getRowCount(),\nrenderedRows:this.state.curRenderedRowsCount,\nvisibleRows:Object.keys(this._visibleRows).length};},\n\n\n\n\n\n\n\n\ngetScrollResponder:function getScrollResponder(){\nif(this._scrollComponent&&this._scrollComponent.getScrollResponder){\nreturn this._scrollComponent.getScrollResponder();}},\n\n\n\n\n\n\n\n\nscrollTo:function scrollTo(){\nif(this._scrollComponent&&this._scrollComponent.scrollTo){var _scrollComponent;\n(_scrollComponent=this._scrollComponent).scrollTo.apply(_scrollComponent,arguments);}},\n\n\n\nsetNativeProps:function setNativeProps(props){\nif(this._scrollComponent){\nthis._scrollComponent.setNativeProps(props);}},\n\n\n\n\n\n\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\ninitialListSize:DEFAULT_INITIAL_ROWS,\npageSize:DEFAULT_PAGE_SIZE,\nrenderScrollComponent:function renderScrollComponent(props){return React.createElement(ScrollView,babelHelpers.extends({},props,{__source:{fileName:_jsxFileName,lineNumber:282}}));},\nscrollRenderAheadDistance:DEFAULT_SCROLL_RENDER_AHEAD,\nonEndReachedThreshold:DEFAULT_END_REACHED_THRESHOLD,\nstickyHeaderIndices:[]};},\n\n\n\ngetInitialState:function getInitialState(){\nreturn {\ncurRenderedRowsCount:this.props.initialListSize,\nhighlightedRow:{}};},\n\n\n\ngetInnerViewNode:function getInnerViewNode(){\nreturn this._scrollComponent.getInnerViewNode();},\n\n\ncomponentWillMount:function componentWillMount(){\n\nthis.scrollProperties={\nvisibleLength:null,\ncontentLength:null,\noffset:0};\n\nthis._childFrames=[];\nthis._visibleRows={};\nthis._prevRenderedRowsCount=0;\nthis._sentEndForContentLength=null;},\n\n\ncomponentDidMount:function componentDidMount(){var _this=this;\n\n\nthis.requestAnimationFrame(function(){\n_this._measureAndUpdateScrollProps();});},\n\n\n\ncomponentWillReceiveProps:function componentWillReceiveProps(nextProps){var _this2=this;\nif(this.props.dataSource!==nextProps.dataSource||\nthis.props.initialListSize!==nextProps.initialListSize){\nthis.setState(function(state,props){\n_this2._prevRenderedRowsCount=0;\nreturn {\ncurRenderedRowsCount:Math.min(\nMath.max(\nstate.curRenderedRowsCount,\nprops.initialListSize),\n\nprops.enableEmptySections?props.dataSource.getRowAndSectionCount():props.dataSource.getRowCount())};},\n\n\nfunction(){return _this2._renderMoreRowsIfNeeded();});}},\n\n\n\ncomponentDidUpdate:function componentDidUpdate(){var _this3=this;\nthis.requestAnimationFrame(function(){\n_this3._measureAndUpdateScrollProps();});},\n\n\n\n_onRowHighlighted:function _onRowHighlighted(sectionID,rowID){\nthis.setState({highlightedRow:{sectionID:sectionID,rowID:rowID}});},\n\n\nrender:function render(){\nvar bodyComponents=[];\n\nvar dataSource=this.props.dataSource;\nvar allRowIDs=dataSource.rowIdentities;\nvar rowCount=0;\nvar sectionHeaderIndices=[];\n\nvar header=this.props.renderHeader&&this.props.renderHeader();\nvar footer=this.props.renderFooter&&this.props.renderFooter();\nvar totalIndex=header?1:0;\n\nfor(var sectionIdx=0;sectionIdx=this._prevRenderedRowsCount&&\ndataSource.sectionHeaderShouldUpdate(sectionIdx);\nbodyComponents.push(\nReact.createElement(StaticRenderer,{\nkey:'s_'+sectionID,\nshouldUpdate:!!shouldUpdateHeader,\nrender:this.props.renderSectionHeader.bind(\nnull,\ndataSource.getSectionHeaderData(sectionIdx),\nsectionID),__source:{fileName:_jsxFileName,lineNumber:384}}));\n\n\n\nsectionHeaderIndices.push(totalIndex++);}\n\n\nfor(var rowIdx=0;rowIdx=this._prevRenderedRowsCount&&\ndataSource.rowShouldUpdate(sectionIdx,rowIdx);\nvar row=\nReact.createElement(StaticRenderer,{\nkey:'r_'+comboID,\nshouldUpdate:!!shouldUpdateRow,\nrender:this.props.renderRow.bind(\nnull,\ndataSource.getRowData(sectionIdx,rowIdx),\nsectionID,\nrowID,\nthis._onRowHighlighted),__source:{fileName:_jsxFileName,lineNumber:403}});\n\n\nbodyComponents.push(row);\ntotalIndex++;\n\nif(this.props.renderSeparator&&(\nrowIdx!==rowIDs.length-1||sectionIdx===allRowIDs.length-1)){\nvar adjacentRowHighlighted=\nthis.state.highlightedRow.sectionID===sectionID&&(\nthis.state.highlightedRow.rowID===rowID||\nthis.state.highlightedRow.rowID===rowIDs[rowIdx+1]);\n\nvar separator=this.props.renderSeparator(\nsectionID,\nrowID,\nadjacentRowHighlighted);\n\nif(separator){\nbodyComponents.push(separator);\ntotalIndex++;}}\n\n\nif(++rowCount===this.state.curRenderedRowsCount){\nbreak;}}\n\n\nif(rowCount>=this.state.curRenderedRowsCount){\nbreak;}}var _props=\n\n\n\n\n\n\nthis.props;var renderScrollComponent=_props.renderScrollComponent;var props=babelHelpers.objectWithoutProperties(_props,['renderScrollComponent']);\nif(!props.scrollEventThrottle){\nprops.scrollEventThrottle=DEFAULT_SCROLL_CALLBACK_THROTTLE;}\n\nif(props.removeClippedSubviews===undefined){\nprops.removeClippedSubviews=true;}\n\nbabelHelpers.extends(props,{\nonScroll:this._onScroll,\nstickyHeaderIndices:this.props.stickyHeaderIndices.concat(sectionHeaderIndices),\n\n\n\nonKeyboardWillShow:undefined,\nonKeyboardWillHide:undefined,\nonKeyboardDidShow:undefined,\nonKeyboardDidHide:undefined});\n\n\nreturn cloneReferencedElement(renderScrollComponent(props),{\nref:this._setScrollComponentRef,\nonContentSizeChange:this._onContentSizeChange,\nonLayout:this._onLayout},\nheader,bodyComponents,footer);},\n\n\n\n\n\n\n_measureAndUpdateScrollProps:function _measureAndUpdateScrollProps(){\nvar scrollComponent=this.getScrollResponder();\nif(!scrollComponent||!scrollComponent.getInnerViewNode){\nreturn;}\n\n\n\n\nRCTScrollViewManager&&RCTScrollViewManager.calculateChildFrames&&\nRCTScrollViewManager.calculateChildFrames(\nReactNative.findNodeHandle(scrollComponent),\nthis._updateVisibleRows);},\n\n\n\n_setScrollComponentRef:function _setScrollComponentRef(scrollComponent){\nthis._scrollComponent=scrollComponent;},\n\n\n_onContentSizeChange:function _onContentSizeChange(width,height){\nvar contentLength=!this.props.horizontal?height:width;\nif(contentLength!==this.scrollProperties.contentLength){\nthis.scrollProperties.contentLength=contentLength;\nthis._updateVisibleRows();\nthis._renderMoreRowsIfNeeded();}\n\nthis.props.onContentSizeChange&&this.props.onContentSizeChange(width,height);},\n\n\n_onLayout:function _onLayout(event){var _event$nativeEvent$la=\nevent.nativeEvent.layout;var width=_event$nativeEvent$la.width;var height=_event$nativeEvent$la.height;\nvar visibleLength=!this.props.horizontal?height:width;\nif(visibleLength!==this.scrollProperties.visibleLength){\nthis.scrollProperties.visibleLength=visibleLength;\nthis._updateVisibleRows();\nthis._renderMoreRowsIfNeeded();}\n\nthis.props.onLayout&&this.props.onLayout(event);},\n\n\n_maybeCallOnEndReached:function _maybeCallOnEndReached(event){\nif(this.props.onEndReached&&\nthis.scrollProperties.contentLength!==this._sentEndForContentLength&&\nthis._getDistanceFromEnd(this.scrollProperties)visibleMax||maxthis.props.onEndReachedThreshold){\n\nthis._sentEndForContentLength=null;}\n\n\nthis.props.onScroll&&this.props.onScroll(e);}});\n\n\n\nmodule.exports=ListView;","map":null,"id":"ListView","source":"/**\n * Copyright (c) 2013-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 * Facebook, Inc. (\"Facebook\") owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the \"Software\"). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (\"Your Software\"). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule ListView\n */\n'use strict';\n\nvar ListViewDataSource = require('ListViewDataSource');\nvar React = require('React');\nvar ReactNative = require('ReactNative');\nvar RCTScrollViewManager = require('NativeModules').ScrollViewManager;\nvar ScrollView = require('ScrollView');\nvar ScrollResponder = require('ScrollResponder');\nvar StaticRenderer = require('StaticRenderer');\nvar TimerMixin = require('react-timer-mixin');\n\nvar cloneReferencedElement = require('react-clone-referenced-element');\nvar isEmpty = require('isEmpty');\nvar merge = require('merge');\n\nvar PropTypes = React.PropTypes;\n\nvar DEFAULT_PAGE_SIZE = 1;\nvar DEFAULT_INITIAL_ROWS = 10;\nvar DEFAULT_SCROLL_RENDER_AHEAD = 1000;\nvar DEFAULT_END_REACHED_THRESHOLD = 1000;\nvar DEFAULT_SCROLL_CALLBACK_THROTTLE = 50;\n\n\n/**\n * ListView - A core component designed for efficient display of vertically\n * scrolling lists of changing data. The minimal API is to create a\n * [`ListView.DataSource`](docs/listviewdatasource.html), populate it with a simple\n * array of data blobs, and instantiate a `ListView` component with that data\n * source and a `renderRow` callback which takes a blob from the data array and\n * returns a renderable component.\n *\n * Minimal example:\n *\n * ```\n * getInitialState: function() {\n * var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});\n * return {\n * dataSource: ds.cloneWithRows(['row 1', 'row 2']),\n * };\n * },\n *\n * render: function() {\n * return (\n * {rowData}}\n * />\n * );\n * },\n * ```\n *\n * ListView also supports more advanced features, including sections with sticky\n * section headers, header and footer support, callbacks on reaching the end of\n * the available data (`onEndReached`) and on the set of rows that are visible\n * in the device viewport change (`onChangeVisibleRows`), and several\n * performance optimizations.\n *\n * There are a few performance operations designed to make ListView scroll\n * smoothly while dynamically loading potentially very large (or conceptually\n * infinite) data sets:\n *\n * * Only re-render changed rows - the rowHasChanged function provided to the\n * data source tells the ListView if it needs to re-render a row because the\n * source data has changed - see ListViewDataSource for more details.\n *\n * * Rate-limited row rendering - By default, only one row is rendered per\n * event-loop (customizable with the `pageSize` prop). This breaks up the\n * work into smaller chunks to reduce the chance of dropping frames while\n * rendering rows.\n */\n\nvar ListView = React.createClass({\n mixins: [ScrollResponder.Mixin, TimerMixin],\n\n statics: {\n DataSource: ListViewDataSource,\n },\n\n /**\n * You must provide a renderRow function. If you omit any of the other render\n * functions, ListView will simply skip rendering them.\n *\n * - renderRow(rowData, sectionID, rowID, highlightRow);\n * - renderSectionHeader(sectionData, sectionID);\n */\n propTypes: {\n ...ScrollView.propTypes,\n /**\n * An instance of [ListView.DataSource](docs/listviewdatasource.html) to use\n */\n dataSource: PropTypes.instanceOf(ListViewDataSource).isRequired,\n /**\n * (sectionID, rowID, adjacentRowHighlighted) => renderable\n *\n * If provided, a renderable component to be rendered as the separator\n * below each row but not the last row if there is a section header below.\n * Take a sectionID and rowID of the row above and whether its adjacent row\n * is highlighted.\n */\n renderSeparator: PropTypes.func,\n /**\n * (rowData, sectionID, rowID, highlightRow) => renderable\n *\n * Takes a data entry from the data source and its ids and should return\n * a renderable component to be rendered as the row. By default the data\n * is exactly what was put into the data source, but it's also possible to\n * provide custom extractors. ListView can be notified when a row is\n * being highlighted by calling highlightRow function. The separators above and\n * below will be hidden when a row is highlighted. The highlighted state of\n * a row can be reset by calling highlightRow(null).\n */\n renderRow: PropTypes.func.isRequired,\n /**\n * How many rows to render on initial component mount. Use this to make\n * it so that the first screen worth of data appears at one time instead of\n * over the course of multiple frames.\n */\n initialListSize: PropTypes.number,\n /**\n * Called when all rows have been rendered and the list has been scrolled\n * to within onEndReachedThreshold of the bottom. The native scroll\n * event is provided.\n */\n onEndReached: PropTypes.func,\n /**\n * Threshold in pixels (virtual, not physical) for calling onEndReached.\n */\n onEndReachedThreshold: PropTypes.number,\n /**\n * Number of rows to render per event loop. Note: if your 'rows' are actually\n * cells, i.e. they don't span the full width of your view (as in the\n * ListViewGridLayoutExample), you should set the pageSize to be a multiple\n * of the number of cells per row, otherwise you're likely to see gaps at\n * the edge of the ListView as new pages are loaded.\n */\n pageSize: PropTypes.number,\n /**\n * () => renderable\n *\n * The header and footer are always rendered (if these props are provided)\n * on every render pass. If they are expensive to re-render, wrap them\n * in StaticContainer or other mechanism as appropriate. Footer is always\n * at the bottom of the list, and header at the top, on every render pass.\n */\n renderFooter: PropTypes.func,\n renderHeader: PropTypes.func,\n /**\n * (sectionData, sectionID) => renderable\n *\n * If provided, a sticky header is rendered for this section. The sticky\n * behavior means that it will scroll with the content at the top of the\n * section until it reaches the top of the screen, at which point it will\n * stick to the top until it is pushed off the screen by the next section\n * header.\n */\n renderSectionHeader: PropTypes.func,\n /**\n * (props) => renderable\n *\n * A function that returns the scrollable component in which the list rows\n * are rendered. Defaults to returning a ScrollView with the given props.\n */\n renderScrollComponent: React.PropTypes.func.isRequired,\n /**\n * How early to start rendering rows before they come on screen, in\n * pixels.\n */\n scrollRenderAheadDistance: React.PropTypes.number,\n /**\n * (visibleRows, changedRows) => void\n *\n * Called when the set of visible rows changes. `visibleRows` maps\n * { sectionID: { rowID: true }} for all the visible rows, and\n * `changedRows` maps { sectionID: { rowID: true | false }} for the rows\n * that have changed their visibility, with true indicating visible, and\n * false indicating the view has moved out of view.\n */\n onChangeVisibleRows: React.PropTypes.func,\n /**\n * A performance optimization for improving scroll perf of\n * large lists, used in conjunction with overflow: 'hidden' on the row\n * containers. This is enabled by default.\n */\n removeClippedSubviews: React.PropTypes.bool,\n /**\n * An array of child indices determining which children get docked to the\n * top of the screen when scrolling. For example, passing\n * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n * top of the scroll view. This property is not supported in conjunction\n * with `horizontal={true}`.\n * @platform ios\n */\n stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number),\n /**\n * Flag indicating whether empty section headers should be rendered. In the future release\n * empty section headers will be rendered by default, and the flag will be deprecated.\n * If empty sections are not desired to be rendered their indices should be excluded from sectionID object.\n */\n enableEmptySections: PropTypes.bool,\n },\n\n /**\n * Exports some data, e.g. for perf investigations or analytics.\n */\n getMetrics: function() {\n return {\n contentLength: this.scrollProperties.contentLength,\n totalRows: (this.props.enableEmptySections ? this.props.dataSource.getRowAndSectionCount() : this.props.dataSource.getRowCount()),\n renderedRows: this.state.curRenderedRowsCount,\n visibleRows: Object.keys(this._visibleRows).length,\n };\n },\n\n /**\n * Provides a handle to the underlying scroll responder.\n * Note that `this._scrollComponent` might not be a `ScrollView`, so we\n * need to check that it responds to `getScrollResponder` before calling it.\n */\n getScrollResponder: function() {\n if (this._scrollComponent && this._scrollComponent.getScrollResponder) {\n return this._scrollComponent.getScrollResponder();\n }\n },\n\n /**\n * Scrolls to a given x, y offset, either immediately or with a smooth animation.\n *\n * See `ScrollView#scrollTo`.\n */\n scrollTo: function(...args) {\n if (this._scrollComponent && this._scrollComponent.scrollTo) {\n this._scrollComponent.scrollTo(...args);\n }\n },\n\n setNativeProps: function(props) {\n if (this._scrollComponent) {\n this._scrollComponent.setNativeProps(props);\n }\n },\n\n /**\n * React life cycle hooks.\n */\n\n getDefaultProps: function() {\n return {\n initialListSize: DEFAULT_INITIAL_ROWS,\n pageSize: DEFAULT_PAGE_SIZE,\n renderScrollComponent: props => ,\n scrollRenderAheadDistance: DEFAULT_SCROLL_RENDER_AHEAD,\n onEndReachedThreshold: DEFAULT_END_REACHED_THRESHOLD,\n stickyHeaderIndices: [],\n };\n },\n\n getInitialState: function() {\n return {\n curRenderedRowsCount: this.props.initialListSize,\n highlightedRow: {},\n };\n },\n\n getInnerViewNode: function() {\n return this._scrollComponent.getInnerViewNode();\n },\n\n componentWillMount: function() {\n // this data should never trigger a render pass, so don't put in state\n this.scrollProperties = {\n visibleLength: null,\n contentLength: null,\n offset: 0\n };\n this._childFrames = [];\n this._visibleRows = {};\n this._prevRenderedRowsCount = 0;\n this._sentEndForContentLength = null;\n },\n\n componentDidMount: function() {\n // do this in animation frame until componentDidMount actually runs after\n // the component is laid out\n this.requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n componentWillReceiveProps: function(nextProps) {\n if (this.props.dataSource !== nextProps.dataSource ||\n this.props.initialListSize !== nextProps.initialListSize) {\n this.setState((state, props) => {\n this._prevRenderedRowsCount = 0;\n return {\n curRenderedRowsCount: Math.min(\n Math.max(\n state.curRenderedRowsCount,\n props.initialListSize\n ),\n props.enableEmptySections ? props.dataSource.getRowAndSectionCount() : props.dataSource.getRowCount()\n ),\n };\n }, () => this._renderMoreRowsIfNeeded());\n }\n },\n\n componentDidUpdate: function() {\n this.requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n _onRowHighlighted: function(sectionID, rowID) {\n this.setState({highlightedRow: {sectionID, rowID}});\n },\n\n render: function() {\n var bodyComponents = [];\n\n var dataSource = this.props.dataSource;\n var allRowIDs = dataSource.rowIdentities;\n var rowCount = 0;\n var sectionHeaderIndices = [];\n\n var header = this.props.renderHeader && this.props.renderHeader();\n var footer = this.props.renderFooter && this.props.renderFooter();\n var totalIndex = header ? 1 : 0;\n\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var sectionID = dataSource.sectionIdentities[sectionIdx];\n var rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n if (this.props.enableEmptySections === undefined) {\n var warning = require('fbjs/lib/warning');\n warning(false, 'In next release empty section headers will be rendered.'\n + ' In this release you can use \\'enableEmptySections\\' flag to render empty section headers.');\n continue;\n } else {\n var invariant = require('fbjs/lib/invariant');\n invariant(\n this.props.enableEmptySections,\n 'In next release \\'enableEmptySections\\' flag will be deprecated, empty section headers will always be rendered.'\n + ' If empty section headers are not desirable their indices should be excluded from sectionIDs object.'\n + ' In this release \\'enableEmptySections\\' may only have value \\'true\\' to allow empty section headers rendering.');\n }\n }\n\n if (this.props.renderSectionHeader) {\n var shouldUpdateHeader = rowCount >= this._prevRenderedRowsCount &&\n dataSource.sectionHeaderShouldUpdate(sectionIdx);\n bodyComponents.push(\n \n );\n sectionHeaderIndices.push(totalIndex++);\n }\n\n for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n var rowID = rowIDs[rowIdx];\n var comboID = sectionID + '_' + rowID;\n var shouldUpdateRow = rowCount >= this._prevRenderedRowsCount &&\n dataSource.rowShouldUpdate(sectionIdx, rowIdx);\n var row =\n ;\n bodyComponents.push(row);\n totalIndex++;\n\n if (this.props.renderSeparator &&\n (rowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)) {\n var adjacentRowHighlighted =\n this.state.highlightedRow.sectionID === sectionID && (\n this.state.highlightedRow.rowID === rowID ||\n this.state.highlightedRow.rowID === rowIDs[rowIdx + 1]\n );\n var separator = this.props.renderSeparator(\n sectionID,\n rowID,\n adjacentRowHighlighted\n );\n if (separator) {\n bodyComponents.push(separator);\n totalIndex++;\n }\n }\n if (++rowCount === this.state.curRenderedRowsCount) {\n break;\n }\n }\n if (rowCount >= this.state.curRenderedRowsCount) {\n break;\n }\n }\n\n var {\n renderScrollComponent,\n ...props,\n } = this.props;\n if (!props.scrollEventThrottle) {\n props.scrollEventThrottle = DEFAULT_SCROLL_CALLBACK_THROTTLE;\n }\n if (props.removeClippedSubviews === undefined) {\n props.removeClippedSubviews = true;\n }\n Object.assign(props, {\n onScroll: this._onScroll,\n stickyHeaderIndices: this.props.stickyHeaderIndices.concat(sectionHeaderIndices),\n\n // Do not pass these events downstream to ScrollView since they will be\n // registered in ListView's own ScrollResponder.Mixin\n onKeyboardWillShow: undefined,\n onKeyboardWillHide: undefined,\n onKeyboardDidShow: undefined,\n onKeyboardDidHide: undefined,\n });\n\n return cloneReferencedElement(renderScrollComponent(props), {\n ref: this._setScrollComponentRef,\n onContentSizeChange: this._onContentSizeChange,\n onLayout: this._onLayout,\n }, header, bodyComponents, footer);\n },\n\n /**\n * Private methods\n */\n\n _measureAndUpdateScrollProps: function() {\n var scrollComponent = this.getScrollResponder();\n if (!scrollComponent || !scrollComponent.getInnerViewNode) {\n return;\n }\n\n // RCTScrollViewManager.calculateChildFrames is not available on\n // every platform\n RCTScrollViewManager && RCTScrollViewManager.calculateChildFrames &&\n RCTScrollViewManager.calculateChildFrames(\n ReactNative.findNodeHandle(scrollComponent),\n this._updateVisibleRows,\n );\n },\n\n _setScrollComponentRef: function(scrollComponent) {\n this._scrollComponent = scrollComponent;\n },\n\n _onContentSizeChange: function(width, height) {\n var contentLength = !this.props.horizontal ? height : width;\n if (contentLength !== this.scrollProperties.contentLength) {\n this.scrollProperties.contentLength = contentLength;\n this._updateVisibleRows();\n this._renderMoreRowsIfNeeded();\n }\n this.props.onContentSizeChange && this.props.onContentSizeChange(width, height);\n },\n\n _onLayout: function(event) {\n var {width, height} = event.nativeEvent.layout;\n var visibleLength = !this.props.horizontal ? height : width;\n if (visibleLength !== this.scrollProperties.visibleLength) {\n this.scrollProperties.visibleLength = visibleLength;\n this._updateVisibleRows();\n this._renderMoreRowsIfNeeded();\n }\n this.props.onLayout && this.props.onLayout(event);\n },\n\n _maybeCallOnEndReached: function(event) {\n if (this.props.onEndReached &&\n this.scrollProperties.contentLength !== this._sentEndForContentLength &&\n this._getDistanceFromEnd(this.scrollProperties) < this.props.onEndReachedThreshold &&\n this.state.curRenderedRowsCount === (this.props.enableEmptySections ? this.props.dataSource.getRowAndSectionCount() : this.props.dataSource.getRowCount())) {\n this._sentEndForContentLength = this.scrollProperties.contentLength;\n this.props.onEndReached(event);\n return true;\n }\n return false;\n },\n\n _renderMoreRowsIfNeeded: function() {\n if (this.scrollProperties.contentLength === null ||\n this.scrollProperties.visibleLength === null ||\n this.state.curRenderedRowsCount === (this.props.enableEmptySections ? this.props.dataSource.getRowAndSectionCount() : this.props.dataSource.getRowCount())) {\n this._maybeCallOnEndReached();\n return;\n }\n\n var distanceFromEnd = this._getDistanceFromEnd(this.scrollProperties);\n if (distanceFromEnd < this.props.scrollRenderAheadDistance) {\n this._pageInNewRows();\n }\n },\n\n _pageInNewRows: function() {\n this.setState((state, props) => {\n var rowsToRender = Math.min(\n state.curRenderedRowsCount + props.pageSize,\n (props.enableEmptySections ? props.dataSource.getRowAndSectionCount() : props.dataSource.getRowCount())\n );\n this._prevRenderedRowsCount = state.curRenderedRowsCount;\n return {\n curRenderedRowsCount: rowsToRender\n };\n }, () => {\n this._measureAndUpdateScrollProps();\n this._prevRenderedRowsCount = this.state.curRenderedRowsCount;\n });\n },\n\n _getDistanceFromEnd: function(scrollProperties) {\n return scrollProperties.contentLength - scrollProperties.visibleLength - scrollProperties.offset;\n },\n\n _updateVisibleRows: function(updatedFrames) {\n if (!this.props.onChangeVisibleRows) {\n return; // No need to compute visible rows if there is no callback\n }\n if (updatedFrames) {\n updatedFrames.forEach((newFrame) => {\n this._childFrames[newFrame.index] = merge(newFrame);\n });\n }\n var isVertical = !this.props.horizontal;\n var dataSource = this.props.dataSource;\n var visibleMin = this.scrollProperties.offset;\n var visibleMax = visibleMin + this.scrollProperties.visibleLength;\n var allRowIDs = dataSource.rowIdentities;\n\n var header = this.props.renderHeader && this.props.renderHeader();\n var totalIndex = header ? 1 : 0;\n var visibilityChanged = false;\n var changedRows = {};\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n continue;\n }\n var sectionID = dataSource.sectionIdentities[sectionIdx];\n if (this.props.renderSectionHeader) {\n totalIndex++;\n }\n var visibleSection = this._visibleRows[sectionID];\n if (!visibleSection) {\n visibleSection = {};\n }\n for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n var rowID = rowIDs[rowIdx];\n var frame = this._childFrames[totalIndex];\n totalIndex++;\n if (!frame) {\n break;\n }\n var rowVisible = visibleSection[rowID];\n var min = isVertical ? frame.y : frame.x;\n var max = min + (isVertical ? frame.height : frame.width);\n if (min > visibleMax || max < visibleMin) {\n if (rowVisible) {\n visibilityChanged = true;\n delete visibleSection[rowID];\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = false;\n }\n } else if (!rowVisible) {\n visibilityChanged = true;\n visibleSection[rowID] = true;\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = true;\n }\n }\n if (!isEmpty(visibleSection)) {\n this._visibleRows[sectionID] = visibleSection;\n } else if (this._visibleRows[sectionID]) {\n delete this._visibleRows[sectionID];\n }\n }\n visibilityChanged && this.props.onChangeVisibleRows(this._visibleRows, changedRows);\n },\n\n _onScroll: function(e) {\n var isVertical = !this.props.horizontal;\n this.scrollProperties.visibleLength = e.nativeEvent.layoutMeasurement[\n isVertical ? 'height' : 'width'\n ];\n this.scrollProperties.contentLength = e.nativeEvent.contentSize[\n isVertical ? 'height' : 'width'\n ];\n this.scrollProperties.offset = e.nativeEvent.contentOffset[\n isVertical ? 'y' : 'x'\n ];\n this._updateVisibleRows(e.nativeEvent.updatedChildFrames);\n if (!this._maybeCallOnEndReached(e)) {\n this._renderMoreRowsIfNeeded();\n }\n\n if (this.props.onEndReached &&\n this._getDistanceFromEnd(this.scrollProperties) > this.props.onEndReachedThreshold) {\n // Scrolled out of the end zone, so it should be able to trigger again.\n this._sentEndForContentLength = null;\n }\n\n this.props.onScroll && this.props.onScroll(e);\n },\n});\n\nmodule.exports = ListView;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/CustomComponents/ListView/ListViewDataSource.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ListViewDataSource","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[65,108,140],"dependencies":["fbjs/lib/invariant","isEmpty","fbjs/lib/warning"],"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\n\nvar invariant=require('fbjs/lib/invariant');\nvar isEmpty=require('isEmpty');\nvar warning=require('fbjs/lib/warning');\n\nfunction defaultGetRowData(\ndataBlob,\nsectionID,\nrowID)\n{\nreturn dataBlob[sectionID][rowID];}\n\n\nfunction defaultGetSectionHeaderData(\ndataBlob,\nsectionID)\n{\nreturn dataBlob[sectionID];}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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nListViewDataSource=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\nfunction ListViewDataSource(params){babelHelpers.classCallCheck(this,ListViewDataSource);\ninvariant(\nparams&&typeof params.rowHasChanged==='function',\n'Must provide a rowHasChanged function.');\n\nthis._rowHasChanged=params.rowHasChanged;\nthis._getRowData=params.getRowData||defaultGetRowData;\nthis._sectionHeaderHasChanged=params.sectionHeaderHasChanged;\nthis._getSectionHeaderData=\nparams.getSectionHeaderData||defaultGetSectionHeaderData;\n\nthis._dataBlob=null;\nthis._dirtyRows=[];\nthis._dirtySections=[];\nthis._cachedRowCount=0;\n\n\n\nthis.rowIdentities=[];\nthis.sectionIdentities=[];}babelHelpers.createClass(ListViewDataSource,[{key:'cloneWithRows',value:function cloneWithRows(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndataBlob,\nrowIdentities)\n{\nvar rowIds=rowIdentities?[rowIdentities]:null;\nif(!this._sectionHeaderHasChanged){\nthis._sectionHeaderHasChanged=function(){return false;};}\n\nreturn this.cloneWithRowsAndSections({s1:dataBlob},['s1'],rowIds);}},{key:'cloneWithRowsAndSections',value:function cloneWithRowsAndSections(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndataBlob,\nsectionIdentities,\nrowIdentities)\n{\ninvariant(\ntypeof this._sectionHeaderHasChanged==='function',\n'Must provide a sectionHeaderHasChanged function with section data.');\n\ninvariant(\n!sectionIdentities||!rowIdentities||sectionIdentities.length===rowIdentities.length,\n'row and section ids lengths must be the same');\n\n\nvar newSource=new ListViewDataSource({\ngetRowData:this._getRowData,\ngetSectionHeaderData:this._getSectionHeaderData,\nrowHasChanged:this._rowHasChanged,\nsectionHeaderHasChanged:this._sectionHeaderHasChanged});\n\nnewSource._dataBlob=dataBlob;\nif(sectionIdentities){\nnewSource.sectionIdentities=sectionIdentities;}else \n{\nnewSource.sectionIdentities=Object.keys(dataBlob);}\n\nif(rowIdentities){\nnewSource.rowIdentities=rowIdentities;}else \n{\nnewSource.rowIdentities=[];\nnewSource.sectionIdentities.forEach(function(sectionID){\nnewSource.rowIdentities.push(Object.keys(dataBlob[sectionID]));});}\n\n\nnewSource._cachedRowCount=countRows(newSource.rowIdentities);\n\nnewSource._calculateDirtyArrays(\nthis._dataBlob,\nthis.sectionIdentities,\nthis.rowIdentities);\n\n\nreturn newSource;}},{key:'getRowCount',value:function getRowCount()\n\n\n{\nreturn this._cachedRowCount;}},{key:'getRowAndSectionCount',value:function getRowAndSectionCount()\n\n\n{\nreturn this._cachedRowCount+this.sectionIdentities.length;}},{key:'rowShouldUpdate',value:function rowShouldUpdate(\n\n\n\n\n\nsectionIndex,rowIndex){\nvar needsUpdate=this._dirtyRows[sectionIndex][rowIndex];\nwarning(needsUpdate!==undefined,\n'missing dirtyBit for section, row: '+sectionIndex+', '+rowIndex);\nreturn needsUpdate;}},{key:'getRowData',value:function getRowData(\n\n\n\n\n\nsectionIndex,rowIndex){\nvar sectionID=this.sectionIdentities[sectionIndex];\nvar rowID=this.rowIdentities[sectionIndex][rowIndex];\nwarning(\nsectionID!==undefined&&rowID!==undefined,\n'rendering invalid section, row: '+sectionIndex+', '+rowIndex);\n\nreturn this._getRowData(this._dataBlob,sectionID,rowID);}},{key:'getRowIDForFlatIndex',value:function getRowIDForFlatIndex(\n\n\n\n\n\n\nindex){\nvar accessIndex=index;\nfor(var ii=0;ii=this.rowIdentities[ii].length){\naccessIndex-=this.rowIdentities[ii].length;}else \n{\nreturn this.rowIdentities[ii][accessIndex];}}\n\n\nreturn null;}},{key:'getSectionIDForFlatIndex',value:function getSectionIDForFlatIndex(\n\n\n\n\n\n\nindex){\nvar accessIndex=index;\nfor(var ii=0;ii=this.rowIdentities[ii].length){\naccessIndex-=this.rowIdentities[ii].length;}else \n{\nreturn this.sectionIdentities[ii];}}\n\n\nreturn null;}},{key:'getSectionLengths',value:function getSectionLengths()\n\n\n\n\n\n{\nvar results=[];\nfor(var ii=0;ii bool;\n\ntype ParamType = {\n rowHasChanged: differType;\n getRowData: ?typeof defaultGetRowData;\n sectionHeaderHasChanged: ?differType;\n getSectionHeaderData: ?typeof defaultGetSectionHeaderData;\n}\n\n/**\n * Provides efficient data processing and access to the\n * `ListView` component. A `ListViewDataSource` is created with functions for\n * extracting data from the input blob, and comparing elements (with default\n * implementations for convenience). The input blob can be as simple as an\n * array of strings, or an object with rows nested inside section objects.\n *\n * To update the data in the datasource, use `cloneWithRows` (or\n * `cloneWithRowsAndSections` if you care about sections). The data in the\n * data source is immutable, so you can't modify it directly. The clone methods\n * suck in the new data and compute a diff for each row so ListView knows\n * whether to re-render it or not.\n *\n * In this example, a component receives data in chunks, handled by\n * `_onDataArrived`, which concats the new data onto the old data and updates the\n * data source. We use `concat` to create a new array - mutating `this._data`,\n * e.g. with `this._data.push(newRowData)`, would be an error. `_rowHasChanged`\n * understands the shape of the row data and knows how to efficiently compare\n * it.\n *\n * ```\n * getInitialState: function() {\n * var ds = new ListViewDataSource({rowHasChanged: this._rowHasChanged});\n * return {ds};\n * },\n * _onDataArrived(newData) {\n * this._data = this._data.concat(newData);\n * this.setState({\n * ds: this.state.ds.cloneWithRows(this._data)\n * });\n * }\n * ```\n */\n\nclass ListViewDataSource {\n\n /**\n * You can provide custom extraction and `hasChanged` functions for section\n * headers and rows. If absent, data will be extracted with the\n * `defaultGetRowData` and `defaultGetSectionHeaderData` functions.\n *\n * The default extractor expects data of one of the following forms:\n *\n * { sectionID_1: { rowID_1: , ... }, ... }\n *\n * or\n *\n * { sectionID_1: [ , , ... ], ... }\n *\n * or\n *\n * [ [ , , ... ], ... ]\n *\n * The constructor takes in a params argument that can contain any of the\n * following:\n *\n * - getRowData(dataBlob, sectionID, rowID);\n * - getSectionHeaderData(dataBlob, sectionID);\n * - rowHasChanged(prevRowData, nextRowData);\n * - sectionHeaderHasChanged(prevSectionData, nextSectionData);\n */\n constructor(params: ParamType) {\n invariant(\n params && typeof params.rowHasChanged === 'function',\n 'Must provide a rowHasChanged function.'\n );\n this._rowHasChanged = params.rowHasChanged;\n this._getRowData = params.getRowData || defaultGetRowData;\n this._sectionHeaderHasChanged = params.sectionHeaderHasChanged;\n this._getSectionHeaderData =\n params.getSectionHeaderData || defaultGetSectionHeaderData;\n\n this._dataBlob = null;\n this._dirtyRows = [];\n this._dirtySections = [];\n this._cachedRowCount = 0;\n\n // These two private variables are accessed by outsiders because ListView\n // uses them to iterate over the data in this class.\n this.rowIdentities = [];\n this.sectionIdentities = [];\n }\n\n /**\n * Clones this `ListViewDataSource` with the specified `dataBlob` and\n * `rowIdentities`. The `dataBlob` is just an arbitrary blob of data. At\n * construction an extractor to get the interesting information was defined\n * (or the default was used).\n *\n * The `rowIdentities` is is a 2D array of identifiers for rows.\n * ie. [['a1', 'a2'], ['b1', 'b2', 'b3'], ...]. If not provided, it's\n * assumed that the keys of the section data are the row identities.\n *\n * Note: This function does NOT clone the data in this data source. It simply\n * passes the functions defined at construction to a new data source with\n * the data specified. If you wish to maintain the existing data you must\n * handle merging of old and new data separately and then pass that into\n * this function as the `dataBlob`.\n */\n cloneWithRows(\n dataBlob: Array | {[key: string]: any},\n rowIdentities: ?Array\n ): ListViewDataSource {\n var rowIds = rowIdentities ? [rowIdentities] : null;\n if (!this._sectionHeaderHasChanged) {\n this._sectionHeaderHasChanged = () => false;\n }\n return this.cloneWithRowsAndSections({s1: dataBlob}, ['s1'], rowIds);\n }\n\n /**\n * This performs the same function as the `cloneWithRows` function but here\n * you also specify what your `sectionIdentities` are. If you don't care\n * about sections you should safely be able to use `cloneWithRows`.\n *\n * `sectionIdentities` is an array of identifiers for sections.\n * ie. ['s1', 's2', ...]. If not provided, it's assumed that the\n * keys of dataBlob are the section identities.\n *\n * Note: this returns a new object!\n */\n cloneWithRowsAndSections(\n dataBlob: any,\n sectionIdentities: ?Array,\n rowIdentities: ?Array>\n ): ListViewDataSource {\n invariant(\n typeof this._sectionHeaderHasChanged === 'function',\n 'Must provide a sectionHeaderHasChanged function with section data.'\n );\n invariant(\n !sectionIdentities || !rowIdentities || sectionIdentities.length === rowIdentities.length,\n 'row and section ids lengths must be the same'\n );\n\n var newSource = new ListViewDataSource({\n getRowData: this._getRowData,\n getSectionHeaderData: this._getSectionHeaderData,\n rowHasChanged: this._rowHasChanged,\n sectionHeaderHasChanged: this._sectionHeaderHasChanged,\n });\n newSource._dataBlob = dataBlob;\n if (sectionIdentities) {\n newSource.sectionIdentities = sectionIdentities;\n } else {\n newSource.sectionIdentities = Object.keys(dataBlob);\n }\n if (rowIdentities) {\n newSource.rowIdentities = rowIdentities;\n } else {\n newSource.rowIdentities = [];\n newSource.sectionIdentities.forEach((sectionID) => {\n newSource.rowIdentities.push(Object.keys(dataBlob[sectionID]));\n });\n }\n newSource._cachedRowCount = countRows(newSource.rowIdentities);\n\n newSource._calculateDirtyArrays(\n this._dataBlob,\n this.sectionIdentities,\n this.rowIdentities\n );\n\n return newSource;\n }\n\n getRowCount(): number {\n return this._cachedRowCount;\n }\n\n getRowAndSectionCount(): number {\n return (this._cachedRowCount + this.sectionIdentities.length);\n }\n\n /**\n * Returns if the row is dirtied and needs to be rerendered\n */\n rowShouldUpdate(sectionIndex: number, rowIndex: number): bool {\n var needsUpdate = this._dirtyRows[sectionIndex][rowIndex];\n warning(needsUpdate !== undefined,\n 'missing dirtyBit for section, row: ' + sectionIndex + ', ' + rowIndex);\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the row.\n */\n getRowData(sectionIndex: number, rowIndex: number): any {\n var sectionID = this.sectionIdentities[sectionIndex];\n var rowID = this.rowIdentities[sectionIndex][rowIndex];\n warning(\n sectionID !== undefined && rowID !== undefined,\n 'rendering invalid section, row: ' + sectionIndex + ', ' + rowIndex\n );\n return this._getRowData(this._dataBlob, sectionID, rowID);\n }\n\n /**\n * Gets the rowID at index provided if the dataSource arrays were flattened,\n * or null of out of range indexes.\n */\n getRowIDForFlatIndex(index: number): ?string {\n var accessIndex = index;\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.rowIdentities[ii][accessIndex];\n }\n }\n return null;\n }\n\n /**\n * Gets the sectionID at index provided if the dataSource arrays were flattened,\n * or null for out of range indexes.\n */\n getSectionIDForFlatIndex(index: number): ?string {\n var accessIndex = index;\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.sectionIdentities[ii];\n }\n }\n return null;\n }\n\n /**\n * Returns an array containing the number of rows in each section\n */\n getSectionLengths(): Array {\n var results = [];\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n results.push(this.rowIdentities[ii].length);\n }\n return results;\n }\n\n /**\n * Returns if the section header is dirtied and needs to be rerendered\n */\n sectionHeaderShouldUpdate(sectionIndex: number): bool {\n var needsUpdate = this._dirtySections[sectionIndex];\n warning(needsUpdate !== undefined,\n 'missing dirtyBit for section: ' + sectionIndex);\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the section header\n */\n getSectionHeaderData(sectionIndex: number): any {\n if (!this._getSectionHeaderData) {\n return null;\n }\n var sectionID = this.sectionIdentities[sectionIndex];\n warning(sectionID !== undefined,\n 'renderSection called on invalid section: ' + sectionIndex);\n return this._getSectionHeaderData(this._dataBlob, sectionID);\n }\n\n /**\n * Private members and methods.\n */\n\n _getRowData: typeof defaultGetRowData;\n _getSectionHeaderData: typeof defaultGetSectionHeaderData;\n _rowHasChanged: differType;\n _sectionHeaderHasChanged: ?differType;\n\n _dataBlob: any;\n _dirtyRows: Array>;\n _dirtySections: Array;\n _cachedRowCount: number;\n\n // These two 'protected' variables are accessed by ListView to iterate over\n // the data in this class.\n rowIdentities: Array>;\n sectionIdentities: Array;\n\n _calculateDirtyArrays(\n prevDataBlob: any,\n prevSectionIDs: Array,\n prevRowIDs: Array>\n ): void {\n // construct a hashmap of the existing (old) id arrays\n var prevSectionsHash = keyedDictionaryFromArray(prevSectionIDs);\n var prevRowsHash = {};\n for (var ii = 0; ii < prevRowIDs.length; ii++) {\n var sectionID = prevSectionIDs[ii];\n warning(\n !prevRowsHash[sectionID],\n 'SectionID appears more than once: ' + sectionID\n );\n prevRowsHash[sectionID] = keyedDictionaryFromArray(prevRowIDs[ii]);\n }\n\n // compare the 2 identity array and get the dirtied rows\n this._dirtySections = [];\n this._dirtyRows = [];\n\n var dirty;\n for (var sIndex = 0; sIndex < this.sectionIdentities.length; sIndex++) {\n var sectionID = this.sectionIdentities[sIndex];\n // dirty if the sectionHeader is new or _sectionHasChanged is true\n dirty = !prevSectionsHash[sectionID];\n var sectionHeaderHasChanged = this._sectionHeaderHasChanged;\n if (!dirty && sectionHeaderHasChanged) {\n dirty = sectionHeaderHasChanged(\n this._getSectionHeaderData(prevDataBlob, sectionID),\n this._getSectionHeaderData(this._dataBlob, sectionID)\n );\n }\n this._dirtySections.push(!!dirty);\n\n this._dirtyRows[sIndex] = [];\n for (var rIndex = 0; rIndex < this.rowIdentities[sIndex].length; rIndex++) {\n var rowID = this.rowIdentities[sIndex][rIndex];\n // dirty if the section is new, row is new or _rowHasChanged is true\n dirty =\n !prevSectionsHash[sectionID] ||\n !prevRowsHash[sectionID][rowID] ||\n this._rowHasChanged(\n this._getRowData(prevDataBlob, sectionID, rowID),\n this._getRowData(this._dataBlob, sectionID, rowID)\n );\n this._dirtyRows[sIndex].push(!!dirty);\n }\n }\n }\n}\n\nfunction countRows(allRowIDs) {\n var totalRows = 0;\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var rowIDs = allRowIDs[sectionIdx];\n totalRows += rowIDs.length;\n }\n return totalRows;\n}\n\nfunction keyedDictionaryFromArray(arr) {\n if (isEmpty(arr)) {\n return {};\n }\n var result = {};\n for (var ii = 0; ii < arr.length; ii++) {\n var key = arr[ii];\n warning(!result[key], 'Value appears more than once in array: ' + key);\n result[key] = true;\n }\n return result;\n}\n\n\nmodule.exports = ListViewDataSource;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ExceptionsManager","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[114,167,499,1344],"dependencies":["parseErrorStack","NativeModules","SourceMapsCache","stringifySafe"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar exceptionID=0;\n\n\n\n\nfunction reportException(e,isFatal){\nvar parseErrorStack=require('parseErrorStack');\nvar RCTExceptionsManager=require('NativeModules').ExceptionsManager;\n\nvar currentExceptionID=++exceptionID;\nif(RCTExceptionsManager){\nvar stack=parseErrorStack(e);\nif(isFatal){\nRCTExceptionsManager.reportFatalException(e.message,stack,currentExceptionID);}else \n{\nRCTExceptionsManager.reportSoftException(e.message,stack,currentExceptionID);}\n\nif(__DEV__){\nrequire('SourceMapsCache').getSourceMaps().then(function(sourceMaps){\nvar prettyStack=parseErrorStack(e,sourceMaps);\nRCTExceptionsManager.updateExceptionMessage(\ne.message,\nprettyStack,\ncurrentExceptionID);}).\n\n\ncatch(function(error){\n\n\nconsole.warn('Unable to load source map: '+error.message);});}}}\n\n\n\n\n\n\n\n\nfunction handleException(e,isFatal){\n\n\n\n\nif(!e.message){\ne=new Error(e);}\n\n\n(console._errorOriginal||console.error)(e.message);\nreportException(e,isFatal);}\n\n\n\n\n\n\nfunction installConsoleErrorReporter(){\n\nif(console._errorOriginal){\nreturn;}\n\nconsole._errorOriginal=console.error.bind(console);\nconsole.error=function reactConsoleError(){\nconsole._errorOriginal.apply(null,arguments);\nif(!console.reportErrorsAsExceptions){\nreturn;}\n\n\nif(arguments[0]&&arguments[0].stack){\nreportException(arguments[0],false);}else \n{\nvar stringifySafe=require('stringifySafe');\nvar str=Array.prototype.map.call(arguments,stringifySafe).join(', ');\nif(str.slice(0,10)==='\"Warning: '){\n\n\n\nreturn;}\n\nvar error=new Error('console.error: '+str);\nerror.framesToPop=1;\nreportException(error,false);}};\n\n\nif(console.reportErrorsAsExceptions===undefined){\nconsole.reportErrorsAsExceptions=true;}}\n\n\n\nmodule.exports={handleException:handleException,installConsoleErrorReporter:installConsoleErrorReporter};","map":null,"id":"ExceptionsManager","source":"/**\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\nlet exceptionID = 0;\n\n/**\n * Handles the developer-visible aspect of errors and exceptions\n */\nfunction reportException(e: Error, isFatal: bool) {\n const parseErrorStack = require('parseErrorStack');\n const RCTExceptionsManager = require('NativeModules').ExceptionsManager;\n\n const currentExceptionID = ++exceptionID;\n if (RCTExceptionsManager) {\n const stack = parseErrorStack(e);\n if (isFatal) {\n RCTExceptionsManager.reportFatalException(e.message, stack, currentExceptionID);\n } else {\n RCTExceptionsManager.reportSoftException(e.message, stack, currentExceptionID);\n }\n if (__DEV__) {\n require('SourceMapsCache').getSourceMaps().then(sourceMaps => {\n const prettyStack = parseErrorStack(e, sourceMaps);\n RCTExceptionsManager.updateExceptionMessage(\n e.message,\n prettyStack,\n currentExceptionID,\n );\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\n/**\n * Logs exceptions to the (native) console and displays them\n */\nfunction handleException(e: Error, isFatal: boolean) {\n // Workaround for reporting errors caused by `throw 'some string'`\n // Unfortunately there is no way to figure out the stacktrace in this\n // case, so if you ended up here trying to trace an error, look for\n // `throw ''` somewhere in your codebase.\n if (!e.message) {\n e = new Error(e);\n }\n\n (console._errorOriginal || console.error)(e.message);\n reportException(e, isFatal);\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 // Enable reportErrorsAsExceptions\n if (console._errorOriginal) {\n return; // already installed\n }\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\n if (arguments[0] && arguments[0].stack) {\n reportException(arguments[0], /* isFatal */ false);\n } else {\n const stringifySafe = require('stringifySafe');\n const str = Array.prototype.map.call(arguments, stringifySafe).join(', ');\n if (str.slice(0, 10) === '\"Warning: ') {\n // React warnings use console.error so that a stack trace is shown, but\n // we don't (currently) want these to show a redbox\n // (Note: Logic duplicated in polyfills/console.js.)\n return;\n }\n const error : any = new Error('console.error: ' + str);\n error.framesToPop = 1;\n reportException(error, /* isFatal */ false);\n }\n };\n if (console.reportErrorsAsExceptions === undefined) {\n console.reportErrorsAsExceptions = true; // Individual apps can disable this\n }\n}\n\nmodule.exports = { handleException, installConsoleErrorReporter };\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js":{"metadata":{"mtime":1463609891000},"data":{"name":"InitializeJavaScriptAppEngine","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[32,237,1873,2013,2206,2596,2719,2822,2900,2970,3044,3120,3197,3405,3502,3540,3738,3817,4139,4190,4472,4513,4547,4584,4629],"dependencies":["regenerator-runtime/runtime","ExceptionsManager","ErrorUtils","JSTimers","Alert","Promise","XMLHttpRequest","FormData","fetch","Geolocation","Map","Set","WebSocket","Systrace","Platform","setupDevtools","RCTDebugComponentOwnership","RCTDeviceEventEmitter","RCTNativeAppEventEmitter","PerformanceLogger","react-transform-hmr"],"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'regenerator-runtime/runtime');\n\nif(typeof GLOBAL==='undefined'){\nglobal.GLOBAL=global;}\n\n\nif(typeof window==='undefined'){\nglobal.window=global;}\n\n\nfunction setUpConsole(){\n\nvar ExceptionsManager=require('ExceptionsManager');\nExceptionsManager.installConsoleErrorReporter();}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction polyfillGlobal(name,newValue){var scope=arguments.length<=2||arguments[2]===undefined?global:arguments[2];\nvar descriptor=Object.getOwnPropertyDescriptor(scope,name)||{\n\n\n\n\nwritable:true};\n\n\nif(scope[name]!==undefined){\nvar backupName='original'+name[0].toUpperCase()+name.substr(1);\nObject.defineProperty(scope,backupName,babelHelpers.extends({},descriptor,{value:scope[name]}));}\n\n\nObject.defineProperty(scope,name,babelHelpers.extends({},descriptor,{value:newValue}));}\n\n\nfunction polyfillLazyGlobal(name,valueFn){var scope=arguments.length<=2||arguments[2]===undefined?global:arguments[2];\nif(scope[name]!==undefined){\nvar descriptor=Object.getOwnPropertyDescriptor(scope,name);\nvar backupName='original'+name[0].toUpperCase()+name.substr(1);\nObject.defineProperty(scope,backupName,babelHelpers.extends({},descriptor,{value:scope[name]}));}\n\n\nObject.defineProperty(scope,name,{\nconfigurable:true,\nenumerable:true,\nget:function get(){\nreturn this[name]=valueFn();},\n\nset:function set(value){\nObject.defineProperty(this,name,{\nconfigurable:true,\nenumerable:true,\nvalue:value});}});}\n\n\n\n\n\n\n\n\nfunction polyfillIfNeeded(name,polyfill){var scope=arguments.length<=2||arguments[2]===undefined?global:arguments[2];var descriptor=arguments.length<=3||arguments[3]===undefined?{}:arguments[3];\nif(scope[name]===undefined){\nObject.defineProperty(scope,name,babelHelpers.extends({},descriptor,{value:polyfill}));}}\n\n\n\nfunction setUpErrorHandler(){\nif(global.__fbDisableExceptionsManager){\nreturn;}\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\nvar ErrorUtils=require('ErrorUtils');\nErrorUtils.setGlobalHandler(handleError);}\n\n\n\n\n\n\n\n\n\nfunction setUpTimers(){\nvar defineLazyTimer=function defineLazyTimer(name){\npolyfillLazyGlobal(name,function(){return require('JSTimers')[name];});};\n\ndefineLazyTimer('setTimeout');\ndefineLazyTimer('setInterval');\ndefineLazyTimer('setImmediate');\ndefineLazyTimer('clearTimeout');\ndefineLazyTimer('clearInterval');\ndefineLazyTimer('clearImmediate');\ndefineLazyTimer('requestAnimationFrame');\ndefineLazyTimer('cancelAnimationFrame');}\n\n\nfunction setUpAlert(){\nif(!global.alert){\nglobal.alert=function(text){\n\n\nrequire('Alert').alert('Alert',''+text);};}}\n\n\n\n\nfunction setUpPromise(){\n\n\npolyfillLazyGlobal('Promise',function(){return require('Promise');});}\n\n\nfunction setUpXHR(){\n\n\npolyfillLazyGlobal('XMLHttpRequest',function(){return require('XMLHttpRequest');});\npolyfillLazyGlobal('FormData',function(){return require('FormData');});\n\npolyfillLazyGlobal('fetch',function(){return require('fetch').fetch;});\npolyfillLazyGlobal('Headers',function(){return require('fetch').Headers;});\npolyfillLazyGlobal('Request',function(){return require('fetch').Request;});\npolyfillLazyGlobal('Response',function(){return require('fetch').Response;});}\n\n\nfunction setUpGeolocation(){\npolyfillIfNeeded('navigator',{},global,{\nwritable:true,\nenumerable:true,\nconfigurable:true});\n\npolyfillLazyGlobal('geolocation',function(){return require('Geolocation');},global.navigator);}\n\n\nfunction setUpMapAndSet(){\n\n\npolyfillGlobal('Map',require('Map'));\npolyfillGlobal('Set',require('Set'));}\n\n\nfunction setUpProduct(){\nObject.defineProperty(global.navigator,'product',{value:'ReactNative'});}\n\n\nfunction setUpWebSockets(){\npolyfillLazyGlobal('WebSocket',function(){return require('WebSocket');});}\n\n\nfunction setUpProfile(){\nif(__DEV__){\nvar Systrace=require('Systrace');\nSystrace.swizzleReactPerf();}}\n\n\n\nfunction setUpProcess(){\nglobal.process=global.process||{};\nglobal.process.env=global.process.env||{};\nif(!global.process.env.NODE_ENV){\nglobal.process.env.NODE_ENV=__DEV__?'development':'production';}}\n\n\n\nfunction setUpDevTools(){\n\nif(__DEV__){\nif(!window.document&&require('Platform').OS==='ios'){\nvar setupDevtools=require('setupDevtools');\nsetupDevtools();}}}\n\n\n\n\nsetUpProcess();\nsetUpConsole();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpErrorHandler();\nsetUpXHR();\nsetUpGeolocation();\nsetUpMapAndSet();\nsetUpProduct();\nsetUpWebSockets();\nsetUpProfile();\nsetUpDevTools();\n\n\n\nif(__DEV__){\nrequire('RCTDebugComponentOwnership');}\n\nrequire('RCTDeviceEventEmitter');\nrequire('RCTNativeAppEventEmitter');\nrequire('PerformanceLogger');\n\nif(__DEV__){\n\nrequire('react-transform-hmr');}","map":null,"id":"InitializeJavaScriptAppEngine","source":"/**\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 strict: 0 */\n/* globals GLOBAL: true, window: true */\n\nrequire('regenerator-runtime/runtime');\n\nif (typeof GLOBAL === 'undefined') {\n global.GLOBAL = global;\n}\n\nif (typeof window === 'undefined') {\n global.window = global;\n}\n\nfunction setUpConsole() {\n // ExceptionsManager transitively requires Promise so we install it after\n var ExceptionsManager = require('ExceptionsManager');\n ExceptionsManager.installConsoleErrorReporter();\n}\n\n/**\n * Assigns a new global property, replacing the existing one if there is one.\n *\n * Existing properties are preserved as `originalPropertyName`. Both properties\n * will maintain the same enumerability & configurability.\n *\n * This allows you to undo the more aggressive polyfills, should you need to.\n * For example, if you want to route network requests through DevTools (to trace\n * them):\n *\n * global.XMLHttpRequest = global.originalXMLHttpRequest;\n *\n * For more info on that particular case, see:\n * https://github.com/facebook/react-native/issues/934\n */\nfunction polyfillGlobal(name, newValue, scope = global) {\n var descriptor = Object.getOwnPropertyDescriptor(scope, name) || {\n // jest for some bad reasons runs the polyfill code multiple times. In jest\n // environment, XmlHttpRequest doesn't exist so getOwnPropertyDescriptor\n // returns undefined and defineProperty default for writable is false.\n // Therefore, the second time it runs, defineProperty will fatal :(\n writable: true,\n };\n\n if (scope[name] !== undefined) {\n var backupName = `original${name[0].toUpperCase()}${name.substr(1)}`;\n Object.defineProperty(scope, backupName, {...descriptor, value: scope[name]});\n }\n\n Object.defineProperty(scope, name, {...descriptor, value: newValue});\n}\n\nfunction polyfillLazyGlobal(name, valueFn, scope = global) {\n if (scope[name] !== undefined) {\n const descriptor = Object.getOwnPropertyDescriptor(scope, name);\n const backupName = `original${name[0].toUpperCase()}${name.substr(1)}`;\n Object.defineProperty(scope, backupName, {...descriptor, value: scope[name]});\n }\n\n Object.defineProperty(scope, name, {\n configurable: true,\n enumerable: true,\n get() {\n return (this[name] = valueFn());\n },\n set(value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value\n });\n }\n });\n}\n\n/**\n * Polyfill a module if it is not already defined in `scope`.\n */\nfunction polyfillIfNeeded(name, polyfill, scope = global, descriptor = {}) {\n if (scope[name] === undefined) {\n Object.defineProperty(scope, name, {...descriptor, value: polyfill});\n }\n}\n\nfunction setUpErrorHandler() {\n if (global.__fbDisableExceptionsManager) {\n return;\n }\n\n function 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\n var ErrorUtils = require('ErrorUtils');\n ErrorUtils.setGlobalHandler(handleError);\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 const defineLazyTimer = (name) => {\n polyfillLazyGlobal(name, () => require('JSTimers')[name]);\n };\n defineLazyTimer('setTimeout');\n defineLazyTimer('setInterval');\n defineLazyTimer('setImmediate');\n defineLazyTimer('clearTimeout');\n defineLazyTimer('clearInterval');\n defineLazyTimer('clearImmediate');\n defineLazyTimer('requestAnimationFrame');\n defineLazyTimer('cancelAnimationFrame');\n}\n\nfunction setUpAlert() {\n if (!global.alert) {\n global.alert = function(text) {\n // Require Alert on demand. Requiring it too early can lead to issues\n // with things like Platform not being fully initialized.\n require('Alert').alert('Alert', '' + text);\n };\n }\n}\n\nfunction setUpPromise() {\n // The native Promise implementation throws the following error:\n // ERROR: Event loop not supported.\n polyfillLazyGlobal('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 polyfillLazyGlobal('XMLHttpRequest', () => require('XMLHttpRequest'));\n polyfillLazyGlobal('FormData', () => require('FormData'));\n\n polyfillLazyGlobal('fetch', () => require('fetch').fetch);\n polyfillLazyGlobal('Headers', () => require('fetch').Headers);\n polyfillLazyGlobal('Request', () => require('fetch').Request);\n polyfillLazyGlobal('Response', () => require('fetch').Response);\n}\n\nfunction setUpGeolocation() {\n polyfillIfNeeded('navigator', {}, global, {\n writable: true,\n enumerable: true,\n configurable: true,\n });\n polyfillLazyGlobal('geolocation', () => require('Geolocation'), global.navigator);\n}\n\nfunction setUpMapAndSet() {\n // We can't make these lazy as Map checks the global.Map to see if it's\n // available but in our case it'll be a lazy getter.\n polyfillGlobal('Map', require('Map'));\n polyfillGlobal('Set', require('Set'));\n}\n\nfunction setUpProduct() {\n Object.defineProperty(global.navigator, 'product', {value: 'ReactNative'});\n}\n\nfunction setUpWebSockets() {\n polyfillLazyGlobal('WebSocket', () => require('WebSocket'));\n}\n\nfunction setUpProfile() {\n if (__DEV__) {\n var Systrace = require('Systrace');\n Systrace.swizzleReactPerf();\n }\n}\n\nfunction setUpProcess() {\n global.process = global.process || {};\n global.process.env = global.process.env || {};\n if (!global.process.env.NODE_ENV) {\n global.process.env.NODE_ENV = __DEV__ ? 'development' : 'production';\n }\n}\n\nfunction setUpDevTools() {\n // not when debugging in chrome\n if (__DEV__) { // TODO(9123099) Strip `__DEV__ &&`\n if (!window.document && require('Platform').OS === 'ios') {\n var setupDevtools = require('setupDevtools');\n setupDevtools();\n }\n }\n}\n\nsetUpProcess();\nsetUpConsole();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpErrorHandler();\nsetUpXHR();\nsetUpGeolocation();\nsetUpMapAndSet();\nsetUpProduct();\nsetUpWebSockets();\nsetUpProfile();\nsetUpDevTools();\n\n// Just to make sure the JS gets packaged up. Wait until the JS environment has\n// been initialized before requiring them.\nif (__DEV__) {\n require('RCTDebugComponentOwnership');\n}\nrequire('RCTDeviceEventEmitter');\nrequire('RCTNativeAppEventEmitter');\nrequire('PerformanceLogger');\n\nif (__DEV__) {\n // include this transform and it's dependencies on the bundle on dev mode\n require('react-transform-hmr');\n}\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/parseErrorStack.js":{"metadata":{"mtime":1463609891000},"data":{"name":"parseErrorStack","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[54],"dependencies":["stacktrace-parser"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar stacktraceParser=require('stacktrace-parser');\n\nfunction resolveSourceMaps(sourceMapInstance,stackFrame){\ntry{\nvar orig=sourceMapInstance.originalPositionFor({\nline:stackFrame.lineNumber,\ncolumn:stackFrame.column});\n\nif(orig){\n\nvar queryStringStartIndex=orig.source.indexOf('?');\nstackFrame.file=queryStringStartIndex===-1?\norig.source:\norig.source.substring(0,queryStringStartIndex);\nstackFrame.lineNumber=orig.line;\nstackFrame.column=orig.column;}}\n\ncatch(innerEx){}}\n\n\n\nfunction parseErrorStack(e,sourceMaps){\nif(!e||!e.stack){\nreturn [];}\n\n\nvar stack=Array.isArray(e.stack)?e.stack:stacktraceParser.parse(e.stack);\n\nvar framesToPop=e.framesToPop||0;\nwhile(framesToPop--){\nstack.shift();}\n\n\nif(sourceMaps){\nsourceMaps.forEach(function(sourceMap,index){\nstack.forEach(function(frame){\nif(frame.file.indexOf(sourceMap.file)!==-1||\nframe.file.replace('.map','.bundle').indexOf(\nsourceMap.file)!==\n-1){\nresolveSourceMaps(sourceMap,frame);}});});}\n\n\n\n\n\nreturn stack;}\n\n\nmodule.exports=parseErrorStack;","map":null,"id":"parseErrorStack","source":"/**\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 parseErrorStack\n */\n'use strict';\n\nvar stacktraceParser = require('stacktrace-parser');\n\nfunction resolveSourceMaps(sourceMapInstance, stackFrame) {\n try {\n var orig = sourceMapInstance.originalPositionFor({\n line: stackFrame.lineNumber,\n column: stackFrame.column,\n });\n if (orig) {\n // remove query string if any\n const queryStringStartIndex = orig.source.indexOf('?');\n stackFrame.file = queryStringStartIndex === -1\n ? orig.source\n : orig.source.substring(0, queryStringStartIndex);\n stackFrame.lineNumber = orig.line;\n stackFrame.column = orig.column;\n }\n } catch (innerEx) {\n }\n}\n\nfunction parseErrorStack(e, sourceMaps) {\n if (!e || !e.stack) {\n return [];\n }\n\n var stack = Array.isArray(e.stack) ? e.stack : stacktraceParser.parse(e.stack);\n\n var framesToPop = e.framesToPop || 0;\n while (framesToPop--) {\n stack.shift();\n }\n\n if (sourceMaps) {\n sourceMaps.forEach((sourceMap, index) => {\n stack.forEach(frame => {\n if (frame.file.indexOf(sourceMap.file) !== -1 ||\n frame.file.replace('.map', '.bundle').indexOf(\n sourceMap.file\n ) !== -1) {\n resolveSourceMaps(sourceMap, frame);\n }\n });\n });\n }\n\n return stack;\n}\n\nmodule.exports = parseErrorStack;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/source-map-url.js":{"metadata":{"mtime":1463609891000},"data":{"k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(){\nvar define=null;\n\n\n\n\nvoid function(root,factory){\nif(typeof define===\"function\"&&define.amd){\ndefine(factory);}else \nif(typeof exports===\"object\"){\nmodule.exports=factory();}else \n{\nroot.sourceMappingURL=factory();}}(\n\nthis,function(){\n\nvar innerRegex=/[#@] source(?:Mapping)?URL=([^\\s'\"]*)/;\n\nvar regex=RegExp(\n\"(?:\"+\n\"/\\\\*\"+\n\"(?:\\\\s*\\r?\\n(?://)?)?\"+\n\"(?:\"+innerRegex.source+\")\"+\n\"\\\\s*\"+\n\"\\\\*/\"+\n\"|\"+\n\"//(?:\"+innerRegex.source+\")\"+\n\")\"+\n\"\\\\s*$\");\n\n\nreturn {\n\nregex:regex,\n_innerRegex:innerRegex,\n\ngetFrom:function getFrom(code){\nvar match=code.match(regex);\nreturn match?match[1]||match[2]||\"\":null;},\n\n\nexistsIn:function existsIn(code){\nreturn regex.test(code);},\n\n\nremoveFrom:function removeFrom(code){\nreturn code.replace(regex,\"\");},\n\n\ninsertBefore:function insertBefore(code,string){\nvar match=code.match(regex);\nif(match){\nreturn code.slice(0,match.index)+string+code.slice(match.index);}else \n{\nreturn code+string;}}};});})();","map":null,"source":"/**\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 is a third-party micro-library grabbed from:\n * https://github.com/lydell/source-map-url\n *\n * @nolint\n */\n/* eslint-disable */\n\n(function() {\n var define = null; // Hack to make it work with our packager\n\n// Copyright 2014 Simon Lydell\n// X11 (\"MIT\") Licensed. (See LICENSE.)\n\nvoid (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory)\n } else if (typeof exports === \"object\") {\n module.exports = factory()\n } else {\n root.sourceMappingURL = factory()\n }\n}(this, function() {\n\n var innerRegex = /[#@] source(?:Mapping)?URL=([^\\s'\"]*)/\n\n var regex = RegExp(\n \"(?:\" +\n \"/\\\\*\" +\n \"(?:\\\\s*\\r?\\n(?://)?)?\" +\n \"(?:\" + innerRegex.source + \")\" +\n \"\\\\s*\" +\n \"\\\\*/\" +\n \"|\" +\n \"//(?:\" + innerRegex.source + \")\" +\n \")\" +\n \"\\\\s*$\"\n )\n\n return {\n\n regex: regex,\n _innerRegex: innerRegex,\n\n getFrom: function(code) {\n var match = code.match(regex)\n return (match ? match[1] || match[2] || \"\" : null)\n },\n\n existsIn: function(code) {\n return regex.test(code)\n },\n\n removeFrom: function(code) {\n return code.replace(regex, \"\")\n },\n\n insertBefore: function(code, string) {\n var match = code.match(regex)\n if (match) {\n return code.slice(0, match.index) + string + code.slice(match.index)\n } else {\n return code + string\n }\n }\n }\n\n}));\n\n/** End of the third-party code */\n\n})();\n"},"name":"react-native/Libraries/JavaScriptAppEngine/Initialization/source-map-url.js"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/SourceMap.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SourceMap","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencies":[],"dependencyOffsets":[],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscope={};\nwrapper.call(scope);\n\nmodule.exports=scope.sourceMap;\n\nfunction wrapper(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction define(moduleName,deps,payload){\nif(typeof moduleName!=\"string\"){\nthrow new TypeError('Expected string, got: '+moduleName);}\n\n\nif(arguments.length==2){\npayload=deps;}\n\n\nif(moduleName in define.modules){\nthrow new Error(\"Module already defined: \"+moduleName);}\n\ndefine.modules[moduleName]=payload;}\n;\n\n\n\n\ndefine.modules={};\n\n\n\n\n\n\n\n\n\n\nfunction Domain(){\nthis.modules={};\nthis._currentModule=null;}\n\n\n(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nDomain.prototype.require=function(deps,callback){\nif(Array.isArray(deps)){\nvar params=deps.map(function(dep){\nreturn this.lookup(dep);},\nthis);\nif(callback){\ncallback.apply(null,params);}\n\nreturn undefined;}else \n\n{\nreturn this.lookup(deps);}};\n\n\n\nfunction normalize(path){\nvar bits=path.split('/');\nvar i=1;\nwhile(i0&&aGenerated.column>=0&&\n!aOriginal&&!aSource&&!aName){\n\nreturn;}else \n\nif(aGenerated&&'line' in aGenerated&&'column' in aGenerated&&\naOriginal&&'line' in aOriginal&&'column' in aOriginal&&\naGenerated.line>0&&aGenerated.column>=0&&\naOriginal.line>0&&aOriginal.column>=0&&\naSource){\n\nreturn;}else \n\n{\nthrow new Error('Invalid mapping: '+JSON.stringify({\ngenerated:aGenerated,\nsource:aSource,\norginal:aOriginal,\nname:aName}));}};\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype._serializeMappings=\nfunction SourceMapGenerator_serializeMappings(){\nvar previousGeneratedColumn=0;\nvar previousGeneratedLine=1;\nvar previousOriginalColumn=0;\nvar previousOriginalLine=0;\nvar previousName=0;\nvar previousSource=0;\nvar result='';\nvar mapping;\n\n\n\n\n\n\nthis._mappings.sort(util.compareByGeneratedPositions);\n\nfor(var i=0,len=this._mappings.length;i0){\nif(!util.compareByGeneratedPositions(mapping,this._mappings[i-1])){\ncontinue;}\n\nresult+=',';}}\n\n\n\nresult+=base64VLQ.encode(mapping.generatedColumn-\npreviousGeneratedColumn);\npreviousGeneratedColumn=mapping.generatedColumn;\n\nif(mapping.source){\nresult+=base64VLQ.encode(this._sources.indexOf(mapping.source)-\npreviousSource);\npreviousSource=this._sources.indexOf(mapping.source);\n\n\nresult+=base64VLQ.encode(mapping.originalLine-1-\npreviousOriginalLine);\npreviousOriginalLine=mapping.originalLine-1;\n\nresult+=base64VLQ.encode(mapping.originalColumn-\npreviousOriginalColumn);\npreviousOriginalColumn=mapping.originalColumn;\n\nif(mapping.name){\nresult+=base64VLQ.encode(this._names.indexOf(mapping.name)-\npreviousName);\npreviousName=this._names.indexOf(mapping.name);}}}\n\n\n\n\nreturn result;};\n\n\nSourceMapGenerator.prototype._generateSourcesContent=\nfunction SourceMapGenerator_generateSourcesContent(aSources,aSourceRoot){\nreturn aSources.map(function(source){\nif(!this._sourcesContents){\nreturn null;}\n\nif(aSourceRoot){\nsource=util.relative(aSourceRoot,source);}\n\nvar key=util.toSetString(source);\nreturn Object.prototype.hasOwnProperty.call(this._sourcesContents,\nkey)?\nthis._sourcesContents[key]:\nnull;},\nthis);};\n\n\n\n\n\nSourceMapGenerator.prototype.toJSON=\nfunction SourceMapGenerator_toJSON(){\nvar map={\nversion:this._version,\nfile:this._file,\nsources:this._sources.toArray(),\nnames:this._names.toArray(),\nmappings:this._serializeMappings()};\n\nif(this._sourceRoot){\nmap.sourceRoot=this._sourceRoot;}\n\nif(this._sourcesContents){\nmap.sourcesContent=this._generateSourcesContent(map.sources,map.sourceRoot);}\n\n\nreturn map;};\n\n\n\n\n\nSourceMapGenerator.prototype.toString=\nfunction SourceMapGenerator_toString(){\nreturn JSON.stringify(this);};\n\n\nexports.SourceMapGenerator=SourceMapGenerator;});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndefine('source-map/base64-vlq',['require','exports','module','source-map/base64'],function(require,exports,module){\n\nvar base64=require('./base64');\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar VLQ_BASE_SHIFT=5;\n\n\nvar VLQ_BASE=1<>1;\nreturn isNegative?\n-shifted:\nshifted;}\n\n\n\n\n\nexports.encode=function base64VLQ_encode(aValue){\nvar encoded=\"\";\nvar digit;\n\nvar vlq=toVLQSigned(aValue);\n\ndo {\ndigit=vlq&VLQ_BASE_MASK;\nvlq>>>=VLQ_BASE_SHIFT;\nif(vlq>0){\n\n\ndigit|=VLQ_CONTINUATION_BIT;}\n\nencoded+=base64.encode(digit);}while(\nvlq>0);\n\nreturn encoded;};\n\n\n\n\n\n\nexports.decode=function base64VLQ_decode(aStr){\nvar i=0;\nvar strLen=aStr.length;\nvar result=0;\nvar shift=0;\nvar continuation,digit;\n\ndo {\nif(i>=strLen){\nthrow new Error(\"Expected more digits in base 64 VLQ value.\");}\n\ndigit=base64.decode(aStr.charAt(i++));\ncontinuation=!!(digit&VLQ_CONTINUATION_BIT);\ndigit&=VLQ_BASE_MASK;\nresult=result+(digit<s2)-(s1=0&&aIdx0){\nif(str.charAt(0)===';'){\ngeneratedLine++;\nstr=str.slice(1);\npreviousGeneratedColumn=0;}else \n\nif(str.charAt(0)===','){\nstr=str.slice(1);}else \n\n{\nmapping={};\nmapping.generatedLine=generatedLine;\n\n\ntemp=base64VLQ.decode(str);\nmapping.generatedColumn=previousGeneratedColumn+temp.value;\npreviousGeneratedColumn=mapping.generatedColumn;\nstr=temp.rest;\n\nif(str.length>0&&!mappingSeparator.test(str.charAt(0))){\n\ntemp=base64VLQ.decode(str);\nmapping.source=this._sources.at(previousSource+temp.value);\npreviousSource+=temp.value;\nstr=temp.rest;\nif(str.length===0||mappingSeparator.test(str.charAt(0))){\nthrow new Error('Found a source, but no line and column');}\n\n\n\ntemp=base64VLQ.decode(str);\nmapping.originalLine=previousOriginalLine+temp.value;\npreviousOriginalLine=mapping.originalLine;\n\nmapping.originalLine+=1;\nstr=temp.rest;\nif(str.length===0||mappingSeparator.test(str.charAt(0))){\nthrow new Error('Found a source and line, but no column');}\n\n\n\ntemp=base64VLQ.decode(str);\nmapping.originalColumn=previousOriginalColumn+temp.value;\npreviousOriginalColumn=mapping.originalColumn;\nstr=temp.rest;\n\nif(str.length>0&&!mappingSeparator.test(str.charAt(0))){\n\ntemp=base64VLQ.decode(str);\nmapping.name=this._names.at(previousName+temp.value);\npreviousName+=temp.value;\nstr=temp.rest;}}\n\n\n\nthis.__generatedMappings.push(mapping);\nif(typeof mapping.originalLine==='number'){\nthis.__originalMappings.push(mapping);}}}\n\n\n\n\nthis.__originalMappings.sort(util.compareByOriginalPositions);};\n\n\n\n\n\n\nSourceMapConsumer.prototype._findMapping=\nfunction SourceMapConsumer_findMapping(aNeedle,aMappings,aLineName,\naColumnName,aComparator){\n\n\n\n\n\nif(aNeedle[aLineName]<=0){\nthrow new TypeError('Line must be greater than or equal to 1, got '+\naNeedle[aLineName]);}\n\nif(aNeedle[aColumnName]<0){\nthrow new TypeError('Column must be greater than or equal to 0, got '+\naNeedle[aColumnName]);}\n\n\nreturn binarySearch.search(aNeedle,aMappings,aComparator);};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.originalPositionFor=\nfunction SourceMapConsumer_originalPositionFor(aArgs){\nvar needle={\ngeneratedLine:util.getArg(aArgs,'line'),\ngeneratedColumn:util.getArg(aArgs,'column')};\n\n\nvar mapping=this._findMapping(needle,\nthis._generatedMappings,\n\"generatedLine\",\n\"generatedColumn\",\nutil.compareByGeneratedPositions);\n\nif(mapping){\nvar source=util.getArg(mapping,'source',null);\nif(source&&this.sourceRoot){\nsource=util.join(this.sourceRoot,source);}\n\nreturn {\nsource:source,\nline:util.getArg(mapping,'originalLine',null),\ncolumn:util.getArg(mapping,'originalColumn',null),\nname:util.getArg(mapping,'name',null)};}\n\n\n\nreturn {\nsource:null,\nline:null,\ncolumn:null,\nname:null};};\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.sourceContentFor=\nfunction SourceMapConsumer_sourceContentFor(aSource){\nif(!this.sourcesContent){\nreturn null;}\n\n\nif(this.sourceRoot){\naSource=util.relative(this.sourceRoot,aSource);}\n\n\nif(this._sources.has(aSource)){\nreturn this.sourcesContent[this._sources.indexOf(aSource)];}\n\n\nvar url;\nif(this.sourceRoot&&(\nurl=util.urlParse(this.sourceRoot))){\n\n\n\n\nvar fileUriAbsPath=aSource.replace(/^file:\\/\\//,\"\");\nif(url.scheme==\"file\"&&\nthis._sources.has(fileUriAbsPath)){\nreturn this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];}\n\n\nif((!url.path||url.path==\"/\")&&\nthis._sources.has(\"/\"+aSource)){\nreturn this.sourcesContent[this._sources.indexOf(\"/\"+aSource)];}}\n\n\n\nthrow new Error('\"'+aSource+'\" is not in the SourceMap.');};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.generatedPositionFor=\nfunction SourceMapConsumer_generatedPositionFor(aArgs){\nvar needle={\nsource:util.getArg(aArgs,'source'),\noriginalLine:util.getArg(aArgs,'line'),\noriginalColumn:util.getArg(aArgs,'column')};\n\n\nif(this.sourceRoot){\nneedle.source=util.relative(this.sourceRoot,needle.source);}\n\n\nvar mapping=this._findMapping(needle,\nthis._originalMappings,\n\"originalLine\",\n\"originalColumn\",\nutil.compareByOriginalPositions);\n\nif(mapping){\nreturn {\nline:util.getArg(mapping,'generatedLine',null),\ncolumn:util.getArg(mapping,'generatedColumn',null)};}\n\n\n\nreturn {\nline:null,\ncolumn:null};};\n\n\n\nSourceMapConsumer.GENERATED_ORDER=1;\nSourceMapConsumer.ORIGINAL_ORDER=2;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.eachMapping=\nfunction SourceMapConsumer_eachMapping(aCallback,aContext,aOrder){\nvar context=aContext||null;\nvar order=aOrder||SourceMapConsumer.GENERATED_ORDER;\n\nvar mappings;\nswitch(order){\ncase SourceMapConsumer.GENERATED_ORDER:\nmappings=this._generatedMappings;\nbreak;\ncase SourceMapConsumer.ORIGINAL_ORDER:\nmappings=this._originalMappings;\nbreak;\ndefault:\nthrow new Error(\"Unknown order of iteration.\");}\n\n\nvar sourceRoot=this.sourceRoot;\nmappings.map(function(mapping){\nvar source=mapping.source;\nif(source&&sourceRoot){\nsource=util.join(sourceRoot,source);}\n\nreturn {\nsource:source,\ngeneratedLine:mapping.generatedLine,\ngeneratedColumn:mapping.generatedColumn,\noriginalLine:mapping.originalLine,\noriginalColumn:mapping.originalColumn,\nname:mapping.name};}).\n\nforEach(aCallback,context);};\n\n\nexports.SourceMapConsumer=SourceMapConsumer;});\n\n\n\n\n\n\n\n\ndefine('source-map/binary-search',['require','exports','module'],function(require,exports,module){\n\n\n\n\n\n\n\n\n\n\nfunction recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare){\n\n\n\n\n\n\n\n\n\n\nvar mid=Math.floor((aHigh-aLow)/2)+aLow;\nvar cmp=aCompare(aNeedle,aHaystack[mid],true);\nif(cmp===0){\n\nreturn aHaystack[mid];}else \n\nif(cmp>0){\n\nif(aHigh-mid>1){\n\nreturn recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare);}\n\n\n\nreturn aHaystack[mid];}else \n\n{\n\nif(mid-aLow>1){\n\nreturn recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare);}\n\n\n\nreturn aLow<0?\nnull:\naHaystack[aLow];}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.search=function search(aNeedle,aHaystack,aCompare){\nreturn aHaystack.length>0?\nrecursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare):\nnull;};});\n\n\n\n\n\n\n\n\n\ndefine('source-map/source-node',['require','exports','module','source-map/source-map-generator','source-map/util'],function(require,exports,module){\n\nvar SourceMapGenerator=require('./source-map-generator').SourceMapGenerator;\nvar util=require('./util');\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SourceNode(aLine,aColumn,aSource,aChunks,aName){\nthis.children=[];\nthis.sourceContents={};\nthis.line=aLine===undefined?null:aLine;\nthis.column=aColumn===undefined?null:aColumn;\nthis.source=aSource===undefined?null:aSource;\nthis.name=aName===undefined?null:aName;\nif(aChunks!=null)this.add(aChunks);}\n\n\n\n\n\n\n\n\nSourceNode.fromStringWithSourceMap=\nfunction SourceNode_fromStringWithSourceMap(aGeneratedCode,aSourceMapConsumer){\n\n\nvar node=new SourceNode();\n\n\n\nvar remainingLines=aGeneratedCode.split('\\n');\n\n\nvar lastGeneratedLine=1,lastGeneratedColumn=0;\n\n\n\n\nvar lastMapping=null;\n\naSourceMapConsumer.eachMapping(function(mapping){\nif(lastMapping===null){\n\n\n\nwhile(lastGeneratedLine=0;i--){\nthis.prepend(aChunk[i]);}}else \n\n\nif(aChunk instanceof SourceNode||typeof aChunk===\"string\"){\nthis.children.unshift(aChunk);}else \n\n{\nthrow new TypeError(\n\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \"+aChunk);}\n\n\nreturn this;};\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.walk=function SourceNode_walk(aFn){\nvar chunk;\nfor(var i=0,len=this.children.length;i0){\nnewChildren=[];\nfor(i=0;i 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n orginal: aOriginal,\n name: aName\n }));\n }\n };\n\n /**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\n SourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var mapping;\n\n // The mappings must be guaranteed to be in sorted order before we start\n // serializing them or else the generated line numbers (which are defined\n // via the ';' separators) will be all messed up. Note: it might be more\n // performant to maintain the sorting as we insert them, rather than as we\n // serialize them, but the big O is the same either way.\n this._mappings.sort(util.compareByGeneratedPositions);\n\n for (var i = 0, len = this._mappings.length; i < len; i++) {\n mapping = this._mappings[i];\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n result += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) {\n continue;\n }\n result += ',';\n }\n }\n\n result += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source) {\n result += base64VLQ.encode(this._sources.indexOf(mapping.source)\n - previousSource);\n previousSource = this._sources.indexOf(mapping.source);\n\n // lines are stored 0-based in SourceMap spec version 3\n result += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n result += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name) {\n result += base64VLQ.encode(this._names.indexOf(mapping.name)\n - previousName);\n previousName = this._names.indexOf(mapping.name);\n }\n }\n }\n\n return result;\n };\n\n SourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents,\n key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n /**\n * Externalize the source map.\n */\n SourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n file: this._file,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._sourceRoot) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n /**\n * Render the source map being generated to a string.\n */\n SourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this);\n };\n\n exports.SourceMapGenerator = SourceMapGenerator;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\ndefine('source-map/base64-vlq', ['require', 'exports', 'module' , 'source-map/base64'], function(require, exports, module) {\n\n var base64 = require('./base64');\n\n // A single base 64 digit can contain 6 bits of data. For the base 64 variable\n // length quantities we use in the source map spec, the first bit is the sign,\n // the next four bits are the actual value, and the 6th bit is the\n // continuation bit. The continuation bit tells us whether there are more\n // digits in this value following this digit.\n //\n // Continuation\n // | Sign\n // | |\n // V V\n // 101011\n\n var VLQ_BASE_SHIFT = 5;\n\n // binary: 100000\n var VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n // binary: 011111\n var VLQ_BASE_MASK = VLQ_BASE - 1;\n\n // binary: 100000\n var VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n /**\n * Converts from a two-complement value to a value where the sign bit is\n * is placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\n function toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n }\n\n /**\n * Converts to a two-complement value from a value where the sign bit is\n * is placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\n function fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n }\n\n /**\n * Returns the base 64 VLQ encoded value.\n */\n exports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n };\n\n /**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string.\n */\n exports.decode = function base64VLQ_decode(aStr) {\n var i = 0;\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (i >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n digit = base64.decode(aStr.charAt(i++));\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n return {\n value: fromVLQSigned(result),\n rest: aStr.slice(i)\n };\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/base64', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n var charToIntMap = {};\n var intToCharMap = {};\n\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n .split('')\n .forEach(function (ch, index) {\n charToIntMap[ch] = index;\n intToCharMap[index] = ch;\n });\n\n /**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\n exports.encode = function base64_encode(aNumber) {\n if (aNumber in intToCharMap) {\n return intToCharMap[aNumber];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + aNumber);\n };\n\n /**\n * Decode a single base 64 digit to an integer.\n */\n exports.decode = function base64_decode(aChar) {\n if (aChar in charToIntMap) {\n return charToIntMap[aChar];\n }\n throw new TypeError(\"Not a valid base 64 digit: \" + aChar);\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/util', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n /**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\n function getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n }\n exports.getArg = getArg;\n\n var urlRegexp = /([\\w+\\-.]+):\\/\\/((\\w+:\\w+)@)?([\\w.]+)?(:(\\d+))?(\\S+)?/;\n var dataUrlRegexp = /^data:.+\\,.+/;\n\n function urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[3],\n host: match[4],\n port: match[6],\n path: match[7]\n };\n }\n exports.urlParse = urlParse;\n\n function urlGenerate(aParsedUrl) {\n var url = aParsedUrl.scheme + \"://\";\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + \"@\"\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n }\n exports.urlGenerate = urlGenerate;\n\n function join(aRoot, aPath) {\n var url;\n\n if (aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) {\n url.path = aPath;\n return urlGenerate(url);\n }\n\n return aRoot.replace(/\\/$/, '') + '/' + aPath;\n }\n exports.join = join;\n\n /**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\n function toSetString(aStr) {\n return '$' + aStr;\n }\n exports.toSetString = toSetString;\n\n function fromSetString(aStr) {\n return aStr.substr(1);\n }\n exports.fromSetString = fromSetString;\n\n function relative(aRoot, aPath) {\n aRoot = aRoot.replace(/\\/$/, '');\n\n var url = urlParse(aRoot);\n if (aPath.charAt(0) == \"/\" && url && url.path == \"/\") {\n return aPath.slice(1);\n }\n\n return aPath.indexOf(aRoot + '/') === 0\n ? aPath.substr(aRoot.length + 1)\n : aPath;\n }\n exports.relative = relative;\n\n function strcmp(aStr1, aStr2) {\n var s1 = aStr1 || \"\";\n var s2 = aStr2 || \"\";\n return (s1 > s2) - (s1 < s2);\n }\n\n /**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\n function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp;\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.name, mappingB.name);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return mappingA.generatedColumn - mappingB.generatedColumn;\n };\n exports.compareByOriginalPositions = compareByOriginalPositions;\n\n /**\n * Comparator between two mappings where the generated positions are\n * compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\n function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) {\n var cmp;\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n };\n exports.compareByGeneratedPositions = compareByGeneratedPositions;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/array-set', ['require', 'exports', 'module' , 'source-map/util'], function(require, exports, module) {\n\n var util = require('./util');\n\n /**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\n function ArraySet() {\n this._array = [];\n this._set = {};\n }\n\n /**\n * Static method for creating ArraySet instances from an existing array.\n */\n ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n };\n\n /**\n * Add the given string to this set.\n *\n * @param String aStr\n */\n ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var isDuplicate = this.has(aStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[util.toSetString(aStr)] = idx;\n }\n };\n\n /**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\n ArraySet.prototype.has = function ArraySet_has(aStr) {\n return Object.prototype.hasOwnProperty.call(this._set,\n util.toSetString(aStr));\n };\n\n /**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\n ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (this.has(aStr)) {\n return this._set[util.toSetString(aStr)];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n };\n\n /**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\n ArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n };\n\n /**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\n ArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n };\n\n exports.ArraySet = ArraySet;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-map-consumer', ['require', 'exports', 'module' , 'source-map/util', 'source-map/binary-search', 'source-map/array-set', 'source-map/base64-vlq'], function(require, exports, module) {\n\n var util = require('./util');\n var binarySearch = require('./binary-search');\n var ArraySet = require('./array-set').ArraySet;\n var base64VLQ = require('./base64-vlq');\n\n /**\n * A SourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\n function SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names, true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n }\n\n /**\n * Create a SourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns SourceMapConsumer\n */\n SourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(SourceMapConsumer.prototype);\n\n smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n smc.__generatedMappings = aSourceMap._mappings.slice()\n .sort(util.compareByGeneratedPositions);\n smc.__originalMappings = aSourceMap._mappings.slice()\n .sort(util.compareByOriginalPositions);\n\n return smc;\n };\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n SourceMapConsumer.prototype._version = 3;\n\n /**\n * The list of original sources.\n */\n Object.defineProperty(SourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n });\n\n // `__generatedMappings` and `__originalMappings` are arrays that hold the\n // parsed mapping coordinates from the source map's \"mappings\" attribute. They\n // are lazily instantiated, accessed via the `_generatedMappings` and\n // `_originalMappings` getters respectively, and we only parse the mappings\n // and create these arrays once queried for a source location. We jump through\n // these hoops because there can be many thousands of mappings, and parsing\n // them is expensive, so we only want to do it if we must.\n //\n // Each object in the arrays is of the form:\n //\n // {\n // generatedLine: The line number in the generated code,\n // generatedColumn: The column number in the generated code,\n // source: The path to the original source file that generated this\n // chunk of code,\n // originalLine: The line number in the original source that\n // corresponds to this chunk of generated code,\n // originalColumn: The column number in the original source that\n // corresponds to this chunk of generated code,\n // name: The name of the original symbol which generated this chunk of\n // code.\n // }\n //\n // All properties except for `generatedLine` and `generatedColumn` can be\n // `null`.\n //\n // `_generatedMappings` is ordered by the generated positions.\n //\n // `_originalMappings` is ordered by the original positions.\n\n SourceMapConsumer.prototype.__generatedMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n });\n\n SourceMapConsumer.prototype.__originalMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n });\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n SourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var mappingSeparator = /^[,;]/;\n var str = aStr;\n var mapping;\n var temp;\n\n while (str.length > 0) {\n if (str.charAt(0) === ';') {\n generatedLine++;\n str = str.slice(1);\n previousGeneratedColumn = 0;\n }\n else if (str.charAt(0) === ',') {\n str = str.slice(1);\n }\n else {\n mapping = {};\n mapping.generatedLine = generatedLine;\n\n // Generated column.\n temp = base64VLQ.decode(str);\n mapping.generatedColumn = previousGeneratedColumn + temp.value;\n previousGeneratedColumn = mapping.generatedColumn;\n str = temp.rest;\n\n if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {\n // Original source.\n temp = base64VLQ.decode(str);\n mapping.source = this._sources.at(previousSource + temp.value);\n previousSource += temp.value;\n str = temp.rest;\n if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {\n throw new Error('Found a source, but no line and column');\n }\n\n // Original line.\n temp = base64VLQ.decode(str);\n mapping.originalLine = previousOriginalLine + temp.value;\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n str = temp.rest;\n if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {\n throw new Error('Found a source and line, but no column');\n }\n\n // Original column.\n temp = base64VLQ.decode(str);\n mapping.originalColumn = previousOriginalColumn + temp.value;\n previousOriginalColumn = mapping.originalColumn;\n str = temp.rest;\n\n if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {\n // Original name.\n temp = base64VLQ.decode(str);\n mapping.name = this._names.at(previousName + temp.value);\n previousName += temp.value;\n str = temp.rest;\n }\n }\n\n this.__generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n this.__originalMappings.push(mapping);\n }\n }\n }\n\n this.__originalMappings.sort(util.compareByOriginalPositions);\n };\n\n /**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\n SourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator);\n };\n\n /**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\n SourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var mapping = this._findMapping(needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositions);\n\n if (mapping) {\n var source = util.getArg(mapping, 'source', null);\n if (source && this.sourceRoot) {\n source = util.join(this.sourceRoot, source);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: util.getArg(mapping, 'name', null)\n };\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n /**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\n SourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n };\n\n /**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n SourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n if (this.sourceRoot) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n\n var mapping = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions);\n\n if (mapping) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null)\n };\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n SourceMapConsumer.GENERATED_ORDER = 1;\n SourceMapConsumer.ORIGINAL_ORDER = 2;\n\n /**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\n SourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source;\n if (source && sourceRoot) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name\n };\n }).forEach(aCallback, context);\n };\n\n exports.SourceMapConsumer = SourceMapConsumer;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/binary-search', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n /**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n */\n function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the next\n // closest element that is less than that element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element which is less than the one we are searching for, so we\n // return null.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return aHaystack[mid];\n }\n else if (cmp > 0) {\n // aHaystack[mid] is greater than our needle.\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare);\n }\n // We did not find an exact match, return the next closest one\n // (termination case 2).\n return aHaystack[mid];\n }\n else {\n // aHaystack[mid] is less than our needle.\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare);\n }\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (2) or (3) and return the appropriate thing.\n return aLow < 0\n ? null\n : aHaystack[aLow];\n }\n }\n\n /**\n * This is an implementation of binary search which will always try and return\n * the next lowest value checked if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n */\n exports.search = function search(aNeedle, aHaystack, aCompare) {\n return aHaystack.length > 0\n ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare)\n : null;\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-node', ['require', 'exports', 'module' , 'source-map/source-map-generator', 'source-map/util'], function(require, exports, module) {\n\n var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\n var util = require('./util');\n\n /**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\n function SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine === undefined ? null : aLine;\n this.column = aColumn === undefined ? null : aColumn;\n this.source = aSource === undefined ? null : aSource;\n this.name = aName === undefined ? null : aName;\n if (aChunks != null) this.add(aChunks);\n }\n\n /**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n */\n SourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // The generated code\n // Processed fragments are removed from this array.\n var remainingLines = aGeneratedCode.split('\\n');\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping === null) {\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(remainingLines.shift() + \"\\n\");\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n } else {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n var code = \"\";\n // Associate full lines with \"lastMapping\"\n do {\n code += remainingLines.shift() + \"\\n\";\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n } while (lastGeneratedLine < mapping.generatedLine);\n // When we reached the correct line, we add code until we\n // reach the correct column too.\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n code += nextLine.substr(0, mapping.generatedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n // Create the SourceNode.\n addMappingWithCode(lastMapping, code);\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n }\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n // Associate the remaining code in the current line with \"lastMapping\"\n // and add the remaining lines without any mapping\n addMappingWithCode(lastMapping, remainingLines.join(\"\\n\"));\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content) {\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n mapping.source,\n code,\n mapping.name));\n }\n }\n };\n\n /**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk instanceof SourceNode || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk instanceof SourceNode || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk instanceof SourceNode) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n };\n\n /**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\n SourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n };\n\n /**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\n SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild instanceof SourceNode) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n };\n\n /**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\n SourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n /**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i] instanceof SourceNode) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n /**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\n SourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n };\n\n /**\n * Returns the string representation of this source node along with a source\n * map.\n */\n SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n chunk.split('').forEach(function (ch) {\n if (ch === '\\n') {\n generated.line++;\n generated.column = 0;\n } else {\n generated.column++;\n }\n });\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n };\n\n exports.SourceNode = SourceNode;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n///////////////////////////////////////////////////////////////////////////////\n\nthis.sourceMap = {\n SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer,\n SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator,\n SourceNode: require('source-map/source-node').SourceNode\n};\n\n}\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/SourceMapsCache.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SourceMapsCache","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[53,101],"dependencies":["getObjectValues","SourceMapsUtils"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar getObjectValues=require('getObjectValues');\nvar SourceMapsUtils=require('SourceMapsUtils');\n\nvar sourceMapsCache={};\n\nvar SourceMapsCache={\nmainSourceMapID:'main',\n\nfetch:function fetch(_ref){var text=_ref.text;var url=_ref.url;var fullSourceMappingURL=_ref.fullSourceMappingURL;\nvar sourceMappingURL=fullSourceMappingURL?\nfullSourceMappingURL:\nSourceMapsUtils.extractSourceMapURL({text:text,url:url});\n\nsourceMapsCache[sourceMappingURL]=SourceMapsUtils.fetchSourceMap(\nsourceMappingURL);},\n\n\n\ngetSourceMaps:function getSourceMaps(){\nfetchMainSourceMap();\nreturn Promise.all(getObjectValues(sourceMapsCache));}};\n\n\n\nfunction fetchMainSourceMap(){\nif(!sourceMapsCache[SourceMapsCache.mainSourceMapID]){\nsourceMapsCache[SourceMapsCache.mainSourceMapID]=\nSourceMapsUtils.fetchMainSourceMap();}}\n\n\n\nmodule.exports=SourceMapsCache;","map":null,"id":"SourceMapsCache","source":"/**\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 SourceMapsCache\n */\n'use strict';\n\nconst getObjectValues = require('getObjectValues');\nconst SourceMapsUtils = require('SourceMapsUtils');\n\nconst sourceMapsCache = {};\n\nconst SourceMapsCache = {\n mainSourceMapID: 'main',\n\n fetch({text, url, fullSourceMappingURL}) {\n const sourceMappingURL = fullSourceMappingURL\n ? fullSourceMappingURL\n : SourceMapsUtils.extractSourceMapURL({text, url});\n\n sourceMapsCache[sourceMappingURL] = SourceMapsUtils.fetchSourceMap(\n sourceMappingURL\n );\n },\n\n getSourceMaps() {\n fetchMainSourceMap();\n return Promise.all(getObjectValues(sourceMapsCache));\n },\n};\n\nfunction fetchMainSourceMap() {\n if (!sourceMapsCache[SourceMapsCache.mainSourceMapID]) {\n sourceMapsCache[SourceMapsCache.mainSourceMapID] =\n SourceMapsUtils.fetchMainSourceMap();\n }\n}\n\nmodule.exports = SourceMapsCache;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/SourceMapsUtils.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SourceMapsUtils","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[47,85,133,190],"dependencies":["Promise","NativeModules","SourceMap","./source-map-url"],"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\nvar SourceMapsUtils={\nfetchMainSourceMap:function fetchMainSourceMap(){\nreturn SourceMapsUtils._getMainSourceMapURL().then(function(url){return (\nSourceMapsUtils.fetchSourceMap(url));});},\n\n\n\nfetchSourceMap:function fetchSourceMap(sourceMappingURL){\nreturn fetch(sourceMappingURL).\nthen(function(response){return response.text();}).\nthen(function(map){return new SourceMapConsumer(map);});},\n\n\nextractSourceMapURL:function extractSourceMapURL(data){\nvar url=data.url;\nvar text=data.text;\nvar fullSourceMappingURL=data.fullSourceMappingURL;\nif(fullSourceMappingURL){\nreturn fullSourceMappingURL;}\n\nvar mapURL=SourceMapURL.getFrom(text);\nif(!mapURL){\nreturn null;}\n\nif(!url){\nreturn null;}\n\nvar baseURLs=url.match(/(.+:\\/\\/.*?)\\//);\nif(!baseURLs||baseURLs.length<2){\nreturn null;}\n\nreturn baseURLs[1]+mapURL;},\n\n\n_getMainSourceMapURL:function _getMainSourceMapURL(){\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 RCTSourceCode.getScriptText().\nthen(SourceMapsUtils.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\n\n\n\nmodule.exports=SourceMapsUtils;","map":null,"id":"SourceMapsUtils","source":"/**\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 SourceMapsUtils\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\nvar SourceMapsUtils = {\n fetchMainSourceMap(): Promise {\n return SourceMapsUtils._getMainSourceMapURL().then(url =>\n SourceMapsUtils.fetchSourceMap(url)\n );\n },\n\n fetchSourceMap(sourceMappingURL: string): Promise {\n return fetch(sourceMappingURL)\n .then(response => response.text())\n .then(map => new SourceMapConsumer(map));\n },\n\n extractSourceMapURL(data: ({url?:string, text?:string, fullSourceMappingURL?:string})): ?string {\n const url = data.url;\n const text = data.text;\n const fullSourceMappingURL = data.fullSourceMappingURL;\n if (fullSourceMappingURL) {\n return fullSourceMappingURL;\n }\n var mapURL = SourceMapURL.getFrom(text);\n if (!mapURL) {\n return null;\n }\n if (!url) {\n return null;\n }\n var baseURLs = url.match(/(.+:\\/\\/.*?)\\//);\n if (!baseURLs || baseURLs.length < 2) {\n return null;\n }\n return baseURLs[1] + mapURL;\n },\n\n _getMainSourceMapURL(): 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 RCTSourceCode.getScriptText()\n .then(SourceMapsUtils.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 },\n};\n\nmodule.exports = SourceMapsUtils;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/Reducer/NavigationFindReducer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationFindReducer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\nfunction NavigationFindReducer(\nreducers,\ndefaultState)\n{\nreturn function(lastState,action){\nfor(var i=0;i,\n defaultState: NavigationState,\n): NavigationReducer {\n return function(lastState: ?NavigationState, action: ?any): NavigationState {\n for (let i = 0; i < reducers.length; i++) {\n let reducer = reducers[i];\n let newState = reducer(lastState, action);\n if (newState !== lastState) {\n return newState || defaultState;\n }\n }\n return lastState || defaultState;\n };\n}\n\nmodule.exports = NavigationFindReducer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/Reducer/NavigationReducer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationReducer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[60,121,182],"dependencies":["NavigationFindReducer","NavigationStackReducer","NavigationTabsReducer"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigationFindReducer=require('NavigationFindReducer');\nvar NavigationStackReducer=require('NavigationStackReducer');\nvar NavigationTabsReducer=require('NavigationTabsReducer');\n\nvar NavigationReducer={\nFindReducer:NavigationFindReducer,\nStackReducer:NavigationStackReducer,\nTabsReducer:NavigationTabsReducer};\n\n\nmodule.exports=NavigationReducer;","map":null,"id":"NavigationReducer","source":"/**\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 NavigationReducer\n * @flow\n */\n'use strict';\n\nvar NavigationFindReducer = require('NavigationFindReducer');\nvar NavigationStackReducer = require('NavigationStackReducer');\nvar NavigationTabsReducer = require('NavigationTabsReducer');\n\nconst NavigationReducer = {\n FindReducer: NavigationFindReducer,\n StackReducer: NavigationStackReducer,\n TabsReducer: NavigationTabsReducer,\n};\n\nmodule.exports = NavigationReducer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/Reducer/NavigationScenesReducer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationScenesReducer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\n\nvar SCENE_KEY_PREFIX='scene_';\n\n\n\n\nfunction compareKey(one,two){\nvar delta=one.length-two.length;\nif(delta>0){\nreturn 1;}\n\nif(delta<0){\nreturn -1;}\n\nreturn one>two?1:-1;}\n\n\n\n\n\nfunction compareScenes(\none,\ntwo)\n{\nif(one.index>two.index){\nreturn 1;}\n\nif(one.index 0) {\n return 1;\n }\n if (delta < 0) {\n return -1;\n }\n return one > two ? 1 : -1;\n}\n\n/**\n * Helper function to sort scenes based on their index and view key.\n */\nfunction compareScenes(\n one: NavigationScene,\n two: NavigationScene,\n): number {\n if (one.index > two.index) {\n return 1;\n }\n if (one.index < two.index) {\n return -1;\n }\n\n return compareKey(\n one.key,\n two.key,\n );\n}\n\nfunction areScenesShallowEqual(\n one: NavigationScene,\n two: NavigationScene,\n): boolean {\n return (\n one.key === two.key &&\n one.index === two.index &&\n one.isStale === two.isStale &&\n one.navigationState === two.navigationState &&\n one.navigationState.key === two.navigationState.key\n );\n}\n\nfunction NavigationScenesReducer(\n scenes: Array,\n nextState: NavigationParentState,\n prevState: ?NavigationParentState,\n): Array {\n\n const prevScenes = new Map();\n const freshScenes = new Map();\n const staleScenes = new Map();\n\n // Populate stale scenes from previous scenes marked as stale.\n scenes.forEach(scene => {\n const {key} = scene;\n if (scene.isStale) {\n staleScenes.set(key, scene);\n }\n prevScenes.set(key, scene);\n });\n\n const nextKeys = new Set();\n nextState.children.forEach((navigationState, index) => {\n const key = SCENE_KEY_PREFIX + navigationState.key;\n const scene = {\n index,\n isStale: false,\n key,\n navigationState,\n };\n invariant(\n !nextKeys.has(key),\n `navigationState.children[${index}].key \"${key}\" conflicts with` +\n 'another child!'\n );\n nextKeys.add(key);\n\n if (staleScenes.has(key)) {\n // A previously `stale` scene is now part of the nextState, so we\n // revive it by removing it from the stale scene map.\n staleScenes.delete(key);\n }\n freshScenes.set(key, scene);\n });\n\n if (prevState) {\n // Look at the previous children and classify any removed scenes as `stale`.\n prevState.children.forEach((navigationState, index) => {\n const key = SCENE_KEY_PREFIX + navigationState.key;\n if (freshScenes.has(key)) {\n return;\n }\n staleScenes.set(key, {\n index,\n isStale: true,\n key,\n navigationState,\n });\n });\n }\n\n const nextScenes = [];\n\n const mergeScene = (nextScene => {\n const {key} = nextScene;\n const prevScene = prevScenes.has(key) ? prevScenes.get(key) : null;\n if (prevScene && areScenesShallowEqual(prevScene, nextScene)) {\n // Reuse `prevScene` as `scene` so view can avoid unnecessary re-render.\n // This assumes that the scene's navigation state is immutable.\n nextScenes.push(prevScene);\n } else {\n nextScenes.push(nextScene);\n }\n });\n\n staleScenes.forEach(mergeScene);\n freshScenes.forEach(mergeScene);\n\n return nextScenes.sort(compareScenes);\n}\n\nmodule.exports = NavigationScenesReducer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/Reducer/NavigationStackReducer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationStackReducer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[59],"dependencies":["NavigationStateUtils"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigationStateUtils=require('NavigationStateUtils');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 defaultGetReducerForState=function defaultGetReducerForState(initialState){return function(state){return state||initialState;};};\n\nfunction NavigationStackReducer(_ref){var initialState=_ref.initialState;var getReducerForState=_ref.getReducerForState;var getPushedReducerForAction=_ref.getPushedReducerForAction;\nvar getReducerForStateWithDefault=getReducerForState||defaultGetReducerForState;\nreturn function(lastState,action){\nif(!lastState){\nreturn initialState;}\n\nvar lastParentState=NavigationStateUtils.getParent(lastState);\nif(!lastParentState){\nreturn lastState;}\n\n\nvar activeSubState=lastParentState.children[lastParentState.index];\nvar activeSubReducer=getReducerForStateWithDefault(activeSubState);\nvar nextActiveState=activeSubReducer(activeSubState,action);\nif(nextActiveState!==activeSubState){\nvar nextChildren=[].concat(babelHelpers.toConsumableArray(lastParentState.children));\nnextChildren[lastParentState.index]=nextActiveState;\nreturn babelHelpers.extends({},\nlastParentState,{\nchildren:nextChildren});}\n\n\n\nvar subReducerToPush=getPushedReducerForAction(action,lastParentState);\nif(subReducerToPush){\nreturn NavigationStateUtils.push(\nlastParentState,\nsubReducerToPush(null,action));}\n\n\n\nswitch(action.type){\ncase 'back':\ncase 'BackAction':\nif(lastParentState.index===0||lastParentState.children.length===1){\nreturn lastParentState;}\n\nreturn NavigationStateUtils.pop(lastParentState);}\n\n\nreturn lastParentState;};}\n\n\n\nmodule.exports=NavigationStackReducer;","map":null,"id":"NavigationStackReducer","source":"/**\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 NavigationStackReducer\n * @flow\n */\n'use strict';\n\nvar NavigationStateUtils = require('NavigationStateUtils');\n\nimport type {\n NavigationState,\n NavigationParentState,\n NavigationReducer,\n} from 'NavigationTypeDefinition';\n\nimport type {\n BackAction,\n} from 'NavigationRootContainer';\n\nexport type NavigationStackReducerAction = BackAction | {\n type: string,\n};\n\nexport type ReducerForStateHandler = (state: NavigationState) => NavigationReducer;\n\nexport type PushedReducerForActionHandler = (action: any, lastState: NavigationParentState) => ?NavigationReducer;\n\nexport type StackReducerConfig = {\n /*\n * The initialState is that the reducer will use when there is no previous state.\n * Must be a NavigationParentState:\n *\n * {\n * children: [\n * {key: 'subState0'},\n * {key: 'subState1'},\n * ],\n * index: 0,\n * key: 'navStackKey'\n * }\n */\n initialState: NavigationParentState;\n\n /*\n * Returns the sub-reducer for a particular state to handle. This will be called\n * when we need to handle an action on a sub-state. If no reducer is returned,\n * no action will be taken\n */\n getReducerForState?: ReducerForStateHandler;\n\n /*\n * Returns a sub-reducer that will be used when pushing a new route. If a reducer\n * is returned, it be called to get the new state that will be pushed\n */\n getPushedReducerForAction: PushedReducerForActionHandler;\n};\n\nconst defaultGetReducerForState = (initialState) => (state) => state || initialState;\n\nfunction NavigationStackReducer({initialState, getReducerForState, getPushedReducerForAction}: StackReducerConfig): NavigationReducer {\n const getReducerForStateWithDefault = getReducerForState || defaultGetReducerForState;\n return function (lastState: ?NavigationState, action: any): NavigationState {\n if (!lastState) {\n return initialState;\n }\n const lastParentState = NavigationStateUtils.getParent(lastState);\n if (!lastParentState) {\n return lastState;\n }\n\n const activeSubState = lastParentState.children[lastParentState.index];\n const activeSubReducer = getReducerForStateWithDefault(activeSubState);\n const nextActiveState = activeSubReducer(activeSubState, action);\n if (nextActiveState !== activeSubState) {\n const nextChildren = [...lastParentState.children];\n nextChildren[lastParentState.index] = nextActiveState;\n return {\n ...lastParentState,\n children: nextChildren,\n };\n }\n\n const subReducerToPush = getPushedReducerForAction(action, lastParentState);\n if (subReducerToPush) {\n return NavigationStateUtils.push(\n lastParentState,\n subReducerToPush(null, action)\n );\n }\n\n switch (action.type) {\n case 'back':\n case 'BackAction':\n if (lastParentState.index === 0 || lastParentState.children.length === 1) {\n return lastParentState;\n }\n return NavigationStateUtils.pop(lastParentState);\n }\n\n return lastParentState;\n };\n}\n\nmodule.exports = NavigationStackReducer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/Reducer/NavigationTabsReducer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationTabsReducer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[60,119],"dependencies":["NavigationFindReducer","NavigationStateUtils"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigationFindReducer=require('NavigationFindReducer');\nvar NavigationStateUtils=require('NavigationStateUtils');\n\n\n\n\n\n\nvar ActionTypes={\nJUMP_TO:'react-native/NavigationExperimental/tabs-jumpTo'};\n\n\n\n\n\n\nfunction NavigationTabsJumpToAction(index){\nreturn {\ntype:ActionTypes.JUMP_TO,\nindex:index};}\n\n\n\n\n\n\n\n\n\nfunction NavigationTabsReducer(_ref){var key=_ref.key;var initialIndex=_ref.initialIndex;var tabReducers=_ref.tabReducers;\nreturn function(lastNavState,action){\nif(!lastNavState){\nlastNavState={\nchildren:tabReducers.map(function(reducer){return reducer(null,null);}),\nindex:initialIndex||0,\nkey:key};}\n\n\nvar lastParentNavState=NavigationStateUtils.getParent(lastNavState);\nif(!action||!lastParentNavState){\nreturn lastNavState;}\n\nif(\naction.type===ActionTypes.JUMP_TO&&\naction.index!==lastParentNavState.index)\n{\nreturn NavigationStateUtils.jumpToIndex(\nlastParentNavState,\naction.index);}\n\n\nvar subReducers=tabReducers.map(function(tabReducer,tabIndex){\nreturn function(navState,tabAction){\nif(!navState){\nreturn lastParentNavState;}\n\nvar parentState=NavigationStateUtils.getParent(navState);\nvar tabState=parentState&&parentState.children[tabIndex];\nvar nextTabState=tabReducer(tabState,tabAction);\nif(nextTabState&&tabState!==nextTabState){\nvar tabs=parentState&&parentState.children||[];\ntabs[tabIndex]=nextTabState;\nreturn babelHelpers.extends({},\nlastParentNavState,{\ntabs:tabs,\nindex:tabIndex});}\n\n\nreturn lastParentNavState;};});\n\n\nvar selectedTabReducer=subReducers.splice(lastParentNavState.index,1)[0];\nsubReducers.unshift(function(navState,action){\nif(navState&&action.type==='BackAction'){\nreturn NavigationStateUtils.jumpToIndex(\nlastParentNavState,\ninitialIndex||0);}\n\n\nreturn lastParentNavState;});\n\nsubReducers.unshift(selectedTabReducer);\nvar findReducer=NavigationFindReducer(subReducers,lastParentNavState);\nreturn findReducer(lastParentNavState,action);};}\n\n\n\nNavigationTabsReducer.JumpToAction=NavigationTabsJumpToAction;\n\nmodule.exports=NavigationTabsReducer;","map":null,"id":"NavigationTabsReducer","source":"/**\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 NavigationTabsReducer\n * @flow\n */\n'use strict';\n\nconst NavigationFindReducer = require('NavigationFindReducer');\nconst NavigationStateUtils = require('NavigationStateUtils');\n\nimport type {\n NavigationReducer,\n NavigationState,\n} from 'NavigationTypeDefinition';\n\nconst ActionTypes = {\n JUMP_TO: 'react-native/NavigationExperimental/tabs-jumpTo',\n};\n\nexport type JumpToAction = {\n type: typeof ActionTypes.JUMP_TO,\n index: number,\n};\nfunction NavigationTabsJumpToAction(index: number): JumpToAction {\n return {\n type: ActionTypes.JUMP_TO,\n index,\n };\n}\n\ntype TabsReducerConfig = {\n key: string;\n initialIndex: number;\n tabReducers: Array;\n};\n\nfunction NavigationTabsReducer({key, initialIndex, tabReducers}: TabsReducerConfig): NavigationReducer {\n return function(lastNavState: ?NavigationState, action: ?any): NavigationState {\n if (!lastNavState) {\n lastNavState = {\n children: tabReducers.map(reducer => reducer(null, null)),\n index: initialIndex || 0,\n key,\n };\n }\n const lastParentNavState = NavigationStateUtils.getParent(lastNavState);\n if (!action || !lastParentNavState) {\n return lastNavState;\n }\n if (\n action.type === ActionTypes.JUMP_TO &&\n action.index !== lastParentNavState.index\n ) {\n return NavigationStateUtils.jumpToIndex(\n lastParentNavState,\n action.index,\n );\n }\n const subReducers = tabReducers.map((tabReducer, tabIndex) => {\n return function(navState: ?NavigationState, tabAction: any): NavigationState {\n if (!navState) {\n return lastParentNavState;\n }\n const parentState = NavigationStateUtils.getParent(navState);\n const tabState = parentState && parentState.children[tabIndex];\n const nextTabState = tabReducer(tabState, tabAction);\n if (nextTabState && tabState !== nextTabState) {\n const tabs = parentState && parentState.children || [];\n tabs[tabIndex] = nextTabState;\n return {\n ...lastParentNavState,\n tabs,\n index: tabIndex,\n };\n }\n return lastParentNavState;\n };\n });\n let selectedTabReducer = subReducers.splice(lastParentNavState.index, 1)[0];\n subReducers.unshift(function(navState: ?NavigationState, action: any): NavigationState {\n if (navState && action.type === 'BackAction') {\n return NavigationStateUtils.jumpToIndex(\n lastParentNavState,\n initialIndex || 0\n );\n }\n return lastParentNavState;\n });\n subReducers.unshift(selectedTabReducer);\n const findReducer = NavigationFindReducer(subReducers, lastParentNavState);\n return findReducer(lastParentNavState, action);\n };\n}\n\nNavigationTabsReducer.JumpToAction = NavigationTabsJumpToAction;\n\nmodule.exports = NavigationTabsReducer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/__mocks__/NavigationRootContainer.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"deepDiffer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar deepDiffer=function deepDiffer(one,two){\nif(one===two){\n\nreturn false;}\n\nif(typeof one==='function'&&typeof two==='function'){\n\nreturn false;}\n\nif(typeof one!=='object'||one===null){\n\nreturn one!==two;}\n\nif(typeof two!=='object'||two===null){\n\n\nreturn true;}\n\nif(one.constructor!==two.constructor){\nreturn true;}\n\nif(Array.isArray(one)){\n\nvar len=one.length;\nif(two.length!==len){\nreturn true;}\n\nfor(var ii=0;ii>\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 * @noflow\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js":{"metadata":{"mtime":1463609891000},"data":{"name":"EventEmitter","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[45,92,143,197,246],"dependencies":["EmitterSubscription","ErrorUtils","EventSubscriptionVendor","fbjs/lib/emptyFunction","fbjs/lib/invariant"],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\nEmitterSubscription=require('EmitterSubscription');\nvar ErrorUtils=require('ErrorUtils');\nvar EventSubscriptionVendor=require('EventSubscriptionVendor');\nvar emptyFunction=require('fbjs/lib/emptyFunction');\nvar invariant=require('fbjs/lib/invariant');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitter=function(){\n\n\n\nfunction EventEmitter(){babelHelpers.classCallCheck(this,EventEmitter);\nthis._subscriber=new EventSubscriptionVendor();}babelHelpers.createClass(EventEmitter,[{key:'addListener',value:function addListener(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\neventType,listener,context){\nreturn this._subscriber.addSubscription(\neventType,\nnew EmitterSubscription(this._subscriber,listener,context));}},{key:'once',value:function once(\n\n\n\n\n\n\n\n\n\n\n\n\neventType,listener,context){\nvar emitter=this;\nreturn this.addListener(eventType,function(){\nemitter.removeCurrentListener();\nlistener.apply(context,arguments);});}},{key:'removeAllListeners',value:function removeAllListeners(\n\n\n\n\n\n\n\n\n\n\neventType){\nthis._subscriber.removeAllSubscriptions(eventType);}},{key:'removeCurrentListener',value:function removeCurrentListener()\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\ninvariant(\n!!this._currentSubscription,\n'Not in an emitting cycle; there is no current subscription');\n\nthis._subscriber.removeSubscription(this._currentSubscription);}},{key:'listeners',value:function listeners(\n\n\n\n\n\n\n\n\n\neventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nreturn subscriptions?\nsubscriptions.filter(emptyFunction.thatReturnsTrue).map(\nfunction(subscription){\nreturn subscription.listener;}):\n\n[];}},{key:'emit',value:function emit(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\neventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nif(subscriptions){\nvar keys=Object.keys(subscriptions);\nfor(var ii=0;ii */ {\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 subscription.listener.apply(\n subscription.context,\n Array.prototype.slice.call(arguments, 1)\n );\n }\n }\n this._currentSubscription = null;\n }\n }\n}\n\nmodule.exports = EventEmitter;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js":{"metadata":{"mtime":1463609891000},"data":{"name":"EventEmitterWithHolding","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';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){babelHelpers.classCallCheck(this,EventEmitterWithHolding);\nthis._emitter=emitter;\nthis._eventHolder=holder;\nthis._currentEventToken=null;\nthis._emittingHeldEvents=false;}babelHelpers.createClass(EventEmitterWithHolding,[{key:'addListener',value:function addListener(\n\n\n\n\n\neventType,listener,context){\nreturn this._emitter.addListener(eventType,listener,context);}},{key:'once',value:function once(\n\n\n\n\n\neventType,listener,context){\nreturn this._emitter.once(eventType,listener,context);}},{key:'addRetroactiveListener',value:function addRetroactiveListener(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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:function removeAllListeners(\n\n\n\n\n\neventType){\nthis._emitter.removeAllListeners(eventType);}},{key:'removeCurrentListener',value:function removeCurrentListener()\n\n\n\n\n\n{\nthis._emitter.removeCurrentListener();}},{key:'listeners',value:function listeners(\n\n\n\n\n\neventType){\nreturn this._emitter.listeners(eventType);}},{key:'emit',value:function emit(\n\n\n\n\n\neventType,a,b,c,d,e,_){\nthis._emitter.emit(eventType,a,b,c,d,e,_);}},{key:'emitAndHold',value:function emitAndHold(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\neventType,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:function releaseCurrentEvent()\n\n\n\n\n\n{\nif(this._currentEventToken!==null){\nthis._eventHolder.releaseEvent(this._currentEventToken);}else \nif(this._emittingHeldEvents){\nthis._eventHolder.releaseCurrentEvent();}}},{key:'releaseHeldEventType',value:function releaseHeldEventType(\n\n\n\n\n\n\n\neventType){\nthis._eventHolder.releaseEventType(eventType);}}]);return EventEmitterWithHolding;}();\n\n\n\nmodule.exports=EventEmitterWithHolding;","map":null,"id":"EventEmitterWithHolding","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js":{"metadata":{"mtime":1463609891000},"data":{"name":"EventHolder","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[54],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');var \n\nEventHolder=function(){\nfunction EventHolder(){babelHelpers.classCallCheck(this,EventHolder);\nthis._heldEvents={};\nthis._currentEventKey=null;}babelHelpers.createClass(EventHolder,[{key:'holdEvent',value:function holdEvent(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\neventType,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:function emitToListener(\n\n\n\n\n\n\n\n\n\n\neventType,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:function releaseCurrentEvent()\n\n\n\n\n\n\n\n\n\n\n{\ninvariant(\nthis._currentEventKey!==null,\n'Not in an emitting cycle; there is no current event');\n\nthis.releaseEvent(this._currentEventKey);}},{key:'releaseEvent',value:function releaseEvent(\n\n\n\n\n\n\n\n\ntoken){\ndelete this._heldEvents[token.eventType][token.index];}},{key:'releaseEventType',value:function releaseEventType(\n\n\n\n\n\n\n\ntype){\nthis._heldEvents[type]=[];}}]);return EventHolder;}();\n\n\n\nmodule.exports=EventHolder;","map":null,"id":"EventHolder","source":"/**\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('fbjs/lib/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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js":{"metadata":{"mtime":1463609891000},"data":{"name":"EventSubscription","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';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){babelHelpers.classCallCheck(this,EventSubscription);\nthis.subscriber=subscriber;}babelHelpers.createClass(EventSubscription,[{key:'remove',value:function remove()\n\n\n\n\n\n{\nthis.subscriber.removeSubscription(this);}}]);return EventSubscription;}();\n\n\n\nmodule.exports=EventSubscription;","map":null,"id":"EventSubscription","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js":{"metadata":{"mtime":1463609891000},"data":{"name":"EventSubscriptionVendor","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[54],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');var \n\n\n\n\n\nEventSubscriptionVendor=function(){\n\nfunction EventSubscriptionVendor(){babelHelpers.classCallCheck(this,EventSubscriptionVendor);\nthis._subscriptionsForType={};\nthis._currentSubscription=null;}babelHelpers.createClass(EventSubscriptionVendor,[{key:'addSubscription',value:function addSubscription(\n\n\n\n\n\n\n\n\n\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:function removeAllSubscriptions(\n\n\n\n\n\n\n\n\neventType){\nif(eventType===undefined){\nthis._subscriptionsForType={};}else \n{\ndelete this._subscriptionsForType[eventType];}}},{key:'removeSubscription',value:function removeSubscription(\n\n\n\n\n\n\n\n\n\nsubscription){\nvar eventType=subscription.eventType;\nvar key=subscription.key;\n\nvar subscriptionsForType=this._subscriptionsForType[eventType];\nif(subscriptionsForType){\ndelete subscriptionsForType[key];}}},{key:'getSubscriptionsForType',value:function getSubscriptionsForType(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\neventType){\nreturn this._subscriptionsForType[eventType];}}]);return EventSubscriptionVendor;}();\n\n\n\nmodule.exports=EventSubscriptionVendor;","map":null,"id":"EventSubscriptionVendor","source":"/**\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('fbjs/lib/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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/emitter/EventValidator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"EventValidator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[58],"dependencies":["copyProperties"],"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 addValidation(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 recommendationFor(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 closestTypeFor(type,allowedTypes){\nvar typeRecommendations=allowedTypes.map(\ntypeRecommendationFor.bind(this,type));\n\nreturn typeRecommendations.sort(recommendationSort)[0];};\n\n\nvar typeRecommendationFor=function typeRecommendationFor(type,recomendedType){\nreturn {\ntype:recomendedType,\ndistance:damerauLevenshteinDistance(type,recomendedType)};};\n\n\n\nvar recommendationSort=function recommendationSort(recommendationA,recommendationB){\nif(recommendationA.distancerecommendationB.distance){\nreturn 1;}else \n{\nreturn 0;}};\n\n\n\nvar isCloseEnough=function isCloseEnough(closestType,actualType){\nreturn closestType.distance/actualType.length<0.334;};\n\n\nvar damerauLevenshteinDistance=function damerauLevenshteinDistance(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;","map":null,"id":"EventValidator","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js":{"metadata":{"mtime":1463609891000},"data":{"name":"mixInEventEmitter","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[42,95,147,190,237,278,319],"dependencies":["EventEmitter","EventEmitterWithHolding","EventHolder","EventValidator","copyProperties","fbjs/lib/invariant","fbjs/lib/keyOf"],"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('fbjs/lib/invariant');\nvar keyOf=require('fbjs/lib/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');\n\n\n\nvar target=klass.prototype||klass;\n\ninvariant(!target.__eventEmitter,'An active emitter is already mixed in');\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 emit(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emit(eventType,a,b,c,d,e,_);},\n\n\nemitAndHold:function emitAndHold(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emitAndHold(eventType,a,b,c,d,e,_);},\n\n\naddListener:function addListener(eventType,listener,context){\nreturn this.__getEventEmitter().addListener(eventType,listener,context);},\n\n\nonce:function once(eventType,listener,context){\nreturn this.__getEventEmitter().once(eventType,listener,context);},\n\n\naddRetroactiveListener:function addRetroactiveListener(eventType,listener,context){\nreturn this.__getEventEmitter().addRetroactiveListener(\neventType,\nlistener,\ncontext);},\n\n\n\naddListenerMap:function addListenerMap(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\naddRetroactiveListenerMap:function addRetroactiveListenerMap(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\nremoveAllListeners:function removeAllListeners(){\nthis.__getEventEmitter().removeAllListeners();},\n\n\nremoveCurrentListener:function removeCurrentListener(){\nthis.__getEventEmitter().removeCurrentListener();},\n\n\nreleaseHeldEventType:function releaseHeldEventType(eventType){\nthis.__getEventEmitter().releaseHeldEventType(eventType);},\n\n\n__getEventEmitter:function __getEventEmitter(){\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;","map":null,"id":"mixInEventEmitter","source":"/**\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('fbjs/lib/invariant');\nvar keyOf = require('fbjs/lib/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\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 invariant(!target.__eventEmitter, 'An active emitter is already mixed in');\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/_shouldPolyfillES6Collection.js":{"metadata":{"mtime":1463609891000},"data":{"name":"_shouldPolyfillES6Collection","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\nshouldPolyfillES6Collection(collectionName){\nvar Collection=global[collectionName];\nif(Collection==null){\nreturn true;}\n\n\n\n\n\n\nif(typeof global.Symbol!=='function'){\nreturn true;}\n\n\nvar proto=Collection.prototype;\n\n\n\n\nreturn Collection==null||\ntypeof Collection!=='function'||\ntypeof proto.clear!=='function'||\nnew Collection().size!==0||\ntypeof proto.keys!=='function'||\ntypeof proto.forEach!=='function';}\n\n\nmodule.exports=shouldPolyfillES6Collection;","map":null,"id":"_shouldPolyfillES6Collection","source":"/**\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 * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule _shouldPolyfillES6Collection\n * @preventMunge\n * @flow\n */\n\n/**\n * Checks whether a collection name (e.g. \"Map\" or \"Set\") has a native polyfill\n * that is safe to be used.\n */\nfunction shouldPolyfillES6Collection(collectionName: string): boolean {\n var Collection = global[collectionName];\n if (Collection == null) {\n return true;\n }\n\n // The iterator protocol depends on `Symbol.iterator`. If a collection is\n // implemented, but `Symbol` is not, it's going to break iteration because\n // we'll be using custom \"@@iterator\" instead, which is not implemented on\n // native collections.\n if (typeof global.Symbol !== 'function') {\n return true;\n }\n\n var proto = Collection.prototype;\n\n // These checks are adapted from es6-shim: https://fburl.com/34437854\n // NOTE: `isCallableWithoutNew` and `!supportsSubclassing` are not checked\n // because they make debugging with \"break on exceptions\" difficult.\n return Collection == null ||\n typeof Collection !== 'function' ||\n typeof proto.clear !== 'function' ||\n new Collection().size !== 0 ||\n typeof proto.keys !== 'function' ||\n typeof proto.forEach !== 'function';\n}\n\nmodule.exports = shouldPolyfillES6Collection;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/clearImmediate.js":{"metadata":{"mtime":1463609891000},"data":{"name":"clearImmediate"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/copyProperties.js":{"metadata":{"mtime":1463609891000},"data":{"name":"copyProperties","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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;","map":null,"id":"copyProperties","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/getObjectValues.js":{"metadata":{"mtime":1463609891000},"data":{"name":"getObjectValues","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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;","map":null,"id":"getObjectValues","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/guid.js":{"metadata":{"mtime":1463609891000},"data":{"name":"guid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\nguid(){\nreturn 'f'+(Math.random()*(1<<30)).toString(16).replace('.','');}\n\n\nmodule.exports=guid;","map":null,"id":"guid","source":"/**\n * @generated SignedSource<<4425c6f5a34b56ee4707e090f43fd075>>\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 2004-present Facebook. All Rights Reserved.\n *\n * Module that provides a function for creating a unique identifier.\n * The returned value does not conform to the GUID standard, but should\n * be globally unique in the context of the browser.\n *\n * @providesModule guid\n *\n */\n\n/*jshint bitwise: false*/\n\nfunction guid() {\n return 'f' + (Math.random() * (1 << 30)).toString(16).replace('.', '');\n}\n\nmodule.exports = guid;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/isEmpty.js":{"metadata":{"mtime":1463609891000},"data":{"name":"isEmpty","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nisEmpty(obj){\nif(Array.isArray(obj)){\nreturn obj.length===0;}else \nif(typeof obj==='object'){\nfor(var i in obj){\nreturn false;}\n\nreturn true;}else \n{\nreturn !obj;}}\n\n\n\nmodule.exports=isEmpty;","map":null,"id":"isEmpty","source":"/**\n * @generated SignedSource<<97ffcebc9ae390e734026a4f3964bff6>>\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 isEmpty\n */\n\n/**\n * Mimics empty from PHP.\n */\nfunction isEmpty(obj) {\n if (Array.isArray(obj)) {\n return obj.length === 0;\n } else if (typeof obj === 'object') {\n for (var i in obj) {\n return false;\n }\n return true;\n } else {\n return !obj;\n }\n}\n\nmodule.exports = isEmpty;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/Map.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Map","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[37,65,108,164],"dependencies":["guid","fbjs/lib/isNode","toIterator","_shouldPolyfillES6Collection"],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nguid=require('guid');\nvar isNode=require('fbjs/lib/isNode');\nvar toIterator=require('toIterator');\nvar _shouldPolyfillES6Collection=require('_shouldPolyfillES6Collection');\n\nmodule.exports=function(global,undefined){\n\n\n\n\nif(!_shouldPolyfillES6Collection('Map')){\nreturn global.Map;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 KIND_KEY='key';\nvar KIND_VALUE='value';\nvar KIND_KEY_VALUE='key+value';\n\n\n\nvar KEY_PREFIX='$map_';\n\n\n\nvar SECRET_SIZE_PROP;\nif(__DEV__){\nSECRET_SIZE_PROP='$size'+guid();}\n\n\n\nvar OLD_IE_HASH_PREFIX='IE_HASH_';var \n\nMap=function(){\n\n\n\n\n\n\n\n\n\n\nfunction Map(iterable){babelHelpers.classCallCheck(this,Map);\nif(!isObject(this)){\nthrow new TypeError('Wrong map object type.');}\n\n\ninitMap(this);\n\nif(iterable!=null){\nvar it=toIterator(iterable);\nvar next;\nwhile(!(next=it.next()).done){\nif(!isObject(next.value)){\nthrow new TypeError('Expected iterable items to be pair objects.');}\n\nthis.set(next.value[0],next.value[1]);}}}babelHelpers.createClass(Map,[{key:'clear',value:function clear()\n\n\n\n\n\n\n\n\n{\ninitMap(this);}},{key:'has',value:function has(\n\n\n\n\n\n\n\n\n\nkey){\nvar index=getIndex(this,key);\nreturn !!(index!=null&&this._mapData[index]);}},{key:'set',value:function set(\n\n\n\n\n\n\n\n\n\n\nkey,value){\nvar index=getIndex(this,key);\n\nif(index!=null&&this._mapData[index]){\nthis._mapData[index][1]=value;}else \n{\nindex=this._mapData.push([\nkey,\nvalue])-\n1;\nsetIndex(this,key,index);\nif(__DEV__){\nthis[SECRET_SIZE_PROP]+=1;}else \n{\nthis.size+=1;}}\n\n\n\nreturn this;}},{key:'get',value:function get(\n\n\n\n\n\n\n\n\n\nkey){\nvar index=getIndex(this,key);\nif(index==null){\nreturn undefined;}else \n{\nreturn this._mapData[index][1];}}},{key:'delete',value:function _delete(\n\n\n\n\n\n\n\n\n\n\n\nkey){\nvar index=getIndex(this,key);\nif(index!=null&&this._mapData[index]){\nsetIndex(this,key,undefined);\nthis._mapData[index]=undefined;\nif(__DEV__){\nthis[SECRET_SIZE_PROP]-=1;}else \n{\nthis.size-=1;}\n\nreturn true;}else \n{\nreturn false;}}},{key:'entries',value:function entries()\n\n\n\n\n\n\n\n\n\n\n{\nreturn new MapIterator(this,KIND_KEY_VALUE);}},{key:'keys',value:function keys()\n\n\n\n\n\n\n\n\n{\nreturn new MapIterator(this,KIND_KEY);}},{key:'values',value:function values()\n\n\n\n\n\n\n\n\n{\nreturn new MapIterator(this,KIND_VALUE);}},{key:'forEach',value:function forEach(\n\n\n\n\n\n\n\n\n\n\n\ncallback,thisArg){\nif(typeof callback!=='function'){\nthrow new TypeError('Callback must be callable.');}\n\n\nvar boundCallback=callback.bind(thisArg||undefined);\nvar mapData=this._mapData;\n\n\n\n\nfor(var i=0;i>\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 2013-2014 Facebook, Inc.\n * @providesModule Map\n * @preventMunge\n * @typechecks\n */\n\nvar guid = require('guid');\nvar isNode = require('fbjs/lib/isNode');\nvar toIterator = require('toIterator');\nvar _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global, undefined) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n if (!_shouldPolyfillES6Collection('Map')) {\n return global.Map;\n }\n\n /**\n * == ES6 Map Collection ==\n *\n * This module is meant to implement a Map collection as described in chapter\n * 23.1 of the ES6 specification.\n *\n * Map objects are collections of key/value pairs where both the keys and\n * values may be arbitrary ECMAScript language values. A distinct key value\n * may only occur in one key/value pair within the Map's collection.\n *\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys.\n * We decided not to allow and simply throw an error. The reason being is\n * we store a \"hash\" on the object for fast access to it's place in the\n * internal map entries.\n * If this turns out to be a popular use case it's possible to implement by\n * overiding `Object.freeze` to store a \"hash\" property on the object\n * for later use with the map.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var map = new Map(iterable);\n *\n * map.set(key, value);\n * map.get(key); // value\n * map.has(key); // true\n * map.delete(key); // true\n *\n * var iterator = map.keys();\n * iterator.next(); // {value: key, done: false}\n *\n * var iterator = map.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = map.entries();\n * iterator.next(); // {value: [key, value], done: false}\n *\n * map.forEach(function(value, key){ this === thisArg }, thisArg);\n *\n * map.clear(); // resets map.\n */\n\n /**\n * Constants\n */\n\n // Kinds of map iterations 23.1.5.3\n var KIND_KEY = 'key';\n var KIND_VALUE = 'value';\n var KIND_KEY_VALUE = 'key+value';\n\n // In older browsers we can't create a null-prototype object so we have to\n // defend against key collisions with built-in methods.\n var KEY_PREFIX = '$map_';\n\n // This property will be used as the internal size variable to disallow\n // writing and to issue warnings for writings in development.\n var SECRET_SIZE_PROP;\n if (__DEV__) {\n SECRET_SIZE_PROP = '$size' + guid();\n }\n\n // In oldIE we use the DOM Node `uniqueID` property to get create the hash.\n var OLD_IE_HASH_PREFIX = 'IE_HASH_';\n\n class Map {\n\n /**\n * 23.1.1.1\n * Takes an `iterable` which is basically any object that implements a\n * Symbol.iterator (@@iterator) method. The iterable is expected to be a\n * collection of pairs. Each pair is a key/value pair that will be used\n * to instantiate the map.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (!isObject(this)) {\n throw new TypeError('Wrong map object type.');\n }\n\n initMap(this);\n\n if (iterable != null) {\n var it = toIterator(iterable);\n var next;\n while (!(next = it.next()).done) {\n if (!isObject(next.value)) {\n throw new TypeError('Expected iterable items to be pair objects.');\n }\n this.set(next.value[0], next.value[1]);\n }\n }\n }\n\n /**\n * 23.1.3.1\n * Clears the map from all keys and values.\n */\n clear() {\n initMap(this);\n }\n\n /**\n * 23.1.3.7\n * Check if a key exists in the collection.\n *\n * @param {*} key\n * @return {boolean}\n */\n has(key) {\n var index = getIndex(this, key);\n return !!(index != null && this._mapData[index]);\n }\n\n /**\n * 23.1.3.9\n * Adds a key/value pair to the collection.\n *\n * @param {*} key\n * @param {*} value\n * @return {map}\n */\n set(key, value) {\n var index = getIndex(this, key);\n\n if (index != null && this._mapData[index]) {\n this._mapData[index][1] = value;\n } else {\n index = this._mapData.push([\n key,\n value\n ]) - 1;\n setIndex(this, key, index);\n if (__DEV__) {\n this[SECRET_SIZE_PROP] += 1;\n } else {\n this.size += 1;\n }\n }\n\n return this;\n }\n\n /**\n * 23.1.3.6\n * Gets a value associated with a key in the collection.\n *\n * @param {*} key\n * @return {*}\n */\n get(key) {\n var index = getIndex(this, key);\n if (index == null) {\n return undefined;\n } else {\n return this._mapData[index][1];\n }\n }\n\n\n /**\n * 23.1.3.3\n * Delete a key/value from the collection.\n *\n * @param {*} key\n * @return {boolean} Whether the key was found and deleted.\n */\n delete(key) {\n var index = getIndex(this, key);\n if (index != null && this._mapData[index]) {\n setIndex(this, key, undefined);\n this._mapData[index] = undefined;\n if (__DEV__) {\n this[SECRET_SIZE_PROP] -= 1;\n } else {\n this.size -= 1;\n }\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * 23.1.3.4\n * Returns an iterator over the key/value pairs (in the form of an Array) in\n * the collection.\n *\n * @return {MapIterator}\n */\n entries() {\n return new MapIterator(this, KIND_KEY_VALUE);\n }\n\n /**\n * 23.1.3.8\n * Returns an iterator over the keys in the collection.\n *\n * @return {MapIterator}\n */\n keys() {\n return new MapIterator(this, KIND_KEY);\n }\n\n /**\n * 23.1.3.11\n * Returns an iterator over the values pairs in the collection.\n *\n * @return {MapIterator}\n */\n values() {\n return new MapIterator(this, KIND_VALUE);\n }\n\n /**\n * 23.1.3.5\n * Iterates over the key/value pairs in the collection calling `callback`\n * with [value, key, map]. An optional `thisArg` can be passed to set the\n * context when `callback` is called.\n *\n * @param {function} callback\n * @param {?object} thisArg\n */\n forEach(callback, thisArg) {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback must be callable.');\n }\n\n var boundCallback = callback.bind(thisArg || undefined);\n var mapData = this._mapData;\n\n // Note that `mapData.length` should be computed on each iteration to\n // support iterating over new items in the map that were added after the\n // start of the iteration.\n for (var i = 0; i < mapData.length; i++) {\n var entry = mapData[i];\n if (entry != null) {\n boundCallback(entry[1], entry[0], this);\n }\n }\n }\n }\n\n // 23.1.3.12\n Map.prototype[toIterator.ITERATOR_SYMBOL] = Map.prototype.entries;\n\n class MapIterator {\n\n /**\n * 23.1.5.1\n * Create a `MapIterator` for a given `map`. While this class is private it\n * will create objects that will be passed around publicily.\n *\n * @param {map} map\n * @param {string} kind\n */\n constructor(map, kind) {\n if (!(isObject(map) && map['_mapData'])) {\n throw new TypeError('Object is not a map.');\n }\n\n if ([KIND_KEY, KIND_KEY_VALUE, KIND_VALUE].indexOf(kind) === -1) {\n throw new Error('Invalid iteration kind.');\n }\n\n this._map = map;\n this._nextIndex = 0;\n this._kind = kind;\n }\n\n /**\n * 23.1.5.2.1\n * Get the next iteration.\n *\n * @return {object}\n */\n next() {\n if (!this instanceof Map) {\n throw new TypeError('Expected to be called on a MapIterator.');\n }\n\n var map = this._map;\n var index = this._nextIndex;\n var kind = this._kind;\n\n if (map == null) {\n return createIterResultObject(undefined, true);\n }\n\n var entries = map['_mapData'];\n\n while (index < entries.length) {\n var record = entries[index];\n\n index += 1;\n this._nextIndex = index;\n\n if (record) {\n if (kind === KIND_KEY) {\n return createIterResultObject(record[0], false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(record[1], false);\n } else if (kind) {\n return createIterResultObject(record, false);\n }\n }\n }\n\n this._map = undefined;\n\n return createIterResultObject(undefined, true);\n }\n }\n\n // We can put this in the class definition once we have computed props\n // transform.\n // 23.1.5.2.2\n MapIterator.prototype[toIterator.ITERATOR_SYMBOL] = function() {\n return this;\n }\n\n /**\n * Helper Functions.\n */\n\n /**\n * Return an index to map.[[MapData]] array for a given Key.\n *\n * @param {map} map\n * @param {*} key\n * @return {?number}\n */\n function getIndex(map, key) {\n if (isObject(key)) {\n var hash = getHash(key);\n return map._objectIndex[hash];\n } else {\n var prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n return map._stringIndex[prefixedKey];\n } else {\n return map._otherIndex[prefixedKey];\n }\n }\n }\n\n /**\n * Setup an index that refer to the key's location in map.[[MapData]].\n *\n * @param {map} map\n * @param {*} key\n */\n function setIndex(map, key, index) {\n var shouldDelete = index == null;\n\n if (isObject(key)) {\n var hash = getHash(key);\n if (shouldDelete) {\n delete map._objectIndex[hash];\n } else {\n map._objectIndex[hash] = index;\n }\n } else {\n var prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n if (shouldDelete) {\n delete map._stringIndex[prefixedKey];\n } else {\n map._stringIndex[prefixedKey] = index;\n }\n } else {\n if (shouldDelete) {\n delete map._otherIndex[prefixedKey];\n } else {\n map._otherIndex[prefixedKey] = index;\n }\n }\n }\n }\n\n /**\n * Instantiate a map with internal slots.\n *\n * @param {map} map\n */\n function initMap(map) {\n // Data structure design inspired by Traceur's Map implementation.\n // We maintain an internal array for all the entries. The array is needed\n // to remember order. However, to have a reasonable HashMap performance\n // i.e. O(1) for insertion, deletion, and retrieval. We maintain indices\n // in objects for fast look ups. Indices are split up according to data\n // types to avoid collisions.\n map._mapData = [];\n\n // Object index maps from an object \"hash\" to index. The hash being a unique\n // property of our choosing that we associate with the object. Association\n // is done by ways of keeping a non-enumerable property on the object.\n // Ideally these would be `Object.create(null)` objects but since we're\n // trying to support ES3 we'll have to gaurd against collisions using\n // prefixes on the keys rather than rely on null prototype objects.\n map._objectIndex = {};\n\n // String index maps from strings to index.\n map._stringIndex = {};\n\n // Numbers, booleans, undefined, and null.\n map._otherIndex = {};\n\n // Unfortunately we have to support ES3 and cannot have `Map.prototype.size`\n // be a getter method but just a regular method. The biggest problem with\n // this is safety. Clients can change the size property easily and possibly\n // without noticing (e.g. `if (map.size = 1) {..}` kind of typo). What we\n // can do to mitigate use getters and setters in development to disallow\n // and issue a warning for changing the `size` property.\n if (__DEV__) {\n if (isES5) {\n // If the `SECRET_SIZE_PROP` property is already defined then we're not\n // in the first call to `initMap` (e.g. coming from `map.clear()`) so\n // all we need to do is reset the size without defining the properties.\n if (map.hasOwnProperty(SECRET_SIZE_PROP)) {\n map[SECRET_SIZE_PROP] = 0;\n } else {\n Object.defineProperty(map, SECRET_SIZE_PROP, {\n value: 0,\n writable: true\n });\n Object.defineProperty(map, 'size', {\n set: (v) => {\n console.error(\n 'PLEASE FIX ME: You are changing the map size property which ' +\n 'should not be writable and will break in production.'\n );\n throw new Error('The map size property is not writable.');\n },\n get: () => map[SECRET_SIZE_PROP]\n });\n }\n\n // NOTE: Early return to implement immutable `.size` in DEV.\n return;\n }\n }\n\n // This is a diviation from the spec. `size` should be a getter on\n // `Map.prototype`. However, we have to support IE8.\n map.size = 0;\n }\n\n /**\n * Check if something is an object.\n *\n * @param {*} o\n * @return {boolean}\n */\n function isObject(o) {\n return o != null && (typeof o === 'object' || typeof o === 'function');\n }\n\n /**\n * Create an iteration object.\n *\n * @param {*} value\n * @param {boolean} done\n * @return {object}\n */\n function createIterResultObject(value, done) {\n return {value, done};\n }\n\n // Are we in a legit ES5 environment. Spoiler alert: that doesn't include IE8.\n var isES5 = (function() {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch(e) {\n return false;\n }\n })();\n\n /**\n * Check if an object can be extended.\n *\n * @param {object|array|function|regexp} o\n * @return {boolean}\n */\n function isExtensible(o) {\n if (!isES5) {\n return true;\n } else {\n return Object.isExtensible(o);\n }\n }\n\n /**\n * IE has a `uniqueID` set on every DOM node. So we construct the hash from\n * this uniqueID to avoid memory leaks and the IE cloneNode bug where it\n * clones properties in addition to the attributes.\n *\n * @param {object} node\n * @return {?string}\n */\n function getIENodeHash(node) {\n var uniqueID;\n switch (node.nodeType) {\n case 1: // Element\n uniqueID = node.uniqueID;\n break;\n case 9: // Document\n uniqueID = node.documentElement.uniqueID;\n break;\n default:\n return null;\n }\n\n if (uniqueID) {\n return OLD_IE_HASH_PREFIX + uniqueID;\n } else {\n return null;\n }\n }\n\n var getHash = (function() {\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n var hashProperty = guid();\n var hashCounter = 0;\n\n /**\n * Get the \"hash\" associated with an object.\n *\n * @param {object|array|function|regexp} o\n * @return {number}\n */\n return function getHash(o) {\n if (o[hashProperty]) {\n return o[hashProperty];\n } else if (!isES5 &&\n o.propertyIsEnumerable &&\n o.propertyIsEnumerable[hashProperty]) {\n return o.propertyIsEnumerable[hashProperty];\n } else if (!isES5 &&\n isNode(o) &&\n getIENodeHash(o)) {\n return getIENodeHash(o);\n } else if (!isES5 && o[hashProperty]) {\n return o[hashProperty];\n }\n\n if (isExtensible(o)) {\n hashCounter += 1;\n if (isES5) {\n Object.defineProperty(o, hashProperty, {\n enumerable: false,\n writable: false,\n configurable: false,\n value: hashCounter\n });\n } else if (o.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Addiotionally, since this is a function it\n // will not show up in `JSON.stringify` which is what we want.\n o.propertyIsEnumerable = function() {\n return propIsEnumerable.apply(this, arguments);\n };\n o.propertyIsEnumerable[hashProperty] = hashCounter;\n } else if (isNode(o)) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `hashProperty` on the node\n // itself.\n o[hashProperty] = hashCounter;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n return hashCounter;\n } else {\n throw new Error('Non-extensible objects are not allowed as keys.');\n }\n };\n })();\n\n return Map;\n})(/* jslint evil: true */ Function('return this')());\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/merge.js":{"metadata":{"mtime":1463609891000},"data":{"name":"merge","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[68],"dependencies":["mergeInto"],"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\n\n\n\n\nvar mergeInto=require('mergeInto');\n\n\n\n\n\n\n\n\nvar merge=function merge(one,two){\nvar result={};\nmergeInto(result,one);\nmergeInto(result,two);\nreturn result;};\n\n\nmodule.exports=merge;","map":null,"id":"merge","source":"/**\n * @generated SignedSource<<0e3063b19e14ed191102b1dffe45551f>>\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 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 merge\n */\n\n\"use strict\";\n\nvar mergeInto = require('mergeInto');\n\n/**\n * Shallow merges two structures into a return value, without mutating either.\n *\n * @param {?object} one Optional object with properties to merge from.\n * @param {?object} two Optional object with properties to merge from.\n * @return {object} The shallow extension of one by two.\n */\nvar merge = function(one, two) {\n var result = {};\n mergeInto(result, one);\n mergeInto(result, two);\n return result;\n};\n\nmodule.exports = merge;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/mergeHelpers.js":{"metadata":{"mtime":1463609891000},"data":{"name":"mergeHelpers","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[70,115],"dependencies":["fbjs/lib/invariant","fbjs/lib/keyMirror"],"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\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\nvar keyMirror=require('fbjs/lib/keyMirror');\n\n\n\n\n\nvar MAX_MERGE_DEPTH=36;\n\n\n\n\n\n\n\nvar isTerminal=function isTerminal(o){\nreturn typeof o!=='object'||o===null;};\n\n\nvar mergeHelpers={\n\nMAX_MERGE_DEPTH:MAX_MERGE_DEPTH,\n\nisTerminal:isTerminal,\n\n\n\n\n\n\n\nnormalizeMergeArg:function normalizeMergeArg(arg){\nreturn arg===undefined||arg===null?{}:arg;},\n\n\n\n\n\n\n\n\n\n\ncheckMergeArrayArgs:function checkMergeArrayArgs(one,two){\ninvariant(\nArray.isArray(one)&&Array.isArray(two),\n'Tried to merge arrays, instead got %s and %s.',\none,\ntwo);},\n\n\n\n\n\n\n\ncheckMergeObjectArgs:function checkMergeObjectArgs(one,two){\nmergeHelpers.checkMergeObjectArg(one);\nmergeHelpers.checkMergeObjectArg(two);},\n\n\n\n\n\ncheckMergeObjectArg:function checkMergeObjectArg(arg){\ninvariant(\n!isTerminal(arg)&&!Array.isArray(arg),\n'Tried to merge an object, instead got %s.',\narg);},\n\n\n\n\n\n\ncheckMergeIntoObjectArg:function checkMergeIntoObjectArg(arg){\ninvariant(\n(!isTerminal(arg)||typeof arg==='function')&&!Array.isArray(arg),\n'Tried to merge into an object, instead got %s.',\narg);},\n\n\n\n\n\n\n\n\n\ncheckMergeLevel:function checkMergeLevel(level){\ninvariant(\nlevel>\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 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 mergeHelpers\n *\n * requiresPolyfills: Array.isArray\n */\n\n\"use strict\";\n\nvar invariant = require('fbjs/lib/invariant');\nvar keyMirror = require('fbjs/lib/keyMirror');\n\n/**\n * Maximum number of levels to traverse. Will catch circular structures.\n * @const\n */\nvar MAX_MERGE_DEPTH = 36;\n\n/**\n * We won't worry about edge cases like new String('x') or new Boolean(true).\n * Functions are considered terminals, and arrays are not.\n * @param {*} o The item/object/value to test.\n * @return {boolean} true iff the argument is a terminal.\n */\nvar isTerminal = function(o) {\n return typeof o !== 'object' || o === null;\n};\n\nvar mergeHelpers = {\n\n MAX_MERGE_DEPTH: MAX_MERGE_DEPTH,\n\n isTerminal: isTerminal,\n\n /**\n * Converts null/undefined values into empty object.\n *\n * @param {?Object=} arg Argument to be normalized (nullable optional)\n * @return {!Object}\n */\n normalizeMergeArg: function(arg) {\n return arg === undefined || arg === null ? {} : arg;\n },\n\n /**\n * If merging Arrays, a merge strategy *must* be supplied. If not, it is\n * likely the caller's fault. If this function is ever called with anything\n * but `one` and `two` being `Array`s, it is the fault of the merge utilities.\n *\n * @param {*} one Array to merge into.\n * @param {*} two Array to merge from.\n */\n checkMergeArrayArgs: function(one, two) {\n invariant(\n Array.isArray(one) && Array.isArray(two),\n 'Tried to merge arrays, instead got %s and %s.',\n one,\n two\n );\n },\n\n /**\n * @param {*} one Object to merge into.\n * @param {*} two Object to merge from.\n */\n checkMergeObjectArgs: function(one, two) {\n mergeHelpers.checkMergeObjectArg(one);\n mergeHelpers.checkMergeObjectArg(two);\n },\n\n /**\n * @param {*} arg\n */\n checkMergeObjectArg: function(arg) {\n invariant(\n !isTerminal(arg) && !Array.isArray(arg),\n 'Tried to merge an object, instead got %s.',\n arg\n );\n },\n\n /**\n * @param {*} arg\n */\n checkMergeIntoObjectArg: function(arg) {\n invariant(\n (!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg),\n 'Tried to merge into an object, instead got %s.',\n arg\n );\n },\n\n /**\n * Checks that a merge was not given a circular object or an object that had\n * too great of depth.\n *\n * @param {number} Level of recursion to validate against maximum.\n */\n checkMergeLevel: function(level) {\n invariant(\n level < MAX_MERGE_DEPTH,\n 'Maximum deep merge depth exceeded. You may be attempting to merge ' +\n 'circular structures in an unsupported way.'\n );\n },\n\n /**\n * Checks that the supplied merge strategy is valid.\n *\n * @param {string} Array merge strategy.\n */\n checkArrayStrategy: function(strategy) {\n invariant(\n strategy === undefined || strategy in mergeHelpers.ArrayStrategies,\n 'You must provide an array strategy to deep merge functions to ' +\n 'instruct the deep merge how to resolve merging two arrays.'\n );\n },\n\n /**\n * Set of possible behaviors of merge algorithms when encountering two Arrays\n * that must be merged together.\n * - `clobber`: The left `Array` is ignored.\n * - `indexByIndex`: The result is achieved by recursively deep merging at\n * each index. (not yet supported.)\n */\n ArrayStrategies: keyMirror({\n Clobber: true,\n IndexByIndex: true\n })\n\n};\n\nmodule.exports = mergeHelpers;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/mergeInto.js":{"metadata":{"mtime":1463609891000},"data":{"name":"mergeInto","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[72],"dependencies":["mergeHelpers"],"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\n\n\n\n\n\nvar mergeHelpers=require('mergeHelpers');\n\nvar checkMergeObjectArg=mergeHelpers.checkMergeObjectArg;\nvar checkMergeIntoObjectArg=mergeHelpers.checkMergeIntoObjectArg;\n\n\n\n\n\n\n\nfunction mergeInto(one,two){\ncheckMergeIntoObjectArg(one);\nif(two!=null){\ncheckMergeObjectArg(two);\nfor(var key in two){\nif(!two.hasOwnProperty(key)){\ncontinue;}\n\none[key]=two[key];}}}\n\n\n\n\nmodule.exports=mergeInto;","map":null,"id":"mergeInto","source":"/**\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 * 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 mergeInto\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar mergeHelpers = require('mergeHelpers');\n\nvar checkMergeObjectArg = mergeHelpers.checkMergeObjectArg;\nvar checkMergeIntoObjectArg = mergeHelpers.checkMergeIntoObjectArg;\n\n/**\n * Shallow merges two structures by mutating the first parameter.\n *\n * @param {object|function} one Object to be merged into.\n * @param {?object} two Optional object with properties to merge from.\n */\nfunction mergeInto(one, two) {\n checkMergeIntoObjectArg(one);\n if (two != null) {\n checkMergeObjectArg(two);\n for (var key in two) {\n if (!two.hasOwnProperty(key)) {\n continue;\n }\n one[key] = two[key];\n }\n }\n}\n\nmodule.exports = mergeInto;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/Set.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Set","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[36,67,123],"dependencies":["Map","toIterator","_shouldPolyfillES6Collection"],"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nMap=require('Map');\nvar toIterator=require('toIterator');\nvar _shouldPolyfillES6Collection=require('_shouldPolyfillES6Collection');\n\nmodule.exports=function(global,undefined){\n\n\n\n\n\nif(!_shouldPolyfillES6Collection('Set')){\nreturn global.Set;}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\n\n\n\n\n\n\n\n\n\n\n\n\n\nSet=function(){\n\n\n\n\n\n\n\n\n\n\nfunction Set(iterable){babelHelpers.classCallCheck(this,Set);\nif(this==null||\ntypeof this!=='object'&&typeof this!=='function'){\nthrow new TypeError('Wrong set object type.');}\n\n\ninitSet(this);\n\nif(iterable!=null){\nvar it=toIterator(iterable);\nvar next;\nwhile(!(next=it.next()).done){\nthis.add(next.value);}}}babelHelpers.createClass(Set,[{key:'add',value:function add(\n\n\n\n\n\n\n\n\n\n\n\n\nvalue){\nthis._map.set(value,value);\nthis.size=this._map.size;\nreturn this;}},{key:'clear',value:function clear()\n\n\n\n\n\n\n\n{\ninitSet(this);}},{key:'delete',value:function _delete(\n\n\n\n\n\n\n\n\n\n\n\nvalue){\nvar ret=this._map.delete(value);\nthis.size=this._map.size;\nreturn ret;}},{key:'entries',value:function entries()\n\n\n\n\n\n\n\n{\nreturn this._map.entries();}},{key:'forEach',value:function forEach(\n\n\n\n\n\n\n\n\n\ncallback){\nvar thisArg=arguments[1];\nvar it=this._map.keys();\nvar next;\nwhile(!(next=it.next()).done){\ncallback.call(thisArg,next.value,next.value,this);}}},{key:'has',value:function has(\n\n\n\n\n\n\n\n\n\n\n\nvalue){\nreturn this._map.has(value);}},{key:'values',value:function values()\n\n\n\n\n\n\n\n{\nreturn this._map.values();}}]);return Set;}();\n\n\n\n\nSet.prototype[toIterator.ITERATOR_SYMBOL]=Set.prototype.values;\n\n\nSet.prototype.keys=Set.prototype.values;\n\nfunction initSet(set){\nset._map=new Map();\nset.size=set._map.size;}\n\n\nreturn Set;}(\nFunction('return this')());","map":null,"id":"Set","source":"/**\n * @generated SignedSource<<1fe20877e83ba5d4d0ea68ab240df21c>>\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 2013-2014 Facebook, Inc.\n * @providesModule Set\n * @preventMunge\n * @typechecks\n */\n\nvar Map = require('Map');\nvar toIterator = require('toIterator');\nvar _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global, undefined) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n // These checks are adapted from es6-shim https://fburl.com/34437854\n if (!_shouldPolyfillES6Collection('Set')) {\n return global.Set;\n }\n\n /**\n * == ES6 Set Collection ==\n *\n * This module is meant to implement a Set collection as described in chapter\n * 23.2 of the ES6 specification.\n *\n * Set objects are collections of unique values. Where values can be any\n * JavaScript value.\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys. @see Map module for more on this.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var set = new set(iterable);\n *\n * set.set(value);\n * set.has(value); // true\n * set.delete(value); // true\n *\n * var iterator = set.keys();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.entries();\n * iterator.next(); // {value: [value, value], done: false}\n *\n * set.forEach(function(value, value){ this === thisArg }, thisArg);\n *\n * set.clear(); // resets set.\n */\n\n class Set {\n\n /**\n * 23.2.1.1\n *\n * Takes an optional `iterable` (which is basically any object that\n * implements a Symbol.iterator (@@iterator) method). That is a collection\n * of values used to instantiate the set.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (this == null ||\n (typeof this !== 'object' && typeof this !== 'function')) {\n throw new TypeError('Wrong set object type.');\n }\n\n initSet(this);\n\n if (iterable != null) {\n var it = toIterator(iterable);\n var next;\n while (!(next = it.next()).done) {\n this.add(next.value);\n }\n }\n }\n\n /**\n * 23.2.3.1\n *\n * If it doesn't already exist in the collection a `value` is added.\n *\n * @param {*} value\n * @return {set}\n */\n add(value) {\n this._map.set(value, value);\n this.size = this._map.size;\n return this;\n }\n\n /**\n * 23.2.3.2\n *\n * Clears the set.\n */\n clear() {\n initSet(this);\n }\n\n /**\n * 23.2.3.4\n *\n * Deletes a `value` from the collection if it exists.\n * Returns true if the value was found and deleted and false otherwise.\n *\n * @param {*} value\n * @return {boolean}\n */\n delete(value) {\n var ret = this._map.delete(value);\n this.size = this._map.size;\n return ret;\n }\n\n /**\n * 23.2.3.5\n *\n * Returns an iterator over a collection of [value, value] tuples.\n */\n entries() {\n return this._map.entries();\n }\n\n /**\n * 23.2.3.6\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {function} callback\n */\n forEach(callback) {\n var thisArg = arguments[1];\n var it = this._map.keys();\n var next;\n while (!(next = it.next()).done) {\n callback.call(thisArg, next.value, next.value, this);\n }\n }\n\n /**\n * 23.2.3.7\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {*} value\n * @return {boolean}\n */\n has(value) {\n return this._map.has(value);\n }\n\n /**\n * 23.2.3.7\n *\n * Returns an iterator over the colleciton of values.\n */\n values() {\n return this._map.values();\n }\n }\n\n // 23.2.3.11\n Set.prototype[toIterator.ITERATOR_SYMBOL] = Set.prototype.values;\n\n // 23.2.3.7\n Set.prototype.keys = Set.prototype.values;\n\n function initSet(set) {\n set._map = new Map();\n set.size = set._map.size;\n }\n\n return Set;\n})(/* jslint evil: true */ Function('return this')());\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/setImmediate.js":{"metadata":{"mtime":1463609891000},"data":{"name":"setImmediate","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"module.\n\n\n\n\n\n\n\n\n\n\nexports=global.setImmediate;","map":null,"id":"setImmediate","source":"/**\n * Copyright (c) 2013-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 setImmediate\n */\n\nmodule.exports = global.setImmediate;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/throwImmediate.js":{"metadata":{"mtime":1463609891000},"data":{"name":"throwImmediate"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/vendor/core/toIterator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"toIterator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"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\nKIND_KEY='key';\nvar KIND_VALUE='value';\nvar KIND_KEY_VAL='key+value';\n\nvar ITERATOR_SYMBOL=typeof Symbol==='function'?typeof Symbol==='function'?\nSymbol.iterator:'@@iterator':\n'@@iterator';\n\nvar toIterator=function(){\nif(!(Array.prototype[ITERATOR_SYMBOL]&&\nString.prototype[ITERATOR_SYMBOL])){\n\nreturn function(){var \nArrayIterator=function(){\n\nfunction ArrayIterator(array,kind){babelHelpers.classCallCheck(this,ArrayIterator);\nif(!Array.isArray(array)){\nthrow new TypeError('Object is not an Array');}\n\nthis._iteratedObject=array;\nthis._kind=kind;\nthis._nextIndex=0;}babelHelpers.createClass(ArrayIterator,[{key:'next',value:function next()\n\n\n\n{\nif(!this instanceof ArrayIterator){\nthrow new TypeError('Object is not an ArrayIterator');}\n\n\nif(this._iteratedObject==null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar array=this._iteratedObject;\nvar len=this._iteratedObject.length;\nvar index=this._nextIndex;\nvar kind=this._kind;\n\nif(index>=len){\nthis._iteratedObject=undefined;\nreturn createIterResultObject(undefined,true);}\n\n\nthis._nextIndex=index+1;\n\nif(kind===KIND_KEY){\nreturn createIterResultObject(index,false);}else \nif(kind===KIND_VALUE){\nreturn createIterResultObject(array[index],false);}else \nif(kind===KIND_KEY_VAL){\nreturn createIterResultObject([index,array[index]],false);}}},{key:\n\n\n\n\n'@@iterator',value:function iterator(){\nreturn this;}}]);return ArrayIterator;}();var \n\n\n\nStringIterator=function(){\n\nfunction StringIterator(string){babelHelpers.classCallCheck(this,StringIterator);\nif(typeof string!=='string'){\nthrow new TypeError('Object is not a string');}\n\nthis._iteratedString=string;\nthis._nextIndex=0;}babelHelpers.createClass(StringIterator,[{key:'next',value:function next()\n\n\n\n{\nif(!this instanceof StringIterator){\nthrow new TypeError('Object is not a StringIterator');}\n\n\nif(this._iteratedString==null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar index=this._nextIndex;\nvar s=this._iteratedString;\nvar len=s.length;\n\nif(index>=len){\nthis._iteratedString=undefined;\nreturn createIterResultObject(undefined,true);}\n\n\nvar ret;\nvar first=s.charCodeAt(index);\n\nif(first<0xD800||first>0xDBFF||index+1===len){\nret=s[index];}else \n{\nvar second=s.charCodeAt(index+1);\nif(second<0xDC00||second>0xDFFF){\nret=s[index];}else \n{\nret=s[index]+s[index+1];}}\n\n\n\nthis._nextIndex=index+ret.length;\n\nreturn createIterResultObject(ret,false);}},{key:\n\n\n\n'@@iterator',value:function iterator(){\nreturn this;}}]);return StringIterator;}();\n\n\n\n\nfunction createIterResultObject(value,done){\nreturn {value:value,done:done};}\n\n\nreturn function(object,kind){\nif(typeof object==='string'){\nreturn new StringIterator(object);}else \nif(Array.isArray(object)){\nreturn new ArrayIterator(object,kind||KIND_VALUE);}else \n{\nreturn object[ITERATOR_SYMBOL]();}};}();}else \n\n\n\n{\nreturn function(object){\nreturn object[ITERATOR_SYMBOL]();};}}();\n\n\n\n\n\n\n\n\nbabelHelpers.extends(toIterator,{\nKIND_KEY:KIND_KEY,\nKIND_VALUE:KIND_VALUE,\nKIND_KEY_VAL:KIND_KEY_VAL,\nITERATOR_SYMBOL:ITERATOR_SYMBOL});\n\n\nmodule.exports=toIterator;","map":null,"id":"toIterator","source":"/**\n * @generated SignedSource<<32241616e13b8a54d1a7baadce8eae5d>>\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 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule toIterator\n *\n */\n\n\n/**\n * Given an object `toIterator` will return the itrator for that object. If the\n * object has a `Symbol.iterator` method we just call that. Otherwise we\n * implement the ES6 `Array` and `String` Iterator.\n */\n\n/**\n * Constants\n */\n\nvar KIND_KEY = 'key';\nvar KIND_VALUE = 'value';\nvar KIND_KEY_VAL = 'key+value';\n/*global Symbol: true*/\nvar ITERATOR_SYMBOL = (typeof Symbol === 'function')\n ? Symbol.iterator\n : '@@iterator';\n\nvar toIterator = (function() {\n if (!(Array.prototype[ITERATOR_SYMBOL] &&\n String.prototype[ITERATOR_SYMBOL])) {\n // IIFE to avoid creating classes for no reason because of hoisting.\n return (function() {\n class ArrayIterator {\n // 22.1.5.1 CreateArrayIterator Abstract Operation\n constructor(array, kind) {\n if (!Array.isArray(array)) {\n throw new TypeError('Object is not an Array');\n }\n this._iteratedObject = array;\n this._kind = kind;\n this._nextIndex = 0;\n }\n\n // 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n next() {\n if (!this instanceof ArrayIterator) {\n throw new TypeError('Object is not an ArrayIterator');\n }\n\n if (this._iteratedObject == null) {\n return createIterResultObject(undefined, true);\n }\n\n var array = this._iteratedObject;\n var len = this._iteratedObject.length;\n var index = this._nextIndex;\n var kind = this._kind;\n\n if (index >= len) {\n this._iteratedObject = undefined;\n return createIterResultObject(undefined, true);\n }\n\n this._nextIndex = index + 1;\n\n if (kind === KIND_KEY) {\n return createIterResultObject(index, false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(array[index], false);\n } else if (kind === KIND_KEY_VAL) {\n return createIterResultObject([index, array[index]], false);\n }\n }\n\n // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator]()\n '@@iterator'() {\n return this;\n }\n }\n\n class StringIterator {\n // 21.1.5.1 CreateStringIterator Abstract Operation\n constructor(string) {\n if (typeof string !== 'string') {\n throw new TypeError('Object is not a string');\n }\n this._iteratedString = string;\n this._nextIndex = 0;\n }\n\n // 21.1.5.2.1 %StringIteratorPrototype%.next()\n next() {\n if (!this instanceof StringIterator) {\n throw new TypeError('Object is not a StringIterator');\n }\n\n if (this._iteratedString == null) {\n return createIterResultObject(undefined, true);\n }\n\n var index = this._nextIndex;\n var s = this._iteratedString;\n var len = s.length;\n\n if (index >= len) {\n this._iteratedString = undefined;\n return createIterResultObject(undefined, true);\n }\n\n var ret;\n var first = s.charCodeAt(index);\n\n if (first < 0xD800 || first > 0xDBFF || index + 1 === len) {\n ret = s[index];\n } else {\n var second = s.charCodeAt(index + 1);\n if (second < 0xDC00 || second > 0xDFFF) {\n ret = s[index];\n } else {\n ret = s[index] + s[index + 1];\n }\n }\n\n this._nextIndex = index + ret.length;\n\n return createIterResultObject(ret, false);\n }\n\n // 21.1.5.2.2 %StringIteratorPrototype%[@@ITERATOR_SYMBOL]()\n '@@iterator'() {\n return this;\n }\n }\n\n // 7.4.7 createIterResultObject(value, done)\n function createIterResultObject(value, done) {\n return {value: value, done: done};\n }\n\n return function(object, kind) {\n if (typeof object === 'string') {\n return new StringIterator(object);\n } else if (Array.isArray(object)) {\n return new ArrayIterator(object, kind || KIND_VALUE);\n } else {\n return object[ITERATOR_SYMBOL]();\n }\n };\n })();\n } else {\n return function(object) {\n return object[ITERATOR_SYMBOL]();\n };\n }\n})();\n\n/**\n * Export constants\n */\n\nObject.assign(toIterator, {\n KIND_KEY,\n KIND_VALUE,\n KIND_KEY_VAL,\n ITERATOR_SYMBOL\n});\n\nmodule.exports = toIterator;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/WebSocket/__mocks__/event-target-shim.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/WebSocket/WebSocket.js":{"metadata":{"mtime":1463609891000},"data":{"name":"WebSocket","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[60,117,172,212,256,297],"dependencies":["RCTDeviceEventEmitter","NativeModules","Platform","WebSocketEvent","event-target-shim","base64-js"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTWebSocketModule=require('NativeModules').WebSocketModule;\nvar Platform=require('Platform');\nvar WebSocketEvent=require('WebSocketEvent');\n\nvar EventTarget=require('event-target-shim');\nvar base64=require('base64-js');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CONNECTING=0;\nvar OPEN=1;\nvar CLOSING=2;\nvar CLOSED=3;\n\nvar CLOSE_NORMAL=1000;\n\nvar WEBSOCKET_EVENTS=[\n'close',\n'error',\n'message',\n'open'];\n\n\nvar nextWebSocketId=0;var \n\n\n\n\n\n\n\nWebSocket=function(_EventTarget){babelHelpers.inherits(WebSocket,_EventTarget);\n\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 WebSocket(url,protocols,options){babelHelpers.classCallCheck(this,WebSocket);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(WebSocket).call(this));_this.CONNECTING=CONNECTING;_this.OPEN=OPEN;_this.CLOSING=CLOSING;_this.CLOSED=CLOSED;_this.readyState=CONNECTING;\n\nif(typeof protocols==='string'){\nprotocols=[protocols];}\n\n\nif(!Array.isArray(protocols)){\nprotocols=null;}\n\n\n_this._socketId=nextWebSocketId++;\nRCTWebSocketModule.connect(url,protocols,options,_this._socketId);\n_this._registerEvents();return _this;}babelHelpers.createClass(WebSocket,[{key:'close',value:function close(\n\n\ncode,reason){\nif(this.readyState===this.CLOSING||\nthis.readyState===this.CLOSED){\nreturn;}\n\n\nthis.readyState=this.CLOSING;\nthis._close(code,reason);}},{key:'send',value:function send(\n\n\ndata){\nif(this.readyState===this.CONNECTING){\nthrow new Error('INVALID_STATE_ERR');}\n\n\nif(typeof data==='string'){\nRCTWebSocketModule.send(data,this._socketId);\nreturn;}\n\n\n\nif(typeof ArrayBuffer!=='undefined'&&\ntypeof Uint8Array!=='undefined'){\nif(ArrayBuffer.isView(data)){\n\ndata=data.buffer;}\n\nif(data instanceof ArrayBuffer){\ndata=base64.fromByteArray(new Uint8Array(data));\nRCTWebSocketModule.sendBinary(data,this._socketId);\nreturn;}}\n\n\n\nthrow new Error('Unsupported data type');}},{key:'_close',value:function _close(\n\n\ncode,reason){\nif(Platform.OS==='android'){\n\nvar statusCode=typeof code==='number'?code:CLOSE_NORMAL;\nvar closeReason=typeof reason==='string'?reason:'';\nRCTWebSocketModule.close(statusCode,closeReason,this._socketId);}else \n{\nRCTWebSocketModule.close(this._socketId);}}},{key:'_unregisterEvents',value:function _unregisterEvents()\n\n\n\n{\nthis._subscriptions.forEach(function(e){return e.remove();});\nthis._subscriptions=[];}},{key:'_registerEvents',value:function _registerEvents()\n\n\n{var _this2=this;\nthis._subscriptions=[\nRCTDeviceEventEmitter.addListener('websocketMessage',function(ev){\nif(ev.id!==_this2._socketId){\nreturn;}\n\nvar event=new WebSocketEvent('message',{\ndata:ev.type==='binary'?base64.toByteArray(ev.data).buffer:ev.data});\n\n_this2.dispatchEvent(event);}),\n\nRCTDeviceEventEmitter.addListener('websocketOpen',function(ev){\nif(ev.id!==_this2._socketId){\nreturn;}\n\n_this2.readyState=_this2.OPEN;\nvar event=new WebSocketEvent('open');\n_this2.dispatchEvent(event);}),\n\nRCTDeviceEventEmitter.addListener('websocketClosed',function(ev){\nif(ev.id!==_this2._socketId){\nreturn;}\n\n_this2.readyState=_this2.CLOSED;\nvar event=new WebSocketEvent('close');\nevent.code=ev.code;\nevent.reason=ev.reason;\n_this2.dispatchEvent(event);\n_this2._unregisterEvents();\n_this2.close();}),\n\nRCTDeviceEventEmitter.addListener('websocketFailed',function(ev){\nif(ev.id!==_this2._socketId){\nreturn;}\n\nvar event=new WebSocketEvent('error');\nevent.message=ev.message;\n_this2.dispatchEvent(event);\n\nevent=new WebSocketEvent('close');\nevent.message=ev.message;\n_this2.dispatchEvent(event);\n\n_this2._unregisterEvents();\n_this2.close();})];}}]);return WebSocket;}(EventTarget.apply(undefined,WEBSOCKET_EVENTS));WebSocket.CONNECTING=CONNECTING;WebSocket.OPEN=OPEN;WebSocket.CLOSING=CLOSING;WebSocket.CLOSED=CLOSED;\n\n\n\n\n\nmodule.exports=WebSocket;","map":null,"id":"WebSocket","source":"/**\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 WebSocket\n * @flow\n */\n'use strict';\n\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nconst RCTWebSocketModule = require('NativeModules').WebSocketModule;\nconst Platform = require('Platform');\nconst WebSocketEvent = require('WebSocketEvent');\n\nconst EventTarget = require('event-target-shim');\nconst base64 = require('base64-js');\n\nimport type EventSubscription from 'EventSubscription';\n\ntype ArrayBufferView =\n Int8Array |\n Uint8Array |\n Uint8ClampedArray |\n Int16Array |\n Uint16Array |\n Int32Array |\n Uint32Array |\n Float32Array |\n Float64Array |\n DataView;\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nconst CLOSE_NORMAL = 1000;\n\nconst WEBSOCKET_EVENTS = [\n 'close',\n 'error',\n 'message',\n 'open',\n];\n\nlet nextWebSocketId = 0;\n\n/**\n * Browser-compatible WebSockets implementation.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * See https://github.com/websockets/ws\n */\nclass WebSocket extends EventTarget(...WEBSOCKET_EVENTS) {\n static CONNECTING = CONNECTING;\n static OPEN = OPEN;\n static CLOSING = CLOSING;\n static CLOSED = CLOSED;\n\n CONNECTING: number = CONNECTING;\n OPEN: number = OPEN;\n CLOSING: number = CLOSING;\n CLOSED: number = CLOSED;\n\n _socketId: number;\n _subscriptions: Array;\n\n onclose: ?Function;\n onerror: ?Function;\n onmessage: ?Function;\n onopen: ?Function;\n\n binaryType: ?string;\n bufferedAmount: number;\n extension: ?string;\n protocol: ?string;\n readyState: number = CONNECTING;\n url: ?string;\n\n constructor(url: string, protocols: ?string | ?Array, options: ?{origin?: string}) {\n super();\n if (typeof protocols === 'string') {\n protocols = [protocols];\n }\n\n if (!Array.isArray(protocols)) {\n protocols = null;\n }\n\n this._socketId = nextWebSocketId++;\n RCTWebSocketModule.connect(url, protocols, options, this._socketId);\n this._registerEvents();\n }\n\n close(code?: number, reason?: string): void {\n if (this.readyState === this.CLOSING ||\n this.readyState === this.CLOSED) {\n return;\n }\n\n this.readyState = this.CLOSING;\n this._close(code, reason);\n }\n\n send(data: string | ArrayBuffer | ArrayBufferView): void {\n if (this.readyState === this.CONNECTING) {\n throw new Error('INVALID_STATE_ERR');\n }\n\n if (typeof data === 'string') {\n RCTWebSocketModule.send(data, this._socketId);\n return;\n }\n\n // Maintain iOS 7 compatibility which doesn't have JS typed arrays.\n if (typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined') {\n if (ArrayBuffer.isView(data)) {\n // $FlowFixMe: no way to assert that 'data' is indeed an ArrayBufferView now\n data = data.buffer;\n }\n if (data instanceof ArrayBuffer) {\n data = base64.fromByteArray(new Uint8Array(data));\n RCTWebSocketModule.sendBinary(data, this._socketId);\n return;\n }\n }\n\n throw new Error('Unsupported data type');\n }\n\n _close(code?: number, reason?: string): void {\n if (Platform.OS === 'android') {\n // See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent\n var statusCode = typeof code === 'number' ? code : CLOSE_NORMAL;\n var closeReason = typeof reason === 'string' ? reason : '';\n RCTWebSocketModule.close(statusCode, closeReason, this._socketId);\n } else {\n RCTWebSocketModule.close(this._socketId);\n }\n }\n\n _unregisterEvents(): void {\n this._subscriptions.forEach(e => e.remove());\n this._subscriptions = [];\n }\n\n _registerEvents(): void {\n this._subscriptions = [\n RCTDeviceEventEmitter.addListener('websocketMessage', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n var event = new WebSocketEvent('message', {\n data: (ev.type === 'binary') ? base64.toByteArray(ev.data).buffer : ev.data\n });\n this.dispatchEvent(event);\n }),\n RCTDeviceEventEmitter.addListener('websocketOpen', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n this.readyState = this.OPEN;\n var event = new WebSocketEvent('open');\n this.dispatchEvent(event);\n }),\n RCTDeviceEventEmitter.addListener('websocketClosed', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n this.readyState = this.CLOSED;\n var event = new WebSocketEvent('close');\n event.code = ev.code;\n event.reason = ev.reason;\n this.dispatchEvent(event);\n this._unregisterEvents();\n this.close();\n }),\n RCTDeviceEventEmitter.addListener('websocketFailed', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n var event = new WebSocketEvent('error');\n event.message = ev.message;\n this.dispatchEvent(event);\n\n event = new WebSocketEvent('close');\n event.message = ev.message;\n this.dispatchEvent(event);\n\n this._unregisterEvents();\n this.close();\n })\n ];\n }\n}\n\nmodule.exports = WebSocket;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/WebSocket/WebSocketEvent.js":{"metadata":{"mtime":1463609891000},"data":{"name":"WebSocketEvent","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nWebSocketEvent=\nfunction WebSocketEvent(type,eventInitDict){babelHelpers.classCallCheck(this,WebSocketEvent);\nthis.type=type.toString();\nbabelHelpers.extends(this,eventInitDict);};\n\n\n\nmodule.exports=WebSocketEvent;","map":null,"id":"WebSocketEvent","source":"/**\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 WebSocketEvent\n */\n\n'use strict';\n\n/**\n * Event object passed to the `onopen`, `onclose`, `onmessage`, `onerror`\n * callbacks of `WebSocket`.\n *\n * The `type` property is \"open\", \"close\", \"message\", \"error\" respectively.\n *\n * In case of \"message\", the `data` property contains the incoming data.\n */\nclass WebSocketEvent {\n constructor(type, eventInitDict) {\n this.type = type.toString();\n Object.assign(this, eventInitDict);\n }\n}\n\nmodule.exports = WebSocketEvent;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Vibration/Vibration.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Vibration","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[51,100],"dependencies":["NativeModules","Platform"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTVibration=require('NativeModules').Vibration;\nvar Platform=require('Platform');\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Vibration={\nvibrate:function vibrate(){var pattern=arguments.length<=0||arguments[0]===undefined?400:arguments[0];var repeat=arguments.length<=1||arguments[1]===undefined?false:arguments[1];\nif(Platform.OS==='android'){\nif(typeof pattern==='number'){\nRCTVibration.vibrate(pattern);}else \nif(Array.isArray(pattern)){\nRCTVibration.vibrateByPattern(pattern,repeat?0:-1);}else \n{\nthrow new Error('Vibration pattern should be a number or array');}}else \n\n{\nif(typeof pattern==='number'){\nRCTVibration.vibrate();}else \nif(Array.isArray(pattern)){\nconsole.warn('Vibration patterns are not supported on iOS');}else \n{\nthrow new Error('Vibration pattern should be a number or array');}}},\n\n\n\n\n\n\n\n\ncancel:function cancel(){\nif(Platform.OS==='ios'){\nconsole.warn('Vibration.cancel is not supported on iOS');}else \n{\nRCTVibration.cancel();}}};\n\n\n\n\nmodule.exports=Vibration;","map":null,"id":"Vibration","source":"/**\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 Vibration\n * @flow\n */\n'use strict';\n\nvar RCTVibration = require('NativeModules').Vibration;\nvar Platform = require('Platform');\n\n/**\n * The Vibration API is exposed at `Vibration.vibrate()`.\n * The vibration is asynchronous so this method will return immediately.\n *\n * There will be no effect on devices that do not support Vibration, eg. the simulator.\n *\n * Note for android\n * add `` to `AndroidManifest.xml`\n *\n * Vibration patterns are currently unsupported.\n */\n\nvar Vibration = {\n vibrate: function(pattern: number | Array = 400, repeat: boolean = false) {\n if (Platform.OS === 'android') {\n if (typeof pattern === 'number') {\n RCTVibration.vibrate(pattern);\n } else if (Array.isArray(pattern)) {\n RCTVibration.vibrateByPattern(pattern, repeat ? 0 : -1);\n } else {\n throw new Error('Vibration pattern should be a number or array');\n }\n } else {\n if (typeof pattern === 'number') {\n RCTVibration.vibrate();\n } else if (Array.isArray(pattern)) {\n console.warn('Vibration patterns are not supported on iOS');\n } else {\n throw new Error('Vibration pattern should be a number or array');\n }\n }\n },\n /**\n * Stop vibration\n *\n * @platform android\n */\n cancel: function() {\n if (Platform.OS === 'ios') {\n console.warn('Vibration.cancel is not supported on iOS');\n } else {\n RCTVibration.cancel();\n }\n }\n};\n\nmodule.exports = Vibration;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Vibration/VibrationIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"VibrationIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Vibration/VibrationIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"VibrationIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[51,102],"dependencies":["NativeModules","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTVibration=require('NativeModules').Vibration;\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar VibrationIOS={\n\n\n\nvibrate:function vibrate(){\ninvariant(\narguments[0]===undefined,\n'Vibration patterns not supported.');\n\nRCTVibration.vibrate();}};\n\n\n\nmodule.exports=VibrationIOS;","map":null,"id":"VibrationIOS","source":"/**\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 VibrationIOS\n * @flow\n */\n'use strict';\n\nvar RCTVibration = require('NativeModules').Vibration;\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * NOTE: `VibrationIOS` is being deprecated. Use `Vibration` instead.\n *\n * The Vibration API is exposed at `VibrationIOS.vibrate()`. On iOS, calling this\n * function will trigger a one second vibration. The vibration is asynchronous\n * so this method will return immediately.\n *\n * There will be no effect on devices that do not support Vibration, eg. the iOS\n * simulator.\n *\n * Vibration patterns are currently unsupported.\n */\n\nvar VibrationIOS = {\n /**\n * @deprecated\n */\n vibrate: function() {\n invariant(\n arguments[0] === undefined,\n 'Vibration patterns not supported.'\n );\n RCTVibration.vibrate();\n }\n};\n\nmodule.exports = VibrationIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/Alert.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Alert","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[47,81,126],"dependencies":["AlertIOS","Platform","NativeModules"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar AlertIOS=require('AlertIOS');\nvar Platform=require('Platform');\nvar DialogModuleAndroid=require('NativeModules').DialogManagerAndroid;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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nAlert=function(){function Alert(){babelHelpers.classCallCheck(this,Alert);}babelHelpers.createClass(Alert,null,[{key:'alert',value:function alert(\n\n\ntitle,\nmessage,\nbuttons,\ntype)\n{\nif(Platform.OS==='ios'){\nif(typeof type!=='undefined'){\nconsole.warn('Alert.alert() with a 4th \"type\" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.');\nAlertIOS.alert(title,message,buttons,type);\nreturn;}\n\nAlertIOS.alert(title,message,buttons);}else \nif(Platform.OS==='android'){\nAlertAndroid.alert(title,message,buttons);}}}]);return Alert;}();var \n\n\n\n\n\n\n\nAlertAndroid=function(){function AlertAndroid(){babelHelpers.classCallCheck(this,AlertAndroid);}babelHelpers.createClass(AlertAndroid,null,[{key:'alert',value:function alert(\n\n\ntitle,\nmessage,\nbuttons)\n{\nvar config={\ntitle:title||'',\nmessage:message||''};\n\n\n\nvar validButtons=buttons?buttons.slice(0,3):[{text:'OK'}];\nvar buttonPositive=validButtons.pop();\nvar buttonNegative=validButtons.pop();\nvar buttonNeutral=validButtons.pop();\nif(buttonNeutral){\nconfig=babelHelpers.extends({},config,{buttonNeutral:buttonNeutral.text||''});}\n\nif(buttonNegative){\nconfig=babelHelpers.extends({},config,{buttonNegative:buttonNegative.text||''});}\n\nif(buttonPositive){\nconfig=babelHelpers.extends({},config,{buttonPositive:buttonPositive.text||''});}\n\nDialogModuleAndroid.showAlert(\nconfig,\nfunction(errorMessage){return console.warn(message);},\nfunction(action,buttonKey){\nif(action!==DialogModuleAndroid.buttonClicked){\nreturn;}\n\nif(buttonKey===DialogModuleAndroid.buttonNeutral){\nbuttonNeutral.onPress&&buttonNeutral.onPress();}else \nif(buttonKey===DialogModuleAndroid.buttonNegative){\nbuttonNegative.onPress&&buttonNegative.onPress();}else \nif(buttonKey===DialogModuleAndroid.buttonPositive){\nbuttonPositive.onPress&&buttonPositive.onPress();}});}}]);return AlertAndroid;}();\n\n\n\n\n\n\nmodule.exports=Alert;","map":null,"id":"Alert","source":"/**\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 Alert\n * @flow\n */\n'use strict';\n\nvar AlertIOS = require('AlertIOS');\nvar Platform = require('Platform');\nvar DialogModuleAndroid = require('NativeModules').DialogManagerAndroid;\n\nimport type { AlertType, AlertButtonStyle } from 'AlertIOS';\n\ntype Buttons = Array<{\n text?: string;\n onPress?: ?Function;\n style?: AlertButtonStyle;\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 * This is an API that works both on iOS and Android and can show static\n * alerts. To show an alert that prompts the user to enter some information,\n * see `AlertIOS`; entering text in an alert is common on iOS only.\n *\n * ## iOS\n *\n * On iOS you can specify any number of buttons. Each button can optionally\n * specify a style, which is one of 'default', 'cancel' or 'destructive'.\n *\n * ## Android\n *\n * On Android at most three buttons can be specified. Android has a concept\n * of a neutral, negative and a positive button:\n *\n * - If you specify one button, it will be the 'positive' one (such as 'OK')\n * - Two buttons mean 'negative', 'positive' (such as 'Cancel', 'OK')\n * - Three buttons mean 'neutral', 'negative', 'positive' (such as 'Later', 'Cancel', 'OK')\n *\n * ```\n * // Works on both iOS and Android\n * Alert.alert(\n * 'Alert Title',\n * 'My Alert Msg',\n * [\n * {text: 'Ask me later', onPress: () => console.log('Ask me later pressed')},\n * {text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},\n * {text: 'OK', onPress: () => console.log('OK Pressed')},\n * ]\n * )\n * ```\n */\nclass Alert {\n\n static alert(\n title: ?string,\n message?: ?string,\n buttons?: Buttons,\n type?: AlertType,\n ): void {\n if (Platform.OS === 'ios') {\n if (typeof type !== 'undefined') {\n console.warn('Alert.alert() with a 4th \"type\" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.');\n AlertIOS.alert(title, message, buttons, type);\n return;\n }\n AlertIOS.alert(title, message, buttons);\n } else if (Platform.OS === 'android') {\n AlertAndroid.alert(title, message, buttons);\n }\n }\n}\n\n/**\n * Wrapper around the Android native module.\n */\nclass AlertAndroid {\n\n static alert(\n title: ?string,\n message?: ?string,\n buttons?: Buttons,\n ): void {\n var config = {\n title: title || '',\n message: message || '',\n };\n // At most three buttons (neutral, negative, positive). Ignore rest.\n // The text 'OK' should be probably localized. iOS Alert does that in native.\n var validButtons: Buttons = buttons ? buttons.slice(0, 3) : [{text: 'OK'}];\n var buttonPositive = validButtons.pop();\n var buttonNegative = validButtons.pop();\n var buttonNeutral = validButtons.pop();\n if (buttonNeutral) {\n config = {...config, buttonNeutral: buttonNeutral.text || '' }\n }\n if (buttonNegative) {\n config = {...config, buttonNegative: buttonNegative.text || '' }\n }\n if (buttonPositive) {\n config = {...config, buttonPositive: buttonPositive.text || '' }\n }\n DialogModuleAndroid.showAlert(\n config,\n (errorMessage) => console.warn(message),\n (action, buttonKey) => {\n if (action !== DialogModuleAndroid.buttonClicked) {\n return;\n }\n if (buttonKey === DialogModuleAndroid.buttonNeutral) {\n buttonNeutral.onPress && buttonNeutral.onPress();\n } else if (buttonKey === DialogModuleAndroid.buttonNegative) {\n buttonNegative.onPress && buttonNegative.onPress();\n } else if (buttonKey === DialogModuleAndroid.buttonPositive) {\n buttonPositive.onPress && buttonPositive.onPress();\n }\n }\n );\n }\n}\n\nmodule.exports = Alert;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/AlertIOS.js":{"metadata":{"mtime":1463609891000},"data":{"name":"AlertIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[54],"dependencies":["NativeModules"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTAlertManager=require('NativeModules').AlertManager;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\nAlertIOS=function(){function AlertIOS(){babelHelpers.classCallCheck(this,AlertIOS);}babelHelpers.createClass(AlertIOS,null,[{key:'alert',value:function alert(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntitle,\nmessage,\ncallbackOrButtons,\ntype)\n{\nif(typeof type!=='undefined'){\nconsole.warn('AlertIOS.alert() with a 4th \"type\" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.');\nthis.prompt(title,message,callbackOrButtons,type);\nreturn;}\n\nthis.prompt(title,message,callbackOrButtons,'default');}},{key:'prompt',value:function prompt(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntitle,\nmessage,\ncallbackOrButtons)\n\n\n{var type=arguments.length<=3||arguments[3]===undefined?'plain-text':arguments[3];var defaultValue=arguments[4];\nif(typeof type==='function'){\nconsole.warn(\n'You passed a callback function as the \"type\" argument to AlertIOS.prompt(). React Native is '+\n'assuming you want to use the deprecated AlertIOS.prompt(title, defaultValue, buttons, callback) '+\n'signature. The current signature is AlertIOS.prompt(title, message, callbackOrButtons, type, defaultValue) '+\n'and the old syntax will be removed in a future version.');\n\nvar callback=type;\nvar defaultValue=message;\nRCTAlertManager.alertWithArgs({\ntitle:title||undefined,\ntype:'plain-text',\ndefaultValue:defaultValue},\nfunction(id,value){\ncallback(value);});\n\nreturn;}\n\n\nvar callbacks=[];\nvar buttons=[];\nvar cancelButtonKey;\nvar destructiveButtonKey;\nif(typeof callbackOrButtons==='function'){\ncallbacks=[callbackOrButtons];}else \n\nif(callbackOrButtons instanceof Array){\ncallbackOrButtons.forEach(function(btn,index){\ncallbacks[index]=btn.onPress;\nif(btn.style==='cancel'){\ncancelButtonKey=String(index);}else \nif(btn.style==='destructive'){\ndestructiveButtonKey=String(index);}\n\nif(btn.text||index<(callbackOrButtons||[]).length-1){\nvar btnDef={};\nbtnDef[index]=btn.text||'';\nbuttons.push(btnDef);}});}\n\n\n\n\nRCTAlertManager.alertWithArgs({\ntitle:title||undefined,\nmessage:message||undefined,\nbuttons:buttons,\ntype:type||undefined,\ndefaultValue:defaultValue,\ncancelButtonKey:cancelButtonKey,\ndestructiveButtonKey:destructiveButtonKey},\nfunction(id,value){\nvar cb=callbacks[id];\ncb&&cb(value);});}}]);return AlertIOS;}();\n\n\n\n\nmodule.exports=AlertIOS;","map":null,"id":"AlertIOS","source":"/**\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;\n\nexport type AlertType = $Enum<{\n 'default': string;\n 'plain-text': string;\n 'secure-text': string;\n 'login-password': string;\n}>;\n\nexport type AlertButtonStyle = $Enum<{\n 'default': string;\n 'cancel': string;\n 'destructive': string;\n}>;\n\ntype ButtonsArray = Array<{\n text?: string;\n onPress?: ?Function;\n style?: AlertButtonStyle;\n}>;\n\n/**\n * The AlertsIOS utility provides two functions: `alert` and `prompt`. All\n * functionality available through `AlertIOS.alert` is also available in the\n * cross-platform `Alert.alert`, which we recommend you use if you don't need\n * iOS-specific functionality.\n *\n * `AlertIOS.prompt` allows you to prompt the user for input inside of an\n * alert popup.\n *\n */\nclass AlertIOS {\n /**\n * Creates a popup to alert the user. See\n * [Alert](docs/alert.html).\n *\n * - title: string -- The dialog's title.\n * - message: string -- An optional message that appears above the text input.\n * - callbackOrButtons -- This optional argument should be either a\n * single-argument function or an array of buttons. If passed a function,\n * it will be called when the user taps 'OK'.\n *\n * If passed an array of button configurations, each button should include\n * a `text` key, as well as optional `onPress` and `style` keys.\n * `style` should be one of 'default', 'cancel' or 'destructive'.\n * - type -- *deprecated, do not use*\n *\n * Example:\n *\n * ```\n * AlertIOS.alert(\n * 'Sync Complete',\n * 'All your data are belong to us.'\n * );\n * ```\n */\n static alert(\n title: ?string,\n message?: ?string,\n callbackOrButtons?: ?(() => void) | ButtonsArray,\n type?: AlertType,\n ): void {\n if (typeof type !== 'undefined') {\n console.warn('AlertIOS.alert() with a 4th \"type\" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.');\n this.prompt(title, message, callbackOrButtons, type);\n return;\n }\n this.prompt(title, message, callbackOrButtons, 'default');\n }\n\n /**\n * Prompt the user to enter some text.\n *\n * - title: string -- The dialog's title.\n * - message: string -- An optional message that appears above the text input.\n * - callbackOrButtons -- This optional argument should be either a\n * single-argument function or an array of buttons. If passed a function,\n * it will be called with the prompt's value when the user taps 'OK'.\n *\n * If passed an array of button configurations, each button should include\n * a `text` key, as well as optional `onPress` and `style` keys (see example).\n * `style` should be one of 'default', 'cancel' or 'destructive'.\n * - type: string -- This configures the text input. One of 'plain-text',\n * 'secure-text' or 'login-password'.\n * - defaultValue: string -- the default value for the text field.\n *\n * Example with custom buttons:\n * ```\n * AlertIOS.prompt(\n * 'Enter password',\n * 'Enter your password to claim your $1.5B in lottery winnings',\n * [\n * {text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},\n * {text: 'OK', onPress: password => console.log('OK Pressed, password: ' + password)},\n * ],\n * 'secure-text'\n * );\n * ```\n *\n * Example with the default button and a custom callback:\n * ```\n * AlertIOS.prompt(\n * 'Update username',\n * null,\n * text => console.log(\"Your username is \"+text),\n * null,\n * 'default'\n * )\n * ```\n */\n static prompt(\n title: ?string,\n message?: ?string,\n callbackOrButtons?: ?((text: string) => void) | ButtonsArray,\n type?: ?AlertType = 'plain-text',\n defaultValue?: string,\n ): void {\n if (typeof type === 'function') {\n console.warn(\n 'You passed a callback function as the \"type\" argument to AlertIOS.prompt(). React Native is ' +\n 'assuming you want to use the deprecated AlertIOS.prompt(title, defaultValue, buttons, callback) ' +\n 'signature. The current signature is AlertIOS.prompt(title, message, callbackOrButtons, type, defaultValue) ' +\n 'and the old syntax will be removed in a future version.');\n\n var callback = type;\n var defaultValue = message;\n RCTAlertManager.alertWithArgs({\n title: title || undefined,\n type: 'plain-text',\n defaultValue,\n }, (id, value) => {\n callback(value);\n });\n return;\n }\n\n var callbacks = [];\n var buttons = [];\n var cancelButtonKey;\n var destructiveButtonKey;\n if (typeof callbackOrButtons === 'function') {\n callbacks = [callbackOrButtons];\n }\n else if (callbackOrButtons instanceof Array) {\n callbackOrButtons.forEach((btn, index) => {\n callbacks[index] = btn.onPress;\n if (btn.style === 'cancel') {\n cancelButtonKey = String(index);\n } else if (btn.style === 'destructive') {\n destructiveButtonKey = String(index);\n }\n if (btn.text || index < (callbackOrButtons || []).length - 1) {\n var btnDef = {};\n btnDef[index] = btn.text || '';\n buttons.push(btnDef);\n }\n });\n }\n\n RCTAlertManager.alertWithArgs({\n title: title || undefined,\n message: message || undefined,\n buttons,\n type: type || undefined,\n defaultValue,\n cancelButtonKey,\n destructiveButtonKey,\n }, (id, value) => {\n var cb = callbacks[id];\n cb && cb(value);\n });\n }\n}\n\nmodule.exports = AlertIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/BackAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"BackAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/BackAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"BackAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction emptyFunction(){}\n\nvar BackAndroid={\nexitApp:emptyFunction,\naddEventListener:emptyFunction,\nremoveEventListener:emptyFunction};\n\n\nmodule.exports=BackAndroid;","map":null,"id":"BackAndroid","source":"/**\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 * iOS stub for BackAndroid.android.js\n *\n * @providesModule BackAndroid\n */\n\n'use strict';\n\nfunction emptyFunction() {}\n\nconst BackAndroid = {\n exitApp: emptyFunction,\n addEventListener: emptyFunction,\n removeEventListener: emptyFunction,\n};\n\nmodule.exports = BackAndroid;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/buildStyleInterpolator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"buildStyleInterpolator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[29],"dependencies":["fbjs/lib/keyOf"],"code":"var \n\n\n\n\n\n\n\n\n\n\nkeyOf=require('fbjs/lib/keyOf');\n\nvar X_DIM=keyOf({x:null});\nvar Y_DIM=keyOf({y:null});\nvar Z_DIM=keyOf({z:null});\nvar W_DIM=keyOf({w:null});\n\nvar TRANSFORM_ROTATE_NAME=keyOf({transformRotateRadians:null});\n\nvar ShouldAllocateReusableOperationVars={\ntransformRotateRadians:true,\ntransformScale:true,\ntransformTranslate:true};\n\n\nvar InitialOperationField={\ntransformRotateRadians:[0,0,0,1],\ntransformTranslate:[0,0,0],\ntransformScale:[1,1,1]};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 ARGUMENT_NAMES_RE=/([^\\s,]+)/g;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar inline=function inline(func,replaceWithArgs){\nvar fnStr=func.toString();\nvar parameterNames=fnStr.slice(fnStr.indexOf('(')+1,fnStr.indexOf(')')).\nmatch(ARGUMENT_NAMES_RE)||\n[];\nvar replaceRegexStr=parameterNames.map(function(paramName){\nreturn '\\\\b'+paramName+'\\\\b';}).\njoin('|');\nvar replaceRegex=new RegExp(replaceRegexStr,'g');\nvar fnBody=fnStr.substring(fnStr.indexOf('{')+1,fnStr.lastIndexOf('}'));\nvar newFnBody=fnBody.replace(replaceRegex,function(parameterName){\nvar indexInParameterNames=parameterNames.indexOf(parameterName);\nvar replacementName=replaceWithArgs[indexInParameterNames];\nreturn replacementName;});\n\nreturn newFnBody.split('\\n');};\n\n\n\n\n\n\nvar MatrixOps={\nunroll:function unroll(matVar,m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15){\nm0=matVar[0];\nm1=matVar[1];\nm2=matVar[2];\nm3=matVar[3];\nm4=matVar[4];\nm5=matVar[5];\nm6=matVar[6];\nm7=matVar[7];\nm8=matVar[8];\nm9=matVar[9];\nm10=matVar[10];\nm11=matVar[11];\nm12=matVar[12];\nm13=matVar[13];\nm14=matVar[14];\nm15=matVar[15];},\n\n\nmatrixDiffers:function matrixDiffers(retVar,matVar,m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15){\nretVar=retVar||\nm0!==matVar[0]||\nm1!==matVar[1]||\nm2!==matVar[2]||\nm3!==matVar[3]||\nm4!==matVar[4]||\nm5!==matVar[5]||\nm6!==matVar[6]||\nm7!==matVar[7]||\nm8!==matVar[8]||\nm9!==matVar[9]||\nm10!==matVar[10]||\nm11!==matVar[11]||\nm12!==matVar[12]||\nm13!==matVar[13]||\nm14!==matVar[14]||\nm15!==matVar[15];},\n\n\ntransformScale:function transformScale(matVar,opVar){\n\nvar x=opVar[0];\nvar y=opVar[1];\nvar z=opVar[2];\nmatVar[0]=matVar[0]*x;\nmatVar[1]=matVar[1]*x;\nmatVar[2]=matVar[2]*x;\nmatVar[3]=matVar[3]*x;\nmatVar[4]=matVar[4]*y;\nmatVar[5]=matVar[5]*y;\nmatVar[6]=matVar[6]*y;\nmatVar[7]=matVar[7]*y;\nmatVar[8]=matVar[8]*z;\nmatVar[9]=matVar[9]*z;\nmatVar[10]=matVar[10]*z;\nmatVar[11]=matVar[11]*z;\nmatVar[12]=matVar[12];\nmatVar[13]=matVar[13];\nmatVar[14]=matVar[14];\nmatVar[15]=matVar[15];},\n\n\n\n\n\n\ntransformTranslate:function transformTranslate(matVar,opVar){\n\nvar x=opVar[0];\nvar y=opVar[1];\nvar z=opVar[2];\nmatVar[12]=matVar[0]*x+matVar[4]*y+matVar[8]*z+matVar[12];\nmatVar[13]=matVar[1]*x+matVar[5]*y+matVar[9]*z+matVar[13];\nmatVar[14]=matVar[2]*x+matVar[6]*y+matVar[10]*z+matVar[14];\nmatVar[15]=matVar[3]*x+matVar[7]*y+matVar[11]*z+matVar[15];},\n\n\n\n\n\n\ntransformRotateRadians:function transformRotateRadians(matVar,q){\n\nvar xQuat=q[0],yQuat=q[1],zQuat=q[2],wQuat=q[3];\nvar x2Quat=xQuat+xQuat;\nvar y2Quat=yQuat+yQuat;\nvar z2Quat=zQuat+zQuat;\nvar xxQuat=xQuat*x2Quat;\nvar xyQuat=xQuat*y2Quat;\nvar xzQuat=xQuat*z2Quat;\nvar yyQuat=yQuat*y2Quat;\nvar yzQuat=yQuat*z2Quat;\nvar zzQuat=zQuat*z2Quat;\nvar wxQuat=wQuat*x2Quat;\nvar wyQuat=wQuat*y2Quat;\nvar wzQuat=wQuat*z2Quat;\n\nvar quatMat0=1-(yyQuat+zzQuat);\nvar quatMat1=xyQuat+wzQuat;\nvar quatMat2=xzQuat-wyQuat;\nvar quatMat4=xyQuat-wzQuat;\nvar quatMat5=1-(xxQuat+zzQuat);\nvar quatMat6=yzQuat+wxQuat;\nvar quatMat8=xzQuat+wyQuat;\nvar quatMat9=yzQuat-wxQuat;\nvar quatMat10=1-(xxQuat+yyQuat);\n\n\n\nvar a00=matVar[0];\nvar a01=matVar[1];\nvar a02=matVar[2];\nvar a03=matVar[3];\nvar a10=matVar[4];\nvar a11=matVar[5];\nvar a12=matVar[6];\nvar a13=matVar[7];\nvar a20=matVar[8];\nvar a21=matVar[9];\nvar a22=matVar[10];\nvar a23=matVar[11];\n\nvar b0=quatMat0,b1=quatMat1,b2=quatMat2;\nmatVar[0]=b0*a00+b1*a10+b2*a20;\nmatVar[1]=b0*a01+b1*a11+b2*a21;\nmatVar[2]=b0*a02+b1*a12+b2*a22;\nmatVar[3]=b0*a03+b1*a13+b2*a23;\nb0=quatMat4;b1=quatMat5;b2=quatMat6;\nmatVar[4]=b0*a00+b1*a10+b2*a20;\nmatVar[5]=b0*a01+b1*a11+b2*a21;\nmatVar[6]=b0*a02+b1*a12+b2*a22;\nmatVar[7]=b0*a03+b1*a13+b2*a23;\nb0=quatMat8;b1=quatMat9;b2=quatMat10;\nmatVar[8]=b0*a00+b1*a10+b2*a20;\nmatVar[9]=b0*a01+b1*a11+b2*a21;\nmatVar[10]=b0*a02+b1*a12+b2*a22;\nmatVar[11]=b0*a03+b1*a13+b2*a23;}};\n\n\n\n\n\nvar MatrixOpsInitial={\ntransformScale:function transformScale(matVar,opVar){\n\nmatVar[0]=opVar[0];\nmatVar[1]=0;\nmatVar[2]=0;\nmatVar[3]=0;\nmatVar[4]=0;\nmatVar[5]=opVar[1];\nmatVar[6]=0;\nmatVar[7]=0;\nmatVar[8]=0;\nmatVar[9]=0;\nmatVar[10]=opVar[2];\nmatVar[11]=0;\nmatVar[12]=0;\nmatVar[13]=0;\nmatVar[14]=0;\nmatVar[15]=1;},\n\n\ntransformTranslate:function transformTranslate(matVar,opVar){\n\nmatVar[0]=1;\nmatVar[1]=0;\nmatVar[2]=0;\nmatVar[3]=0;\nmatVar[4]=0;\nmatVar[5]=1;\nmatVar[6]=0;\nmatVar[7]=0;\nmatVar[8]=0;\nmatVar[9]=0;\nmatVar[10]=1;\nmatVar[11]=0;\nmatVar[12]=opVar[0];\nmatVar[13]=opVar[1];\nmatVar[14]=opVar[2];\nmatVar[15]=1;},\n\n\n\n\n\n\n\ntransformRotateRadians:function transformRotateRadians(matVar,q){\n\n\nvar xQuat=q[0],yQuat=q[1],zQuat=q[2],wQuat=q[3];\nvar x2Quat=xQuat+xQuat;\nvar y2Quat=yQuat+yQuat;\nvar z2Quat=zQuat+zQuat;\nvar xxQuat=xQuat*x2Quat;\nvar xyQuat=xQuat*y2Quat;\nvar xzQuat=xQuat*z2Quat;\nvar yyQuat=yQuat*y2Quat;\nvar yzQuat=yQuat*z2Quat;\nvar zzQuat=zQuat*z2Quat;\nvar wxQuat=wQuat*x2Quat;\nvar wyQuat=wQuat*y2Quat;\nvar wzQuat=wQuat*z2Quat;\n\nvar quatMat0=1-(yyQuat+zzQuat);\nvar quatMat1=xyQuat+wzQuat;\nvar quatMat2=xzQuat-wyQuat;\nvar quatMat4=xyQuat-wzQuat;\nvar quatMat5=1-(xxQuat+zzQuat);\nvar quatMat6=yzQuat+wxQuat;\nvar quatMat8=xzQuat+wyQuat;\nvar quatMat9=yzQuat-wxQuat;\nvar quatMat10=1-(xxQuat+yyQuat);\n\n\n\nvar b0=quatMat0,b1=quatMat1,b2=quatMat2;\nmatVar[0]=b0;\nmatVar[1]=b1;\nmatVar[2]=b2;\nmatVar[3]=0;\nb0=quatMat4;b1=quatMat5;b2=quatMat6;\nmatVar[4]=b0;\nmatVar[5]=b1;\nmatVar[6]=b2;\nmatVar[7]=0;\nb0=quatMat8;b1=quatMat9;b2=quatMat10;\nmatVar[8]=b0;\nmatVar[9]=b1;\nmatVar[10]=b2;\nmatVar[11]=0;\nmatVar[12]=0;\nmatVar[13]=0;\nmatVar[14]=0;\nmatVar[15]=1;}};\n\n\n\n\nvar setNextValAndDetectChange=function setNextValAndDetectChange(name,tmpVarName){\nreturn (\n' if (!didChange) {\\n'+\n' var prevVal = result.'+name+';\\n'+\n' result.'+name+' = '+tmpVarName+';\\n'+\n' didChange = didChange || ('+tmpVarName+' !== prevVal);\\n'+\n' } else {\\n'+\n' result.'+name+' = '+tmpVarName+';\\n'+\n' }\\n');};\n\n\n\nvar computeNextValLinear=function computeNextValLinear(anim,from,to,tmpVarName){\nvar hasRoundRatio='round' in anim;\nvar roundRatio=anim.round;\nvar fn=' ratio = (value - '+anim.min+') / '+(anim.max-anim.min)+';\\n';\nif(!anim.extrapolate){\nfn+=' ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\\n';}\n\n\nvar roundOpen=hasRoundRatio?'Math.round('+roundRatio+' * ':'';\nvar roundClose=hasRoundRatio?') / '+roundRatio:'';\nfn+=\n' '+tmpVarName+' = '+\nroundOpen+\n'('+from+' * (1 - ratio) + '+to+' * ratio)'+\nroundClose+';\\n';\nreturn fn;};\n\n\nvar computeNextValLinearScalar=function computeNextValLinearScalar(anim){\nreturn computeNextValLinear(anim,anim.from,anim.to,'nextScalarVal');};\n\n\nvar computeNextValConstant=function computeNextValConstant(anim){\nvar constantExpression=JSON.stringify(anim.value);\nreturn ' nextScalarVal = '+constantExpression+';\\n';};\n\n\nvar computeNextValStep=function computeNextValStep(anim){\nreturn (\n' nextScalarVal = value >= '+(\nanim.threshold+' ? '+anim.to+' : '+anim.from)+';\\n');};\n\n\n\nvar computeNextValIdentity=function computeNextValIdentity(anim){\nreturn ' nextScalarVal = value;\\n';};\n\n\nvar operationVar=function operationVar(name){\nreturn name+'ReuseOp';};\n\n\nvar createReusableOperationVars=function createReusableOperationVars(anims){\nvar ret='';\nfor(var name in anims){\nif(ShouldAllocateReusableOperationVars[name]){\nret+='var '+operationVar(name)+' = [];\\n';}}\n\n\nreturn ret;};\n\n\nvar newlines=function newlines(statements){\nreturn '\\n'+statements.join('\\n')+'\\n';};\n\n\n\n\n\n\n\n\nvar computeNextMatrixOperationField=function computeNextMatrixOperationField(anim,name,dimension,index){\nvar fieldAccess=operationVar(name)+'['+index+']';\nif(anim.from[dimension]!==undefined&&anim.to[dimension]!==undefined){\nreturn ' '+anim.from[dimension]!==anim.to[dimension]?\ncomputeNextValLinear(anim,anim.from[dimension],anim.to[dimension],fieldAccess):\nfieldAccess+' = '+anim.from[dimension]+';';}else \n{\nreturn ' '+fieldAccess+' = '+InitialOperationField[name][index]+';';}};\n\n\n\nvar unrolledVars=[];\nfor(var varIndex=0;varIndex<16;varIndex++){\nunrolledVars.push('m'+varIndex);}\n\nvar setNextMatrixAndDetectChange=function setNextMatrixAndDetectChange(orderedMatrixOperations){\nvar fn=[\n' var transform = result.transform !== undefined ? '+\n'result.transform : (result.transform = [{ matrix: [] }]);'+\n' var transformMatrix = transform[0].matrix;'];\n\nfn.push.apply(\nfn,\ninline(MatrixOps.unroll,['transformMatrix'].concat(unrolledVars)));\n\nfor(var i=0;i 1 ? 1 : (ratio < 0 ? 0 : ratio);\n * nextScalarVal = Math.round(100 * (1 * (1 - ratio) + 0.7 * ratio)) / 100;\n * if (!didChange) {\n * var prevVal = result.opacity;\n * result.opacity = nextScalarVal;\n * didChange = didChange || (nextScalarVal !== prevVal);\n * } else {\n * result.opacity = nextScalarVal;\n * }\n * ratio = (value - 0) / 1;\n * nextScalarVal = Math.round(2 * (0 * (1 - ratio) + -30 * ratio)) / 2;\n * if (!didChange) {\n * var prevVal = result.left;\n * result.left = nextScalarVal;\n * didChange = didChange || (nextScalarVal !== prevVal);\n * } else {\n * result.left = nextScalarVal;\n * }\n * return didChange;\n * }\n */\n\nvar ARGUMENT_NAMES_RE = /([^\\s,]+)/g;\n/**\n * This is obviously a huge hack. Proper tooling would allow actual inlining.\n * This only works in a few limited cases (where there is no function return\n * value, and the function operates mutatively on parameters).\n *\n * Example:\n *\n *\n * var inlineMe(a, b) {\n * a = b + b;\n * };\n *\n * inline(inlineMe, ['hi', 'bye']); // \"hi = bye + bye;\"\n *\n * @param {function} func Any simple function who's arguments can be replaced via a regex.\n * @param {array} replaceWithArgs Corresponding names of variables\n * within an environment, to replace `func` args with.\n * @return {string} Resulting function body string.\n */\nvar inline = function(func, replaceWithArgs) {\n var fnStr = func.toString();\n var parameterNames = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\n .match(ARGUMENT_NAMES_RE) ||\n [];\n var replaceRegexStr = parameterNames.map(function(paramName) {\n return '\\\\b' + paramName + '\\\\b';\n }).join('|');\n var replaceRegex = new RegExp(replaceRegexStr, 'g');\n var fnBody = fnStr.substring(fnStr.indexOf('{') + 1, fnStr.lastIndexOf('}'));\n var newFnBody = fnBody.replace(replaceRegex, function(parameterName) {\n var indexInParameterNames = parameterNames.indexOf(parameterName);\n var replacementName = replaceWithArgs[indexInParameterNames];\n return replacementName;\n });\n return newFnBody.split('\\n');\n};\n\n/**\n * Simply a convenient way to inline functions using the function's toString\n * method.\n */\nvar MatrixOps = {\n unroll: function(matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n m0 = matVar[0];\n m1 = matVar[1];\n m2 = matVar[2];\n m3 = matVar[3];\n m4 = matVar[4];\n m5 = matVar[5];\n m6 = matVar[6];\n m7 = matVar[7];\n m8 = matVar[8];\n m9 = matVar[9];\n m10 = matVar[10];\n m11 = matVar[11];\n m12 = matVar[12];\n m13 = matVar[13];\n m14 = matVar[14];\n m15 = matVar[15];\n },\n\n matrixDiffers: function(retVar, matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n retVar = retVar ||\n m0 !== matVar[0] ||\n m1 !== matVar[1] ||\n m2 !== matVar[2] ||\n m3 !== matVar[3] ||\n m4 !== matVar[4] ||\n m5 !== matVar[5] ||\n m6 !== matVar[6] ||\n m7 !== matVar[7] ||\n m8 !== matVar[8] ||\n m9 !== matVar[9] ||\n m10 !== matVar[10] ||\n m11 !== matVar[11] ||\n m12 !== matVar[12] ||\n m13 !== matVar[13] ||\n m14 !== matVar[14] ||\n m15 !== matVar[15];\n },\n\n transformScale: function(matVar, opVar) {\n // Scaling matVar by opVar\n var x = opVar[0];\n var y = opVar[1];\n var z = opVar[2];\n matVar[0] = matVar[0] * x;\n matVar[1] = matVar[1] * x;\n matVar[2] = matVar[2] * x;\n matVar[3] = matVar[3] * x;\n matVar[4] = matVar[4] * y;\n matVar[5] = matVar[5] * y;\n matVar[6] = matVar[6] * y;\n matVar[7] = matVar[7] * y;\n matVar[8] = matVar[8] * z;\n matVar[9] = matVar[9] * z;\n matVar[10] = matVar[10] * z;\n matVar[11] = matVar[11] * z;\n matVar[12] = matVar[12];\n matVar[13] = matVar[13];\n matVar[14] = matVar[14];\n matVar[15] = matVar[15];\n },\n\n /**\n * All of these matrix transforms are not general purpose utilities, and are\n * only suitable for being inlined for the use of building up interpolators.\n */\n transformTranslate: function(matVar, opVar) {\n // Translating matVar by opVar\n var x = opVar[0];\n var y = opVar[1];\n var z = opVar[2];\n matVar[12] = matVar[0] * x + matVar[4] * y + matVar[8] * z + matVar[12];\n matVar[13] = matVar[1] * x + matVar[5] * y + matVar[9] * z + matVar[13];\n matVar[14] = matVar[2] * x + matVar[6] * y + matVar[10] * z + matVar[14];\n matVar[15] = matVar[3] * x + matVar[7] * y + matVar[11] * z + matVar[15];\n },\n\n /**\n * @param {array} matVar Both the input, and the output matrix.\n * @param {quaternion specification} q Four element array describing rotation.\n */\n transformRotateRadians: function(matVar, q) {\n // Rotating matVar by q\n var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];\n var x2Quat = xQuat + xQuat;\n var y2Quat = yQuat + yQuat;\n var z2Quat = zQuat + zQuat;\n var xxQuat = xQuat * x2Quat;\n var xyQuat = xQuat * y2Quat;\n var xzQuat = xQuat * z2Quat;\n var yyQuat = yQuat * y2Quat;\n var yzQuat = yQuat * z2Quat;\n var zzQuat = zQuat * z2Quat;\n var wxQuat = wQuat * x2Quat;\n var wyQuat = wQuat * y2Quat;\n var wzQuat = wQuat * z2Quat;\n // Step 1: Inlines the construction of a quaternion matrix (`quatMat`)\n var quatMat0 = 1 - (yyQuat + zzQuat);\n var quatMat1 = xyQuat + wzQuat;\n var quatMat2 = xzQuat - wyQuat;\n var quatMat4 = xyQuat - wzQuat;\n var quatMat5 = 1 - (xxQuat + zzQuat);\n var quatMat6 = yzQuat + wxQuat;\n var quatMat8 = xzQuat + wyQuat;\n var quatMat9 = yzQuat - wxQuat;\n var quatMat10 = 1 - (xxQuat + yyQuat);\n // quatMat3/7/11/12/13/14 = 0, quatMat15 = 1\n\n // Step 2: Inlines multiplication, takes advantage of constant quatMat cells\n var a00 = matVar[0];\n var a01 = matVar[1];\n var a02 = matVar[2];\n var a03 = matVar[3];\n var a10 = matVar[4];\n var a11 = matVar[5];\n var a12 = matVar[6];\n var a13 = matVar[7];\n var a20 = matVar[8];\n var a21 = matVar[9];\n var a22 = matVar[10];\n var a23 = matVar[11];\n\n var b0 = quatMat0, b1 = quatMat1, b2 = quatMat2;\n matVar[0] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[1] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[2] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[3] = b0 * a03 + b1 * a13 + b2 * a23;\n b0 = quatMat4; b1 = quatMat5; b2 = quatMat6;\n matVar[4] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[5] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[6] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[7] = b0 * a03 + b1 * a13 + b2 * a23;\n b0 = quatMat8; b1 = quatMat9; b2 = quatMat10;\n matVar[8] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[9] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[10] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[11] = b0 * a03 + b1 * a13 + b2 * a23;\n }\n};\n\n// Optimized version of general operation applications that can be used when\n// the target matrix is known to be the identity matrix.\nvar MatrixOpsInitial = {\n transformScale: function(matVar, opVar) {\n // Scaling matVar known to be identity by opVar\n matVar[0] = opVar[0];\n matVar[1] = 0;\n matVar[2] = 0;\n matVar[3] = 0;\n matVar[4] = 0;\n matVar[5] = opVar[1];\n matVar[6] = 0;\n matVar[7] = 0;\n matVar[8] = 0;\n matVar[9] = 0;\n matVar[10] = opVar[2];\n matVar[11] = 0;\n matVar[12] = 0;\n matVar[13] = 0;\n matVar[14] = 0;\n matVar[15] = 1;\n },\n\n transformTranslate: function(matVar, opVar) {\n // Translating matVar known to be identity by opVar';\n matVar[0] = 1;\n matVar[1] = 0;\n matVar[2] = 0;\n matVar[3] = 0;\n matVar[4] = 0;\n matVar[5] = 1;\n matVar[6] = 0;\n matVar[7] = 0;\n matVar[8] = 0;\n matVar[9] = 0;\n matVar[10] = 1;\n matVar[11] = 0;\n matVar[12] = opVar[0];\n matVar[13] = opVar[1];\n matVar[14] = opVar[2];\n matVar[15] = 1;\n },\n\n /**\n * @param {array} matVar Both the input, and the output matrix - assumed to be\n * identity.\n * @param {quaternion specification} q Four element array describing rotation.\n */\n transformRotateRadians: function(matVar, q) {\n\n // Rotating matVar which is known to be identity by q\n var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];\n var x2Quat = xQuat + xQuat;\n var y2Quat = yQuat + yQuat;\n var z2Quat = zQuat + zQuat;\n var xxQuat = xQuat * x2Quat;\n var xyQuat = xQuat * y2Quat;\n var xzQuat = xQuat * z2Quat;\n var yyQuat = yQuat * y2Quat;\n var yzQuat = yQuat * z2Quat;\n var zzQuat = zQuat * z2Quat;\n var wxQuat = wQuat * x2Quat;\n var wyQuat = wQuat * y2Quat;\n var wzQuat = wQuat * z2Quat;\n // Step 1: Inlines the construction of a quaternion matrix (`quatMat`)\n var quatMat0 = 1 - (yyQuat + zzQuat);\n var quatMat1 = xyQuat + wzQuat;\n var quatMat2 = xzQuat - wyQuat;\n var quatMat4 = xyQuat - wzQuat;\n var quatMat5 = 1 - (xxQuat + zzQuat);\n var quatMat6 = yzQuat + wxQuat;\n var quatMat8 = xzQuat + wyQuat;\n var quatMat9 = yzQuat - wxQuat;\n var quatMat10 = 1 - (xxQuat + yyQuat);\n // quatMat3/7/11/12/13/14 = 0, quatMat15 = 1\n\n // Step 2: Inlines the multiplication with identity matrix.\n var b0 = quatMat0, b1 = quatMat1, b2 = quatMat2;\n matVar[0] = b0;\n matVar[1] = b1;\n matVar[2] = b2;\n matVar[3] = 0;\n b0 = quatMat4; b1 = quatMat5; b2 = quatMat6;\n matVar[4] = b0;\n matVar[5] = b1;\n matVar[6] = b2;\n matVar[7] = 0;\n b0 = quatMat8; b1 = quatMat9; b2 = quatMat10;\n matVar[8] = b0;\n matVar[9] = b1;\n matVar[10] = b2;\n matVar[11] = 0;\n matVar[12] = 0;\n matVar[13] = 0;\n matVar[14] = 0;\n matVar[15] = 1;\n }\n};\n\n\nvar setNextValAndDetectChange = function(name, tmpVarName) {\n return (\n ' if (!didChange) {\\n' +\n ' var prevVal = result.' + name + ';\\n' +\n ' result.' + name + ' = ' + tmpVarName + ';\\n' +\n ' didChange = didChange || (' + tmpVarName + ' !== prevVal);\\n' +\n ' } else {\\n' +\n ' result.' + name + ' = ' + tmpVarName + ';\\n' +\n ' }\\n'\n );\n};\n\nvar computeNextValLinear = function(anim, from, to, tmpVarName) {\n var hasRoundRatio = 'round' in anim;\n var roundRatio = anim.round;\n var fn = ' ratio = (value - ' + anim.min + ') / ' + (anim.max - anim.min) + ';\\n';\n if (!anim.extrapolate) {\n fn += ' ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\\n';\n }\n\n var roundOpen = (hasRoundRatio ? 'Math.round(' + roundRatio + ' * ' : '' );\n var roundClose = (hasRoundRatio ? ') / ' + roundRatio : '' );\n fn +=\n ' ' + tmpVarName + ' = ' +\n roundOpen +\n '(' + from + ' * (1 - ratio) + ' + to + ' * ratio)' +\n roundClose + ';\\n';\n return fn;\n};\n\nvar computeNextValLinearScalar = function(anim) {\n return computeNextValLinear(anim, anim.from, anim.to, 'nextScalarVal');\n};\n\nvar computeNextValConstant = function(anim) {\n var constantExpression = JSON.stringify(anim.value);\n return ' nextScalarVal = ' + constantExpression + ';\\n';\n};\n\nvar computeNextValStep = function(anim) {\n return (\n ' nextScalarVal = value >= ' +\n (anim.threshold + ' ? ' + anim.to + ' : ' + anim.from) + ';\\n'\n );\n};\n\nvar computeNextValIdentity = function(anim) {\n return ' nextScalarVal = value;\\n';\n};\n\nvar operationVar = function(name) {\n return name + 'ReuseOp';\n};\n\nvar createReusableOperationVars = function(anims) {\n var ret = '';\n for (var name in anims) {\n if (ShouldAllocateReusableOperationVars[name]) {\n ret += 'var ' + operationVar(name) + ' = [];\\n';\n }\n }\n return ret;\n};\n\nvar newlines = function(statements) {\n return '\\n' + statements.join('\\n') + '\\n';\n};\n\n/**\n * @param {Animation} anim Configuration entry.\n * @param {key} dimension Key to examine in `from`/`to`.\n * @param {number} index Field in operationVar to set.\n * @return {string} Code that sets the operation variable's field.\n */\nvar computeNextMatrixOperationField = function(anim, name, dimension, index) {\n var fieldAccess = operationVar(name) + '[' + index + ']';\n if (anim.from[dimension] !== undefined && anim.to[dimension] !== undefined) {\n return ' ' + anim.from[dimension] !== anim.to[dimension] ?\n computeNextValLinear(anim, anim.from[dimension], anim.to[dimension], fieldAccess) :\n fieldAccess + ' = ' + anim.from[dimension] + ';';\n } else {\n return ' ' + fieldAccess + ' = ' + InitialOperationField[name][index] + ';';\n }\n};\n\nvar unrolledVars = [];\nfor (var varIndex = 0; varIndex < 16; varIndex++) {\n unrolledVars.push('m' + varIndex);\n}\nvar setNextMatrixAndDetectChange = function(orderedMatrixOperations) {\n var fn = [\n ' var transform = result.transform !== undefined ? ' +\n 'result.transform : (result.transform = [{ matrix: [] }]);' +\n ' var transformMatrix = transform[0].matrix;'\n ];\n fn.push.apply(\n fn,\n inline(MatrixOps.unroll, ['transformMatrix'].concat(unrolledVars))\n );\n for (var i = 0; i < orderedMatrixOperations.length; i++) {\n var opName = orderedMatrixOperations[i];\n if (i === 0) {\n fn.push.apply(\n fn,\n inline(MatrixOpsInitial[opName], ['transformMatrix', operationVar(opName)])\n );\n } else {\n fn.push.apply(\n fn,\n inline(MatrixOps[opName], ['transformMatrix', operationVar(opName)])\n );\n }\n }\n fn.push.apply(\n fn,\n inline(MatrixOps.matrixDiffers, ['didChange', 'transformMatrix'].concat(unrolledVars))\n );\n return fn;\n};\n\nvar InterpolateMatrix = {\n transformTranslate: true,\n transformRotateRadians: true,\n transformScale: true,\n};\n\nvar createFunctionString = function(anims) {\n // We must track the order they appear in so transforms are applied in the\n // correct order.\n var orderedMatrixOperations = [];\n\n // Wrapping function allows the final function to contain state (for\n // caching).\n var fn = 'return (function() {\\n';\n fn += createReusableOperationVars(anims);\n fn += 'return function(result, value) {\\n';\n fn += ' var didChange = false;\\n';\n fn += ' var nextScalarVal;\\n';\n fn += ' var ratio;\\n';\n\n for (var name in anims) {\n var anim = anims[name];\n if (anim.type === 'linear') {\n if (InterpolateMatrix[name]) {\n orderedMatrixOperations.push(name);\n var setOperations = [\n computeNextMatrixOperationField(anim, name, X_DIM, 0),\n computeNextMatrixOperationField(anim, name, Y_DIM, 1),\n computeNextMatrixOperationField(anim, name, Z_DIM, 2)\n ];\n if (name === TRANSFORM_ROTATE_NAME) {\n setOperations.push(computeNextMatrixOperationField(anim, name, W_DIM, 3));\n }\n fn += newlines(setOperations);\n } else {\n fn += computeNextValLinearScalar(anim, 'nextScalarVal');\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n }\n } else if (anim.type === 'constant') {\n fn += computeNextValConstant(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n } else if (anim.type === 'step') {\n fn += computeNextValStep(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n } else if (anim.type === 'identity') {\n fn += computeNextValIdentity(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n }\n }\n if (orderedMatrixOperations.length) {\n fn += newlines(setNextMatrixAndDetectChange(orderedMatrixOperations));\n }\n fn += ' return didChange;\\n';\n fn += '};\\n';\n fn += '})()';\n return fn;\n};\n\n/**\n * @param {object} anims Animation configuration by style property name.\n * @return {function} Function accepting style object, that mutates that style\n * object and returns a boolean describing if any update was actually applied.\n */\nvar buildStyleInterpolator = function(anims) {\n // Defer compiling this method until we really need it.\n var interpolator = null;\n function lazyStyleInterpolator(result, value) {\n if (interpolator === null) {\n interpolator = Function(createFunctionString(anims))();\n }\n return interpolator(result, value);\n }\n return lazyStyleInterpolator;\n};\n\nmodule.exports = buildStyleInterpolator;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/clamp.js":{"metadata":{"mtime":1463609891000},"data":{"name":"clamp","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\nclamp(min,value,max){\nif(valuemax){\nreturn max;}\n\nreturn value;}\n\n\nmodule.exports=clamp;","map":null,"id":"clamp","source":"/**\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 clamp\n * @typechecks\n */\n\n /**\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nfunction clamp(min, value, max) {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}\n\nmodule.exports = clamp;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/CPUProfiler.js":{"metadata":{"mtime":1463609891000},"data":{"name":"CPUProfiler"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/createStrictShapeTypeChecker.js":{"metadata":{"mtime":1463609891000},"data":{"name":"createStrictShapeTypeChecker","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[65,119,160],"dependencies":["ReactPropTypeLocationNames","fbjs/lib/invariant","merge"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\n\nvar invariant=require('fbjs/lib/invariant');\nvar merge=require('merge');\n\nfunction createStrictShapeTypeChecker(\nshapeTypes)\n{\nfunction checkType(isRequired,props,propName,componentName,location){\nif(!props[propName]){\nif(isRequired){\ninvariant(\nfalse,\n'Required object `'+propName+'` was not specified in '+('`'+\ncomponentName+'`.'));}\n\n\nreturn;}\n\nvar propValue=props[propName];\nvar propType=typeof propValue;\nvar locationName=\nlocation&&ReactPropTypeLocationNames[location]||'(unknown)';\nif(propType!=='object'){\ninvariant(\nfalse,\n'Invalid '+locationName+' `'+propName+'` of type `'+propType+'` '+('supplied to `'+\ncomponentName+'`, expected `object`.'));}\n\n\n\n\nvar allKeys=merge(props[propName],shapeTypes);\nfor(var key in allKeys){\nvar checker=shapeTypes[key];\nif(!checker){\ninvariant(\nfalse,\n'Invalid props.'+propName+' key `'+key+'` supplied to `'+componentName+'`.'+'\\nBad object: '+\nJSON.stringify(props[propName],null,' ')+'\\nValid keys: '+\nJSON.stringify(Object.keys(shapeTypes),null,' '));}\n\n\nvar error=checker(propValue,key,componentName,location);\nif(error){\ninvariant(\nfalse,\nerror.message+'\\nBad object: '+\nJSON.stringify(props[propName],null,' '));}}}\n\n\n\n\nfunction chainedCheckType(\nprops,\npropName,\ncomponentName,\nlocation)\n{\nreturn checkType(false,props,propName,componentName,location);}\n\nchainedCheckType.isRequired=checkType.bind(null,true);\nreturn chainedCheckType;}\n\n\nmodule.exports=createStrictShapeTypeChecker;","map":null,"id":"createStrictShapeTypeChecker","source":"/**\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 createStrictShapeTypeChecker\n * @flow\n */\n'use strict';\n\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\n\nvar invariant = require('fbjs/lib/invariant');\nvar merge = require('merge');\n\nfunction createStrictShapeTypeChecker(\n shapeTypes: {[key: string]: ReactPropsCheckType}\n): ReactPropsChainableTypeChecker {\n function checkType(isRequired, props, propName, componentName, location?) {\n if (!props[propName]) {\n if (isRequired) {\n invariant(\n false,\n `Required object \\`${propName}\\` was not specified in ` +\n `\\`${componentName}\\`.`\n );\n }\n return;\n }\n var propValue = props[propName];\n var propType = typeof propValue;\n var locationName =\n location && ReactPropTypeLocationNames[location] || '(unknown)';\n if (propType !== 'object') {\n invariant(\n false,\n `Invalid ${locationName} \\`${propName}\\` of type \\`${propType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`object\\`.`\n );\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = merge(props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n invariant(\n false,\n `Invalid props.${propName} key \\`${key}\\` supplied to \\`${componentName}\\`.` +\n `\\nBad object: ` + JSON.stringify(props[propName], null, ' ') +\n `\\nValid keys: ` + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location);\n if (error) {\n invariant(\n false,\n error.message +\n `\\nBad object: ` + JSON.stringify(props[propName], null, ' ')\n );\n }\n }\n }\n function chainedCheckType(\n props: {[key: string]: any},\n propName: string,\n componentName: string,\n location?: string\n ): ?Error {\n return checkType(false, props, propName, componentName, location);\n }\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n\nmodule.exports = createStrictShapeTypeChecker;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js":{"metadata":{"mtime":1463609891000},"data":{"name":"deepFreezeAndThrowOnMutationInDev","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\n\n\nfunction deepFreezeAndThrowOnMutationInDev(object){\nif(__DEV__){\nif(typeof object!=='object'||\nobject===null||\nObject.isFrozen(object)||\nObject.isSealed(object)){\nreturn;}\n\n\nfor(var key in object){\nif(object.hasOwnProperty(key)){\nobject.__defineGetter__(key,identity.bind(null,object[key]));\nobject.__defineSetter__(key,throwOnImmutableMutation.bind(null,key));}}\n\n\n\nObject.freeze(object);\nObject.seal(object);\n\nfor(var key in object){\nif(object.hasOwnProperty(key)){\ndeepFreezeAndThrowOnMutationInDev(object[key]);}}}}\n\n\n\n\n\nfunction throwOnImmutableMutation(key,value){\nthrow Error(\n'You attempted to set the key `'+key+'` with the value `'+\nJSON.stringify(value)+'` on an object that is meant to be immutable '+\n'and has been frozen.');}\n\n\n\nfunction identity(value){\nreturn value;}\n\n\nmodule.exports=deepFreezeAndThrowOnMutationInDev;","map":null,"id":"deepFreezeAndThrowOnMutationInDev","source":"/**\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 deepFreezeAndThrowOnMutationInDev\n * @flow\n */\n\n'use strict';\n\n/**\n * If your application is accepting different values for the same field over\n * time and is doing a diff on them, you can either (1) create a copy or\n * (2) ensure that those values are not mutated behind two passes.\n * This function helps you with (2) by freezing the object and throwing if\n * the user subsequently modifies the value.\n *\n * There are two caveats with this function:\n * - If the call site is not in strict mode, it will only throw when\n * mutating existing fields, adding a new one\n * will unfortunately fail silently :(\n * - If the object is already frozen or sealed, it will not continue the\n * deep traversal and will leave leaf nodes unfrozen.\n *\n * Freezing the object and adding the throw mechanism is expensive and will\n * only be used in DEV.\n */\nfunction deepFreezeAndThrowOnMutationInDev(object: Object) {\n if (__DEV__) {\n if (typeof object !== 'object' ||\n object === null ||\n Object.isFrozen(object) ||\n Object.isSealed(object)) {\n return;\n }\n\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n object.__defineGetter__(key, identity.bind(null, object[key]));\n object.__defineSetter__(key, throwOnImmutableMutation.bind(null, key));\n }\n }\n\n Object.freeze(object);\n Object.seal(object);\n\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n deepFreezeAndThrowOnMutationInDev(object[key]);\n }\n }\n }\n}\n\nfunction throwOnImmutableMutation(key, value) {\n throw Error(\n 'You attempted to set the key `' + key + '` with the value `' +\n JSON.stringify(value) + '` on an object that is meant to be immutable ' +\n 'and has been frozen.'\n );\n}\n\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = deepFreezeAndThrowOnMutationInDev;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/deprecatedCallback.js":{"metadata":{"mtime":1463609891000},"data":{"name":"deprecatedCallback","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=function(promise,callbacks,type,warning){\nif(callbacks.length===0){\nreturn promise;}\n\n\nvar success=void 0,error=void 0,callback=void 0;\n\nconsole.warn(warning);\n\nswitch(type){\ncase 'success-first':var _callbacks=babelHelpers.slicedToArray(\ncallbacks,2);success=_callbacks[0];error=_callbacks[1];\nreturn promise.then(\nfunction(res){return success(res);},\nfunction(err){return error&&error(err);});\n\ncase 'error-first':var _callbacks2=babelHelpers.slicedToArray(\ncallbacks,2);error=_callbacks2[0];success=_callbacks2[1];\nreturn promise.then(\nfunction(res){return success(res);},\nfunction(err){return error(err);});\n\ncase 'single-callback-value-first':var _callbacks3=babelHelpers.slicedToArray(\ncallbacks,1);callback=_callbacks3[0];\nreturn promise.then(\nfunction(res){return callback(res);},\nfunction(err){return callback(null,err);});\n\ncase 'node':var _callbacks4=babelHelpers.slicedToArray(\ncallbacks,1);callback=_callbacks4[0];\nreturn promise.then(\nfunction(res){return callback(null,res);},\nfunction(err){return callback(err);});\n\ndefault:\nthrow new Error('Type of callbacks not specified. Must be one of \\'success-first\\', \\'error-first\\', \\'single-callback-value-first\\', or \\'node\\'');}};","map":null,"id":"deprecatedCallback","source":"/**\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 * Helper for deprecated callback pattern\n *\n * @providesModule deprecatedCallback\n * @flow\n */\n\n'use strict';\n\nmodule.exports = function(promise: Promise, callbacks: Array, type: string, warning: string): Promise {\n if (callbacks.length === 0) {\n return promise;\n }\n\n let success, error, callback;\n\n console.warn(warning);\n\n switch (type) {\n case 'success-first': // handles func(success, error), func(success)\n [ success, error ] = callbacks;\n return promise.then(\n res => success(res),\n err => error && error(err)\n );\n case 'error-first': // handles func(error, success)\n [ error, success ] = callbacks;\n return promise.then(\n res => success(res),\n err => error(err)\n );\n case 'single-callback-value-first': // handles func(callback(value, err))\n [ callback ] = callbacks;\n return promise.then(\n res => callback(res),\n err => callback(null, err)\n );\n case 'node': // handles func(callback(err, value))\n [ callback ] = callbacks;\n return promise.then(\n res => callback(null, res),\n err => callback(err)\n );\n default:\n throw new Error(`Type of callbacks not specified. Must be one of 'success-first', 'error-first', 'single-callback-value-first', or 'node'`);\n }\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/deprecatedPropType.js":{"metadata":{"mtime":1463609891000},"data":{"name":"deprecatedPropType","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UIManager"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar UIManager=require('UIManager');\n\n\n\n\nfunction deprecatedPropType(\npropType,\nexplanation)\n{\nreturn function validate(props,propName,componentName){\n\nif(!UIManager[componentName]&&props[propName]!==undefined){\nconsole.warn('`'+propName+'` supplied to `'+componentName+'` has been deprecated. '+explanation);}\n\n\nreturn propType(props,propName,componentName);};}\n\n\n\nmodule.exports=deprecatedPropType;","map":null,"id":"deprecatedPropType","source":"/**\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 deprecatedPropType\n * @flow\n */\n'use strict';\n\nconst UIManager = require('UIManager');\n\n/**\n * Adds a deprecation warning when the prop is used.\n */\nfunction deprecatedPropType(\n propType: ReactPropsCheckType,\n explanation: string\n): ReactPropsCheckType {\n return function validate(props, propName, componentName) {\n // Don't warn for native components.\n if (!UIManager[componentName] && props[propName] !== undefined) {\n console.warn(`\\`${propName}\\` supplied to \\`${componentName}\\` has been deprecated. ${explanation}`);\n }\n\n return propType(props, propName, componentName);\n };\n}\n\nmodule.exports = deprecatedPropType;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/Dimensions.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Dimensions","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[47,82,130,179],"dependencies":["Platform","UIManager","RCTDeviceEventEmitter","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform=require('Platform');\nvar UIManager=require('UIManager');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\n\nvar invariant=require('fbjs/lib/invariant');\n\nvar dimensions={};var \nDimensions=function(){function Dimensions(){babelHelpers.classCallCheck(this,Dimensions);}babelHelpers.createClass(Dimensions,null,[{key:'set',value:function set(\n\n\n\n\n\n\ndims){\n\n\n\nif(dims&&dims.windowPhysicalPixels){\n\ndims=JSON.parse(JSON.stringify(dims));\n\nvar windowPhysicalPixels=dims.windowPhysicalPixels;\ndims.window={\nwidth:windowPhysicalPixels.width/windowPhysicalPixels.scale,\nheight:windowPhysicalPixels.height/windowPhysicalPixels.scale,\nscale:windowPhysicalPixels.scale,\nfontScale:windowPhysicalPixels.fontScale};\n\nif(Platform.OS==='android'){\n\nvar screenPhysicalPixels=dims.screenPhysicalPixels;\ndims.screen={\nwidth:screenPhysicalPixels.width/screenPhysicalPixels.scale,\nheight:screenPhysicalPixels.height/screenPhysicalPixels.scale,\nscale:screenPhysicalPixels.scale,\nfontScale:screenPhysicalPixels.fontScale};\n\n\n\ndelete dims.screenPhysicalPixels;}else \n{\ndims.screen=dims.window;}\n\n\ndelete dims.windowPhysicalPixels;}\n\n\nbabelHelpers.extends(dimensions,dims);}},{key:'get',value:function get(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndim){\ninvariant(dimensions[dim],'No dimension set for key '+dim);\nreturn dimensions[dim];}}]);return Dimensions;}();\n\n\n\nDimensions.set(UIManager.Dimensions);\nRCTDeviceEventEmitter.addListener('didUpdateDimensions',function(update){\nDimensions.set(update);});\n\n\nmodule.exports=Dimensions;","map":null,"id":"Dimensions","source":"/**\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 Dimensions\n * @flow\n */\n'use strict';\n\nvar Platform = require('Platform');\nvar UIManager = require('UIManager');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dimensions = {};\nclass Dimensions {\n /**\n * This should only be called from native code by sending the\n * didUpdateDimensions event.\n *\n * @param {object} dims Simple string-keyed object of dimensions to set\n */\n static set(dims: {[key:string]: any}): void {\n // We calculate the window dimensions in JS so that we don't encounter loss of\n // precision in transferring the dimensions (which could be non-integers) over\n // the bridge.\n if (dims && dims.windowPhysicalPixels) {\n // parse/stringify => Clone hack\n dims = JSON.parse(JSON.stringify(dims));\n\n var windowPhysicalPixels = dims.windowPhysicalPixels;\n dims.window = {\n width: windowPhysicalPixels.width / windowPhysicalPixels.scale,\n height: windowPhysicalPixels.height / windowPhysicalPixels.scale,\n scale: windowPhysicalPixels.scale,\n fontScale: windowPhysicalPixels.fontScale,\n };\n if (Platform.OS === 'android') {\n // Screen and window dimensions are different on android\n var screenPhysicalPixels = dims.screenPhysicalPixels;\n dims.screen = {\n width: screenPhysicalPixels.width / screenPhysicalPixels.scale,\n height: screenPhysicalPixels.height / screenPhysicalPixels.scale,\n scale: screenPhysicalPixels.scale,\n fontScale: screenPhysicalPixels.fontScale,\n };\n\n // delete so no callers rely on this existing\n delete dims.screenPhysicalPixels;\n } else {\n dims.screen = dims.window;\n }\n // delete so no callers rely on this existing\n delete dims.windowPhysicalPixels;\n }\n\n Object.assign(dimensions, dims);\n }\n\n /**\n * Initial dimensions are set before `runApplication` is called so they should\n * be available before any other require's are run, but may be updated later.\n *\n * Note: Although dimensions are available immediately, they may change (e.g\n * due to device rotation) so any rendering logic or styles that depend on\n * these constants should try to call this function on every render, rather\n * than caching the value (for example, using inline styles rather than\n * setting a value in a `StyleSheet`).\n *\n * Example: `var {height, width} = Dimensions.get('window');`\n *\n * @param {string} dim Name of dimension as defined when calling `set`.\n * @returns {Object?} Value for the dimension.\n */\n static get(dim: string): Object {\n invariant(dimensions[dim], 'No dimension set for key ' + dim);\n return dimensions[dim];\n }\n}\n\nDimensions.set(UIManager.Dimensions);\nRCTDeviceEventEmitter.addListener('didUpdateDimensions', function(update) {\n Dimensions.set(update);\n});\n\nmodule.exports = Dimensions;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/dismissKeyboard.js":{"metadata":{"mtime":1463609891000},"data":{"name":"dismissKeyboard","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[49],"dependencies":["TextInputState"],"code":"'use strict';\n\n\n\n\n\n\n\n\nvar TextInputState=require('TextInputState');\n\nfunction dismissKeyboard(){\nTextInputState.blurTextInput(TextInputState.currentlyFocusedField());}\n\n\nmodule.exports=dismissKeyboard;","map":null,"id":"dismissKeyboard","source":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule dismissKeyboard\n *\n * This function dismisses the currently-open keyboard, if any\n */\n'use strict';\n\nvar TextInputState = require('TextInputState');\n\nfunction dismissKeyboard() {\n TextInputState.blurTextInput(TextInputState.currentlyFocusedField());\n}\n\nmodule.exports = dismissKeyboard;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/ErrorUtils.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ErrorUtils","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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\nexports=global.ErrorUtils;","map":null,"id":"ErrorUtils","source":"/**\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 strict */\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/groupByEveryN.js":{"metadata":{"mtime":1463609891000},"data":{"name":"groupByEveryN"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/HeapCapture.js":{"metadata":{"mtime":1463609891000},"data":{"name":"HeapCapture","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[302],"dependencies":["NativeModules"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar HeapCapture={\ncaptureHeap:function captureHeap(token,path){\nvar error=null;\ntry{\nglobal.nativeCaptureHeap(path);\nconsole.log('HeapCapture.captureHeap succeeded: '+path);}\ncatch(e){\nconsole.log('HeapCapture.captureHeap error: '+e.toString());\nerror=e.toString();}\n\nrequire('NativeModules').JSCHeapCapture.operationComplete(token,error);}};\n\n\n\nmodule.exports=HeapCapture;","map":null,"id":"HeapCapture","source":"/**\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 HeapCapture\n * @flow\n */\n'use strict';\n\nvar HeapCapture = {\n captureHeap: function (token: number, path: string) {\n var error = null;\n try {\n global.nativeCaptureHeap(path);\n console.log('HeapCapture.captureHeap succeeded: ' + path);\n } catch (e) {\n console.log('HeapCapture.captureHeap error: ' + e.toString());\n error = e.toString();\n }\n require('NativeModules').JSCHeapCapture.operationComplete(token, error);\n },\n};\n\nmodule.exports = HeapCapture;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/HMRClient.js":{"metadata":{"mtime":1463609891000},"data":{"name":"HMRClient","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[47,82,391,1677,2106,2223,2430,2642],"dependencies":["Platform","fbjs/lib/invariant","WebSocket","HMRLoadingView","NativeModules","SourceMapsCache"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform=require('Platform');\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\nvar HMRClient={\nenable:function enable(platform,bundleEntry,host,port){\ninvariant(platform,'Missing required parameter `platform`');\ninvariant(bundleEntry,'Missing required paramenter `bundleEntry`');\ninvariant(host,'Missing required paramenter `host`');\n\n\n\n\nvar WebSocket=require('WebSocket');\n\nvar wsHostPort=port!==null&&port!==''?\nhost+':'+port:\nhost;\n\n\nvar wsUrl='ws://'+wsHostPort+'/hot?'+('platform='+\nplatform+'&')+('bundleEntry='+\nbundleEntry.replace('.bundle','.js'));\n\nvar activeWS=new WebSocket(wsUrl);\nactiveWS.onerror=function(e){\nvar error='Hot loading isn\\'t working because it cannot connect to the development server.\\n\\nTry the following to fix the issue:\\n- Ensure that the packager server is running and available on the same network';\n\n\n\n\n\n\nif(Platform.OS==='ios'){\nerror+='\\n- Ensure that the Packager server URL is correctly set in AppDelegate';}else \n\n\n\n{\nerror+='\\n- Ensure that your device/emulator is connected to your machine and has USB debugging enabled - run \\'adb devices\\' to see a list of connected devices\\n- If you\\'re on a physical device connected to the same machine, run \\'adb reverse tcp:8081 tcp:8081\\' to forward requests from your device\\n- If your device is on the same Wi-Fi network, set \\'Debug server host & port for device\\' in \\'Dev settings\\' to your machine\\'s IP address and the port of the local dev server - e.g. 10.0.1.1:8081';}\n\n\n\n\n\n\n\nerror+='\\n\\nURL: '+\n\n\nhost+':'+port+'\\n\\nError: '+\n\ne.message;\n\n\nthrow new Error(error);};\n\nactiveWS.onmessage=function(_ref){var data=_ref.data;\n\nvar HMRLoadingView=require('HMRLoadingView');\n\ndata=JSON.parse(data);\n\nswitch(data.type){\ncase 'update-start':{\nHMRLoadingView.showMessage('Hot Loading...');\nbreak;}\n\ncase 'update':{var _ret=function(){var _data$body=\n\n\n\n\n\ndata.body;var modules=_data$body.modules;var sourceMappingURLs=_data$body.sourceMappingURLs;var sourceURLs=_data$body.sourceURLs;var inverseDependencies=_data$body.inverseDependencies;\n\nif(Platform.OS==='ios'){\nvar RCTRedBox=require('NativeModules').RedBox;\nRCTRedBox&&RCTRedBox.dismiss&&RCTRedBox.dismiss();}else \n{\nvar RCTExceptionsManager=require('NativeModules').ExceptionsManager;\nRCTExceptionsManager&&RCTExceptionsManager.dismissRedbox&&RCTExceptionsManager.dismissRedbox();}\n\n\nvar serverHost=void 0;\n\nif(Platform.OS==='android'){\nserverHost=require('NativeModules').AndroidConstants.ServerHost;}else \n{\nserverHost=port?host+':'+port:host;}\n\n\nmodules.forEach(function(_ref2,i){var id=_ref2.id;var code=_ref2.code;\ncode=code+'\\n\\n'+sourceMappingURLs[i];\n\nrequire('SourceMapsCache').fetch({\ntext:code,\nurl:'http://'+serverHost+sourceURLs[i],\nsourceMappingURL:sourceMappingURLs[i]});\n\n\n\n\n\nvar injectFunction=typeof global.nativeInjectHMRUpdate==='function'?\nglobal.nativeInjectHMRUpdate:\neval;\n\ncode=['__accept(',\n\nid+',','function(global,require,module,exports){',''+\n\ncode,\n'\\n},',''+\nJSON.stringify(inverseDependencies),');'].\n\njoin('');\n\ninjectFunction(code,sourceURLs[i]);});\n\n\nHMRLoadingView.hide();\nreturn 'break';}();if(_ret==='break')break;}\n\ncase 'update-done':{\nHMRLoadingView.hide();\nbreak;}\n\ncase 'error':{\nHMRLoadingView.hide();\nthrow new Error(data.body.type+' '+data.body.description);}\n\ndefault:{\nthrow new Error('Unexpected message: '+data);}}};}};\n\n\n\n\n\n\nmodule.exports=HMRClient;","map":null,"id":"HMRClient","source":"/**\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 HMRClient\n * @flow\n */\n'use strict';\n\nconst Platform = require('Platform');\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * HMR Client that receives from the server HMR updates and propagates them\n * runtime to reflects those changes.\n */\nconst HMRClient = {\n enable(platform: string, bundleEntry: string, host: string, port: number) {\n invariant(platform, 'Missing required parameter `platform`');\n invariant(bundleEntry, 'Missing required paramenter `bundleEntry`');\n invariant(host, 'Missing required paramenter `host`');\n\n // need to require WebSocket inside of `enable` function because\n // this module is defined as a `polyfillGlobal`.\n // See `InitializeJavascriptAppEngine.js`\n const WebSocket = require('WebSocket');\n\n const wsHostPort = port !== null && port !== ''\n ? `${host}:${port}`\n : host;\n\n // Build the websocket url\n const wsUrl = `ws://${wsHostPort}/hot?` +\n `platform=${platform}&` +\n `bundleEntry=${bundleEntry.replace('.bundle', '.js')}`;\n\n const activeWS = new WebSocket(wsUrl);\n activeWS.onerror = (e) => {\n let error = (\n`Hot loading isn't working because it cannot connect to the development server.\n\nTry the following to fix the issue:\n- Ensure that the packager server is running and available on the same network`\n );\n\n if (Platform.OS === 'ios') {\n error += (\n`\n- Ensure that the Packager server URL is correctly set in AppDelegate`\n );\n } else {\n error += (\n`\n- Ensure that your device/emulator is connected to your machine and has USB debugging enabled - run 'adb devices' to see a list of connected devices\n- If you're on a physical device connected to the same machine, run 'adb reverse tcp:8081 tcp:8081' to forward requests from your device\n- If your device is on the same Wi-Fi network, set 'Debug server host & port for device' in 'Dev settings' to your machine's IP address and the port of the local dev server - e.g. 10.0.1.1:8081`\n );\n }\n\n error += (\n`\n\nURL: ${host}:${port}\n\nError: ${e.message}`\n );\n\n throw new Error(error);\n };\n activeWS.onmessage = ({data}) => {\n // Moving to top gives errors due to NativeModules not being initialized\n const HMRLoadingView = require('HMRLoadingView');\n\n data = JSON.parse(data);\n\n switch (data.type) {\n case 'update-start': {\n HMRLoadingView.showMessage('Hot Loading...');\n break;\n }\n case 'update': {\n const {\n modules,\n sourceMappingURLs,\n sourceURLs,\n inverseDependencies,\n } = data.body;\n\n if (Platform.OS === 'ios') {\n const RCTRedBox = require('NativeModules').RedBox;\n RCTRedBox && RCTRedBox.dismiss && RCTRedBox.dismiss();\n } else {\n const RCTExceptionsManager = require('NativeModules').ExceptionsManager;\n RCTExceptionsManager && RCTExceptionsManager.dismissRedbox && RCTExceptionsManager.dismissRedbox();\n }\n\n let serverHost;\n\n if (Platform.OS === 'android') {\n serverHost = require('NativeModules').AndroidConstants.ServerHost;\n } else {\n serverHost = port ? `${host}:${port}` : host;\n }\n\n modules.forEach(({id, code}, i) => {\n code = code + '\\n\\n' + sourceMappingURLs[i];\n\n require('SourceMapsCache').fetch({\n text: code,\n url: `http://${serverHost}${sourceURLs[i]}`,\n sourceMappingURL: sourceMappingURLs[i],\n });\n\n // on JSC we need to inject from native for sourcemaps to work\n // (Safari doesn't support `sourceMappingURL` nor any variant when\n // evaluating code) but on Chrome we can simply use eval\n const injectFunction = typeof global.nativeInjectHMRUpdate === 'function'\n ? global.nativeInjectHMRUpdate\n : eval;\n\n code = [\n `__accept(`,\n `${id},`,\n `function(global,require,module,exports){`,\n `${code}`,\n '\\n},',\n `${JSON.stringify(inverseDependencies)}`,\n `);`,\n ].join('');\n\n injectFunction(code, sourceURLs[i]);\n });\n\n HMRLoadingView.hide();\n break;\n }\n case 'update-done': {\n HMRLoadingView.hide();\n break;\n }\n case 'error': {\n HMRLoadingView.hide();\n throw new Error(data.body.type + ' ' + data.body.description);\n }\n default: {\n throw new Error(`Unexpected message: ${data}`);\n }\n }\n };\n },\n};\n\nmodule.exports = HMRClient;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/HMRLoadingView.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"HMRLoadingView"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/HMRLoadingView.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"HMRLoadingView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,90],"dependencies":["processColor","NativeModules"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar processColor=require('processColor');var _require=\nrequire('NativeModules');var DevLoadingView=_require.DevLoadingView;var \n\nHMRLoadingView=function(){function HMRLoadingView(){babelHelpers.classCallCheck(this,HMRLoadingView);}babelHelpers.createClass(HMRLoadingView,null,[{key:'showMessage',value:function showMessage(\nmessage){\nDevLoadingView.showMessage(\nmessage,\nprocessColor('#000000'),\nprocessColor('#aaaaaa'));}},{key:'hide',value:function hide()\n\n\n\n{\nDevLoadingView.hide();}}]);return HMRLoadingView;}();\n\n\n\nmodule.exports=HMRLoadingView;","map":null,"id":"HMRLoadingView","source":"/**\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 HMRLoadingView\n * @flow\n */\n\n'use strict';\n\nconst processColor = require('processColor');\nconst { DevLoadingView } = require('NativeModules');\n\nclass HMRLoadingView {\n static showMessage(message: string) {\n DevLoadingView.showMessage(\n message,\n processColor('#000000'),\n processColor('#aaaaaa'),\n );\n }\n\n static hide() {\n DevLoadingView.hide();\n }\n}\n\nmodule.exports = HMRLoadingView;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/logError.js":{"metadata":{"mtime":1463609891000},"data":{"name":"logError","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar logError=function logError(){\nif(arguments.length===1&&arguments[0] instanceof Error){\nvar err=arguments[0];\nconsole.error('Error: \"'+err.message+'\". Stack:\\n'+err.stack);}else \n{\nconsole.error.apply(console,arguments);}};\n\n\n\nmodule.exports=logError;","map":null,"id":"logError","source":"/**\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 logError\n * @flow\n */\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound. If passes an\n * `Error` object, it will print the message and stack.\n */\nvar logError = function() {\n if (arguments.length === 1 && arguments[0] instanceof Error) {\n var err = arguments[0];\n console.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);\n } else {\n console.error.apply(console, arguments);\n }\n};\n\nmodule.exports = logError;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/mapWithSeparator.js":{"metadata":{"mtime":1463609891000},"data":{"name":"mapWithSeparator","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\nfunction mapWithSeparator(array,valueFunction,separatorFunction){\nvar results=[];\nfor(var i=0;i0.49999*unit){\nreturn [0,2*Math.atan2(qx,qw)*conv,90];}\n\nif(test<-0.49999*unit){\nreturn [0,-2*Math.atan2(qx,qw)*conv,-90];}\n\n\nreturn [\nMatrixMath.roundTo3Places(\nMath.atan2(2*qx*qw-2*qy*qz,1-2*qx2-2*qz2)*conv),\n\nMatrixMath.roundTo3Places(\nMath.atan2(2*qy*qw-2*qx*qz,1-2*qy2-2*qz2)*conv),\n\nMatrixMath.roundTo3Places(\nMath.asin(2*qx*qy+2*qz*qw)*conv)];},\n\n\n\n\n\n\n\n\nroundTo3Places:function roundTo3Places(n){\nvar arr=n.toString().split('e');\nreturn Math.round(arr[0]+'e'+(arr[1]?+arr[1]-3:3))*0.001;},\n\n\n\n\n\n\n\n\n\n\n\n\n\ndecomposeMatrix:function decomposeMatrix(transformMatrix){\n\ninvariant(\ntransformMatrix.length===16,\n'Matrix decomposition needs a list of 3d matrix values, received %s',\ntransformMatrix);\n\n\n\nvar perspective=[];\nvar quaternion=[];\nvar scale=[];\nvar skew=[];\nvar translation=[];\n\n\n\nif(!transformMatrix[15]){\nreturn;}\n\nvar matrix=[];\nvar perspectiveMatrix=[];\nfor(var i=0;i<4;i++){\nmatrix.push([]);\nfor(var j=0;j<4;j++){\nvar value=transformMatrix[i*4+j]/transformMatrix[15];\nmatrix[i].push(value);\nperspectiveMatrix.push(j===3?0:value);}}\n\n\nperspectiveMatrix[15]=1;\n\n\nif(!MatrixMath.determinant(perspectiveMatrix)){\nreturn;}\n\n\n\nif(matrix[0][3]!==0||matrix[1][3]!==0||matrix[2][3]!==0){\n\n\nvar rightHandSide=[\nmatrix[0][3],\nmatrix[1][3],\nmatrix[2][3],\nmatrix[3][3]];\n\n\n\n\nvar inversePerspectiveMatrix=MatrixMath.inverse(\nperspectiveMatrix);\n\nvar transposedInversePerspectiveMatrix=MatrixMath.transpose(\ninversePerspectiveMatrix);\n\nvar perspective=MatrixMath.multiplyVectorByMatrix(\nrightHandSide,\ntransposedInversePerspectiveMatrix);}else \n\n{\n\nperspective[0]=perspective[1]=perspective[2]=0;\nperspective[3]=1;}\n\n\n\nfor(var i=0;i<3;i++){\ntranslation[i]=matrix[3][i];}\n\n\n\n\nvar row=[];\nfor(i=0;i<3;i++){\nrow[i]=[\nmatrix[i][0],\nmatrix[i][1],\nmatrix[i][2]];}\n\n\n\n\nscale[0]=MatrixMath.v3Length(row[0]);\nrow[0]=MatrixMath.v3Normalize(row[0],scale[0]);\n\n\nskew[0]=MatrixMath.v3Dot(row[0],row[1]);\nrow[1]=MatrixMath.v3Combine(row[1],row[0],1.0,-skew[0]);\n\n\nskew[0]=MatrixMath.v3Dot(row[0],row[1]);\nrow[1]=MatrixMath.v3Combine(row[1],row[0],1.0,-skew[0]);\n\n\nscale[1]=MatrixMath.v3Length(row[1]);\nrow[1]=MatrixMath.v3Normalize(row[1],scale[1]);\nskew[0]/=scale[1];\n\n\nskew[1]=MatrixMath.v3Dot(row[0],row[2]);\nrow[2]=MatrixMath.v3Combine(row[2],row[0],1.0,-skew[1]);\nskew[2]=MatrixMath.v3Dot(row[1],row[2]);\nrow[2]=MatrixMath.v3Combine(row[2],row[1],1.0,-skew[2]);\n\n\nscale[2]=MatrixMath.v3Length(row[2]);\nrow[2]=MatrixMath.v3Normalize(row[2],scale[2]);\nskew[1]/=scale[2];\nskew[2]/=scale[2];\n\n\n\n\nvar pdum3=MatrixMath.v3Cross(row[1],row[2]);\nif(MatrixMath.v3Dot(row[0],pdum3)<0){\nfor(i=0;i<3;i++){\nscale[i]*=-1;\nrow[i][0]*=-1;\nrow[i][1]*=-1;\nrow[i][2]*=-1;}}\n\n\n\n\nquaternion[0]=\n0.5*Math.sqrt(Math.max(1+row[0][0]-row[1][1]-row[2][2],0));\nquaternion[1]=\n0.5*Math.sqrt(Math.max(1-row[0][0]+row[1][1]-row[2][2],0));\nquaternion[2]=\n0.5*Math.sqrt(Math.max(1-row[0][0]-row[1][1]+row[2][2],0));\nquaternion[3]=\n0.5*Math.sqrt(Math.max(1+row[0][0]+row[1][1]+row[2][2],0));\n\nif(row[2][1]>row[1][2]){\nquaternion[0]=-quaternion[0];}\n\nif(row[0][2]>row[2][0]){\nquaternion[1]=-quaternion[1];}\n\nif(row[1][0]>row[0][1]){\nquaternion[2]=-quaternion[2];}\n\n\n\nvar rotationDegrees;\nif(\nquaternion[0]<0.001&&quaternion[0]>=0&&\nquaternion[1]<0.001&&quaternion[1]>=0)\n{\n\nrotationDegrees=[0,0,MatrixMath.roundTo3Places(\nMath.atan2(row[0][1],row[0][0])*180/Math.PI)];}else \n\n{\nrotationDegrees=MatrixMath.quaternionToDegreesXYZ(quaternion,matrix,row);}\n\n\n\nreturn {\nrotationDegrees:rotationDegrees,\nperspective:perspective,\nquaternion:quaternion,\nscale:scale,\nskew:skew,\ntranslation:translation,\n\nrotate:rotationDegrees[2],\nrotateX:rotationDegrees[0],\nrotateY:rotationDegrees[1],\nscaleX:scale[0],\nscaleY:scale[1],\ntranslateX:translation[0],\ntranslateY:translation[1]};}};\n\n\n\n\n\nmodule.exports=MatrixMath;","map":null,"id":"MatrixMath","source":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule MatrixMath\n * @noflow\n */\n/* eslint-disable space-infix-ops */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Memory conservative (mutative) matrix math utilities. Uses \"command\"\n * matrices, which are reusable.\n */\nvar MatrixMath = {\n createIdentityMatrix: function() {\n return [\n 1,0,0,0,\n 0,1,0,0,\n 0,0,1,0,\n 0,0,0,1\n ];\n },\n\n createCopy: function(m) {\n return [\n m[0], m[1], m[2], m[3],\n m[4], m[5], m[6], m[7],\n m[8], m[9], m[10], m[11],\n m[12], m[13], m[14], m[15],\n ];\n },\n\n createOrthographic: function(left, right, bottom, top, near, far) {\n var a = 2 / (right - left);\n var b = 2 / (top - bottom);\n var c = -2 / (far - near);\n\n var tx = -(right + left) / (right - left);\n var ty = -(top + bottom) / (top - bottom);\n var tz = -(far + near) / (far - near);\n\n return [\n a, 0, 0, 0,\n 0, b, 0, 0,\n 0, 0, c, 0,\n tx, ty, tz, 1\n ];\n },\n\n createFrustum: function(left, right, bottom, top, near, far) {\n var r_width = 1 / (right - left);\n var r_height = 1 / (top - bottom);\n var r_depth = 1 / (near - far);\n var x = 2 * (near * r_width);\n var y = 2 * (near * r_height);\n var A = (right + left) * r_width;\n var B = (top + bottom) * r_height;\n var C = (far + near) * r_depth;\n var D = 2 * (far * near * r_depth);\n return [\n x, 0, 0, 0,\n 0, y, 0, 0,\n A, B, C,-1,\n 0, 0, D, 0,\n ];\n },\n\n /**\n * This create a perspective projection towards negative z\n * Clipping the z range of [-near, -far]\n *\n * @param fovInRadians - field of view in randians\n */\n createPerspective: function(fovInRadians, aspect, near, far) {\n var h = 1 / Math.tan(fovInRadians / 2);\n var r_depth = 1 / (near - far);\n var C = (far + near) * r_depth;\n var D = 2 * (far * near * r_depth);\n return [\n h/aspect, 0, 0, 0,\n 0, h, 0, 0,\n 0, 0, C,-1,\n 0, 0, D, 0,\n ];\n },\n\n createTranslate2d: function(x, y) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseTranslate2dCommand(mat, x, y);\n return mat;\n },\n\n reuseTranslate2dCommand: function(matrixCommand, x, y) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n },\n\n reuseTranslate3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n matrixCommand[14] = z;\n },\n\n createScale: function(factor) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseScaleCommand(mat, factor);\n return mat;\n },\n\n reuseScaleCommand: function(matrixCommand, factor) {\n matrixCommand[0] = factor;\n matrixCommand[5] = factor;\n },\n\n reuseScale3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[0] = x;\n matrixCommand[5] = y;\n matrixCommand[10] = z;\n },\n\n reusePerspectiveCommand: function(matrixCommand, p) {\n matrixCommand[11] = -1 / p;\n },\n\n reuseScaleXCommand(matrixCommand, factor) {\n matrixCommand[0] = factor;\n },\n\n reuseScaleYCommand(matrixCommand, factor) {\n matrixCommand[5] = factor;\n },\n\n reuseScaleZCommand(matrixCommand, factor) {\n matrixCommand[10] = factor;\n },\n\n reuseRotateXCommand: function(matrixCommand, radians) {\n matrixCommand[5] = Math.cos(radians);\n matrixCommand[6] = Math.sin(radians);\n matrixCommand[9] = -Math.sin(radians);\n matrixCommand[10] = Math.cos(radians);\n },\n\n reuseRotateYCommand: function(matrixCommand, amount) {\n matrixCommand[0] = Math.cos(amount);\n matrixCommand[2] = -Math.sin(amount);\n matrixCommand[8] = Math.sin(amount);\n matrixCommand[10] = Math.cos(amount);\n },\n\n // http://www.w3.org/TR/css3-transforms/#recomposing-to-a-2d-matrix\n reuseRotateZCommand: function(matrixCommand, radians) {\n matrixCommand[0] = Math.cos(radians);\n matrixCommand[1] = Math.sin(radians);\n matrixCommand[4] = -Math.sin(radians);\n matrixCommand[5] = Math.cos(radians);\n },\n\n createRotateZ: function(radians) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseRotateZCommand(mat, radians);\n return mat;\n },\n\n reuseSkewXCommand: function(matrixCommand, radians) {\n matrixCommand[4] = Math.sin(radians);\n matrixCommand[5] = Math.cos(radians);\n },\n\n reuseSkewYCommand: function(matrixCommand, radians) {\n matrixCommand[0] = Math.cos(radians);\n matrixCommand[1] = Math.sin(radians);\n },\n\n multiplyInto: function(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n },\n\n determinant(matrix: Array): number {\n var [\n m00, m01, m02, m03,\n m10, m11, m12, m13,\n m20, m21, m22, m23,\n m30, m31, m32, m33\n ] = matrix;\n return (\n m03 * m12 * m21 * m30 - m02 * m13 * m21 * m30 -\n m03 * m11 * m22 * m30 + m01 * m13 * m22 * m30 +\n m02 * m11 * m23 * m30 - m01 * m12 * m23 * m30 -\n m03 * m12 * m20 * m31 + m02 * m13 * m20 * m31 +\n m03 * m10 * m22 * m31 - m00 * m13 * m22 * m31 -\n m02 * m10 * m23 * m31 + m00 * m12 * m23 * m31 +\n m03 * m11 * m20 * m32 - m01 * m13 * m20 * m32 -\n m03 * m10 * m21 * m32 + m00 * m13 * m21 * m32 +\n m01 * m10 * m23 * m32 - m00 * m11 * m23 * m32 -\n m02 * m11 * m20 * m33 + m01 * m12 * m20 * m33 +\n m02 * m10 * m21 * m33 - m00 * m12 * m21 * m33 -\n m01 * m10 * m22 * m33 + m00 * m11 * m22 * m33\n );\n },\n\n /**\n * Inverse of a matrix. Multiplying by the inverse is used in matrix math\n * instead of division.\n *\n * Formula from:\n * http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n */\n inverse(matrix: Array): Array {\n var det = MatrixMath.determinant(matrix);\n if (!det) {\n return matrix;\n }\n var [\n m00, m01, m02, m03,\n m10, m11, m12, m13,\n m20, m21, m22, m23,\n m30, m31, m32, m33\n ] = matrix;\n return [\n (m12*m23*m31 - m13*m22*m31 + m13*m21*m32 - m11*m23*m32 - m12*m21*m33 + m11*m22*m33) / det,\n (m03*m22*m31 - m02*m23*m31 - m03*m21*m32 + m01*m23*m32 + m02*m21*m33 - m01*m22*m33) / det,\n (m02*m13*m31 - m03*m12*m31 + m03*m11*m32 - m01*m13*m32 - m02*m11*m33 + m01*m12*m33) / det,\n (m03*m12*m21 - m02*m13*m21 - m03*m11*m22 + m01*m13*m22 + m02*m11*m23 - m01*m12*m23) / det,\n (m13*m22*m30 - m12*m23*m30 - m13*m20*m32 + m10*m23*m32 + m12*m20*m33 - m10*m22*m33) / det,\n (m02*m23*m30 - m03*m22*m30 + m03*m20*m32 - m00*m23*m32 - m02*m20*m33 + m00*m22*m33) / det,\n (m03*m12*m30 - m02*m13*m30 - m03*m10*m32 + m00*m13*m32 + m02*m10*m33 - m00*m12*m33) / det,\n (m02*m13*m20 - m03*m12*m20 + m03*m10*m22 - m00*m13*m22 - m02*m10*m23 + m00*m12*m23) / det,\n (m11*m23*m30 - m13*m21*m30 + m13*m20*m31 - m10*m23*m31 - m11*m20*m33 + m10*m21*m33) / det,\n (m03*m21*m30 - m01*m23*m30 - m03*m20*m31 + m00*m23*m31 + m01*m20*m33 - m00*m21*m33) / det,\n (m01*m13*m30 - m03*m11*m30 + m03*m10*m31 - m00*m13*m31 - m01*m10*m33 + m00*m11*m33) / det,\n (m03*m11*m20 - m01*m13*m20 - m03*m10*m21 + m00*m13*m21 + m01*m10*m23 - m00*m11*m23) / det,\n (m12*m21*m30 - m11*m22*m30 - m12*m20*m31 + m10*m22*m31 + m11*m20*m32 - m10*m21*m32) / det,\n (m01*m22*m30 - m02*m21*m30 + m02*m20*m31 - m00*m22*m31 - m01*m20*m32 + m00*m21*m32) / det,\n (m02*m11*m30 - m01*m12*m30 - m02*m10*m31 + m00*m12*m31 + m01*m10*m32 - m00*m11*m32) / det,\n (m01*m12*m20 - m02*m11*m20 + m02*m10*m21 - m00*m12*m21 - m01*m10*m22 + m00*m11*m22) / det\n ];\n },\n\n /**\n * Turns columns into rows and rows into columns.\n */\n transpose(m: Array): Array {\n return [\n m[0], m[4], m[8], m[12],\n m[1], m[5], m[9], m[13],\n m[2], m[6], m[10], m[14],\n m[3], m[7], m[11], m[15]\n ];\n },\n\n /**\n * Based on: http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n multiplyVectorByMatrix(\n v: Array,\n m: Array\n ): Array {\n var [vx, vy, vz, vw] = v;\n return [\n vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\n vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\n vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\n vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15]\n ];\n },\n\n /**\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Length(a: Array): number {\n return Math.sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2]);\n },\n\n /**\n * Based on: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Normalize(\n vector: Array,\n v3Length: number\n ): Array {\n var im = 1 / (v3Length || MatrixMath.v3Length(vector));\n return [\n vector[0] * im,\n vector[1] * im,\n vector[2] * im\n ];\n },\n\n /**\n * The dot product of a and b, two 3-element vectors.\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Dot(a, b) {\n return a[0] * b[0] +\n a[1] * b[1] +\n a[2] * b[2];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Combine(\n a: Array,\n b: Array,\n aScale: number,\n bScale: number\n ): Array {\n return [\n aScale * a[0] + bScale * b[0],\n aScale * a[1] + bScale * b[1],\n aScale * a[2] + bScale * b[2]\n ];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Cross(a: Array, b: Array): Array {\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0]\n ];\n },\n\n /**\n * Based on:\n * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/\n * and:\n * http://quat.zachbennett.com/\n *\n * Note that this rounds degrees to the thousandth of a degree, due to\n * floating point errors in the creation of the quaternion.\n *\n * Also note that this expects the qw value to be last, not first.\n *\n * Also, when researching this, remember that:\n * yaw === heading === z-axis\n * pitch === elevation/attitude === y-axis\n * roll === bank === x-axis\n */\n quaternionToDegreesXYZ(q: Array, matrix, row): Array {\n var [qx, qy, qz, qw] = q;\n var qw2 = qw * qw;\n var qx2 = qx * qx;\n var qy2 = qy * qy;\n var qz2 = qz * qz;\n var test = qx * qy + qz * qw;\n var unit = qw2 + qx2 + qy2 + qz2;\n var conv = 180 / Math.PI;\n\n if (test > 0.49999 * unit) {\n return [0, 2 * Math.atan2(qx, qw) * conv, 90];\n }\n if (test < -0.49999 * unit) {\n return [0, -2 * Math.atan2(qx, qw) * conv, -90];\n }\n\n return [\n MatrixMath.roundTo3Places(\n Math.atan2(2*qx*qw-2*qy*qz,1-2*qx2-2*qz2) * conv\n ),\n MatrixMath.roundTo3Places(\n Math.atan2(2*qy*qw-2*qx*qz,1-2*qy2-2*qz2) * conv\n ),\n MatrixMath.roundTo3Places(\n Math.asin(2*qx*qy+2*qz*qw) * conv\n )\n ];\n },\n\n /**\n * Based on:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n */\n roundTo3Places(n: number): number {\n var arr = n.toString().split('e');\n return Math.round(arr[0] + 'e' + (arr[1] ? (+arr[1] - 3) : 3)) * 0.001;\n },\n\n /**\n * Decompose a matrix into separate transform values, for use on platforms\n * where applying a precomposed matrix is not possible, and transforms are\n * applied in an inflexible ordering (e.g. Android).\n *\n * Implementation based on\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-2d-matrix\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix\n * which was based on\n * http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n decomposeMatrix(transformMatrix: Array): ?Object {\n\n invariant(\n transformMatrix.length === 16,\n 'Matrix decomposition needs a list of 3d matrix values, received %s',\n transformMatrix\n );\n\n // output values\n var perspective = [];\n var quaternion = [];\n var scale = [];\n var skew = [];\n var translation = [];\n\n // create normalized, 2d array matrix\n // and normalized 1d array perspectiveMatrix with redefined 4th column\n if (!transformMatrix[15]) {\n return;\n }\n var matrix = [];\n var perspectiveMatrix = [];\n for (var i = 0; i < 4; i++) {\n matrix.push([]);\n for (var j = 0; j < 4; j++) {\n var value = transformMatrix[(i * 4) + j] / transformMatrix[15];\n matrix[i].push(value);\n perspectiveMatrix.push(j === 3 ? 0 : value);\n }\n }\n perspectiveMatrix[15] = 1;\n\n // test for singularity of upper 3x3 part of the perspective matrix\n if (!MatrixMath.determinant(perspectiveMatrix)) {\n return;\n }\n\n // isolate perspective\n if (matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0) {\n // rightHandSide is the right hand side of the equation.\n // rightHandSide is a vector, or point in 3d space relative to the origin.\n var rightHandSide = [\n matrix[0][3],\n matrix[1][3],\n matrix[2][3],\n matrix[3][3]\n ];\n\n // Solve the equation by inverting perspectiveMatrix and multiplying\n // rightHandSide by the inverse.\n var inversePerspectiveMatrix = MatrixMath.inverse(\n perspectiveMatrix\n );\n var transposedInversePerspectiveMatrix = MatrixMath.transpose(\n inversePerspectiveMatrix\n );\n var perspective = MatrixMath.multiplyVectorByMatrix(\n rightHandSide,\n transposedInversePerspectiveMatrix\n );\n } else {\n // no perspective\n perspective[0] = perspective[1] = perspective[2] = 0;\n perspective[3] = 1;\n }\n\n // translation is simple\n for (var i = 0; i < 3; i++) {\n translation[i] = matrix[3][i];\n }\n\n // Now get scale and shear.\n // 'row' is a 3 element array of 3 component vectors\n var row = [];\n for (i = 0; i < 3; i++) {\n row[i] = [\n matrix[i][0],\n matrix[i][1],\n matrix[i][2]\n ];\n }\n\n // Compute X scale factor and normalize first row.\n scale[0] = MatrixMath.v3Length(row[0]);\n row[0] = MatrixMath.v3Normalize(row[0], scale[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Now, compute Y scale and normalize 2nd row.\n scale[1] = MatrixMath.v3Length(row[1]);\n row[1] = MatrixMath.v3Normalize(row[1], scale[1]);\n skew[0] /= scale[1];\n\n // Compute XZ and YZ shears, orthogonalize 3rd row\n skew[1] = MatrixMath.v3Dot(row[0], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[0], 1.0, -skew[1]);\n skew[2] = MatrixMath.v3Dot(row[1], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[1], 1.0, -skew[2]);\n\n // Next, get Z scale and normalize 3rd row.\n scale[2] = MatrixMath.v3Length(row[2]);\n row[2] = MatrixMath.v3Normalize(row[2], scale[2]);\n skew[1] /= scale[2];\n skew[2] /= scale[2];\n\n // At this point, the matrix (in rows) is orthonormal.\n // Check for a coordinate system flip. If the determinant\n // is -1, then negate the matrix and the scaling factors.\n var pdum3 = MatrixMath.v3Cross(row[1], row[2]);\n if (MatrixMath.v3Dot(row[0], pdum3) < 0) {\n for (i = 0; i < 3; i++) {\n scale[i] *= -1;\n row[i][0] *= -1;\n row[i][1] *= -1;\n row[i][2] *= -1;\n }\n }\n\n // Now, get the rotations out\n quaternion[0] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2], 0));\n quaternion[1] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2], 0));\n quaternion[2] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2], 0));\n quaternion[3] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2], 0));\n\n if (row[2][1] > row[1][2]) {\n quaternion[0] = -quaternion[0];\n }\n if (row[0][2] > row[2][0]) {\n quaternion[1] = -quaternion[1];\n }\n if (row[1][0] > row[0][1]) {\n quaternion[2] = -quaternion[2];\n }\n\n // correct for occasional, weird Euler synonyms for 2d rotation\n var rotationDegrees;\n if (\n quaternion[0] < 0.001 && quaternion[0] >= 0 &&\n quaternion[1] < 0.001 && quaternion[1] >= 0\n ) {\n // this is a 2d rotation on the z-axis\n rotationDegrees = [0, 0, MatrixMath.roundTo3Places(\n Math.atan2(row[0][1], row[0][0]) * 180 / Math.PI\n )];\n } else {\n rotationDegrees = MatrixMath.quaternionToDegreesXYZ(quaternion, matrix, row);\n }\n\n // expose both base data and convenience names\n return {\n rotationDegrees,\n perspective,\n quaternion,\n scale,\n skew,\n translation,\n\n rotate: rotationDegrees[2],\n rotateX: rotationDegrees[0],\n rotateY: rotationDegrees[1],\n scaleX: scale[0],\n scaleY: scale[1],\n translateX: translation[0],\n translateY: translation[1],\n };\n },\n\n};\n\nmodule.exports = MatrixMath;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/mergeFast.js":{"metadata":{"mtime":1463609891000},"data":{"name":"mergeFast"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/mergeIntoFast.js":{"metadata":{"mtime":1463609891000},"data":{"name":"mergeIntoFast"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/MessageQueue.js":{"metadata":{"mtime":1463609891000},"data":{"name":"MessageQueue","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[49,85,130,173,209,254,303],"dependencies":["Systrace","ErrorUtils","JSTimersExecution","Platform","fbjs/lib/invariant","fbjs/lib/keyMirror","stringifySafe"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Systrace=require('Systrace');\nvar ErrorUtils=require('ErrorUtils');\nvar JSTimersExecution=require('JSTimersExecution');\nvar Platform=require('Platform');\n\nvar invariant=require('fbjs/lib/invariant');\nvar keyMirror=require('fbjs/lib/keyMirror');\nvar stringifySafe=require('stringifySafe');\n\nvar MODULE_IDS=0;\nvar METHOD_IDS=1;\nvar PARAMS=2;\nvar CALL_IDS=3;\nvar MIN_TIME_BETWEEN_FLUSHES_MS=5;\n\nvar TRACE_TAG_REACT_APPS=1<<17;\n\nvar SPY_MODE=false;\n\nvar MethodTypes=keyMirror({\nremote:null,\nremoteAsync:null,\nsyncHook:null});\n\n\nvar guard=function guard(fn){\ntry{\nfn();}\ncatch(error){\nErrorUtils.reportFatalError(error);}};var \n\n\n\nMessageQueue=function(){\n\nfunction MessageQueue(remoteModules,localModules){var _this=this;babelHelpers.classCallCheck(this,MessageQueue);\nthis.RemoteModules={};\n\nthis._callableModules={};\nthis._queue=[[],[],[],0];\nthis._moduleTable={};\nthis._methodTable={};\nthis._callbacks=[];\nthis._callbackID=0;\nthis._callID=0;\nthis._lastFlush=0;\nthis._eventLoopStartTime=new Date().getTime();\n\n[\n'invokeCallbackAndReturnFlushedQueue',\n'callFunctionReturnFlushedQueue',\n'flushedQueue'].\nforEach(function(fn){return _this[fn]=_this[fn].bind(_this);});\n\nvar modulesConfig=this._genModulesConfig(remoteModules);\nthis._genModules(modulesConfig);\nlocalModules&&this._genLookupTables(\nthis._genModulesConfig(localModules),this._moduleTable,this._methodTable);\n\n\nthis._debugInfo={};\nthis._remoteModuleTable={};\nthis._remoteMethodTable={};\nthis._genLookupTables(\nmodulesConfig,this._remoteModuleTable,this._remoteMethodTable);}babelHelpers.createClass(MessageQueue,[{key:'callFunctionReturnFlushedQueue',value:function callFunctionReturnFlushedQueue(\n\n\n\n\n\n\nmodule,method,args){var _this2=this;\nguard(function(){\n_this2.__callFunction(module,method,args);\n_this2.__callImmediates();});\n\n\nreturn this.flushedQueue();}},{key:'invokeCallbackAndReturnFlushedQueue',value:function invokeCallbackAndReturnFlushedQueue(\n\n\ncbID,args){var _this3=this;\nguard(function(){\n_this3.__invokeCallback(cbID,args);\n_this3.__callImmediates();});\n\n\nreturn this.flushedQueue();}},{key:'flushedQueue',value:function flushedQueue()\n\n\n{\nthis.__callImmediates();\n\nvar queue=this._queue;\nthis._queue=[[],[],[],this._callID];\nreturn queue[0].length?queue:null;}},{key:'processModuleConfig',value:function processModuleConfig(\n\n\nconfig,moduleID){\nvar module=this._genModule(config,moduleID);\nthis._genLookup(config,moduleID,this._remoteModuleTable,this._remoteMethodTable);\nreturn module;}},{key:'getEventLoopRunningTime',value:function getEventLoopRunningTime()\n\n\n{\nreturn new Date().getTime()-this._eventLoopStartTime;}},{key:'__callImmediates',value:function __callImmediates()\n\n\n\n\n\n\n{\nSystrace.beginEvent('JSTimersExecution.callImmediates()');\nguard(function(){return JSTimersExecution.callImmediates();});\nSystrace.endEvent();}},{key:'__nativeCall',value:function __nativeCall(\n\n\nmodule,method,params,onFail,onSucc){\nif(onFail||onSucc){\n\nthis._callbackID>1<<5&&(\nthis._debugInfo[this._callbackID>>5]=null);\n\nthis._debugInfo[this._callbackID>>1]=[module,method];\nonFail&¶ms.push(this._callbackID);\nthis._callbacks[this._callbackID++]=onFail;\nonSucc&¶ms.push(this._callbackID);\nthis._callbacks[this._callbackID++]=onSucc;}\n\n\nglobal.nativeTraceBeginAsyncFlow&&\nglobal.nativeTraceBeginAsyncFlow(TRACE_TAG_REACT_APPS,'native',this._callID);\nthis._callID++;\n\nthis._queue[MODULE_IDS].push(module);\nthis._queue[METHOD_IDS].push(method);\nthis._queue[PARAMS].push(params);\n\nvar now=new Date().getTime();\nif(global.nativeFlushQueueImmediate&&\nnow-this._lastFlush>=MIN_TIME_BETWEEN_FLUSHES_MS){\nglobal.nativeFlushQueueImmediate(this._queue);\nthis._queue=[[],[],[],this._callID];\nthis._lastFlush=now;}\n\nSystrace.counterEvent('pending_js_to_native_queue',this._queue[0].length);\nif(__DEV__&&SPY_MODE&&isFinite(module)){\nconsole.log('JS->N : '+this._remoteModuleTable[module]+'.'+\nthis._remoteMethodTable[module][method]+'('+JSON.stringify(params)+')');}}},{key:'__callFunction',value:function __callFunction(\n\n\n\nmodule,method,args){\nthis._lastFlush=new Date().getTime();\nthis._eventLoopStartTime=this._lastFlush;\nif(isFinite(module)){\nmethod=this._methodTable[module][method];\nmodule=this._moduleTable[module];}\n\nSystrace.beginEvent(module+'.'+method+'()');\nif(__DEV__&&SPY_MODE){\nconsole.log('N->JS : '+module+'.'+method+'('+JSON.stringify(args)+')');}\n\nvar moduleMethods=this._callableModules[module];\ninvariant(\n!!moduleMethods,\n'Module %s is not a registered callable module.',\nmodule);\n\nmoduleMethods[method].apply(moduleMethods,args);\nSystrace.endEvent();}},{key:'__invokeCallback',value:function __invokeCallback(\n\n\ncbID,args){\nthis._lastFlush=new Date().getTime();\nthis._eventLoopStartTime=this._lastFlush;\nvar callback=this._callbacks[cbID];\nvar debug=this._debugInfo[cbID>>1];\nvar module=debug&&this._remoteModuleTable[debug[0]];\nvar method=debug&&this._remoteMethodTable[debug[0]][debug[1]];\nif(!callback){\nvar errorMessage='Callback with id '+cbID+': '+module+'.'+method+'() not found';\nif(method){\nerrorMessage='The callback '+method+'() exists in module '+module+', '+'but only one callback may be registered to a function in a native module.';}\n\n\ninvariant(\ncallback,\nerrorMessage);}\n\n\nvar profileName=debug?'':cbID;\nif(callback&&SPY_MODE&&__DEV__){\nconsole.log('N->JS : '+profileName+'('+JSON.stringify(args)+')');}\n\nSystrace.beginEvent('MessageQueue.invokeCallback('+\nprofileName+', '+stringifySafe(args)+')');\nthis._callbacks[cbID&~1]=null;\nthis._callbacks[cbID|1]=null;\ncallback.apply(null,args);\nSystrace.endEvent();}},{key:'_genModulesConfig',value:function _genModulesConfig(\n\n\n\n\n\n\n\n\n\n\n\nmodules){\nif(Array.isArray(modules)){\nreturn modules;}else \n{\nvar moduleArray=[];\nvar moduleNames=Object.keys(modules);\nfor(var i=0,l=moduleNames.length;i0?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);};}\n\n\nfn.type=type;\nreturn fn;}},{key:'registerCallableModule',value:function registerCallableModule(\n\n\nname,methods){\nthis._callableModules[name]=methods;}}]);return MessageQueue;}();\n\n\n\n\nfunction moduleHasConstants(moduleArray){\nreturn !Array.isArray(moduleArray[1]);}\n\n\nfunction arrayContains(array,value){\nreturn array.indexOf(value)!==-1;}\n\n\nfunction createErrorFromErrorData(errorData){var \n\nmessage=\n\nerrorData.message;var extraErrorInfo=babelHelpers.objectWithoutProperties(errorData,['message']);\nvar error=new Error(message);\nerror.framesToPop=1;\nreturn babelHelpers.extends(error,extraErrorInfo);}\n\n\nmodule.exports=MessageQueue;","map":null,"id":"MessageQueue","source":"/**\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 Systrace = require('Systrace');\nlet ErrorUtils = require('ErrorUtils');\nlet JSTimersExecution = require('JSTimersExecution');\nlet Platform = require('Platform');\n\nlet invariant = require('fbjs/lib/invariant');\nlet keyMirror = require('fbjs/lib/keyMirror');\nlet stringifySafe = require('stringifySafe');\n\nlet MODULE_IDS = 0;\nlet METHOD_IDS = 1;\nlet PARAMS = 2;\nlet CALL_IDS = 3;\nlet MIN_TIME_BETWEEN_FLUSHES_MS = 5;\n\nlet TRACE_TAG_REACT_APPS = 1 << 17;\n\nlet SPY_MODE = false;\n\nlet MethodTypes = keyMirror({\n remote: null,\n remoteAsync: null,\n syncHook: 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) {\n this.RemoteModules = {};\n\n this._callableModules = {};\n this._queue = [[], [], [], 0];\n this._moduleTable = {};\n this._methodTable = {};\n this._callbacks = [];\n this._callbackID = 0;\n this._callID = 0;\n this._lastFlush = 0;\n this._eventLoopStartTime = new Date().getTime();\n\n [\n 'invokeCallbackAndReturnFlushedQueue',\n 'callFunctionReturnFlushedQueue',\n 'flushedQueue',\n ].forEach((fn) => this[fn] = this[fn].bind(this));\n\n let modulesConfig = this._genModulesConfig(remoteModules);\n this._genModules(modulesConfig);\n localModules && this._genLookupTables(\n this._genModulesConfig(localModules),this._moduleTable, this._methodTable\n );\n\n this._debugInfo = {};\n this._remoteModuleTable = {};\n this._remoteMethodTable = {};\n this._genLookupTables(\n modulesConfig, this._remoteModuleTable, this._remoteMethodTable\n );\n }\n\n /**\n * Public APIs\n */\n callFunctionReturnFlushedQueue(module, method, args) {\n guard(() => {\n this.__callFunction(module, method, args);\n this.__callImmediates();\n });\n\n return this.flushedQueue();\n }\n\n invokeCallbackAndReturnFlushedQueue(cbID, args) {\n guard(() => {\n this.__invokeCallback(cbID, args);\n this.__callImmediates();\n });\n\n return this.flushedQueue();\n }\n\n flushedQueue() {\n this.__callImmediates();\n\n let queue = this._queue;\n this._queue = [[], [], [], this._callID];\n return queue[0].length ? queue : null;\n }\n\n processModuleConfig(config, moduleID) {\n const module = this._genModule(config, moduleID);\n this._genLookup(config, moduleID, this._remoteModuleTable, this._remoteMethodTable);\n return module;\n }\n\n getEventLoopRunningTime() {\n return new Date().getTime() - this._eventLoopStartTime;\n }\n\n /**\n * \"Private\" methods\n */\n\n __callImmediates() {\n Systrace.beginEvent('JSTimersExecution.callImmediates()');\n guard(() => JSTimersExecution.callImmediates());\n Systrace.endEvent();\n }\n\n __nativeCall(module, method, params, onFail, onSucc) {\n if (onFail || onSucc) {\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 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\n global.nativeTraceBeginAsyncFlow &&\n global.nativeTraceBeginAsyncFlow(TRACE_TAG_REACT_APPS, 'native', this._callID);\n this._callID++;\n\n this._queue[MODULE_IDS].push(module);\n this._queue[METHOD_IDS].push(method);\n this._queue[PARAMS].push(params);\n\n var now = new Date().getTime();\n if (global.nativeFlushQueueImmediate &&\n now - this._lastFlush >= MIN_TIME_BETWEEN_FLUSHES_MS) {\n global.nativeFlushQueueImmediate(this._queue);\n this._queue = [[], [], [], this._callID];\n this._lastFlush = now;\n }\n Systrace.counterEvent('pending_js_to_native_queue', this._queue[0].length);\n if (__DEV__ && SPY_MODE && isFinite(module)) {\n console.log('JS->N : ' + this._remoteModuleTable[module] + '.' +\n this._remoteMethodTable[module][method] + '(' + JSON.stringify(params) + ')');\n }\n }\n\n __callFunction(module, method, args) {\n this._lastFlush = new Date().getTime();\n this._eventLoopStartTime = this._lastFlush;\n if (isFinite(module)) {\n method = this._methodTable[module][method];\n module = this._moduleTable[module];\n }\n Systrace.beginEvent(`${module}.${method}()`);\n if (__DEV__ && SPY_MODE) {\n console.log('N->JS : ' + module + '.' + method + '(' + JSON.stringify(args) + ')');\n }\n var moduleMethods = this._callableModules[module];\n invariant(\n !!moduleMethods,\n 'Module %s is not a registered callable module.',\n module\n );\n moduleMethods[method].apply(moduleMethods, args);\n Systrace.endEvent();\n }\n\n __invokeCallback(cbID, args) {\n this._lastFlush = new Date().getTime();\n this._eventLoopStartTime = this._lastFlush;\n let callback = this._callbacks[cbID];\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 let errorMessage = `Callback with id ${cbID}: ${module}.${method}() not found`;\n if (method) {\n errorMessage = `The callback ${method}() exists in module ${module}, `\n + `but only one callback may be registered to a function in a native module.`;\n }\n invariant(\n callback,\n errorMessage\n );\n }\n let profileName = debug ? '' : cbID;\n if (callback && SPY_MODE && __DEV__) {\n console.log('N->JS : ' + profileName + '(' + JSON.stringify(args) + ')');\n }\n Systrace.beginEvent(\n `MessageQueue.invokeCallback(${profileName}, ${stringifySafe(args)})`);\n this._callbacks[cbID & ~1] = null;\n this._callbacks[cbID | 1] = null;\n callback.apply(null, args);\n Systrace.endEvent();\n }\n\n /**\n * Private helper methods\n */\n\n /**\n * Converts the old, object-based module structure to the new\n * array-based structure. TODO (t8823865) Removed this\n * function once Android has been updated.\n */\n _genModulesConfig(modules /* array or object */) {\n if (Array.isArray(modules)) {\n return modules;\n } else {\n let moduleArray = [];\n let moduleNames = Object.keys(modules);\n for (var i = 0, l = moduleNames.length; i < l; i++) {\n let moduleName = moduleNames[i];\n let moduleConfig = modules[moduleName];\n let module = [moduleName];\n if (moduleConfig.constants) {\n module.push(moduleConfig.constants);\n }\n let methodsConfig = moduleConfig.methods;\n if (methodsConfig) {\n let methods = [];\n let asyncMethods = [];\n let syncHooks = [];\n let methodNames = Object.keys(methodsConfig);\n for (var j = 0, ll = methodNames.length; j < ll; j++) {\n let methodName = methodNames[j];\n let methodConfig = methodsConfig[methodName];\n methods[methodConfig.methodID] = methodName;\n if (methodConfig.type === MethodTypes.remoteAsync) {\n asyncMethods.push(methodConfig.methodID);\n } else if (methodConfig.type === MethodTypes.syncHook) {\n syncHooks.push(methodConfig.methodID);\n }\n }\n if (methods.length) {\n module.push(methods);\n module.push(asyncMethods);\n module.push(syncHooks);\n }\n }\n moduleArray[moduleConfig.moduleID] = module;\n }\n return moduleArray;\n }\n }\n\n _genLookupTables(modulesConfig, moduleTable, methodTable) {\n modulesConfig.forEach((config, moduleID) => {\n this._genLookup(config, moduleID, moduleTable, methodTable);\n });\n }\n\n _genLookup(config, moduleID, moduleTable, methodTable) {\n if (!config) {\n return;\n }\n\n let moduleName, methods;\n if (moduleHasConstants(config)) {\n [moduleName, , methods] = config;\n } else {\n [moduleName, methods] = config;\n }\n\n moduleTable[moduleID] = moduleName;\n methodTable[moduleID] = Object.assign({}, methods);\n }\n\n _genModules(remoteModules) {\n remoteModules.forEach((config, moduleID) => {\n this._genModule(config, moduleID);\n });\n }\n\n _genModule(config, moduleID) {\n if (!config) {\n return;\n }\n\n let moduleName, constants, methods, asyncMethods, syncHooks;\n if (moduleHasConstants(config)) {\n [moduleName, constants, methods, asyncMethods, syncHooks] = config;\n } else {\n [moduleName, methods, asyncMethods, syncHooks] = config;\n }\n\n let module = {};\n methods && methods.forEach((methodName, methodID) => {\n const isAsync = asyncMethods && arrayContains(asyncMethods, methodID);\n const isSyncHook = syncHooks && arrayContains(syncHooks, methodID);\n invariant(!isAsync || !isSyncHook, 'Cannot have a method that is both async and a sync hook');\n const methodType = isAsync ? MethodTypes.remoteAsync :\n isSyncHook ? MethodTypes.syncHook :\n MethodTypes.remote;\n module[methodName] = this._genMethod(moduleID, methodID, methodType);\n });\n Object.assign(module, constants);\n\n if (!constants && !methods && !asyncMethods) {\n module.moduleID = moduleID;\n }\n\n this.RemoteModules[moduleName] = module;\n return module;\n }\n\n _genMethod(module, method, type) {\n let fn = null;\n let self = this;\n if (type === MethodTypes.remoteAsync) {\n fn = function(...args) {\n return new Promise((resolve, reject) => {\n self.__nativeCall(\n module,\n method,\n args,\n (data) => {\n resolve(data);\n },\n (errorData) => {\n var error = createErrorFromErrorData(errorData);\n reject(error);\n });\n });\n };\n } else if (type === MethodTypes.syncHook) {\n return function(...args) {\n return global.nativeCallSyncHook(module, method, args);\n }\n } else {\n fn = 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 fn.type = type;\n return fn;\n }\n\n registerCallableModule(name, methods) {\n this._callableModules[name] = methods;\n }\n\n}\n\nfunction moduleHasConstants(moduleArray: Array>): boolean {\n return !Array.isArray(moduleArray[1]);\n}\n\nfunction arrayContains(array: Array, value: T): boolean {\n return array.indexOf(value) !== -1;\n}\n\nfunction createErrorFromErrorData(errorData: {message: string}): 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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PerformanceLogger","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[51,100],"dependencies":["BatchedBridge","fbjs/lib/performanceNow"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar BatchedBridge=require('BatchedBridge');\nvar fbjsPerformanceNow=require('fbjs/lib/performanceNow');\n\nvar performanceNow=global.nativePerformanceNow||fbjsPerformanceNow;\n\nvar timespans={};\nvar extras={};\n\n\n\n\n\nvar PerformanceLogger={\naddTimespan:function addTimespan(key,lengthInMs,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to add a timespan that already exists ',\nkey);}\n\n\nreturn;}\n\n\ntimespans[key]={\ndescription:description,\ntotalTime:lengthInMs};},\n\n\n\nstartTimespan:function startTimespan(key,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to start a timespan that already exists ',\nkey);}\n\n\nreturn;}\n\n\ntimespans[key]={\ndescription:description,\nstartTime:performanceNow()};},\n\n\n\nstopTimespan:function stopTimespan(key){\nif(!timespans[key]||!timespans[key].startTime){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to end a timespan that has not started ',\nkey);}\n\n\nreturn;}\n\nif(timespans[key].endTime){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to end a timespan that has already ended ',\nkey);}\n\n\nreturn;}\n\n\ntimespans[key].endTime=performanceNow();\ntimespans[key].totalTime=\ntimespans[key].endTime-timespans[key].startTime;},\n\n\nclear:function clear(){\ntimespans={};\nextras={};},\n\n\nclearExceptTimespans:function clearExceptTimespans(keys){\ntimespans=Object.keys(timespans).reduce(function(previous,key){\nif(keys.indexOf(key)!==-1){\nprevious[key]=timespans[key];}\n\nreturn previous;},\n{});\nextras={};},\n\n\ngetTimespans:function getTimespans(){\nreturn timespans;},\n\n\nhasTimespan:function hasTimespan(key){\nreturn !!timespans[key];},\n\n\nlogTimespans:function logTimespans(){\nfor(var key in timespans){\nif(timespans[key].totalTime){\nconsole.log(key+': '+timespans[key].totalTime+'ms');}}},\n\n\n\n\naddTimespans:function addTimespans(newTimespans,labels){\nfor(var i=0,l=newTimespans.length;i\n * ```\n */\nclass PixelRatio {\n /**\n * Returns the device pixel density. Some examples:\n *\n * - PixelRatio.get() === 1\n * - mdpi Android devices (160 dpi)\n * - PixelRatio.get() === 1.5\n * - hdpi Android devices (240 dpi)\n * - PixelRatio.get() === 2\n * - iPhone 4, 4S\n * - iPhone 5, 5c, 5s\n * - iPhone 6\n * - xhdpi Android devices (320 dpi)\n * - PixelRatio.get() === 3\n * - iPhone 6 plus\n * - xxhdpi Android devices (480 dpi)\n * - PixelRatio.get() === 3.5\n * - Nexus 6\n */\n static get(): number {\n return Dimensions.get('window').scale;\n }\n\n /**\n * Returns the scaling factor for font sizes. This is the ratio that is used to calculate the\n * absolute font size, so any elements that heavily depend on that should use this to do\n * calculations.\n *\n * If a font scale is not set, this returns the device pixel ratio.\n *\n * Currently this is only implemented on Android and reflects the user preference set in\n * Settings > Display > Font size, on iOS it will always return the default pixel ratio.\n * @platform android\n */\n static getFontScale(): number {\n return Dimensions.get('window').fontScale || PixelRatio.get();\n }\n\n /**\n * Converts a layout size (dp) to pixel size (px).\n *\n * Guaranteed to return an integer number.\n */\n static getPixelSizeForLayoutSize(layoutSize: number): number {\n return Math.round(layoutSize * PixelRatio.get());\n }\n\n /**\n * Rounds a layout size (dp) to the nearest layout size that corresponds to\n * an integer number of pixels. For example, on a device with a PixelRatio\n * of 3, `PixelRatio.roundToNearestPixel(8.4) = 8.33`, which corresponds to\n * exactly (8.33 * 3) = 25 pixels.\n */\n static roundToNearestPixel(layoutSize: number): number {\n var ratio = PixelRatio.get();\n return Math.round(layoutSize * ratio) / ratio;\n }\n\n // No-op for iOS, but used on the web. Should not be documented.\n static startDetecting() {}\n}\n\nmodule.exports = PixelRatio;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/Platform.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Platform"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/Platform.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Platform","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform={\nOS:'ios',\nselect:function select(obj){return obj.ios;}};\n\n\nmodule.exports=Platform;","map":null,"id":"Platform","source":"/**\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 Platform\n * @flow\n */\n\n'use strict';\n\nvar Platform = {\n OS: 'ios',\n select: (obj: Object) => obj.ios,\n};\n\nmodule.exports = Platform;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/RCTLog.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RCTLog","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,93],"dependencies":["BatchedBridge","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BatchedBridge=require('BatchedBridge');\n\nvar invariant=require('fbjs/lib/invariant');\n\nvar levelsMap={\nlog:'log',\ninfo:'info',\nwarn:'warn',\nerror:'error',\nfatal:'error'};var \n\n\nRCTLog=function(){function RCTLog(){babelHelpers.classCallCheck(this,RCTLog);}babelHelpers.createClass(RCTLog,null,[{key:'logIfNoNativeHook',value:function logIfNoNativeHook()\n\n{\nvar args=Array.prototype.slice.call(arguments);\nvar level=args.shift();\nvar logFn=levelsMap[level];\ninvariant(\nlogFn,\n'Level \"'+level+'\" not one of '+Object.keys(levelsMap));\n\nif(typeof global.nativeLoggingHook==='undefined'){\n\nconsole[logFn].apply(console,args);}\n\nreturn true;}}]);return RCTLog;}();\n\n\n\nBatchedBridge.registerCallableModule(\n'RCTLog',\nRCTLog);\n\n\nmodule.exports=RCTLog;","map":null,"id":"RCTLog","source":"/**\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 RCTLog\n * @flow\n */\n'use strict';\n\nvar BatchedBridge = require('BatchedBridge');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar levelsMap = {\n log: 'log',\n info: 'info',\n warn: 'warn',\n error: 'error',\n fatal: 'error',\n};\n\nclass RCTLog {\n // level one of log, info, warn, error, mustfix\n static logIfNoNativeHook() {\n var args = Array.prototype.slice.call(arguments);\n var level = args.shift();\n var logFn = levelsMap[level];\n invariant(\n logFn,\n 'Level \"' + level + '\" not one of ' + Object.keys(levelsMap)\n );\n if (typeof global.nativeLoggingHook === 'undefined') {\n // We already printed in xcode, so only log here if using a js debugger\n console[logFn].apply(console, args);\n }\n return true;\n }\n}\n\nBatchedBridge.registerCallableModule(\n 'RCTLog',\n RCTLog\n);\n\nmodule.exports = RCTLog;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/RCTRenderingPerf.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RCTRenderingPerf","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[55,99],"dependencies":["ReactDefaultPerf","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactDefaultPerf=require('ReactDefaultPerf');\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\n\nvar perfModules=[];\nvar enabled=false;\n\nvar RCTRenderingPerf={\n\ntoggle:function toggle(){\nconsole.log('Render perfomance measurements enabled');\nenabled=true;},\n\n\nstart:function start(){\nif(!enabled){\nreturn;}\n\n\nReactDefaultPerf.start();\nperfModules.forEach(function(module){return module.start();});},\n\n\nstop:function stop(){\nif(!enabled){\nreturn;}\n\n\nReactDefaultPerf.stop();\nReactDefaultPerf.printInclusive();\nReactDefaultPerf.printWasted();\n\nvar totalRender=0;\nvar totalTime=0;\nvar measurements=ReactDefaultPerf.getLastMeasurements();\nfor(var ii=0;ii void;\n stop: () => void;\n}\n\nvar perfModules = [];\nvar enabled = false;\n\nvar RCTRenderingPerf = {\n // Once perf is enabled, it stays enabled\n toggle: function() {\n console.log('Render perfomance measurements enabled');\n enabled = true;\n },\n\n start: function() {\n if (!enabled) {\n return;\n }\n\n ReactDefaultPerf.start();\n perfModules.forEach((module) => module.start());\n },\n\n stop: function() {\n if (!enabled) {\n return;\n }\n\n ReactDefaultPerf.stop();\n ReactDefaultPerf.printInclusive();\n ReactDefaultPerf.printWasted();\n\n var totalRender = 0;\n var totalTime = 0;\n var measurements = ReactDefaultPerf.getLastMeasurements();\n for (var ii = 0; ii < measurements.length; ii++) {\n var render = measurements[ii].render;\n for (var nodeName in render) {\n totalRender += render[nodeName];\n }\n totalTime += measurements[ii].totalTime;\n }\n console.log('Total time spent in render(): ' + totalRender + 'ms');\n\n perfModules.forEach((module) => module.stop());\n },\n\n register: function(module: perfModule) {\n invariant(\n typeof module.start === 'function',\n 'Perf module should have start() function'\n );\n invariant(\n typeof module.stop === 'function',\n 'Perf module should have stop() function'\n );\n perfModules.push(module);\n }\n};\n\nmodule.exports = RCTRenderingPerf;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/stringifySafe.js":{"metadata":{"mtime":1463609891000},"data":{"name":"stringifySafe","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"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;","map":null,"id":"stringifySafe","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/Systrace.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Systrace","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[221],"dependencies":["ReactPerf"],"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\nvar TRACE_TAG_REACT_APPS=1<<17;\nvar TRACE_TAG_JSC_CALLS=1<<27;\n\nvar _enabled=false;\nvar _asyncCookie=0;\nvar _ReactPerf=null;\nfunction ReactPerf(){\nif(!_ReactPerf){\n_ReactPerf=require('ReactPerf');}\n\nreturn _ReactPerf;}\n\n\nvar Systrace={\nsetEnabled:function setEnabled(enabled){\nif(_enabled!==enabled){\nif(enabled){\nglobal.nativeTraceBeginLegacy&&global.nativeTraceBeginLegacy(TRACE_TAG_JSC_CALLS);}else \n{\nglobal.nativeTraceEndLegacy&&global.nativeTraceEndLegacy(TRACE_TAG_JSC_CALLS);}}\n\n\n_enabled=enabled;\n\nReactPerf().enableMeasure=enabled;},\n\n\n\n\n\nbeginEvent:function beginEvent(profileName){\nif(_enabled){\nprofileName=typeof profileName==='function'?\nprofileName():profileName;\nglobal.nativeTraceBeginSection(TRACE_TAG_REACT_APPS,profileName);}},\n\n\n\nendEvent:function endEvent(){\nif(_enabled){\nglobal.nativeTraceEndSection(TRACE_TAG_REACT_APPS);}},\n\n\n\n\n\n\n\n\nbeginAsyncEvent:function beginAsyncEvent(profileName){\nvar cookie=_asyncCookie;\nif(_enabled){\n_asyncCookie++;\nprofileName=typeof profileName==='function'?\nprofileName():profileName;\nglobal.nativeTraceBeginAsyncSection(TRACE_TAG_REACT_APPS,profileName,cookie,0);}\n\nreturn cookie;},\n\n\nendAsyncEvent:function endAsyncEvent(profileName,cookie){\nif(_enabled){\nprofileName=typeof profileName==='function'?\nprofileName():profileName;\nglobal.nativeTraceEndAsyncSection(TRACE_TAG_REACT_APPS,profileName,cookie,0);}},\n\n\n\n\n\n\ncounterEvent:function counterEvent(profileName,value){\nif(_enabled){\nprofileName=typeof profileName==='function'?\nprofileName():profileName;\nglobal.nativeTraceCounter&&\nglobal.nativeTraceCounter(TRACE_TAG_REACT_APPS,profileName,value);}},\n\n\n\nreactPerfMeasure:function reactPerfMeasure(objName,fnName,func){\nreturn function(component){\nif(!_enabled){\nreturn func.apply(this,arguments);}\n\n\nvar name=objName==='ReactCompositeComponent'&&this.getName()||'';\nSystrace.beginEvent(objName+'.'+fnName+'('+name+')');\nvar ret=func.apply(this,arguments);\nSystrace.endEvent();\nreturn ret;};},\n\n\n\nswizzleReactPerf:function swizzleReactPerf(){\nReactPerf().injection.injectMeasure(Systrace.reactPerfMeasure);},\n\n\n\n\n\n\nattachToRelayProfiler:function attachToRelayProfiler(relayProfiler){\nrelayProfiler.attachProfileHandler('*',function(name){\nvar cookie=Systrace.beginAsyncEvent(name);\nreturn function(){\nSystrace.endAsyncEvent(name,cookie);};});\n\n\n\nrelayProfiler.attachAggregateHandler('*',function(name,callback){\nSystrace.beginEvent(name);\ncallback();\nSystrace.endEvent();});},\n\n\n\n\n\nswizzleJSON:function swizzleJSON(){\nSystrace.measureMethods(JSON,'JSON',[\n'parse',\n'stringify']);},\n\n\n\n\n\n\n\n\n\n\n\nmeasureMethods:function measureMethods(object,objectName,methodNames){\nif(!__DEV__){\nreturn;}\n\n\nmethodNames.forEach(function(methodName){\nobject[methodName]=Systrace.measure(\nobjectName,\nmethodName,\nobject[methodName]);});},\n\n\n\n\n\n\n\n\n\n\n\n\n\nmeasure:function measure(objName,fnName,func){\nif(!__DEV__){\nreturn func;}\n\n\nvar profileName=objName+'.'+fnName;\nreturn function(){\nif(!_enabled){\nreturn func.apply(this,arguments);}\n\n\nSystrace.beginEvent(profileName);\nvar ret=func.apply(this,arguments);\nSystrace.endEvent();\nreturn ret;};}};\n\n\n\n\nSystrace.setEnabled(global.__RCTProfileIsProfiling||false);\n\nif(__DEV__){\n\n\n\n\nrequire.Systrace=Systrace;}\n\n\nmodule.exports=Systrace;","map":null,"id":"Systrace","source":"/**\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 Systrace\n * @flow\n */\n'use strict';\n\ntype RelayProfiler = {\n attachProfileHandler(\n name: string,\n handler: (name: string, state?: any) => () => void\n ): void,\n\n attachAggregateHandler(\n name: string,\n handler: (name: string, callback: () => void) => void\n ): void,\n};\n\nvar TRACE_TAG_REACT_APPS = 1 << 17;\nvar TRACE_TAG_JSC_CALLS = 1 << 27;\n\nvar _enabled = false;\nvar _asyncCookie = 0;\nvar _ReactPerf = null;\nfunction ReactPerf() {\n if (!_ReactPerf) {\n _ReactPerf = require('ReactPerf');\n }\n return _ReactPerf;\n}\n\nvar Systrace = {\n setEnabled(enabled: boolean) {\n if (_enabled !== enabled) {\n if (enabled) {\n global.nativeTraceBeginLegacy && global.nativeTraceBeginLegacy(TRACE_TAG_JSC_CALLS);\n } else {\n global.nativeTraceEndLegacy && global.nativeTraceEndLegacy(TRACE_TAG_JSC_CALLS);\n }\n }\n _enabled = enabled;\n\n ReactPerf().enableMeasure = enabled;\n },\n\n /**\n * beginEvent/endEvent for starting and then ending a profile within the same call stack frame\n **/\n beginEvent(profileName?: any) {\n if (_enabled) {\n profileName = typeof profileName === 'function' ?\n profileName() : profileName;\n global.nativeTraceBeginSection(TRACE_TAG_REACT_APPS, profileName);\n }\n },\n\n endEvent() {\n if (_enabled) {\n global.nativeTraceEndSection(TRACE_TAG_REACT_APPS);\n }\n },\n\n /**\n * beginAsyncEvent/endAsyncEvent for starting and then ending a profile where the end can either\n * occur on another thread or out of the current stack frame, eg await\n * the returned cookie variable should be used as input into the endAsyncEvent call to end the profile\n **/\n beginAsyncEvent(profileName?: any): any {\n var cookie = _asyncCookie;\n if (_enabled) {\n _asyncCookie++;\n profileName = typeof profileName === 'function' ?\n profileName() : profileName;\n global.nativeTraceBeginAsyncSection(TRACE_TAG_REACT_APPS, profileName, cookie, 0);\n }\n return cookie;\n },\n\n endAsyncEvent(profileName?: any, cookie?: any) {\n if (_enabled) {\n profileName = typeof profileName === 'function' ?\n profileName() : profileName;\n global.nativeTraceEndAsyncSection(TRACE_TAG_REACT_APPS, profileName, cookie, 0);\n }\n },\n\n /**\n * counterEvent registers the value to the profileName on the systrace timeline\n **/\n counterEvent(profileName?: any, value?: any) {\n if (_enabled) {\n profileName = typeof profileName === 'function' ?\n profileName() : profileName;\n global.nativeTraceCounter &&\n global.nativeTraceCounter(TRACE_TAG_REACT_APPS, profileName, value);\n }\n },\n\n reactPerfMeasure(objName: string, fnName: string, func: any): any {\n return function (component) {\n if (!_enabled) {\n return func.apply(this, arguments);\n }\n\n var name = objName === 'ReactCompositeComponent' && this.getName() || '';\n Systrace.beginEvent(`${objName}.${fnName}(${name})`);\n var ret = func.apply(this, arguments);\n Systrace.endEvent();\n return ret;\n };\n },\n\n swizzleReactPerf() {\n ReactPerf().injection.injectMeasure(Systrace.reactPerfMeasure);\n },\n\n /**\n * Relay profiles use await calls, so likely occur out of current stack frame\n * therefore async variant of profiling is used\n **/\n attachToRelayProfiler(relayProfiler: RelayProfiler) {\n relayProfiler.attachProfileHandler('*', (name) => {\n var cookie = Systrace.beginAsyncEvent(name);\n return () => {\n Systrace.endAsyncEvent(name, cookie);\n };\n });\n\n relayProfiler.attachAggregateHandler('*', (name, callback) => {\n Systrace.beginEvent(name);\n callback();\n Systrace.endEvent();\n });\n },\n\n /* This is not called by default due to perf overhead but it's useful\n if you want to find traces which spend too much time in JSON. */\n swizzleJSON() {\n Systrace.measureMethods(JSON, 'JSON', [\n 'parse',\n 'stringify'\n ]);\n },\n\n /**\n * Measures multiple methods of a class. For example, you can do:\n * Systrace.measureMethods(JSON, 'JSON', ['parse', 'stringify']);\n *\n * @param object\n * @param objectName\n * @param methodNames Map from method names to method display names.\n */\n measureMethods(object: any, objectName: string, methodNames: Array): void {\n if (!__DEV__) {\n return;\n }\n\n methodNames.forEach(methodName => {\n object[methodName] = Systrace.measure(\n objectName,\n methodName,\n object[methodName]\n );\n });\n },\n\n /**\n * Returns an profiled version of the input function. For example, you can:\n * JSON.parse = Systrace.measure('JSON', 'parse', JSON.parse);\n *\n * @param objName\n * @param fnName\n * @param {function} func\n * @return {function} replacement function\n */\n measure(objName: string, fnName: string, func: any): any {\n if (!__DEV__) {\n return func;\n }\n\n var profileName = `${objName}.${fnName}`;\n return function() {\n if (!_enabled) {\n return func.apply(this, arguments);\n }\n\n Systrace.beginEvent(profileName);\n var ret = func.apply(this, arguments);\n Systrace.endEvent();\n return ret;\n };\n },\n};\n\nSystrace.setEnabled(global.__RCTProfileIsProfiling || false);\n\nif (__DEV__) {\n // This is needed, because require callis in polyfills are not processed as\n // other files. Therefore, calls to `require('moduleId')` are not replaced\n // with numeric IDs\n // TODO(davidaurelio) Scan polyfills for dependencies, too (t9759686)\n require.Systrace = Systrace;\n}\n\nmodule.exports = Systrace;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/truncate.js":{"metadata":{"mtime":1463609891000},"data":{"name":"truncate"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/UIManager.js":{"metadata":{"mtime":1463609891000},"data":{"name":"UIManager","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48,103],"dependencies":["NativeModules","findNodeHandle"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar UIManager=require('NativeModules').UIManager;\nvar findNodeHandle=require('findNodeHandle');\n\nvar _takeSnapshot=UIManager.takeSnapshot;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUIManager.takeSnapshot=function _callee(\nview,\noptions){return regeneratorRuntime.async(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(\n\n\n\n\n\n\n_takeSnapshot){_context.next=3;break;}\nconsole.warn('UIManager.takeSnapshot is not available on this platform');return _context.abrupt('return');case 3:\n\n\nif(typeof view!=='number'&&view!=='window'){\nview=findNodeHandle(view)||'window';}return _context.abrupt('return',\n\n_takeSnapshot(view,options));case 5:case 'end':return _context.stop();}}},null,this);};\n\n\nmodule.exports=UIManager;","map":null,"id":"UIManager","source":"/**\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 UIManager\n * @flow\n */\n'use strict';\n\nvar UIManager = require('NativeModules').UIManager;\nvar findNodeHandle = require('findNodeHandle');\n\nconst _takeSnapshot = UIManager.takeSnapshot;\n\n/**\n * Capture an image of the screen, window or an individual view. The image\n * will be stored in a temporary file that will only exist for as long as the\n * app is running.\n *\n * The `view` argument can be the literal string `window` if you want to\n * capture the entire window, or it can be a reference to a specific\n * React Native component.\n *\n * The `options` argument may include:\n * - width/height (number) - the width and height of the image to capture.\n * - format (string) - either 'png' or 'jpeg'. Defaults to 'png'.\n * - quality (number) - the quality when using jpeg. 0.0 - 1.0 (default).\n *\n * Returns a Promise.\n * @platform ios\n */\nUIManager.takeSnapshot = async function(\n view ?: 'window' | ReactElement | number,\n options ?: {\n width ?: number;\n height ?: number;\n format ?: 'png' | 'jpeg';\n quality ?: number;\n },\n) {\n if (!_takeSnapshot) {\n console.warn('UIManager.takeSnapshot is not available on this platform');\n return;\n }\n if (typeof view !== 'number' && view !== 'window') {\n view = findNodeHandle(view) || 'window';\n }\n return _takeSnapshot(view, options);\n};\n\nmodule.exports = UIManager;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Utilities/utf8.js":{"metadata":{"mtime":1463609891000},"data":{"name":"utf8","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';var \n\n\n\n\n\n\n\n\n\n\n\n\nByteVector=function(){\n\n\n\nfunction ByteVector(size){babelHelpers.classCallCheck(this,ByteVector);\nthis._storage=new Uint8Array(size);\nthis._sizeWritten=0;}babelHelpers.createClass(ByteVector,[{key:'push',value:function push(\n\n\nvalue){\nvar i=this._sizeWritten;\nif(i===this._storage.length){\nthis._realloc();}\n\nthis._storage[i]=value;\nthis._sizeWritten=i+1;\nreturn this;}},{key:'getBuffer',value:function getBuffer()\n\n\n{\nreturn this._storage.buffer.slice(0,this._sizeWritten);}},{key:'_realloc',value:function _realloc()\n\n\n{\nvar storage=this._storage;\nthis._storage=new Uint8Array(align(storage.length*1.5));\nthis._storage.set(storage);}}]);return ByteVector;}();\n\n\n\n\nexports.encode=function(string){var \nlength=string.length;\nvar bytes=new ByteVector(length);\n\n\n\n\n\n\n\n\n\nvar nextCodePoint=string.charCodeAt(0);\nfor(var i=0;i>>6).\npush(0x80|codePoint&0x3f);}else \nif(codePoint>>>10===0x36&&nextCodePoint>>>10===0x37){\ncodePoint=0x10000+((codePoint&0x3ff)<<10|nextCodePoint&0x3ff);\nbytes.\npush(0xf0|codePoint>>>18&0x7).\npush(0x80|codePoint>>>12&0x3f).\npush(0x80|codePoint>>>6&0x3f).\npush(0x80|codePoint&0x3f);\n\ni+=1;\nnextCodePoint=string.charCodeAt(i+1);}else \n{\nbytes.\npush(0xe0|codePoint>>>12).\npush(0x80|codePoint>>>6&0x3f).\npush(0x80|codePoint&0x3f);}}\n\n\nreturn bytes.getBuffer();};\n\n\n\nfunction align(size){\nreturn size%8?Math.floor(size/8)+1<<3:size;}","map":null,"id":"utf8","source":"/**\n * Copyright (c) 2016-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 utf8\n * @flow\n */\n'use strict';\n\nclass ByteVector {\n _storage: Uint8Array;\n _sizeWritten: number;\n\n constructor(size) {\n this._storage = new Uint8Array(size);\n this._sizeWritten = 0;\n }\n\n push(value: number): ByteVector {\n const i = this._sizeWritten;\n if (i === this._storage.length) {\n this._realloc();\n }\n this._storage[i] = value;\n this._sizeWritten = i + 1;\n return this;\n }\n\n getBuffer(): ArrayBuffer {\n return this._storage.buffer.slice(0, this._sizeWritten);\n }\n\n _realloc() {\n const storage = this._storage;\n this._storage = new Uint8Array(align(storage.length * 1.5));\n this._storage.set(storage);\n }\n}\n\n/*eslint-disable no-bitwise */\nexports.encode = (string: string): ArrayBuffer => {\n const {length} = string;\n const bytes = new ByteVector(length);\n\n // each character / char code is assumed to represent an UTF-16 wchar.\n // With the notable exception of surrogate pairs, each wchar represents the\n // corresponding unicode code point.\n // For an explanation of UTF-8 encoding, read [1]\n // For an explanation of UTF-16 surrogate pairs, read [2]\n //\n // [1] https://en.wikipedia.org/wiki/UTF-8#Description\n // [2] https://en.wikipedia.org/wiki/UTF-16#U.2B10000_to_U.2B10FFFF\n let nextCodePoint = string.charCodeAt(0);\n for (let i = 0; i < length; i++) {\n let codePoint = nextCodePoint;\n nextCodePoint = string.charCodeAt(i + 1);\n\n if (codePoint < 0x80) {\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n bytes\n .push(0xc0 | codePoint >>> 6)\n .push(0x80 | codePoint & 0x3f);\n } else if (codePoint >>> 10 === 0x36 && nextCodePoint >>> 10 === 0x37) { // high surrogate & low surrogate\n codePoint = 0x10000 + (((codePoint & 0x3ff) << 10) | (nextCodePoint & 0x3ff));\n bytes\n .push(0xf0 | codePoint >>> 18 & 0x7)\n .push(0x80 | codePoint >>> 12 & 0x3f)\n .push(0x80 | codePoint >>> 6 & 0x3f)\n .push(0x80 | codePoint & 0x3f);\n\n i += 1;\n nextCodePoint = string.charCodeAt(i + 1);\n } else {\n bytes\n .push(0xe0 | codePoint >>> 12)\n .push(0x80 | codePoint >>> 6 & 0x3f)\n .push(0x80 | codePoint & 0x3f);\n }\n }\n return bytes.getBuffer();\n};\n\n// align to multiples of 8 bytes\nfunction align(size: number): number {\n return size % 8 ? (Math.floor(size / 8) + 1) << 3 : size;\n}\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Text/Text.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Text","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[167,211,242,290,351,405,450,510,564],"dependencies":["NativeMethodsMixin","Platform","React","ReactNativeViewAttributes","StyleSheetPropType","TextStylePropTypes","Touchable","createReactNativeComponentClass","merge"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Text/Text.js';\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 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,\nallowFontScaling: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',\npropTypes:{\n\n\n\n\n\nnumberOfLines:React.PropTypes.number,\n\n\n\n\n\nonLayout:React.PropTypes.func,\n\n\n\nonPress:React.PropTypes.func,\n\n\n\nonLongPress:React.PropTypes.func,\n\n\n\n\n\nsuppressHighlighting:React.PropTypes.bool,\nstyle:stylePropType,\n\n\n\ntestID:React.PropTypes.string,\n\n\n\n\nallowFontScaling:React.PropTypes.bool},\n\ngetDefaultProps:function getDefaultProps(){\nreturn {\naccessible:true,\nallowFontScaling:true};},\n\n\ngetInitialState:function getInitialState(){\nreturn merge(Touchable.Mixin.touchableGetInitialState(),{\nisHighlighted:false});},\n\n\nmixins:[NativeMethodsMixin],\nviewConfig:viewConfig,\ngetChildContext:function getChildContext(){\nreturn {isInAParentText:true};},\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\ncontextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\n\n\n_handlers:null,\n_hasPressHandler:function _hasPressHandler(){\nreturn !!this.props.onPress||!!this.props.onLongPress;},\n\n\n\n\n\ntouchableHandleActivePressIn:null,\ntouchableHandleActivePressOut:null,\ntouchableHandlePress:null,\ntouchableHandleLongPress:null,\ntouchableGetPressRectOffset:null,\nrender:function render(){var _this=this;\nvar newProps=this.props;\nif(this.props.onStartShouldSetResponder||this._hasPressHandler()){\nif(!this._handlers){\nthis._handlers={\nonStartShouldSetResponder:function onStartShouldSetResponder(){\nvar shouldSetFromProps=_this.props.onStartShouldSetResponder&&\n_this.props.onStartShouldSetResponder();\nvar setResponder=shouldSetFromProps||_this._hasPressHandler();\nif(setResponder&&!_this.touchableHandleActivePressIn){\n\n\nfor(var key in Touchable.Mixin){\nif(typeof Touchable.Mixin[key]==='function'){\n_this[key]=Touchable.Mixin[key].bind(_this);}}\n\n\n_this.touchableHandleActivePressIn=function(){\nif(_this.props.suppressHighlighting||!_this._hasPressHandler()){\nreturn;}\n\n_this.setState({\nisHighlighted:true});};\n\n\n\n_this.touchableHandleActivePressOut=function(){\nif(_this.props.suppressHighlighting||!_this._hasPressHandler()){\nreturn;}\n\n_this.setState({\nisHighlighted:false});};\n\n\n\n_this.touchableHandlePress=function(){\n_this.props.onPress&&_this.props.onPress();};\n\n\n_this.touchableHandleLongPress=function(){\n_this.props.onLongPress&&_this.props.onLongPress();};\n\n\n_this.touchableGetPressRectOffset=function(){\nreturn PRESS_RECT_OFFSET;};}\n\n\nreturn setResponder;},\n\nonResponderGrant:function(e,dispatchID){\nthis.touchableHandleResponderGrant(e,dispatchID);\nthis.props.onResponderGrant&&\nthis.props.onResponderGrant.apply(this,arguments);}.\nbind(this),\nonResponderMove:function(e){\nthis.touchableHandleResponderMove(e);\nthis.props.onResponderMove&&\nthis.props.onResponderMove.apply(this,arguments);}.\nbind(this),\nonResponderRelease:function(e){\nthis.touchableHandleResponderRelease(e);\nthis.props.onResponderRelease&&\nthis.props.onResponderRelease.apply(this,arguments);}.\nbind(this),\nonResponderTerminate:function(e){\nthis.touchableHandleResponderTerminate(e);\nthis.props.onResponderTerminate&&\nthis.props.onResponderTerminate.apply(this,arguments);}.\nbind(this),\nonResponderTerminationRequest:function(){\n\n\nvar allowTermination=this.touchableHandleResponderTerminationRequest();\nif(allowTermination&&this.props.onResponderTerminationRequest){\nallowTermination=this.props.onResponderTerminationRequest.apply(this,arguments);}\n\nreturn allowTermination;}.\nbind(this)};}\n\n\nnewProps=babelHelpers.extends({},\nthis.props,\nthis._handlers,{\nisHighlighted:this.state.isHighlighted});}\n\n\nif(Touchable.TOUCH_TARGET_DEBUG&&newProps.onPress){\nnewProps=babelHelpers.extends({},\nnewProps,{\nstyle:[this.props.style,{color:'magenta'}]});}\n\n\nif(this.context.isInAParentText){\nreturn React.createElement(RCTVirtualText,babelHelpers.extends({},newProps,{__source:{fileName:_jsxFileName,lineNumber:240}}));}else \n{\nreturn React.createElement(RCTText,babelHelpers.extends({},newProps,{__source:{fileName:_jsxFileName,lineNumber:242}}));}}});\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;","map":null,"id":"Text","source":"/**\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\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst Platform = require('Platform');\nconst React = require('React');\nconst ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nconst StyleSheetPropType = require('StyleSheetPropType');\nconst TextStylePropTypes = require('TextStylePropTypes');\nconst Touchable = require('Touchable');\n\nconst createReactNativeComponentClass =\n require('createReactNativeComponentClass');\nconst merge = require('merge');\n\nconst stylePropType = StyleSheetPropType(TextStylePropTypes);\n\nconst viewConfig = {\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n isHighlighted: true,\n numberOfLines: true,\n allowFontScaling: 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\nconst Text = React.createClass({\n propTypes: {\n /**\n * Used to truncate the text with an ellipsis after computing the text\n * layout, including line wrapping, such that the total number of lines\n * does not exceed this number.\n */\n numberOfLines: React.PropTypes.number,\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 * This function is called on press.\n */\n onPress: React.PropTypes.func,\n /**\n * This function is called on long press.\n */\n onLongPress: 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 * @platform ios\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 * Specifies should fonts scale to respect Text Size accessibility setting on iOS.\n * @platform ios\n */\n allowFontScaling: React.PropTypes.bool,\n },\n getDefaultProps(): Object {\n return {\n accessible: true,\n allowFontScaling: true,\n };\n },\n getInitialState: function(): Object {\n return merge(Touchable.Mixin.touchableGetInitialState(), {\n isHighlighted: false,\n });\n },\n mixins: [NativeMethodsMixin],\n viewConfig: viewConfig,\n getChildContext(): Object {\n return {isInAParentText: true};\n },\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n contextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n /**\n * Only assigned if touch is needed.\n */\n _handlers: (null: ?Object),\n _hasPressHandler(): boolean {\n return !!this.props.onPress || !!this.props.onLongPress;\n },\n /**\n * These are assigned lazily the first time the responder is set to make plain\n * text nodes as cheap as possible.\n */\n touchableHandleActivePressIn: (null: ?Function),\n touchableHandleActivePressOut: (null: ?Function),\n touchableHandlePress: (null: ?Function),\n touchableHandleLongPress: (null: ?Function),\n touchableGetPressRectOffset: (null: ?Function),\n render(): ReactElement {\n let newProps = this.props;\n if (this.props.onStartShouldSetResponder || this._hasPressHandler()) {\n if (!this._handlers) {\n this._handlers = {\n onStartShouldSetResponder: (): bool => {\n const shouldSetFromProps = this.props.onStartShouldSetResponder &&\n this.props.onStartShouldSetResponder();\n const setResponder = shouldSetFromProps || this._hasPressHandler();\n if (setResponder && !this.touchableHandleActivePressIn) {\n // Attach and bind all the other handlers only the first time a touch\n // actually happens.\n for (const key in Touchable.Mixin) {\n if (typeof Touchable.Mixin[key] === 'function') {\n (this: any)[key] = Touchable.Mixin[key].bind(this);\n }\n }\n this.touchableHandleActivePressIn = () => {\n if (this.props.suppressHighlighting || !this._hasPressHandler()) {\n return;\n }\n this.setState({\n isHighlighted: true,\n });\n };\n\n this.touchableHandleActivePressOut = () => {\n if (this.props.suppressHighlighting || !this._hasPressHandler()) {\n return;\n }\n this.setState({\n isHighlighted: false,\n });\n };\n\n this.touchableHandlePress = () => {\n this.props.onPress && this.props.onPress();\n };\n\n this.touchableHandleLongPress = () => {\n this.props.onLongPress && this.props.onLongPress();\n };\n\n this.touchableGetPressRectOffset = function(): RectOffset {\n return PRESS_RECT_OFFSET;\n };\n }\n return setResponder;\n },\n onResponderGrant: function(e: SyntheticEvent, dispatchID: string) {\n this.touchableHandleResponderGrant(e, dispatchID);\n this.props.onResponderGrant &&\n this.props.onResponderGrant.apply(this, arguments);\n }.bind(this),\n onResponderMove: function(e: SyntheticEvent) {\n this.touchableHandleResponderMove(e);\n this.props.onResponderMove &&\n this.props.onResponderMove.apply(this, arguments);\n }.bind(this),\n onResponderRelease: function(e: SyntheticEvent) {\n this.touchableHandleResponderRelease(e);\n this.props.onResponderRelease &&\n this.props.onResponderRelease.apply(this, arguments);\n }.bind(this),\n onResponderTerminate: function(e: SyntheticEvent) {\n this.touchableHandleResponderTerminate(e);\n this.props.onResponderTerminate &&\n this.props.onResponderTerminate.apply(this, arguments);\n }.bind(this),\n onResponderTerminationRequest: 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.apply(this, arguments);\n }\n return allowTermination;\n }.bind(this),\n };\n }\n newProps = {\n ...this.props,\n ...this._handlers,\n isHighlighted: this.state.isHighlighted,\n };\n }\n if (Touchable.TOUCH_TARGET_DEBUG && newProps.onPress) {\n newProps = {\n ...newProps,\n style: [this.props.style, {color: 'magenta'}],\n };\n }\n if (this.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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Text/TextStylePropTypes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TextStylePropTypes","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[53,98,147],"dependencies":["ReactPropTypes","ColorPropType","ViewStylePropTypes"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar ColorPropType=require('ColorPropType');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\n\nvar TextStylePropTypes=babelHelpers.extends(Object.create(ViewStylePropTypes),{\ncolor:ColorPropType,\nfontFamily:ReactPropTypes.string,\nfontSize:ReactPropTypes.number,\nfontStyle:ReactPropTypes.oneOf(['normal','italic']),\n\n\n\n\n\nfontWeight:ReactPropTypes.oneOf(\n['normal','bold',\n'100','200','300','400','500','600','700','800','900']),\n\ntextShadowOffset:ReactPropTypes.shape(\n{width:ReactPropTypes.number,height:ReactPropTypes.number}),\n\ntextShadowRadius:ReactPropTypes.number,\ntextShadowColor:ColorPropType,\n\n\n\nletterSpacing:ReactPropTypes.number,\nlineHeight:ReactPropTypes.number,\n\n\n\n\ntextAlign:ReactPropTypes.oneOf(\n['auto','left','right','center','justify']),\n\n\n\n\ntextAlignVertical:ReactPropTypes.oneOf(\n['auto','top','bottom','center']),\n\ntextDecorationLine:ReactPropTypes.oneOf(\n['none','underline','line-through','underline line-through']),\n\n\n\n\ntextDecorationStyle:ReactPropTypes.oneOf(\n['solid','double','dotted','dashed']),\n\n\n\n\ntextDecorationColor:ColorPropType,\n\n\n\nwritingDirection:ReactPropTypes.oneOf(\n['auto','ltr','rtl'])});\n\n\n\nmodule.exports=TextStylePropTypes;","map":null,"id":"TextStylePropTypes","source":"/**\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 TextStylePropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar ColorPropType = require('ColorPropType');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\n// TODO: use spread instead of Object.assign/create after #6560135 is fixed\nvar TextStylePropTypes = Object.assign(Object.create(ViewStylePropTypes), {\n color: ColorPropType,\n fontFamily: ReactPropTypes.string,\n fontSize: ReactPropTypes.number,\n fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),\n /**\n * Specifies font weight. The values 'normal' and 'bold' are supported for\n * most fonts. Not all fonts have a variant for each of the numeric values,\n * in that case the closest one is chosen.\n */\n fontWeight: ReactPropTypes.oneOf(\n ['normal' /*default*/, 'bold',\n '100', '200', '300', '400', '500', '600', '700', '800', '900']\n ),\n textShadowOffset: ReactPropTypes.shape(\n {width: ReactPropTypes.number, height: ReactPropTypes.number}\n ),\n textShadowRadius: ReactPropTypes.number,\n textShadowColor: ColorPropType,\n /**\n * @platform ios\n */\n letterSpacing: ReactPropTypes.number,\n lineHeight: ReactPropTypes.number,\n /**\n * Specifies text alignment. The value 'justify' is only supported on iOS and\n * fallbacks to `left` on Android.\n */\n textAlign: ReactPropTypes.oneOf(\n ['auto' /*default*/, 'left', 'right', 'center', 'justify']\n ),\n /**\n * @platform android\n */\n textAlignVertical: ReactPropTypes.oneOf(\n ['auto' /*default*/, 'top', 'bottom', 'center']\n ),\n textDecorationLine: ReactPropTypes.oneOf(\n ['none' /*default*/, 'underline', 'line-through', 'underline line-through']\n ),\n /**\n * @platform ios\n */\n textDecorationStyle: ReactPropTypes.oneOf(\n ['solid' /*default*/, 'double', 'dotted','dashed']\n ),\n /**\n * @platform ios\n */\n textDecorationColor: ColorPropType,\n /**\n * @platform ios\n */\n writingDirection: ReactPropTypes.oneOf(\n ['auto' /*default*/, 'ltr', 'rtl']\n ),\n});\n\nmodule.exports = TextStylePropTypes;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Text/TextUpdateTest.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TextUpdateTest"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/ColorPropType.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ColorPropType","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,110,169],"dependencies":["ReactPropTypes","ReactPropTypeLocationNames","normalizeColor"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\n\nvar normalizeColor=require('normalizeColor');\n\nvar colorPropType=function colorPropType(isRequired,props,propName,componentName,location,propFullName){\nvar color=props[propName];\nif(color===undefined||color===null){\nif(isRequired){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Required '+locationName+' `'+(propFullName||propName)+\n'` was not specified in `'+componentName+'`.');}\n\n\nreturn;}\n\n\nif(typeof color==='number'){\n\n\n\nreturn;}\n\n\nif(normalizeColor(color)===null){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid '+locationName+' `'+(propFullName||propName)+\n'` supplied to `'+componentName+'`: '+color+'\\n'+'Valid color formats are\\n - \\'#f0f\\' (#rgb)\\n - \\'#f0fc\\' (#rgba)\\n - \\'#ff00ff\\' (#rrggbb)\\n - \\'#ff00ff00\\' (#rrggbbaa)\\n - \\'rgb(255, 255, 255)\\'\\n - \\'rgba(255, 255, 255, 1.0)\\'\\n - \\'hsl(360, 100%, 100%)\\'\\n - \\'hsla(360, 100%, 100%, 1.0)\\'\\n - \\'transparent\\'\\n - \\'red\\'\\n - 0xff00ff00 (0xrrggbbaa)\\n');}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColorPropType=colorPropType.bind(null,false);\nColorPropType.isRequired=colorPropType.bind(null,true);\n\nmodule.exports=ColorPropType;","map":null,"id":"ColorPropType","source":" /**\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 ColorPropType\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\n\nvar normalizeColor = require('normalizeColor');\n\nvar colorPropType = function(isRequired, props, propName, componentName, location, propFullName) {\n var color = props[propName];\n if (color === undefined || color === null) {\n if (isRequired) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n 'Required ' + locationName + ' `' + (propFullName || propName) +\n '` was not specified in `' + componentName + '`.'\n );\n }\n return;\n }\n\n if (typeof color === 'number') {\n // Developers should not use a number, but we are using the prop type\n // both for user provided colors and for transformed ones. This isn't ideal\n // and should be fixed but will do for now...\n return;\n }\n\n if (normalizeColor(color) === null) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n 'Invalid ' + locationName + ' `' + (propFullName || propName) +\n '` supplied to `' + componentName + '`: ' + color + '\\n' +\n`Valid color formats are\n - '#f0f' (#rgb)\n - '#f0fc' (#rgba)\n - '#ff00ff' (#rrggbb)\n - '#ff00ff00' (#rrggbbaa)\n - 'rgb(255, 255, 255)'\n - 'rgba(255, 255, 255, 1.0)'\n - 'hsl(360, 100%, 100%)'\n - 'hsla(360, 100%, 100%, 1.0)'\n - 'transparent'\n - 'red'\n - 0xff00ff00 (0xrrggbbaa)\n`);\n }\n};\n\nvar ColorPropType = colorPropType.bind(null, false /* isRequired */);\nColorPropType.isRequired = colorPropType.bind(null, true /* isRequired */);\n\nmodule.exports = ColorPropType;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/EdgeInsetsPropType.js":{"metadata":{"mtime":1463609891000},"data":{"name":"EdgeInsetsPropType","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48,109],"dependencies":["ReactPropTypes","createStrictShapeTypeChecker"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\n\nvar EdgeInsetsPropType=createStrictShapeTypeChecker({\ntop:PropTypes.number,\nleft:PropTypes.number,\nbottom:PropTypes.number,\nright:PropTypes.number});\n\n\nmodule.exports=EdgeInsetsPropType;","map":null,"id":"EdgeInsetsPropType","source":"/**\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 EdgeInsetsPropType\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\n\nvar EdgeInsetsPropType = createStrictShapeTypeChecker({\n top: PropTypes.number,\n left: PropTypes.number,\n bottom: PropTypes.number,\n right: PropTypes.number,\n});\n\nmodule.exports = EdgeInsetsPropType;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js":{"metadata":{"mtime":1463609891000},"data":{"name":"flattenStyle","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[62,112],"dependencies":["ReactNativePropRegistry","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativePropRegistry=require('ReactNativePropRegistry');\nvar invariant=require('fbjs/lib/invariant');\n\n\n\nfunction getStyle(style){\nif(typeof style==='number'){\nreturn ReactNativePropRegistry.getByID(style);}\n\nreturn style;}\n\n\nfunction flattenStyle(style){\nif(!style){\nreturn undefined;}\n\ninvariant(style!==true,'style may be false but not true');\n\nif(!Array.isArray(style)){\nreturn getStyle(style);}\n\n\nvar result={};\nfor(var i=0,styleLength=style.length;i>>0===color&&color>=0&&color<=0xffffffff){\nreturn color;}\n\nreturn null;}\n\n\n\nif(match=matchers.hex6.exec(color)){\nreturn parseInt(match[1]+'ff',16)>>>0;}\n\n\nif(names.hasOwnProperty(color)){\nreturn names[color];}\n\n\nif(match=matchers.rgb.exec(color)){\nreturn (\nparse255(match[1])<<24|\nparse255(match[2])<<16|\nparse255(match[3])<<8|\n0x000000ff)>>>\n0;}\n\n\nif(match=matchers.rgba.exec(color)){\nreturn (\nparse255(match[1])<<24|\nparse255(match[2])<<16|\nparse255(match[3])<<8|\nparse1(match[4]))>>>\n0;}\n\n\nif(match=matchers.hex3.exec(color)){\nreturn parseInt(\nmatch[1]+match[1]+\nmatch[2]+match[2]+\nmatch[3]+match[3]+\n'ff',\n16)>>>\n0;}\n\n\n\nif(match=matchers.hex8.exec(color)){\nreturn parseInt(match[1],16)>>>0;}\n\n\nif(match=matchers.hex4.exec(color)){\nreturn parseInt(\nmatch[1]+match[1]+\nmatch[2]+match[2]+\nmatch[3]+match[3]+\nmatch[4]+match[4],\n16)>>>\n0;}\n\n\nif(match=matchers.hsl.exec(color)){\nreturn (\nhslToRgb(\nparse360(match[1]),\nparsePercentage(match[2]),\nparsePercentage(match[3]))|\n\n0x000000ff)>>>\n0;}\n\n\nif(match=matchers.hsla.exec(color)){\nreturn (\nhslToRgb(\nparse360(match[1]),\nparsePercentage(match[2]),\nparsePercentage(match[3]))|\n\nparse1(match[4]))>>>\n0;}\n\n\nreturn null;}\n\n\nfunction hue2rgb(p,q,t){\nif(t<0){\nt+=1;}\n\nif(t>1){\nt-=1;}\n\nif(t<1/6){\nreturn p+(q-p)*6*t;}\n\nif(t<1/2){\nreturn q;}\n\nif(t<2/3){\nreturn p+(q-p)*(2/3-t)*6;}\n\nreturn p;}\n\n\nfunction hslToRgb(h,s,l){\nvar q=l<0.5?l*(1+s):l+s-l*s;\nvar p=2*l-q;\nvar r=hue2rgb(p,q,h+1/3);\nvar g=hue2rgb(p,q,h);\nvar b=hue2rgb(p,q,h-1/3);\n\nreturn (\nMath.round(r*255)<<24|\nMath.round(g*255)<<16|\nMath.round(b*255)<<8);}\n\n\n\n\nvar NUMBER='[-+]?\\\\d*\\\\.?\\\\d+';\nvar PERCENTAGE=NUMBER+'%';\n\nfunction call(){for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}\nreturn '\\\\(\\\\s*('+args.join(')\\\\s*,\\\\s*(')+')\\\\s*\\\\)';}\n\n\nvar matchers={\nrgb:new RegExp('rgb'+call(NUMBER,NUMBER,NUMBER)),\nrgba:new RegExp('rgba'+call(NUMBER,NUMBER,NUMBER,NUMBER)),\nhsl:new RegExp('hsl'+call(NUMBER,PERCENTAGE,PERCENTAGE)),\nhsla:new RegExp('hsla'+call(NUMBER,PERCENTAGE,PERCENTAGE,NUMBER)),\nhex3:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\nhex4:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\nhex6:/^#([0-9a-fA-F]{6})$/,\nhex8:/^#([0-9a-fA-F]{8})$/};\n\n\nfunction parse255(str){\nvar int=parseInt(str,10);\nif(int<0){\nreturn 0;}\n\nif(int>255){\nreturn 255;}\n\nreturn int;}\n\n\nfunction parse360(str){\nvar int=parseFloat(str);\nreturn (int%360+360)%360/360;}\n\n\nfunction parse1(str){\nvar num=parseFloat(str);\nif(num<0){\nreturn 0;}\n\nif(num>1){\nreturn 255;}\n\nreturn Math.round(num*255);}\n\n\nfunction parsePercentage(str){\n\nvar int=parseFloat(str,10);\nif(int<0){\nreturn 0;}\n\nif(int>100){\nreturn 1;}\n\nreturn int/100;}\n\n\nvar names={\ntransparent:0x00000000,\n\n\naliceblue:0xf0f8ffff,\nantiquewhite:0xfaebd7ff,\naqua:0x00ffffff,\naquamarine:0x7fffd4ff,\nazure:0xf0ffffff,\nbeige:0xf5f5dcff,\nbisque:0xffe4c4ff,\nblack:0x000000ff,\nblanchedalmond:0xffebcdff,\nblue:0x0000ffff,\nblueviolet:0x8a2be2ff,\nbrown:0xa52a2aff,\nburlywood:0xdeb887ff,\nburntsienna:0xea7e5dff,\ncadetblue:0x5f9ea0ff,\nchartreuse:0x7fff00ff,\nchocolate:0xd2691eff,\ncoral:0xff7f50ff,\ncornflowerblue:0x6495edff,\ncornsilk:0xfff8dcff,\ncrimson:0xdc143cff,\ncyan:0x00ffffff,\ndarkblue:0x00008bff,\ndarkcyan:0x008b8bff,\ndarkgoldenrod:0xb8860bff,\ndarkgray:0xa9a9a9ff,\ndarkgreen:0x006400ff,\ndarkgrey:0xa9a9a9ff,\ndarkkhaki:0xbdb76bff,\ndarkmagenta:0x8b008bff,\ndarkolivegreen:0x556b2fff,\ndarkorange:0xff8c00ff,\ndarkorchid:0x9932ccff,\ndarkred:0x8b0000ff,\ndarksalmon:0xe9967aff,\ndarkseagreen:0x8fbc8fff,\ndarkslateblue:0x483d8bff,\ndarkslategray:0x2f4f4fff,\ndarkslategrey:0x2f4f4fff,\ndarkturquoise:0x00ced1ff,\ndarkviolet:0x9400d3ff,\ndeeppink:0xff1493ff,\ndeepskyblue:0x00bfffff,\ndimgray:0x696969ff,\ndimgrey:0x696969ff,\ndodgerblue:0x1e90ffff,\nfirebrick:0xb22222ff,\nfloralwhite:0xfffaf0ff,\nforestgreen:0x228b22ff,\nfuchsia:0xff00ffff,\ngainsboro:0xdcdcdcff,\nghostwhite:0xf8f8ffff,\ngold:0xffd700ff,\ngoldenrod:0xdaa520ff,\ngray:0x808080ff,\ngreen:0x008000ff,\ngreenyellow:0xadff2fff,\ngrey:0x808080ff,\nhoneydew:0xf0fff0ff,\nhotpink:0xff69b4ff,\nindianred:0xcd5c5cff,\nindigo:0x4b0082ff,\nivory:0xfffff0ff,\nkhaki:0xf0e68cff,\nlavender:0xe6e6faff,\nlavenderblush:0xfff0f5ff,\nlawngreen:0x7cfc00ff,\nlemonchiffon:0xfffacdff,\nlightblue:0xadd8e6ff,\nlightcoral:0xf08080ff,\nlightcyan:0xe0ffffff,\nlightgoldenrodyellow:0xfafad2ff,\nlightgray:0xd3d3d3ff,\nlightgreen:0x90ee90ff,\nlightgrey:0xd3d3d3ff,\nlightpink:0xffb6c1ff,\nlightsalmon:0xffa07aff,\nlightseagreen:0x20b2aaff,\nlightskyblue:0x87cefaff,\nlightslategray:0x778899ff,\nlightslategrey:0x778899ff,\nlightsteelblue:0xb0c4deff,\nlightyellow:0xffffe0ff,\nlime:0x00ff00ff,\nlimegreen:0x32cd32ff,\nlinen:0xfaf0e6ff,\nmagenta:0xff00ffff,\nmaroon:0x800000ff,\nmediumaquamarine:0x66cdaaff,\nmediumblue:0x0000cdff,\nmediumorchid:0xba55d3ff,\nmediumpurple:0x9370dbff,\nmediumseagreen:0x3cb371ff,\nmediumslateblue:0x7b68eeff,\nmediumspringgreen:0x00fa9aff,\nmediumturquoise:0x48d1ccff,\nmediumvioletred:0xc71585ff,\nmidnightblue:0x191970ff,\nmintcream:0xf5fffaff,\nmistyrose:0xffe4e1ff,\nmoccasin:0xffe4b5ff,\nnavajowhite:0xffdeadff,\nnavy:0x000080ff,\noldlace:0xfdf5e6ff,\nolive:0x808000ff,\nolivedrab:0x6b8e23ff,\norange:0xffa500ff,\norangered:0xff4500ff,\norchid:0xda70d6ff,\npalegoldenrod:0xeee8aaff,\npalegreen:0x98fb98ff,\npaleturquoise:0xafeeeeff,\npalevioletred:0xdb7093ff,\npapayawhip:0xffefd5ff,\npeachpuff:0xffdab9ff,\nperu:0xcd853fff,\npink:0xffc0cbff,\nplum:0xdda0ddff,\npowderblue:0xb0e0e6ff,\npurple:0x800080ff,\nrebeccapurple:0x663399ff,\nred:0xff0000ff,\nrosybrown:0xbc8f8fff,\nroyalblue:0x4169e1ff,\nsaddlebrown:0x8b4513ff,\nsalmon:0xfa8072ff,\nsandybrown:0xf4a460ff,\nseagreen:0x2e8b57ff,\nseashell:0xfff5eeff,\nsienna:0xa0522dff,\nsilver:0xc0c0c0ff,\nskyblue:0x87ceebff,\nslateblue:0x6a5acdff,\nslategray:0x708090ff,\nslategrey:0x708090ff,\nsnow:0xfffafaff,\nspringgreen:0x00ff7fff,\nsteelblue:0x4682b4ff,\ntan:0xd2b48cff,\nteal:0x008080ff,\nthistle:0xd8bfd8ff,\ntomato:0xff6347ff,\nturquoise:0x40e0d0ff,\nviolet:0xee82eeff,\nwheat:0xf5deb3ff,\nwhite:0xffffffff,\nwhitesmoke:0xf5f5f5ff,\nyellow:0xffff00ff,\nyellowgreen:0x9acd32ff};\n\n\nmodule.exports=normalizeColor;","map":null,"id":"normalizeColor","source":"/**\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 normalizeColor\n * @flow\n */\n/* eslint no-bitwise: 0 */\n'use strict';\n\nfunction normalizeColor(color: string | number): ?number {\n var match;\n\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n return color;\n }\n return null;\n }\n\n // Ordered based on occurrences on Facebook codebase\n if ((match = matchers.hex6.exec(color))) {\n return parseInt(match[1] + 'ff', 16) >>> 0;\n }\n\n if (names.hasOwnProperty(color)) {\n return names[color];\n }\n\n if ((match = matchers.rgb.exec(color))) {\n return (\n parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n 0x000000ff // a\n ) >>> 0;\n }\n\n if ((match = matchers.rgba.exec(color))) {\n return (\n parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n parse1(match[4]) // a\n ) >>> 0;\n }\n\n if ((match = matchers.hex3.exec(color))) {\n return parseInt(\n match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n 'ff', // a\n 16\n ) >>> 0;\n }\n\n // https://drafts.csswg.org/css-color-4/#hex-notation\n if ((match = matchers.hex8.exec(color))) {\n return parseInt(match[1], 16) >>> 0;\n }\n\n if ((match = matchers.hex4.exec(color))) {\n return parseInt(\n match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n match[4] + match[4], // a\n 16\n ) >>> 0;\n }\n\n if ((match = matchers.hsl.exec(color))) {\n return (\n hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n 0x000000ff // a\n ) >>> 0;\n }\n\n if ((match = matchers.hsla.exec(color))) {\n return (\n hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n parse1(match[4]) // a\n ) >>> 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p: number, q: number, t: number): number {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n\nfunction hslToRgb(h: number, s: number, l: number): number {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n var r = hue2rgb(p, q, h + 1 / 3);\n var g = hue2rgb(p, q, h);\n var b = hue2rgb(p, q, h - 1 / 3);\n\n return (\n Math.round(r * 255) << 24 |\n Math.round(g * 255) << 16 |\n Math.round(b * 255) << 8\n );\n}\n\n// var INTEGER = '[-+]?\\\\d+';\nvar NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nvar PERCENTAGE = NUMBER + '%';\n\nfunction call(...args) {\n return '\\\\(\\\\s*(' + args.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nvar matchers = {\n rgb: new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER)),\n rgba: new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)),\n hsl: new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)),\n hsla: new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)),\n hex3: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex4: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#([0-9a-fA-F]{6})$/,\n hex8: /^#([0-9a-fA-F]{8})$/,\n};\n\nfunction parse255(str: string): number {\n var int = parseInt(str, 10);\n if (int < 0) {\n return 0;\n }\n if (int > 255) {\n return 255;\n }\n return int;\n}\n\nfunction parse360(str: string): number {\n var int = parseFloat(str);\n return (((int % 360) + 360) % 360) / 360;\n}\n\nfunction parse1(str: string): number {\n var num = parseFloat(str);\n if (num < 0) {\n return 0;\n }\n if (num > 1) {\n return 255;\n }\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str: string): number {\n // parseFloat conveniently ignores the final %\n var int = parseFloat(str, 10);\n if (int < 0) {\n return 0;\n }\n if (int > 100) {\n return 1;\n }\n return int / 100;\n}\n\nvar names = {\n transparent: 0x00000000,\n\n // http://www.w3.org/TR/css3-color/#svg-color\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff,\n};\n\nmodule.exports = normalizeColor;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/PointPropType.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PointPropType","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48,109],"dependencies":["ReactPropTypes","createStrictShapeTypeChecker"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\n\nvar PointPropType=createStrictShapeTypeChecker({\nx:PropTypes.number,\ny:PropTypes.number});\n\n\nmodule.exports=PointPropType;","map":null,"id":"PointPropType","source":"/**\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 PointPropType\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\n\nvar PointPropType = createStrictShapeTypeChecker({\n x: PropTypes.number,\n y: PropTypes.number,\n});\n\nmodule.exports = PointPropType;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/processColor.js":{"metadata":{"mtime":1463609891000},"data":{"name":"processColor","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[46,87],"dependencies":["Platform","normalizeColor"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar Platform=require('Platform');\n\nvar normalizeColor=require('normalizeColor');\n\n\nfunction processColor(color){\nif(color===undefined||color===null){\nreturn color;}\n\n\nvar int32Color=normalizeColor(color);\nif(int32Color===null){\nreturn undefined;}\n\n\n\nint32Color=(int32Color<<24|int32Color>>>8)>>>0;\n\nif(Platform.OS==='android'){\n\n\n\n\nint32Color=int32Color|0x0;}\n\nreturn int32Color;}\n\n\nmodule.exports=processColor;","map":null,"id":"processColor","source":"/**\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 processColor\n */\n'use strict';\n\nvar Platform = require('Platform');\n\nvar normalizeColor = require('normalizeColor');\n\n/* eslint no-bitwise: 0 */\nfunction processColor(color) {\n if (color === undefined || color === null) {\n return color;\n }\n\n var int32Color = normalizeColor(color);\n if (int32Color === null) {\n return undefined;\n }\n\n // Converts 0xrrggbbaa into 0xaarrggbb\n int32Color = (int32Color << 24 | int32Color >>> 8) >>> 0;\n\n if (Platform.OS === 'android') {\n // Android use 32 bit *signed* integer to represent the color\n // We utilize the fact that bitwise operations in JS also operates on\n // signed 32 bit integers, so that we can use those to convert from\n // *unsigned* to *signed* 32bit int that way.\n int32Color = int32Color | 0x0;\n }\n return int32Color;\n}\n\nmodule.exports = processColor;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/processTransform.js":{"metadata":{"mtime":1463609891000},"data":{"name":"processTransform","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[49,85,121,170],"dependencies":["MatrixMath","Platform","fbjs/lib/invariant","stringifySafe"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar MatrixMath=require('MatrixMath');\nvar Platform=require('Platform');\n\nvar invariant=require('fbjs/lib/invariant');\nvar stringifySafe=require('stringifySafe');\n\n\n\n\n\n\n\n\n\nfunction processTransform(transform){\nvar result=MatrixMath.createIdentityMatrix();\n\ntransform.forEach(function(transformation){\nvar key=Object.keys(transformation)[0];\nvar value=transformation[key];\nif(__DEV__){\n_validateTransform(key,value,transformation);}\n\n\nswitch(key){\ncase 'matrix':\nMatrixMath.multiplyInto(result,result,value);\nbreak;\ncase 'perspective':\n_multiplyTransform(result,MatrixMath.reusePerspectiveCommand,[value]);\nbreak;\ncase 'rotateX':\n_multiplyTransform(result,MatrixMath.reuseRotateXCommand,[_convertToRadians(value)]);\nbreak;\ncase 'rotateY':\n_multiplyTransform(result,MatrixMath.reuseRotateYCommand,[_convertToRadians(value)]);\nbreak;\ncase 'rotate':\ncase 'rotateZ':\n_multiplyTransform(result,MatrixMath.reuseRotateZCommand,[_convertToRadians(value)]);\nbreak;\ncase 'scale':\n_multiplyTransform(result,MatrixMath.reuseScaleCommand,[value]);\nbreak;\ncase 'scaleX':\n_multiplyTransform(result,MatrixMath.reuseScaleXCommand,[value]);\nbreak;\ncase 'scaleY':\n_multiplyTransform(result,MatrixMath.reuseScaleYCommand,[value]);\nbreak;\ncase 'translate':\n_multiplyTransform(result,MatrixMath.reuseTranslate3dCommand,[value[0],value[1],value[2]||0]);\nbreak;\ncase 'translateX':\n_multiplyTransform(result,MatrixMath.reuseTranslate2dCommand,[value,0]);\nbreak;\ncase 'translateY':\n_multiplyTransform(result,MatrixMath.reuseTranslate2dCommand,[0,value]);\nbreak;\ncase 'skewX':\n_multiplyTransform(result,MatrixMath.reuseSkewXCommand,[_convertToRadians(value)]);\nbreak;\ncase 'skewY':\n_multiplyTransform(result,MatrixMath.reuseSkewYCommand,[_convertToRadians(value)]);\nbreak;\ndefault:\nthrow new Error('Invalid transform name: '+key);}});\n\n\n\n\n\n\n\nif(Platform.OS==='android'){\nreturn MatrixMath.decomposeMatrix(result);}\n\nreturn result;}\n\n\n\n\n\nfunction _multiplyTransform(\nresult,\nmatrixMathFunction,\nargs)\n{\nvar matrixToApply=MatrixMath.createIdentityMatrix();\nvar argsWithIdentity=[matrixToApply].concat(args);\nmatrixMathFunction.apply(this,argsWithIdentity);\nMatrixMath.multiplyInto(result,result,matrixToApply);}\n\n\n\n\n\n\nfunction _convertToRadians(value){\nvar floatValue=parseFloat(value,10);\nreturn value.indexOf('rad')>-1?floatValue:floatValue*Math.PI/180;}\n\n\nfunction _validateTransform(key,value,transformation){\ninvariant(\n!value.getValue,\n'You passed an Animated.Value to a normal component. '+\n'You need to wrap that component in an Animated. For example, '+\n'replace by .');\n\n\nvar multivalueTransforms=[\n'matrix',\n'translate'];\n\nif(multivalueTransforms.indexOf(key)!==-1){\ninvariant(\nArray.isArray(value),\n'Transform with key of %s must have an array as the value: %s',\nkey,\nstringifySafe(transformation));}\n\n\nswitch(key){\ncase 'matrix':\ninvariant(\nvalue.length===9||value.length===16,\n'Matrix transform must have a length of 9 (2d) or 16 (3d). '+\n'Provided matrix has a length of %s: %s',\nvalue.length,\nstringifySafe(transformation));\n\nbreak;\ncase 'translate':\nbreak;\ncase 'rotateX':\ncase 'rotateY':\ncase 'rotateZ':\ncase 'rotate':\ncase 'skewX':\ncase 'skewY':\ninvariant(\ntypeof value==='string',\n'Transform with key of \"%s\" must be a string: %s',\nkey,\nstringifySafe(transformation));\n\ninvariant(\nvalue.indexOf('deg')>-1||value.indexOf('rad')>-1,\n'Rotate transform must be expressed in degrees (deg) or radians '+\n'(rad): %s',\nstringifySafe(transformation));\n\nbreak;\ncase 'perspective':\ninvariant(\ntypeof value==='number',\n'Transform with key of \"%s\" must be a number: %s',\nkey,\nstringifySafe(transformation));\n\ninvariant(\nvalue!==0,\n'Transform with key of \"%s\" cannot be zero: %s',\nkey,\nstringifySafe(transformation));\n\nbreak;\ndefault:\ninvariant(\ntypeof value==='number',\n'Transform with key of \"%s\" must be a number: %s',\nkey,\nstringifySafe(transformation));}}\n\n\n\n\nmodule.exports=processTransform;","map":null,"id":"processTransform","source":"/**\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 processTransform\n * @flow\n */\n'use strict';\n\nvar MatrixMath = require('MatrixMath');\nvar Platform = require('Platform');\n\nvar invariant = require('fbjs/lib/invariant');\nvar stringifySafe = require('stringifySafe');\n\n/**\n * Generate a transform matrix based on the provided transforms, and use that\n * within the style object instead.\n *\n * This allows us to provide an API that is similar to CSS, where transforms may\n * be applied in an arbitrary order, and yet have a universal, singular\n * interface to native code.\n */\nfunction processTransform(transform: Object): Object {\n var result = MatrixMath.createIdentityMatrix();\n\n transform.forEach(transformation => {\n var key = Object.keys(transformation)[0];\n var value = transformation[key];\n if (__DEV__) {\n _validateTransform(key, value, transformation);\n }\n\n switch (key) {\n case 'matrix':\n MatrixMath.multiplyInto(result, result, value);\n break;\n case 'perspective':\n _multiplyTransform(result, MatrixMath.reusePerspectiveCommand, [value]);\n break;\n case 'rotateX':\n _multiplyTransform(result, MatrixMath.reuseRotateXCommand, [_convertToRadians(value)]);\n break;\n case 'rotateY':\n _multiplyTransform(result, MatrixMath.reuseRotateYCommand, [_convertToRadians(value)]);\n break;\n case 'rotate':\n case 'rotateZ':\n _multiplyTransform(result, MatrixMath.reuseRotateZCommand, [_convertToRadians(value)]);\n break;\n case 'scale':\n _multiplyTransform(result, MatrixMath.reuseScaleCommand, [value]);\n break;\n case 'scaleX':\n _multiplyTransform(result, MatrixMath.reuseScaleXCommand, [value]);\n break;\n case 'scaleY':\n _multiplyTransform(result, MatrixMath.reuseScaleYCommand, [value]);\n break;\n case 'translate':\n _multiplyTransform(result, MatrixMath.reuseTranslate3dCommand, [value[0], value[1], value[2] || 0]);\n break;\n case 'translateX':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [value, 0]);\n break;\n case 'translateY':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [0, value]);\n break;\n case 'skewX':\n _multiplyTransform(result, MatrixMath.reuseSkewXCommand, [_convertToRadians(value)]);\n break;\n case 'skewY':\n _multiplyTransform(result, MatrixMath.reuseSkewYCommand, [_convertToRadians(value)]);\n break;\n default:\n throw new Error('Invalid transform name: ' + key);\n }\n });\n\n // Android does not support the direct application of a transform matrix to\n // a view, so we need to decompose the result matrix into transforms that can\n // get applied in the specific order of (1) translate (2) scale (3) rotate.\n // Once we can directly apply a matrix, we can remove this decomposition.\n if (Platform.OS === 'android') {\n return MatrixMath.decomposeMatrix(result);\n }\n return result;\n}\n\n/**\n * Performs a destructive operation on a transform matrix.\n */\nfunction _multiplyTransform(\n result: Array,\n matrixMathFunction: Function,\n args: Array\n): void {\n var matrixToApply = MatrixMath.createIdentityMatrix();\n var argsWithIdentity = [matrixToApply].concat(args);\n matrixMathFunction.apply(this, argsWithIdentity);\n MatrixMath.multiplyInto(result, result, matrixToApply);\n}\n\n/**\n * Parses a string like '0.5rad' or '60deg' into radians expressed in a float.\n * Note that validation on the string is done in `_validateTransform()`.\n */\nfunction _convertToRadians(value: string): number {\n var floatValue = parseFloat(value, 10);\n return value.indexOf('rad') > -1 ? floatValue : floatValue * Math.PI / 180;\n}\n\nfunction _validateTransform(key, value, transformation) {\n invariant(\n !value.getValue,\n 'You passed an Animated.Value to a normal component. ' +\n 'You need to wrap that component in an Animated. For example, ' +\n 'replace by .'\n );\n\n var multivalueTransforms = [\n 'matrix',\n 'translate',\n ];\n if (multivalueTransforms.indexOf(key) !== -1) {\n invariant(\n Array.isArray(value),\n 'Transform with key of %s must have an array as the value: %s',\n key,\n stringifySafe(transformation),\n );\n }\n switch (key) {\n case 'matrix':\n invariant(\n value.length === 9 || value.length === 16,\n 'Matrix transform must have a length of 9 (2d) or 16 (3d). ' +\n 'Provided matrix has a length of %s: %s',\n value.length,\n stringifySafe(transformation),\n );\n break;\n case 'translate':\n break;\n case 'rotateX':\n case 'rotateY':\n case 'rotateZ':\n case 'rotate':\n case 'skewX':\n case 'skewY':\n invariant(\n typeof value === 'string',\n 'Transform with key of \"%s\" must be a string: %s',\n key,\n stringifySafe(transformation),\n );\n invariant(\n value.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n 'Rotate transform must be expressed in degrees (deg) or radians ' +\n '(rad): %s',\n stringifySafe(transformation),\n );\n break;\n case 'perspective':\n invariant(\n typeof value === 'number',\n 'Transform with key of \"%s\" must be a number: %s',\n key,\n stringifySafe(transformation),\n );\n invariant(\n value !== 0,\n 'Transform with key of \"%s\" cannot be zero: %s',\n key,\n stringifySafe(transformation),\n );\n break;\n default:\n invariant(\n typeof value === 'number',\n 'Transform with key of \"%s\" must be a number: %s',\n key,\n stringifySafe(transformation),\n );\n }\n}\n\nmodule.exports = processTransform;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/setNormalizedColorAlpha.js":{"metadata":{"mtime":1463609891000},"data":{"name":"setNormalizedColorAlpha"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js":{"metadata":{"mtime":1463609891000},"data":{"name":"StyleSheet","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[49,100,161,207],"dependencies":["PixelRatio","ReactNativePropRegistry","StyleSheetValidation","flattenStyle"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PixelRatio=require('PixelRatio');\nvar ReactNativePropRegistry=require('ReactNativePropRegistry');\nvar StyleSheetValidation=require('StyleSheetValidation');\n\nvar flatten=require('flattenStyle');\n\nvar hairlineWidth=PixelRatio.roundToNearestPixel(0.4);\nif(hairlineWidth===0){\nhairlineWidth=1/PixelRatio.get();}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports={\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nhairlineWidth:hairlineWidth,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nflatten:flatten,\n\n\n\n\ncreate:function create(obj){\nvar result={};\nfor(var key in obj){\nStyleSheetValidation.validateStyle(key,obj);\nresult[key]=ReactNativePropRegistry.register(obj[key]);}\n\nreturn result;}};","map":null,"id":"StyleSheet","source":"/**\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 StyleSheet\n * @flow\n */\n'use strict';\n\nvar PixelRatio = require('PixelRatio');\nvar ReactNativePropRegistry = require('ReactNativePropRegistry');\nvar StyleSheetValidation = require('StyleSheetValidation');\n\nvar flatten = require('flattenStyle');\n\nvar hairlineWidth = PixelRatio.roundToNearestPixel(0.4);\nif (hairlineWidth === 0) {\n hairlineWidth = 1 / PixelRatio.get();\n}\n\n/**\n * A StyleSheet is an abstraction similar to CSS StyleSheets\n *\n * Create a new StyleSheet:\n *\n * ```\n * var styles = StyleSheet.create({\n * container: {\n * borderRadius: 4,\n * borderWidth: 0.5,\n * borderColor: '#d6d7da',\n * },\n * title: {\n * fontSize: 19,\n * fontWeight: 'bold',\n * },\n * activeTitle: {\n * color: 'red',\n * },\n * });\n * ```\n *\n * Use a StyleSheet:\n *\n * ```\n * \n * \n * \n * ```\n *\n * Code quality:\n *\n * - By moving styles away from the render function, you're making the code\n * easier to understand.\n * - Naming the styles is a good way to add meaning to the low level components\n * in the render function.\n *\n * Performance:\n *\n * - Making a stylesheet from a style object makes it possible to refer to it\n * by ID instead of creating a new style object every time.\n * - It also allows to send the style only once through the bridge. All\n * subsequent uses are going to refer an id (not implemented yet).\n */\nmodule.exports = {\n /**\n * This is defined as the width of a thin line on the platform. It can be\n * used as the thickness of a border or division between two elements.\n * Example:\n * ```\n * {\n * borderBottomColor: '#bbb',\n * borderBottomWidth: StyleSheet.hairlineWidth\n * }\n * ```\n *\n * This constant will always be a round number of pixels (so a line defined\n * by it look crisp) and will try to match the standard width of a thin line\n * on the underlying platform. However, you should not rely on it being a\n * constant size, because on different platforms and screen densities its\n * value may be calculated differently.\n */\n hairlineWidth,\n\n /**\n * Flattens an array of style objects, into one aggregated style object.\n * Alternatively, this method can be used to lookup IDs, returned by\n * StyleSheet.register.\n *\n * > **NOTE**: Exercise caution as abusing this can tax you in terms of\n * > optimizations.\n * >\n * > IDs enable optimizations through the bridge and memory in general. Refering\n * > to style objects directly will deprive you of these optimizations.\n *\n * Example:\n * ```\n * var styles = StyleSheet.create({\n * listItem: {\n * flex: 1,\n * fontSize: 16,\n * color: 'white'\n * },\n * selectedListItem: {\n * color: 'green'\n * }\n * });\n *\n * StyleSheet.flatten([styles.listItem, styles.selectedListItem])\n * // returns { flex: 1, fontSize: 16, color: 'green' }\n * ```\n * Alternative use:\n * ```\n * StyleSheet.flatten(styles.listItem);\n * // return { flex: 1, fontSize: 16, color: 'white' }\n * // Simply styles.listItem would return its ID (number)\n * ```\n * This method internally uses `StyleSheetRegistry.getStyleByID(style)`\n * to resolve style objects represented by IDs. Thus, an array of style\n * objects (instances of StyleSheet.create), are individually resolved to,\n * their respective objects, merged as one and then returned. This also explains\n * the alternative use.\n */\n flatten,\n\n /**\n * Creates a StyleSheet style reference from the given object.\n */\n create(obj: {[key: string]: any}): {[key: string]: number} {\n var result = {};\n for (var key in obj) {\n StyleSheetValidation.validateStyle(key, obj);\n result[key] = ReactNativePropRegistry.register(obj[key]);\n }\n return result;\n }\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/StyleSheetPropType.js":{"metadata":{"mtime":1463609891000},"data":{"name":"StyleSheetPropType","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[67,125],"dependencies":["createStrictShapeTypeChecker","flattenStyle"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar flattenStyle=require('flattenStyle');\n\nfunction StyleSheetPropType(\nshape)\n{\nvar shapePropType=createStrictShapeTypeChecker(shape);\nreturn function(props,propName,componentName,location){\nvar newProps=props;\nif(props[propName]){\n\nnewProps={};\nnewProps[propName]=flattenStyle(props[propName]);}\n\nreturn shapePropType(newProps,propName,componentName,location);};}\n\n\n\nmodule.exports=StyleSheetPropType;","map":null,"id":"StyleSheetPropType","source":"/**\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 StyleSheetPropType\n * @flow\n */\n'use strict';\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar flattenStyle = require('flattenStyle');\n\nfunction StyleSheetPropType(\n shape: {[key: string]: ReactPropsCheckType}\n): ReactPropsCheckType {\n var shapePropType = createStrictShapeTypeChecker(shape);\n return function(props, propName, componentName, location?) {\n var newProps = props;\n if (props[propName]) {\n // Just make a dummy prop object with only the flattened style\n newProps = {};\n newProps[propName] = flattenStyle(props[propName]);\n }\n return shapePropType(newProps, propName, componentName, location);\n };\n}\n\nmodule.exports = StyleSheetPropType;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/StyleSheetTypes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"StyleSheetTypes"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js":{"metadata":{"mtime":1463609891000},"data":{"name":"StyleSheetValidation","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[58,117,175,229,275],"dependencies":["ImageStylePropTypes","ReactPropTypeLocations","TextStylePropTypes","ViewStylePropTypes","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar invariant=require('fbjs/lib/invariant');var \n\nStyleSheetValidation=function(){function StyleSheetValidation(){babelHelpers.classCallCheck(this,StyleSheetValidation);}babelHelpers.createClass(StyleSheetValidation,null,[{key:'validateStyleProp',value:function validateStyleProp(\nprop,style,caller){\nif(!__DEV__){\nreturn;}\n\nif(allStylePropTypes[prop]===undefined){\nvar message1='\"'+prop+'\" is not a valid style property.';\nvar message2='\\nValid style props: '+\nJSON.stringify(Object.keys(allStylePropTypes).sort(),null,' ');\nstyleError(message1,style,caller,message2);}\n\nvar error=allStylePropTypes[prop](\nstyle,\nprop,\ncaller,\nReactPropTypeLocations.prop);\n\nif(error){\nstyleError(error.message,style,caller);}}},{key:'validateStyle',value:function validateStyle(\n\n\n\nname,styles){\nif(!__DEV__){\nreturn;}\n\nfor(var prop in styles[name]){\nStyleSheetValidation.validateStyleProp(prop,styles[name],'StyleSheet '+name);}}},{key:'addValidStylePropTypes',value:function addValidStylePropTypes(\n\n\n\nstylePropTypes){\nfor(var key in stylePropTypes){\nallStylePropTypes[key]=stylePropTypes[key];}}}]);return StyleSheetValidation;}();\n\n\n\n\nvar styleError=function styleError(message1,style,caller,message2){\ninvariant(\nfalse,\nmessage1+'\\n'+(caller||'<>')+': '+\nJSON.stringify(style,null,' ')+(message2||''));};\n\n\n\nvar allStylePropTypes={};\n\nStyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);\n\nmodule.exports=StyleSheetValidation;","map":null,"id":"StyleSheetValidation","source":"/**\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 StyleSheetValidation\n * @flow\n */\n'use strict';\n\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar invariant = require('fbjs/lib/invariant');\n\nclass StyleSheetValidation {\n static validateStyleProp(prop, style, caller) {\n if (!__DEV__) {\n return;\n }\n if (allStylePropTypes[prop] === undefined) {\n var message1 = '\"' + prop + '\" is not a valid style property.';\n var message2 = '\\nValid style props: ' +\n JSON.stringify(Object.keys(allStylePropTypes).sort(), null, ' ');\n styleError(message1, style, caller, message2);\n }\n var error = allStylePropTypes[prop](\n style,\n prop,\n caller,\n ReactPropTypeLocations.prop\n );\n if (error) {\n styleError(error.message, style, caller);\n }\n }\n\n static validateStyle(name, styles) {\n if (!__DEV__) {\n return;\n }\n for (var prop in styles[name]) {\n StyleSheetValidation.validateStyleProp(prop, styles[name], 'StyleSheet ' + name);\n }\n }\n\n static addValidStylePropTypes(stylePropTypes) {\n for (var key in stylePropTypes) {\n allStylePropTypes[key] = stylePropTypes[key];\n }\n }\n}\n\nvar styleError = function(message1, style, caller?, message2?) {\n invariant(\n false,\n message1 + '\\n' + (caller || '<>') + ': ' +\n JSON.stringify(style, null, ' ') + (message2 || '')\n );\n};\n\nvar allStylePropTypes = {};\n\nStyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);\n\nmodule.exports = StyleSheetValidation;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/StyleSheet/TransformPropTypes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TransformPropTypes","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[53,103],"dependencies":["ReactPropTypes","deprecatedPropType"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar deprecatedPropType=require('deprecatedPropType');\n\nvar ArrayOfNumberPropType=ReactPropTypes.arrayOf(ReactPropTypes.number);\n\nvar TransformMatrixPropType=function TransformMatrixPropType(\nprops,\npropName,\ncomponentName)\n{\nif(props[propName]){\nreturn new Error(\n'The transformMatrix style property is deprecated. '+\n'Use `transform: [{ matrix: ... }]` instead.');}};\n\n\n\n\nvar DecomposedMatrixPropType=function DecomposedMatrixPropType(\nprops,\npropName,\ncomponentName)\n{\nif(props[propName]){\nreturn new Error(\n'The decomposedMatrix style property is deprecated. '+\n'Use `transform: [...]` instead.');}};\n\n\n\n\nvar TransformPropTypes={\ntransform:ReactPropTypes.arrayOf(\nReactPropTypes.oneOfType([\nReactPropTypes.shape({perspective:ReactPropTypes.number}),\nReactPropTypes.shape({rotate:ReactPropTypes.string}),\nReactPropTypes.shape({rotateX:ReactPropTypes.string}),\nReactPropTypes.shape({rotateY:ReactPropTypes.string}),\nReactPropTypes.shape({rotateZ:ReactPropTypes.string}),\nReactPropTypes.shape({scale:ReactPropTypes.number}),\nReactPropTypes.shape({scaleX:ReactPropTypes.number}),\nReactPropTypes.shape({scaleY:ReactPropTypes.number}),\nReactPropTypes.shape({translateX:ReactPropTypes.number}),\nReactPropTypes.shape({translateY:ReactPropTypes.number}),\nReactPropTypes.shape({skewX:ReactPropTypes.string}),\nReactPropTypes.shape({skewY:ReactPropTypes.string})])),\n\n\n\n\ntransformMatrix:TransformMatrixPropType,\ndecomposedMatrix:DecomposedMatrixPropType,\n\n\nscaleX:deprecatedPropType(ReactPropTypes.number,'Use the transform prop instead.'),\nscaleY:deprecatedPropType(ReactPropTypes.number,'Use the transform prop instead.'),\nrotation:deprecatedPropType(ReactPropTypes.number,'Use the transform prop instead.'),\ntranslateX:deprecatedPropType(ReactPropTypes.number,'Use the transform prop instead.'),\ntranslateY:deprecatedPropType(ReactPropTypes.number,'Use the transform prop instead.')};\n\n\nmodule.exports=TransformPropTypes;","map":null,"id":"TransformPropTypes","source":"/**\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 TransformPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar deprecatedPropType = require('deprecatedPropType');\n\nvar ArrayOfNumberPropType = ReactPropTypes.arrayOf(ReactPropTypes.number);\n\nvar TransformMatrixPropType = function(\n props : Object,\n propName : string,\n componentName : string\n) : ?Error {\n if (props[propName]) {\n return new Error(\n 'The transformMatrix style property is deprecated. ' +\n 'Use `transform: [{ matrix: ... }]` instead.'\n );\n }\n};\n\nvar DecomposedMatrixPropType = function(\n props : Object,\n propName : string,\n componentName : string\n) : ?Error {\n if (props[propName]) {\n return new Error(\n 'The decomposedMatrix style property is deprecated. ' +\n 'Use `transform: [...]` instead.'\n );\n }\n};\n\nvar TransformPropTypes = {\n transform: ReactPropTypes.arrayOf(\n ReactPropTypes.oneOfType([\n ReactPropTypes.shape({perspective: ReactPropTypes.number}),\n ReactPropTypes.shape({rotate: ReactPropTypes.string}),\n ReactPropTypes.shape({rotateX: ReactPropTypes.string}),\n ReactPropTypes.shape({rotateY: ReactPropTypes.string}),\n ReactPropTypes.shape({rotateZ: ReactPropTypes.string}),\n ReactPropTypes.shape({scale: ReactPropTypes.number}),\n ReactPropTypes.shape({scaleX: ReactPropTypes.number}),\n ReactPropTypes.shape({scaleY: ReactPropTypes.number}),\n ReactPropTypes.shape({translateX: ReactPropTypes.number}),\n ReactPropTypes.shape({translateY: ReactPropTypes.number}),\n ReactPropTypes.shape({skewX: ReactPropTypes.string}),\n ReactPropTypes.shape({skewY: ReactPropTypes.string})\n ])\n ),\n\n /* Deprecated */\n transformMatrix: TransformMatrixPropType,\n decomposedMatrix: DecomposedMatrixPropType,\n\n /* Deprecated transform props used on Android only */\n scaleX: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'),\n scaleY: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'),\n rotation: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'),\n translateX: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'),\n translateY: deprecatedPropType(ReactPropTypes.number, 'Use the transform prop instead.'),\n};\n\nmodule.exports = TransformPropTypes;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Storage/AsyncStorage.js":{"metadata":{"mtime":1463609891000},"data":{"name":"AsyncStorage","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[53],"dependencies":["NativeModules"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\nvar RCTAsyncSQLiteStorage=NativeModules.AsyncSQLiteDBStorage;\nvar RCTAsyncRocksDBStorage=NativeModules.AsyncRocksDBStorage;\nvar RCTAsyncFileStorage=NativeModules.AsyncLocalStorage;\n\n\nvar RCTAsyncStorage=RCTAsyncRocksDBStorage||RCTAsyncSQLiteStorage||RCTAsyncFileStorage;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AsyncStorage={\n_getRequests:[],\n_getKeys:[],\n_immediate:null,\n\n\n\n\n\ngetItem:function getItem(\nkey,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiGet([key],function(errors,result){\n\nvar value=result&&result[0]&&result[0][1]?result[0][1]:null;\nvar errs=convertErrors(errors);\ncallback&&callback(errs&&errs[0],value);\nif(errs){\nreject(errs[0]);}else \n{\nresolve(value);}});});},\n\n\n\n\n\n\n\n\n\nsetItem:function setItem(\nkey,\nvalue,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiSet([[key,value]],function(errors){\nvar errs=convertErrors(errors);\ncallback&&callback(errs&&errs[0]);\nif(errs){\nreject(errs[0]);}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\nremoveItem:function removeItem(\nkey,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiRemove([key],function(errors){\nvar errs=convertErrors(errors);\ncallback&&callback(errs&&errs[0]);\nif(errs){\nreject(errs[0]);}else \n{\nresolve(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\nmergeItem:function mergeItem(\nkey,\nvalue,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiMerge([[key,value]],function(errors){\nvar errs=convertErrors(errors);\ncallback&&callback(errs&&errs[0]);\nif(errs){\nreject(errs[0]);}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\nclear:function clear(callback){\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.clear(function(error){\ncallback&&callback(convertError(error));\nif(error&&convertError(error)){\nreject(convertError(error));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\ngetAllKeys:function getAllKeys(callback){\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.getAllKeys(function(error,keys){\ncallback&&callback(convertError(error),keys);\nif(error){\nreject(convertError(error));}else \n{\nresolve(keys);}});});},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nflushGetRequests:function flushGetRequests(){\nvar getRequests=this._getRequests;\nvar getKeys=this._getKeys;\n\nthis._getRequests=[];\nthis._getKeys=[];\n\nRCTAsyncStorage.multiGet(getKeys,function(errors,result){\n\n\n\n\n\n\nvar map={};\nresult.forEach(function(_ref){var _ref2=babelHelpers.slicedToArray(_ref,2);var key=_ref2[0];var value=_ref2[1];return map[key]=value;});\nvar reqLength=getRequests.length;\nfor(var i=0;i),\n _getKeys: ([]: Array),\n _immediate: (null: ?number),\n\n /**\n * Fetches `key` and passes the result to `callback`, along with an `Error` if\n * there is any. Returns a `Promise` object.\n */\n getItem: function(\n key: string,\n callback?: ?(error: ?Error, result: ?string) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiGet([key], function(errors, result) {\n // Unpack result to get value from [[key,value]]\n var value = (result && result[0] && result[0][1]) ? result[0][1] : null;\n var errs = convertErrors(errors);\n callback && callback(errs && errs[0], value);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(value);\n }\n });\n });\n },\n\n /**\n * Sets `value` for `key` and calls `callback` on completion, along with an\n * `Error` if there is any. Returns a `Promise` object.\n */\n setItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet([[key,value]], function(errors) {\n var errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Returns a `Promise` object.\n */\n removeItem: function(\n key: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove([key], function(errors) {\n var errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges existing value with input value, assuming they are stringified json.\n * Returns a `Promise` object. Not supported by all native implementations.\n *\n * Example:\n * ```javascript\n * let UID123_object = {\n * name: 'Chris',\n * age: 30,\n * traits: {hair: 'brown', eyes: 'brown'},\n * };\n\n // need only define what will be added or updated\n * let UID123_delta = {\n * age: 31,\n * traits: {eyes: 'blue', shoe_size: 10}\n * };\n\n * AsyncStorage.setItem(store_key, JSON.stringify(UID123_object), () => {\n * AsyncStorage.mergeItem('UID123', JSON.stringify(UID123_delta), () => {\n * AsyncStorage.getItem('UID123', (err, result) => {\n * console.log(result);\n * // => {'name':'Chris','age':31,'traits':{'shoe_size':10,'hair':'brown','eyes':'blue'}}\n * });\n * });\n * });\n * ```\n */\n mergeItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge([[key,value]], function(errors) {\n var errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Erases *all* AsyncStorage for all clients, libraries, etc. You probably\n * don't want to call this - use removeItem or multiRemove to clear only your\n * own keys instead. Returns a `Promise` object.\n */\n clear: function(callback?: ?(error: ?Error) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.clear(function(error) {\n callback && callback(convertError(error));\n if (error && convertError(error)){\n reject(convertError(error));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Gets *all* keys known to the app, for all callers, libraries, etc. Returns a `Promise` object.\n *\n * Example: see multiGet for example\n */\n getAllKeys: function(callback?: ?(error: ?Error, keys: ?Array) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.getAllKeys(function(error, keys) {\n callback && callback(convertError(error), keys);\n if (error) {\n reject(convertError(error));\n } else {\n resolve(keys);\n }\n });\n });\n },\n\n /**\n * The following batched functions are useful for executing a lot of\n * operations at once, allowing for native optimizations and provide the\n * convenience of a single callback after all operations are complete.\n *\n * These functions return arrays of errors, potentially one for every key.\n * For key-specific errors, the Error object will have a key property to\n * indicate which key caused the error.\n */\n\n /** Flushes any pending requests using a single multiget */\n flushGetRequests: function(): void {\n const getRequests = this._getRequests;\n const getKeys = this._getKeys;\n\n this._getRequests = [];\n this._getKeys = [];\n\n RCTAsyncStorage.multiGet(getKeys, function(errors, result) {\n // Even though the runtime complexity of this is theoretically worse vs if we used a map,\n // it's much, much faster in practice for the data sets we deal with (we avoid\n // allocating result pair arrays). This was heavily benchmarked.\n //\n // Is there a way to avoid using the map but fix the bug in this breaking test?\n // https://github.com/facebook/react-native/commit/8dd8ad76579d7feef34c014d387bf02065692264\n let map = {};\n result.forEach(([key, value]) => map[key] = value);\n const reqLength = getRequests.length;\n for (let i = 0; i < reqLength; i++) {\n const request = getRequests[i];\n const requestKeys = request.keys;\n let requestResult = requestKeys.map(key => [key, map[key]]);\n request.callback && request.callback(null, requestResult);\n request.resolve && request.resolve(requestResult);\n }\n });\n },\n\n /**\n * multiGet invokes callback with an array of key-value pair arrays that\n * matches the input format of multiSet. Returns a `Promise` object.\n *\n * multiGet(['k1', 'k2'], cb) -> cb([['k1', 'val1'], ['k2', 'val2']])\n *\n * Example:\n * ```javascript\n * AsyncStorage.getAllKeys((err, keys) => {\n * AsyncStorage.multiGet(keys, (err, stores) => {\n * stores.map((result, i, store) => {\n * // get at each store's key/value so you can work with it\n * let key = store[i][0];\n * let value = store[i][1];\n * });\n * });\n * });\n * ```\n */\n multiGet: function(\n keys: Array,\n callback?: ?(errors: ?Array, result: ?Array>) => void\n ): Promise {\n if (!this._immediate) {\n this._immediate = setImmediate(() => {\n this._immediate = null;\n this.flushGetRequests();\n });\n }\n\n var getRequest = {\n keys: keys,\n callback: callback,\n // do we need this?\n keyIndex: this._getKeys.length,\n resolve: null,\n reject: null,\n };\n\n var promiseResult = new Promise((resolve, reject) => {\n getRequest.resolve = resolve;\n getRequest.reject = reject;\n });\n\n this._getRequests.push(getRequest);\n // avoid fetching duplicates\n keys.forEach(key => {\n if (this._getKeys.indexOf(key) === -1) {\n this._getKeys.push(key);\n }\n });\n\n return promiseResult;\n },\n\n /**\n * multiSet and multiMerge take arrays of key-value array pairs that match\n * the output of multiGet, e.g. Returns a `Promise` object.\n *\n * multiSet([['k1', 'val1'], ['k2', 'val2']], cb);\n *\n * Example: see multiMerge for an example\n */\n multiSet: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?Array) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet(keyValuePairs, function(errors) {\n var error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Delete all the keys in the `keys` array. Returns a `Promise` object.\n *\n * Example:\n * ```javascript\n * let keys = ['k1', 'k2'];\n * AsyncStorage.multiRemove(keys, (err) => {\n * // keys k1 & k2 removed, if they existed\n * // do most stuff after removal (if you want)\n * });\n * ```\n */\n multiRemove: function(\n keys: Array,\n callback?: ?(errors: ?Array) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove(keys, function(errors) {\n var error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges existing values with input values, assuming they are stringified\n * json. Returns a `Promise` object.\n *\n * Not supported by all native implementations.\n *\n * Example:\n * ```javascript\n // first user, initial values\n * let UID234_object = {\n * name: 'Chris',\n * age: 30,\n * traits: {hair: 'brown', eyes: 'brown'},\n * };\n\n * // first user, delta values\n * let UID234_delta = {\n * age: 31,\n * traits: {eyes: 'blue', shoe_size: 10},\n * };\n\n * // second user, initial values\n * let UID345_object = {\n * name: 'Marge',\n * age: 25,\n * traits: {hair: 'blonde', eyes: 'blue'},\n * };\n\n * // second user, delta values\n * let UID345_delta = {\n * age: 26,\n * traits: {eyes: 'green', shoe_size: 6},\n * };\n\n * let multi_set_pairs = [['UID234', JSON.stringify(UID234_object)], ['UID345', JSON.stringify(UID345_object)]]\n * let multi_merge_pairs = [['UID234', JSON.stringify(UID234_delta)], ['UID345', JSON.stringify(UID345_delta)]]\n\n * AsyncStorage.multiSet(multi_set_pairs, (err) => {\n * AsyncStorage.multiMerge(multi_merge_pairs, (err) => {\n * AsyncStorage.multiGet(['UID234','UID345'], (err, stores) => {\n * stores.map( (result, i, store) => {\n * let key = store[i][0];\n * let val = store[i][1];\n * console.log(key, val);\n * // => UID234 {\"name\":\"Chris\",\"age\":31,\"traits\":{\"shoe_size\":10,\"hair\":\"brown\",\"eyes\":\"blue\"}}\n * // => UID345 {\"name\":\"Marge\",\"age\":26,\"traits\":{\"shoe_size\":6,\"hair\":\"blonde\",\"eyes\":\"green\"}}\n * });\n * });\n * });\n * });\n * ```\n */\n multiMerge: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?Array) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) {\n var error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n};\n\n// Not all native implementations support merge.\nif (!RCTAsyncStorage.multiMerge) {\n delete AsyncStorage.mergeItem;\n delete AsyncStorage.multiMerge;\n}\n\nfunction convertErrors(errs) {\n if (!errs) {\n return null;\n }\n return (Array.isArray(errs) ? errs : [errs]).map((e) => convertError(e));\n}\n\nfunction convertError(error) {\n if (!error) {\n return null;\n }\n var out = new Error(error.message);\n out.key = error.key; // flow doesn't like this :(\n return out;\n}\n\nmodule.exports = AsyncStorage;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Settings/Settings.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Settings"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Settings/Settings.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Settings","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[60,117,174],"dependencies":["RCTDeviceEventEmitter","NativeModules","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTSettingsManager=require('NativeModules').SettingsManager;\n\nvar invariant=require('fbjs/lib/invariant');\n\nvar subscriptions=[];\n\nvar Settings={\n_settings:RCTSettingsManager&&RCTSettingsManager.settings,\n\nget:function get(key){\nreturn this._settings[key];},\n\n\nset:function set(settings){\nthis._settings=babelHelpers.extends(this._settings,settings);\nRCTSettingsManager.setValues(settings);},\n\n\nwatchKeys:function watchKeys(keys,callback){\nif(typeof keys==='string'){\nkeys=[keys];}\n\n\ninvariant(\nArray.isArray(keys),\n'keys should be a string or array of strings');\n\n\nvar sid=subscriptions.length;\nsubscriptions.push({keys:keys,callback:callback});\nreturn sid;},\n\n\nclearWatch:function clearWatch(watchId){\nif(watchId; callback: ?Function}> = [];\n\nvar Settings = {\n _settings: RCTSettingsManager && RCTSettingsManager.settings,\n\n get(key: string): mixed {\n return this._settings[key];\n },\n\n set(settings: Object) {\n this._settings = Object.assign(this._settings, settings);\n RCTSettingsManager.setValues(settings);\n },\n\n watchKeys(keys: string | Array, callback: Function): number {\n if (typeof keys === 'string') {\n keys = [keys];\n }\n\n invariant(\n Array.isArray(keys),\n 'keys should be a string or array of strings'\n );\n\n var sid = subscriptions.length;\n subscriptions.push({keys: keys, callback: callback});\n return sid;\n },\n\n clearWatch(watchId: number) {\n if (watchId < subscriptions.length) {\n subscriptions[watchId] = {keys: [], callback: null};\n }\n },\n\n _sendObservations(body: Object) {\n Object.keys(body).forEach((key) => {\n var newValue = body[key];\n var didChange = this._settings[key] !== newValue;\n this._settings[key] = newValue;\n\n if (didChange) {\n subscriptions.forEach((sub) => {\n if (sub.keys.indexOf(key) !== -1 && sub.callback) {\n sub.callback();\n }\n });\n }\n });\n },\n};\n\nRCTDeviceEventEmitter.addListener(\n 'settingsUpdated',\n Settings._sendObservations.bind(Settings)\n);\n\nmodule.exports = Settings;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Sample/Sample.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Sample"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Sample/Sample.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Sample"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/RKBackendNode/queryLayoutByID.js":{"metadata":{"mtime":1463609891000},"data":{"name":"queryLayoutByID","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UIManager"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar UIManager=require('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 queryLayoutByID(\ntag,\nonError,\nonSuccess)\n{\nif(tag==null){\nreturn;}\n\n\nUIManager.measure(\ntag,\nonSuccess);};\n\n\n\nmodule.exports=queryLayoutByID;","map":null,"id":"queryLayoutByID","source":"/**\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 UIManager = require('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 {number} tag 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 tag: ?number,\n onError: OnErrorCallback,\n onSuccess: OnSuccessCallback\n): void {\n if (tag == null) {\n return;\n }\n // Native bridge doesn't *yet* surface errors.\n UIManager.measure(\n tag,\n onSuccess\n );\n};\n\nmodule.exports = queryLayoutByID;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactNative/UIManagerStatTracker.js":{"metadata":{"mtime":1463609891000},"data":{"name":"UIManagerStatTracker"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactIOS/renderApplication.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"renderApplication"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"renderApplication","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[192,236,270,309,349,383,415,469,518],"dependencies":["RCTDeviceEventEmitter","React","ReactNative","StyleSheet","Subscribable","View","fbjs/lib/invariant","Inspector","YellowBox"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar React=require('React');\nvar ReactNative=require('ReactNative');\nvar StyleSheet=require('StyleSheet');\nvar Subscribable=require('Subscribable');\nvar View=require('View');\n\nvar invariant=require('fbjs/lib/invariant');\n\nvar Inspector=__DEV__?require('Inspector'):null;\nvar YellowBox=__DEV__?require('YellowBox'):null;\n\nvar AppContainer=React.createClass({displayName:'AppContainer',\nmixins:[Subscribable.Mixin],\n\ngetInitialState:function getInitialState(){\nreturn {inspector:null,mainKey:1};},\n\n\ntoggleElementInspector:function toggleElementInspector(){var _this=this;\nvar inspector=!__DEV__||this.state.inspector?\nnull:\nReact.createElement(Inspector,{\nrootTag:this.props.rootTag,\ninspectedViewTag:ReactNative.findNodeHandle(this.refs.main),\nonRequestRerenderApp:function onRequestRerenderApp(updateInspectedViewTag){\n_this.setState(\nfunction(s){return {mainKey:s.mainKey+1};},\nfunction(){return updateInspectedViewTag(ReactNative.findNodeHandle(_this.refs.main));});},__source:{fileName:_jsxFileName,lineNumber:37}});\n\n\n\nthis.setState({inspector:inspector});},\n\n\ncomponentDidMount:function componentDidMount(){\nthis.addListenerOn(\nRCTDeviceEventEmitter,\n'toggleElementInspector',\nthis.toggleElementInspector);},\n\n\n\nrender:function render(){\nvar yellowBox=null;\nif(__DEV__){\nyellowBox=React.createElement(YellowBox,{__source:{fileName:_jsxFileName,lineNumber:61}});}\n\nreturn (\nReact.createElement(View,{style:styles.appContainer,__source:{fileName:_jsxFileName,lineNumber:64}},\nReact.createElement(View,{\ncollapsible:false,\nkey:this.state.mainKey,\nstyle:styles.appContainer,ref:'main',__source:{fileName:_jsxFileName,lineNumber:65}},\nthis.props.children),\n\nyellowBox,\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\n\nReactNative.render(\nReact.createElement(AppContainer,{rootTag:rootTag,__source:{fileName:_jsxFileName,lineNumber:89}},\nReact.createElement(RootComponent,babelHelpers.extends({},\ninitialProps,{\nrootTag:rootTag,__source:{fileName:_jsxFileName,lineNumber:90}}))),\n\n\nrootTag);}\n\n\n\n\nvar styles=StyleSheet.create({\nappContainer:{\nflex:1}});\n\n\n\nmodule.exports=renderApplication;","map":null,"id":"renderApplication","source":"/**\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 * @noflow\n */\n\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar React = require('React');\nvar ReactNative = require('ReactNative');\nvar StyleSheet = require('StyleSheet');\nvar Subscribable = require('Subscribable');\nvar View = require('View');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar Inspector = __DEV__ ? require('Inspector') : null;\nvar YellowBox = __DEV__ ? require('YellowBox') : null;\n\nvar AppContainer = React.createClass({\n mixins: [Subscribable.Mixin],\n\n getInitialState: function() {\n return { inspector: null, mainKey: 1 };\n },\n\n toggleElementInspector: function() {\n var inspector = !__DEV__ || this.state.inspector\n ? null\n : {\n this.setState(\n (s) => ({mainKey: s.mainKey + 1}),\n () => updateInspectedViewTag(ReactNative.findNodeHandle(this.refs.main))\n );\n }}\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 let yellowBox = null;\n if (__DEV__) {\n yellowBox = ;\n }\n return (\n \n \n {this.props.children}\n \n {yellowBox}\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 /* eslint-disable jsx-no-undef-with-namespace */\n ReactNative.render(\n \n \n ,\n rootTag\n );\n /* eslint-enable jsx-no-undef-with-namespace */\n}\n\nvar styles = StyleSheet.create({\n appContainer: {\n flex: 1,\n },\n});\n\nmodule.exports = renderApplication;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactIOS/requireNativeComponent.js":{"metadata":{"mtime":1463609891000},"data":{"name":"requireNativeComponent","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[65,118,162,229,291,333,377,421,469,516,560,600],"dependencies":["ReactNativeStyleAttributes","UIManager","UnimplementedView","createReactNativeComponentClass","insetsDiffer","pointsDiffer","matricesDiffer","processColor","resolveAssetSource","sizesDiffer","verifyPropTypes","fbjs/lib/warning"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar UIManager=require('UIManager');\nvar UnimplementedView=require('UnimplementedView');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\n\nvar insetsDiffer=require('insetsDiffer');\nvar pointsDiffer=require('pointsDiffer');\nvar matricesDiffer=require('matricesDiffer');\nvar processColor=require('processColor');\nvar resolveAssetSource=require('resolveAssetSource');\nvar sizesDiffer=require('sizesDiffer');\nvar verifyPropTypes=require('verifyPropTypes');\nvar warning=require('fbjs/lib/warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requireNativeComponent(\nviewName,\ncomponentInterface,\nextraConfig)\n{\nvar viewConfig=UIManager[viewName];\nif(!viewConfig||!viewConfig.NativeProps){\nwarning(false,'Native component for \"%s\" does not exist',viewName);\nreturn UnimplementedView;}\n\nvar nativeProps=babelHelpers.extends({},\nUIManager.RCTView.NativeProps,\nviewConfig.NativeProps);\n\nviewConfig.uiViewClassName=viewName;\nviewConfig.validAttributes={};\nviewConfig.propTypes=componentInterface&&componentInterface.propTypes;\nfor(var key in nativeProps){\nvar useAttribute=false;\nvar attribute={};\n\nvar differ=TypeToDifferMap[nativeProps[key]];\nif(differ){\nattribute.diff=differ;\nuseAttribute=true;}\n\n\nvar processor=TypeToProcessorMap[nativeProps[key]];\nif(processor){\nattribute.process=processor;\nuseAttribute=true;}\n\n\nviewConfig.validAttributes[key]=useAttribute?attribute:true;}\n\n\n\n\n\n\n\nviewConfig.validAttributes.style=ReactNativeStyleAttributes;\n\nif(__DEV__){\ncomponentInterface&&verifyPropTypes(\ncomponentInterface,\nviewConfig,\nextraConfig&&extraConfig.nativeOnly);}\n\n\nreturn createReactNativeComponentClass(viewConfig);}\n\n\nvar TypeToDifferMap={\n\nCATransform3D:matricesDiffer,\nCGPoint:pointsDiffer,\nCGSize:sizesDiffer,\nUIEdgeInsets:insetsDiffer};\n\n\n\n\nfunction processColorArray(colors){\nreturn colors&&colors.map(processColor);}\n\n\nvar TypeToProcessorMap={\n\nCGColor:processColor,\nCGColorArray:processColorArray,\nUIColor:processColor,\nUIColorArray:processColorArray,\nCGImage:resolveAssetSource,\nUIImage:resolveAssetSource,\nRCTImageSource:resolveAssetSource,\n\nColor:processColor,\nColorArray:processColorArray};\n\n\nmodule.exports=requireNativeComponent;","map":null,"id":"requireNativeComponent","source":"/**\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 requireNativeComponent\n * @flow\n */\n'use strict';\n\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nvar UIManager = require('UIManager');\nvar UnimplementedView = require('UnimplementedView');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\n\nvar insetsDiffer = require('insetsDiffer');\nvar pointsDiffer = require('pointsDiffer');\nvar matricesDiffer = require('matricesDiffer');\nvar processColor = require('processColor');\nvar resolveAssetSource = require('resolveAssetSource');\nvar sizesDiffer = require('sizesDiffer');\nvar verifyPropTypes = require('verifyPropTypes');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Used to create React components that directly wrap native component\n * implementations. Config information is extracted from data exported from the\n * UIManager module. You should also wrap the native component in a\n * hand-written component with full propTypes definitions and other\n * documentation - pass the hand-written component in as `componentInterface` to\n * verify all the native props are documented via `propTypes`.\n *\n * If some native props shouldn't be exposed in the wrapper interface, you can\n * pass null for `componentInterface` and call `verifyPropTypes` directly\n * with `nativePropsToIgnore`;\n *\n * Common types are lined up with the appropriate prop differs with\n * `TypeToDifferMap`. Non-scalar types not in the map default to `deepDiffer`.\n */\nimport type { ComponentInterface } from 'verifyPropTypes';\n\nfunction requireNativeComponent(\n viewName: string,\n componentInterface?: ?ComponentInterface,\n extraConfig?: ?{nativeOnly?: Object},\n): Function {\n var viewConfig = UIManager[viewName];\n if (!viewConfig || !viewConfig.NativeProps) {\n warning(false, 'Native component for \"%s\" does not exist', viewName);\n return UnimplementedView;\n }\n var nativeProps = {\n ...UIManager.RCTView.NativeProps,\n ...viewConfig.NativeProps,\n };\n viewConfig.uiViewClassName = viewName;\n viewConfig.validAttributes = {};\n viewConfig.propTypes = componentInterface && componentInterface.propTypes;\n for (var key in nativeProps) {\n var useAttribute = false;\n var attribute = {};\n\n var differ = TypeToDifferMap[nativeProps[key]];\n if (differ) {\n attribute.diff = differ;\n useAttribute = true;\n }\n\n var processor = TypeToProcessorMap[nativeProps[key]];\n if (processor) {\n attribute.process = processor;\n useAttribute = true;\n }\n\n viewConfig.validAttributes[key] = useAttribute ? attribute : true;\n }\n\n // Unfortunately, the current set up puts the style properties on the top\n // level props object. We also need to add the nested form for API\n // compatibility. This allows these props on both the top level and the\n // nested style level. TODO: Move these to nested declarations on the\n // native side.\n viewConfig.validAttributes.style = ReactNativeStyleAttributes;\n\n if (__DEV__) {\n componentInterface && verifyPropTypes(\n componentInterface,\n viewConfig,\n extraConfig && extraConfig.nativeOnly\n );\n }\n return createReactNativeComponentClass(viewConfig);\n}\n\nvar TypeToDifferMap = {\n // iOS Types\n CATransform3D: matricesDiffer,\n CGPoint: pointsDiffer,\n CGSize: sizesDiffer,\n UIEdgeInsets: insetsDiffer,\n // Android Types\n // (not yet implemented)\n};\n\nfunction processColorArray(colors: []): [] {\n return colors && colors.map(processColor);\n}\n\nvar TypeToProcessorMap = {\n // iOS Types\n CGColor: processColor,\n CGColorArray: processColorArray,\n UIColor: processColor,\n UIColorArray: processColorArray,\n CGImage: resolveAssetSource,\n UIImage: resolveAssetSource,\n RCTImageSource: resolveAssetSource,\n // Android Types\n Color: processColor,\n ColorArray: processColorArray,\n};\n\nmodule.exports = requireNativeComponent;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactIOS/verifyPropTypes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"verifyPropTypes","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[65],"dependencies":["ReactNativeStyleAttributes"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\n\n\n\n\n\n\n\nfunction verifyPropTypes(\ncomponentInterface,\nviewConfig,\nnativePropsToIgnore)\n{\nif(!viewConfig){\nreturn;}\n\nvar componentName=componentInterface.name||\ncomponentInterface.displayName||\n'unknown';\nif(!componentInterface.propTypes){\nthrow new Error(\n'`'+componentName+'` has no propTypes defined`');}\n\n\n\nvar nativeProps=viewConfig.NativeProps;\nfor(var prop in nativeProps){\nif(!componentInterface.propTypes[prop]&&\n!ReactNativeStyleAttributes[prop]&&(\n!nativePropsToIgnore||!nativePropsToIgnore[prop])){\nvar message;\nif(componentInterface.propTypes.hasOwnProperty(prop)){\nmessage='`'+componentName+'` has incorrectly defined propType for native prop `'+\nviewConfig.uiViewClassName+'.'+prop+'` of native type `'+nativeProps[prop];}else \n{\nmessage='`'+componentName+'` has no propType for native prop `'+\nviewConfig.uiViewClassName+'.'+prop+'` of native type `'+\nnativeProps[prop]+'`';}\n;\nmessage+='\\nIf you haven\\'t changed this prop yourself, this usually means that '+\n'your versions of the native code and JavaScript code are out of sync. Updating both '+\n'should make this error go away.';\nthrow new Error(message);}}}\n\n\n\n\nmodule.exports=verifyPropTypes;","map":null,"id":"verifyPropTypes","source":"/**\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 verifyPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\n\nexport type ComponentInterface = ReactClass | {\n name?: string;\n displayName?: string;\n propTypes: Object;\n};\n\nfunction verifyPropTypes(\n componentInterface: ComponentInterface,\n viewConfig: Object,\n nativePropsToIgnore?: ?Object\n) {\n if (!viewConfig) {\n return; // This happens for UnimplementedView.\n }\n var componentName = componentInterface.name ||\n componentInterface.displayName ||\n 'unknown';\n if (!componentInterface.propTypes) {\n throw new Error(\n '`' + componentName + '` has no propTypes defined`'\n );\n }\n\n var nativeProps = viewConfig.NativeProps;\n for (var prop in nativeProps) {\n if (!componentInterface.propTypes[prop] &&\n !ReactNativeStyleAttributes[prop] &&\n (!nativePropsToIgnore || !nativePropsToIgnore[prop])) {\n var message;\n if (componentInterface.propTypes.hasOwnProperty(prop)) {\n message = '`' + componentName + '` has incorrectly defined propType for native prop `' +\n viewConfig.uiViewClassName + '.' + prop + '` of native type `' + nativeProps[prop];\n } else {\n message = '`' + componentName + '` has no propType for native prop `' +\n viewConfig.uiViewClassName + '.' + prop + '` of native type `' +\n nativeProps[prop] + '`';\n };\n message += '\\nIf you haven\\'t changed this prop yourself, this usually means that ' +\n 'your versions of the native code and JavaScript code are out of sync. Updating both ' +\n 'should make this error go away.';\n throw new Error(message);\n }\n }\n}\n\nmodule.exports = verifyPropTypes;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactIOS/YellowBox.js":{"metadata":{"mtime":1463609891000},"data":{"name":"YellowBox","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[171,210,241,274,1054,1937,1977,2017,2838,2870,2910,2950,5838,5870],"dependencies":["EventEmitter","Platform","React","StyleSheet","stringifySafe","Text","TouchableHighlight","View","ScrollView"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/ReactIOS/YellowBox.js';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\n\nvar Platform=require('Platform');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar _warningEmitter=new EventEmitter();\nvar _warningMap=new Map();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nif(__DEV__){(function(){var _console=\nconsole;var error=_console.error;var warn=_console.warn;\nconsole.error=function(){\nerror.apply(console,arguments);\n\nif(typeof arguments[0]==='string'&&\narguments[0].startsWith('Warning: ')){\nupdateWarningMap.apply(null,arguments);}};\n\n\nconsole.warn=function(){\nwarn.apply(console,arguments);\nupdateWarningMap.apply(null,arguments);};})();}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction sprintf(format){for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}\nvar index=0;\nreturn format.replace(/%s/g,function(match){return args[index++];});}\n\n\nfunction updateWarningMap(format){\nvar stringifySafe=require('stringifySafe');\n\nformat=String(format);\nvar argCount=(format.match(/%s/g)||[]).length;for(var _len2=arguments.length,args=Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){args[_key2-1]=arguments[_key2];}\nvar warning=[\nsprintf.apply(undefined,[format].concat(babelHelpers.toConsumableArray(args.slice(0,argCount))))].concat(babelHelpers.toConsumableArray(\nargs.slice(argCount).map(stringifySafe))).\njoin(' ');\n\nvar count=_warningMap.has(warning)?_warningMap.get(warning):0;\n_warningMap.set(warning,count+1);\n_warningEmitter.emit('warning',_warningMap);}\n\n\nfunction isWarningIgnored(warning){\nreturn (\nArray.isArray(console.ignoredYellowBox)&&\nconsole.ignoredYellowBox.some(\nfunction(ignorePrefix){return warning.startsWith(ignorePrefix);}));}\n\n\n\n\nvar WarningRow=function WarningRow(_ref){var count=_ref.count;var warning=_ref.warning;var onPress=_ref.onPress;\nvar Text=require('Text');\nvar TouchableHighlight=require('TouchableHighlight');\nvar View=require('View');\n\nvar countText=count>1?\nReact.createElement(Text,{style:styles.listRowCount,__source:{fileName:_jsxFileName,lineNumber:105}},'('+count+') '):\nnull;\n\nreturn (\nReact.createElement(View,{style:styles.listRow,__source:{fileName:_jsxFileName,lineNumber:109}},\nReact.createElement(TouchableHighlight,{\nactiveOpacity:0.5,\nonPress:onPress,\nstyle:styles.listRowContent,\nunderlayColor:'transparent',__source:{fileName:_jsxFileName,lineNumber:110}},\nReact.createElement(Text,{style:styles.listRowText,numberOfLines:2,__source:{fileName:_jsxFileName,lineNumber:115}},\ncountText,\nwarning))));};\n\n\n\n\n\n\nvar WarningInspector=function WarningInspector(_ref2)\n\n\n\n\n\n{var count=_ref2.count;var warning=_ref2.warning;var onClose=_ref2.onClose;var onDismiss=_ref2.onDismiss;var onDismissAll=_ref2.onDismissAll;\nvar ScrollView=require('ScrollView');\nvar Text=require('Text');\nvar TouchableHighlight=require('TouchableHighlight');\nvar View=require('View');\n\nvar countSentence=\n'Warning encountered '+count+' time'+(count-1?'s':'')+'.';\n\nreturn (\nReact.createElement(TouchableHighlight,{\nactiveOpacity:0.95,\nunderlayColor:backgroundColor(0.8),\nonPress:onClose,\nstyle:styles.inspector,__source:{fileName:_jsxFileName,lineNumber:140}},\nReact.createElement(View,{style:styles.inspectorContent,__source:{fileName:_jsxFileName,lineNumber:145}},\nReact.createElement(View,{style:styles.inspectorCount,__source:{fileName:_jsxFileName,lineNumber:146}},\nReact.createElement(Text,{style:styles.inspectorCountText,__source:{fileName:_jsxFileName,lineNumber:147}},countSentence)),\n\nReact.createElement(ScrollView,{style:styles.inspectorWarning,__source:{fileName:_jsxFileName,lineNumber:149}},\nReact.createElement(Text,{style:styles.inspectorWarningText,__source:{fileName:_jsxFileName,lineNumber:150}},warning)),\n\nReact.createElement(View,{style:styles.inspectorButtons,__source:{fileName:_jsxFileName,lineNumber:152}},\nReact.createElement(TouchableHighlight,{\nactiveOpacity:0.5,\nonPress:onDismiss,\nstyle:styles.inspectorButton,\nunderlayColor:'transparent',__source:{fileName:_jsxFileName,lineNumber:153}},\nReact.createElement(Text,{style:styles.inspectorButtonText,__source:{fileName:_jsxFileName,lineNumber:158}},'Dismiss')),\n\n\n\nReact.createElement(TouchableHighlight,{\nactiveOpacity:0.5,\nonPress:onDismissAll,\nstyle:styles.inspectorButton,\nunderlayColor:'transparent',__source:{fileName:_jsxFileName,lineNumber:162}},\nReact.createElement(Text,{style:styles.inspectorButtonText,__source:{fileName:_jsxFileName,lineNumber:167}},'Dismiss All'))))));};var \n\n\n\n\n\n\n\n\n\nYellowBox=function(_React$Component){babelHelpers.inherits(YellowBox,_React$Component);\n\n\n\n\n\n\n\nfunction YellowBox(props,context){babelHelpers.classCallCheck(this,YellowBox);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(YellowBox).call(this,\nprops,context));\n_this.state={\ninspecting:null,\nwarningMap:_warningMap};\n\n_this.dismissWarning=function(warning){var _this$state=\n_this.state;var inspecting=_this$state.inspecting;var warningMap=_this$state.warningMap;\nif(warning){\nwarningMap.delete(warning);}else \n{\nwarningMap.clear();}\n\n_this.setState({\ninspecting:warning&&inspecting!==warning?inspecting:null,\nwarningMap:warningMap});};return _this;}babelHelpers.createClass(YellowBox,[{key:'componentDidMount',value:function componentDidMount()\n\n\n\n\n{var _this2=this;\nvar scheduled=null;\nthis._listener=_warningEmitter.addListener('warning',function(warningMap){\n\n\nscheduled=scheduled||setImmediate(function(){\nscheduled=null;\n_this2.setState({\nwarningMap:warningMap});});});}},{key:'componentWillUnmount',value:function componentWillUnmount()\n\n\n\n\n\n{\nif(this._listener){\nthis._listener.remove();}}},{key:'render',value:function render()\n\n\n\n{var _this3=this;\nif(console.disableYellowBox||this.state.warningMap.size===0){\nreturn null;}\n\nvar ScrollView=require('ScrollView');\nvar View=require('View');\n\nvar inspecting=this.state.inspecting;\nvar inspector=inspecting!==null?\nReact.createElement(WarningInspector,{\ncount:this.state.warningMap.get(inspecting),\nwarning:inspecting,\nonClose:function onClose(){return _this3.setState({inspecting:null});},\nonDismiss:function onDismiss(){return _this3.dismissWarning(inspecting);},\nonDismissAll:function onDismissAll(){return _this3.dismissWarning(null);},__source:{fileName:_jsxFileName,lineNumber:234}}):\n\nnull;\n\nvar rows=[];\nthis.state.warningMap.forEach(function(count,warning){\nif(!isWarningIgnored(warning)){\nrows.push(\nReact.createElement(WarningRow,{\nkey:warning,\ncount:count,\nwarning:warning,\nonPress:function onPress(){return _this3.setState({inspecting:warning});},\nonDismiss:function onDismiss(){return _this3.dismissWarning(warning);},__source:{fileName:_jsxFileName,lineNumber:247}}));}});\n\n\n\n\n\nvar listStyle=[\nstyles.list,\n\n{height:Math.min(rows.length,4.4)*(rowGutter+rowHeight)}];\n\nreturn (\nReact.createElement(View,{style:inspector?styles.fullScreen:listStyle,__source:{fileName:_jsxFileName,lineNumber:264}},\nReact.createElement(ScrollView,{style:listStyle,scrollsToTop:false,__source:{fileName:_jsxFileName,lineNumber:265}},\nrows),\n\ninspector));}}]);return YellowBox;}(React.Component);\n\n\n\n\n\nvar backgroundColor=function backgroundColor(opacity){return 'rgba(250, 186, 48, '+opacity+')';};\nvar textColor='white';\nvar rowGutter=1;\nvar rowHeight=46;\n\nvar styles=StyleSheet.create({\nfullScreen:{\nbackgroundColor:'transparent',\nposition:'absolute',\nleft:0,\nright:0,\ntop:0,\nbottom:0},\n\ninspector:{\nbackgroundColor:backgroundColor(0.95),\nflex:1},\n\ninspectorContainer:{\nflex:1},\n\ninspectorButtons:{\nflexDirection:'row',\nposition:'absolute',\nleft:0,\nright:0,\nbottom:0},\n\ninspectorButton:{\nflex:1,\npadding:22},\n\ninspectorButtonText:{\ncolor:textColor,\nfontSize:14,\nopacity:0.8,\ntextAlign:'center'},\n\ninspectorContent:{\nflex:1,\npaddingTop:5},\n\ninspectorCount:{\npadding:15,\npaddingBottom:0},\n\ninspectorCountText:{\ncolor:textColor,\nfontSize:14},\n\ninspectorWarning:{\npadding:15,\nposition:'absolute',\ntop:39,\nbottom:60},\n\ninspectorWarningText:{\ncolor:textColor,\nfontSize:16,\nfontWeight:'600'},\n\nlist:{\nbackgroundColor:'transparent',\nposition:'absolute',\nleft:0,\nright:0,\nbottom:0},\n\nlistRow:{\nposition:'relative',\nbackgroundColor:backgroundColor(0.95),\nflex:1,\nheight:rowHeight,\nmarginTop:rowGutter},\n\nlistRowContent:{\nflex:1},\n\nlistRowCount:{\ncolor:'rgba(255, 255, 255, 0.5)'},\n\nlistRowText:{\ncolor:textColor,\nposition:'absolute',\nleft:0,\ntop:Platform.OS==='android'?5:7,\nmarginLeft:15,\nmarginRight:15}});\n\n\n\nmodule.exports=YellowBox;","map":null,"id":"YellowBox","source":"/**\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 YellowBox\n * @flow\n */\n\n'use strict';\n\nconst EventEmitter = require('EventEmitter');\nimport type EmitterSubscription from 'EmitterSubscription';\nconst Platform = require('Platform');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\n\nconst _warningEmitter = new EventEmitter();\nconst _warningMap = new Map();\n\n/**\n * YellowBox renders warnings at the bottom of the app being developed.\n *\n * Warnings help guard against subtle yet significant issues that can impact the\n * quality of the app. This \"in your face\" style of warning allows developers to\n * notice and correct these issues as quickly as possible.\n *\n * By default, the warning box is enabled in `__DEV__`. Set the following flag\n * to disable it (and call `console.warn` to update any rendered ):\n *\n * console.disableYellowBox = true;\n * console.warn('YellowBox is disabled.');\n *\n * Warnings can be ignored programmatically by setting the array:\n *\n * console.ignoredYellowBox = ['Warning: ...'];\n *\n * Strings in `console.ignoredYellowBox` can be a prefix of the warning that\n * should be ignored.\n */\n\nif (__DEV__) {\n const {error, warn} = console;\n console.error = function() {\n error.apply(console, arguments);\n // Show yellow box for the `warning` module.\n if (typeof arguments[0] === 'string' &&\n arguments[0].startsWith('Warning: ')) {\n updateWarningMap.apply(null, arguments);\n }\n };\n console.warn = function() {\n warn.apply(console, arguments);\n updateWarningMap.apply(null, arguments);\n };\n}\n\n/**\n * Simple function for formatting strings.\n *\n * Replaces placeholders with values passed as extra arguments\n *\n * @param {string} format the base string\n * @param ...args the values to insert\n * @return {string} the replaced string\n */\nfunction sprintf(format, ...args) {\n var index = 0;\n return format.replace(/%s/g, match => args[index++]);\n}\n\nfunction updateWarningMap(format, ...args): void {\n const stringifySafe = require('stringifySafe');\n\n format = String(format);\n const argCount = (format.match(/%s/g) || []).length;\n const warning = [\n sprintf(format, ...args.slice(0, argCount)),\n ...args.slice(argCount).map(stringifySafe),\n ].join(' ');\n\n const count = _warningMap.has(warning) ? _warningMap.get(warning) : 0;\n _warningMap.set(warning, count + 1);\n _warningEmitter.emit('warning', _warningMap);\n}\n\nfunction isWarningIgnored(warning: string): boolean {\n return (\n Array.isArray(console.ignoredYellowBox) &&\n console.ignoredYellowBox.some(\n ignorePrefix => warning.startsWith(ignorePrefix)\n )\n );\n}\n\nconst WarningRow = ({count, warning, onPress}) => {\n const Text = require('Text');\n const TouchableHighlight = require('TouchableHighlight');\n const View = require('View');\n\n const countText = count > 1 ?\n {'(' + count + ') '} :\n null;\n\n return (\n \n \n \n {countText}\n {warning}\n \n \n \n );\n};\n\nconst WarningInspector = ({\n count,\n warning,\n onClose,\n onDismiss,\n onDismissAll,\n}) => {\n const ScrollView = require('ScrollView');\n const Text = require('Text');\n const TouchableHighlight = require('TouchableHighlight');\n const View = require('View');\n\n const countSentence =\n 'Warning encountered ' + count + ' time' + (count - 1 ? 's' : '') + '.';\n\n return (\n \n \n \n {countSentence}\n \n \n {warning}\n \n \n \n \n Dismiss\n \n \n \n \n Dismiss All\n \n \n \n \n \n );\n};\n\nclass YellowBox extends React.Component {\n state: {\n inspecting: ?string;\n warningMap: Map;\n };\n _listener: ?EmitterSubscription;\n dismissWarning: (warning: ?string) => void;\n\n constructor(props: mixed, context: mixed) {\n super(props, context);\n this.state = {\n inspecting: null,\n warningMap: _warningMap,\n };\n this.dismissWarning = warning => {\n const {inspecting, warningMap} = this.state;\n if (warning) {\n warningMap.delete(warning);\n } else {\n warningMap.clear();\n }\n this.setState({\n inspecting: (warning && inspecting !== warning) ? inspecting : null,\n warningMap,\n });\n };\n }\n\n componentDidMount() {\n let scheduled = null;\n this._listener = _warningEmitter.addListener('warning', warningMap => {\n // Use `setImmediate` because warnings often happen during render, but\n // state cannot be set while rendering.\n scheduled = scheduled || setImmediate(() => {\n scheduled = null;\n this.setState({\n warningMap,\n });\n });\n });\n }\n\n componentWillUnmount() {\n if (this._listener) {\n this._listener.remove();\n }\n }\n\n render() {\n if (console.disableYellowBox || this.state.warningMap.size === 0) {\n return null;\n }\n const ScrollView = require('ScrollView');\n const View = require('View');\n\n const inspecting = this.state.inspecting;\n const inspector = inspecting !== null ?\n this.setState({inspecting: null})}\n onDismiss={() => this.dismissWarning(inspecting)}\n onDismissAll={() => this.dismissWarning(null)}\n /> :\n null;\n\n const rows = [];\n this.state.warningMap.forEach((count, warning) => {\n if (!isWarningIgnored(warning)) {\n rows.push(\n this.setState({inspecting: warning})}\n onDismiss={() => this.dismissWarning(warning)}\n />\n );\n }\n });\n\n const listStyle = [\n styles.list,\n // Additional `0.4` so the 5th row can peek into view.\n {height: Math.min(rows.length, 4.4) * (rowGutter + rowHeight)},\n ];\n return (\n \n \n {rows}\n \n {inspector}\n \n );\n }\n}\n\nconst backgroundColor = opacity => 'rgba(250, 186, 48, ' + opacity + ')';\nconst textColor = 'white';\nconst rowGutter = 1;\nconst rowHeight = 46;\n\nvar styles = StyleSheet.create({\n fullScreen: {\n backgroundColor: 'transparent',\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n inspector: {\n backgroundColor: backgroundColor(0.95),\n flex: 1,\n },\n inspectorContainer: {\n flex: 1,\n },\n inspectorButtons: {\n flexDirection: 'row',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n },\n inspectorButton: {\n flex: 1,\n padding: 22,\n },\n inspectorButtonText: {\n color: textColor,\n fontSize: 14,\n opacity: 0.8,\n textAlign: 'center',\n },\n inspectorContent: {\n flex: 1,\n paddingTop: 5,\n },\n inspectorCount: {\n padding: 15,\n paddingBottom: 0,\n },\n inspectorCountText: {\n color: textColor,\n fontSize: 14,\n },\n inspectorWarning: {\n padding: 15,\n position: 'absolute',\n top: 39,\n bottom: 60,\n },\n inspectorWarningText: {\n color: textColor,\n fontSize: 16,\n fontWeight: '600',\n },\n list: {\n backgroundColor: 'transparent',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n },\n listRow: {\n position: 'relative',\n backgroundColor: backgroundColor(0.95),\n flex: 1,\n height: rowHeight,\n marginTop: rowGutter,\n },\n listRowContent: {\n flex: 1,\n },\n listRowCount: {\n color: 'rgba(255, 255, 255, 0.5)',\n },\n listRowText: {\n color: textColor,\n position: 'absolute',\n left: 0,\n top: Platform.OS === 'android' ? 5 : 7,\n marginLeft: 15,\n marginRight: 15,\n },\n});\n\nmodule.exports = YellowBox;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/react-native/react-native-interface.js":{"metadata":{"mtime":1463609891000},"data":{}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/react-native/react-native.js":{"metadata":{"mtime":1463609891000},"data":{"k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[45,396,448,504,565,618,663,713,760,804,845,888,938,985,1029,1085,1147,1201,1259,1313,1357,1410,1460,1519,1600,1671,1723,1774,1825,1872,1914,1956,2006,2061,2113,2169,2239,2307,2376,2433,2482,2534,2586,2641,2687,2729,2774,2822,2870,2918,2970,3022,3072,3120,3175,3231,3276,3325,3381,3441,3503,3554,3600,3661,3719,3767,3818,3876,3932,3981,4032,4088,4143,4190,4240,4301,4372,4438,4488,4537,4600,4666,4726,4786,4936,5092,5345,5625,5772,5887,5940,6387,6583],"dependencies":["fbjs/lib/warning","ActivityIndicatorIOS","ReactNativeART","DatePickerIOS","DrawerLayoutAndroid","Image","ImageEditor","ImageStore","ListView","MapView","Modal","Navigator","NavigatorIOS","Picker","PickerIOS","ProgressBarAndroid","ProgressViewIOS","ScrollView","SegmentedControlIOS","Slider","SliderIOS","SnapshotViewIOS","Switch","PullToRefreshViewAndroid","RecyclerViewBackedScrollView","RefreshControl","StatusBar","SwitchAndroid","SwitchIOS","TabBarIOS","Text","TextInput","ToastAndroid","ToolbarAndroid","Touchable","TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","View","ViewPagerAndroid","WebView","ActionSheetIOS","AdSupportIOS","Alert","AlertIOS","Animated","AppRegistry","AppState","AppStateIOS","AsyncStorage","BackAndroid","CameraRoll","Clipboard","DatePickerAndroid","Dimensions","Easing","ImagePickerIOS","IntentAndroid","InteractionManager","LayoutAnimation","Linking","LinkingIOS","NavigationExperimental","NetInfo","PanResponder","PixelRatio","PushNotificationIOS","Settings","StatusBarIOS","StyleSheet","TimePickerAndroid","UIManager","Vibration","VibrationIOS","RCTDeviceEventEmitter","RCTNativeAppEventEmitter","NativeModules","Platform","processColor","requireNativeComponent","ColorPropType","EdgeInsetsPropType","PointPropType","LinkedStateMixin","ReactComponentWithPureRenderMixin","ReactUpdates","ReactFragment","update","ReactNative","ReactDefaultPerf","ReactTestUtils"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar warning=require('fbjs/lib/warning');\n\nif(__DEV__){\nvar warningDedupe={};\nvar addonWarn=function addonWarn(prevName,newPackageName){\nwarning(\nwarningDedupe[prevName],\n'React.addons.'+prevName+' is deprecated. Please import the \"'+\nnewPackageName+'\" package instead.');\n\nwarningDedupe[prevName]=true;};}\n\n\n\n\nvar ReactNative={\n\nget ActivityIndicatorIOS(){return require('ActivityIndicatorIOS');},\nget ART(){return require('ReactNativeART');},\nget DatePickerIOS(){return require('DatePickerIOS');},\nget DrawerLayoutAndroid(){return require('DrawerLayoutAndroid');},\nget Image(){return require('Image');},\nget ImageEditor(){return require('ImageEditor');},\nget ImageStore(){return require('ImageStore');},\nget ListView(){return require('ListView');},\nget MapView(){return require('MapView');},\nget Modal(){return require('Modal');},\nget Navigator(){return require('Navigator');},\nget NavigatorIOS(){return require('NavigatorIOS');},\nget Picker(){return require('Picker');},\nget PickerIOS(){return require('PickerIOS');},\nget ProgressBarAndroid(){return require('ProgressBarAndroid');},\nget ProgressViewIOS(){return require('ProgressViewIOS');},\nget ScrollView(){return require('ScrollView');},\nget SegmentedControlIOS(){return require('SegmentedControlIOS');},\nget Slider(){return require('Slider');},\nget SliderIOS(){return require('SliderIOS');},\nget SnapshotViewIOS(){return require('SnapshotViewIOS');},\nget Switch(){return require('Switch');},\nget PullToRefreshViewAndroid(){return require('PullToRefreshViewAndroid');},\nget RecyclerViewBackedScrollView(){return require('RecyclerViewBackedScrollView');},\nget RefreshControl(){return require('RefreshControl');},\nget StatusBar(){return require('StatusBar');},\nget SwitchAndroid(){return require('SwitchAndroid');},\nget SwitchIOS(){return require('SwitchIOS');},\nget TabBarIOS(){return require('TabBarIOS');},\nget Text(){return require('Text');},\nget TextInput(){return require('TextInput');},\nget ToastAndroid(){return require('ToastAndroid');},\nget ToolbarAndroid(){return require('ToolbarAndroid');},\nget Touchable(){return require('Touchable');},\nget TouchableHighlight(){return require('TouchableHighlight');},\nget TouchableNativeFeedback(){return require('TouchableNativeFeedback');},\nget TouchableOpacity(){return require('TouchableOpacity');},\nget TouchableWithoutFeedback(){return require('TouchableWithoutFeedback');},\nget View(){return require('View');},\nget ViewPagerAndroid(){return require('ViewPagerAndroid');},\nget WebView(){return require('WebView');},\n\n\nget ActionSheetIOS(){return require('ActionSheetIOS');},\nget AdSupportIOS(){return require('AdSupportIOS');},\nget Alert(){return require('Alert');},\nget AlertIOS(){return require('AlertIOS');},\nget Animated(){return require('Animated');},\nget AppRegistry(){return require('AppRegistry');},\nget AppState(){return require('AppState');},\nget AppStateIOS(){return require('AppStateIOS');},\nget AsyncStorage(){return require('AsyncStorage');},\nget BackAndroid(){return require('BackAndroid');},\nget CameraRoll(){return require('CameraRoll');},\nget Clipboard(){return require('Clipboard');},\nget DatePickerAndroid(){return require('DatePickerAndroid');},\nget Dimensions(){return require('Dimensions');},\nget Easing(){return require('Easing');},\nget ImagePickerIOS(){return require('ImagePickerIOS');},\nget IntentAndroid(){return require('IntentAndroid');},\nget InteractionManager(){return require('InteractionManager');},\nget LayoutAnimation(){return require('LayoutAnimation');},\nget Linking(){return require('Linking');},\nget LinkingIOS(){return require('LinkingIOS');},\nget NavigationExperimental(){return require('NavigationExperimental');},\nget NetInfo(){return require('NetInfo');},\nget PanResponder(){return require('PanResponder');},\nget PixelRatio(){return require('PixelRatio');},\nget PushNotificationIOS(){return require('PushNotificationIOS');},\nget Settings(){return require('Settings');},\nget StatusBarIOS(){return require('StatusBarIOS');},\nget StyleSheet(){return require('StyleSheet');},\nget TimePickerAndroid(){return require('TimePickerAndroid');},\nget UIManager(){return require('UIManager');},\nget Vibration(){return require('Vibration');},\nget VibrationIOS(){return require('VibrationIOS');},\n\n\nget DeviceEventEmitter(){return require('RCTDeviceEventEmitter');},\nget NativeAppEventEmitter(){return require('RCTNativeAppEventEmitter');},\nget NativeModules(){return require('NativeModules');},\nget Platform(){return require('Platform');},\nget processColor(){return require('processColor');},\nget requireNativeComponent(){return require('requireNativeComponent');},\n\n\nget ColorPropType(){return require('ColorPropType');},\nget EdgeInsetsPropType(){return require('EdgeInsetsPropType');},\nget PointPropType(){return require('PointPropType');},\n\n\naddons:{\nget LinkedStateMixin(){\nif(__DEV__){\naddonWarn('LinkedStateMixin','react-addons-linked-state-mixin');}\n\nreturn require('LinkedStateMixin');},\n\nPerf:undefined,\nget PureRenderMixin(){\nif(__DEV__){\naddonWarn('PureRenderMixin','react-addons-pure-render-mixin');}\n\nreturn require('ReactComponentWithPureRenderMixin');},\n\nget TestModule(){\nif(__DEV__){\nwarning(\nwarningDedupe.TestModule,\n'React.addons.TestModule is deprecated. '+\n'Use ReactNative.NativeModules.TestModule instead.');\n\nwarningDedupe.TestModule=true;}\n\nreturn require('NativeModules').TestModule;},\n\nTestUtils:undefined,\nget batchedUpdates(){\nif(__DEV__){\nwarning(\nwarningDedupe.batchedUpdates,\n'React.addons.batchedUpdates is deprecated. '+\n'Use ReactNative.unstable_batchedUpdates instead.');\n\nwarningDedupe.batchedUpdates=true;}\n\nreturn require('ReactUpdates').batchedUpdates;},\n\nget createFragment(){\nif(__DEV__){\naddonWarn('createFragment','react-addons-create-fragment');}\n\nreturn require('ReactFragment').create;},\n\nget update(){\nif(__DEV__){\naddonWarn('update','react-addons-update');}\n\nreturn require('update');}}};\n\n\n\n\n\n\nvar ReactNativeInternal=require('ReactNative');\nfunction applyForwarding(key){\nif(__DEV__){\nObject.defineProperty(\nReactNative,\nkey,\nObject.getOwnPropertyDescriptor(ReactNativeInternal,key));\n\nreturn;}\n\nReactNative[key]=ReactNativeInternal[key];}\n\nfor(var key in ReactNativeInternal){\napplyForwarding(key);}\n\n\nif(__DEV__){\nObject.defineProperty(ReactNative.addons,'Perf',{\nenumerable:true,\nget:function get(){\nif(__DEV__){\naddonWarn('Perf','react-addons-perf');}\n\nreturn require('ReactDefaultPerf');}});\n\n\nObject.defineProperty(ReactNative.addons,'TestUtils',{\nenumerable:true,\nget:function get(){\nif(__DEV__){\naddonWarn('update','react-addons-test-utils');}\n\nreturn require('ReactTestUtils');}});}\n\n\n\n\nmodule.exports=ReactNative;","map":null,"source":"/**\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 * @noflow - get/set properties not yet supported by flow. also `...require(x)` is broken #6560135\n */\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nif (__DEV__) {\n var warningDedupe = {};\n var addonWarn = function(prevName, newPackageName) {\n warning(\n warningDedupe[prevName],\n 'React.addons.' + prevName + ' is deprecated. Please import the \"' +\n newPackageName + '\" package instead.'\n );\n warningDedupe[prevName] = true;\n };\n}\n\n// Export React, plus some native additions.\nvar ReactNative = {\n // Components\n get ActivityIndicatorIOS() { return require('ActivityIndicatorIOS'); },\n get ART() { return require('ReactNativeART'); },\n get DatePickerIOS() { return require('DatePickerIOS'); },\n get DrawerLayoutAndroid() { return require('DrawerLayoutAndroid'); },\n get Image() { return require('Image'); },\n get ImageEditor() { return require('ImageEditor'); },\n get ImageStore() { return require('ImageStore'); },\n get ListView() { return require('ListView'); },\n get MapView() { return require('MapView'); },\n get Modal() { return require('Modal'); },\n get Navigator() { return require('Navigator'); },\n get NavigatorIOS() { return require('NavigatorIOS'); },\n get Picker() { return require('Picker'); },\n get PickerIOS() { return require('PickerIOS'); },\n get ProgressBarAndroid() { return require('ProgressBarAndroid'); },\n get ProgressViewIOS() { return require('ProgressViewIOS'); },\n get ScrollView() { return require('ScrollView'); },\n get SegmentedControlIOS() { return require('SegmentedControlIOS'); },\n get Slider() { return require('Slider'); },\n get SliderIOS() { return require('SliderIOS'); },\n get SnapshotViewIOS() { return require('SnapshotViewIOS'); },\n get Switch() { return require('Switch'); },\n get PullToRefreshViewAndroid() { return require('PullToRefreshViewAndroid'); },\n get RecyclerViewBackedScrollView() { return require('RecyclerViewBackedScrollView'); },\n get RefreshControl() { return require('RefreshControl'); },\n get StatusBar() { return require('StatusBar'); },\n get SwitchAndroid() { return require('SwitchAndroid'); },\n get SwitchIOS() { return require('SwitchIOS'); },\n get TabBarIOS() { return require('TabBarIOS'); },\n get Text() { return require('Text'); },\n get TextInput() { return require('TextInput'); },\n get ToastAndroid() { return require('ToastAndroid'); },\n get ToolbarAndroid() { return require('ToolbarAndroid'); },\n get Touchable() { return require('Touchable'); },\n get TouchableHighlight() { return require('TouchableHighlight'); },\n get TouchableNativeFeedback() { return require('TouchableNativeFeedback'); },\n get TouchableOpacity() { return require('TouchableOpacity'); },\n get TouchableWithoutFeedback() { return require('TouchableWithoutFeedback'); },\n get View() { return require('View'); },\n get ViewPagerAndroid() { return require('ViewPagerAndroid'); },\n get WebView() { return require('WebView'); },\n\n // APIs\n get ActionSheetIOS() { return require('ActionSheetIOS'); },\n get AdSupportIOS() { return require('AdSupportIOS'); },\n get Alert() { return require('Alert'); },\n get AlertIOS() { return require('AlertIOS'); },\n get Animated() { return require('Animated'); },\n get AppRegistry() { return require('AppRegistry'); },\n get AppState() { return require('AppState'); },\n get AppStateIOS() { return require('AppStateIOS'); },\n get AsyncStorage() { return require('AsyncStorage'); },\n get BackAndroid() { return require('BackAndroid'); },\n get CameraRoll() { return require('CameraRoll'); },\n get Clipboard() { return require('Clipboard'); },\n get DatePickerAndroid() { return require('DatePickerAndroid'); },\n get Dimensions() { return require('Dimensions'); },\n get Easing() { return require('Easing'); },\n get ImagePickerIOS() { return require('ImagePickerIOS'); },\n get IntentAndroid() { return require('IntentAndroid'); },\n get InteractionManager() { return require('InteractionManager'); },\n get LayoutAnimation() { return require('LayoutAnimation'); },\n get Linking() { return require('Linking'); },\n get LinkingIOS() { return require('LinkingIOS'); },\n get NavigationExperimental() { return require('NavigationExperimental'); },\n get NetInfo() { return require('NetInfo'); },\n get PanResponder() { return require('PanResponder'); },\n get PixelRatio() { return require('PixelRatio'); },\n get PushNotificationIOS() { return require('PushNotificationIOS'); },\n get Settings() { return require('Settings'); },\n get StatusBarIOS() { return require('StatusBarIOS'); },\n get StyleSheet() { return require('StyleSheet'); },\n get TimePickerAndroid() { return require('TimePickerAndroid'); },\n get UIManager() { return require('UIManager'); },\n get Vibration() { return require('Vibration'); },\n get VibrationIOS() { return require('VibrationIOS'); },\n\n // Plugins\n get DeviceEventEmitter() { return require('RCTDeviceEventEmitter'); },\n get NativeAppEventEmitter() { return require('RCTNativeAppEventEmitter'); },\n get NativeModules() { return require('NativeModules'); },\n get Platform() { return require('Platform'); },\n get processColor() { return require('processColor'); },\n get requireNativeComponent() { return require('requireNativeComponent'); },\n\n // Prop Types\n get ColorPropType() { return require('ColorPropType'); },\n get EdgeInsetsPropType() { return require('EdgeInsetsPropType'); },\n get PointPropType() { return require('PointPropType'); },\n\n // See http://facebook.github.io/react/docs/addons.html\n addons: {\n get LinkedStateMixin() {\n if (__DEV__) {\n addonWarn('LinkedStateMixin', 'react-addons-linked-state-mixin');\n }\n return require('LinkedStateMixin');\n },\n Perf: undefined,\n get PureRenderMixin() {\n if (__DEV__) {\n addonWarn('PureRenderMixin', 'react-addons-pure-render-mixin');\n }\n return require('ReactComponentWithPureRenderMixin');\n },\n get TestModule() {\n if (__DEV__) {\n warning(\n warningDedupe.TestModule,\n 'React.addons.TestModule is deprecated. ' +\n 'Use ReactNative.NativeModules.TestModule instead.'\n );\n warningDedupe.TestModule = true;\n }\n return require('NativeModules').TestModule;\n },\n TestUtils: undefined,\n get batchedUpdates() {\n if (__DEV__) {\n warning(\n warningDedupe.batchedUpdates,\n 'React.addons.batchedUpdates is deprecated. ' +\n 'Use ReactNative.unstable_batchedUpdates instead.'\n );\n warningDedupe.batchedUpdates = true;\n }\n return require('ReactUpdates').batchedUpdates;\n },\n get createFragment() {\n if (__DEV__) {\n addonWarn('createFragment', 'react-addons-create-fragment');\n }\n return require('ReactFragment').create;\n },\n get update() {\n if (__DEV__) {\n addonWarn('update', 'react-addons-update');\n }\n return require('update');\n },\n },\n};\n\n// Preserve getters with warnings on the internal ReactNative copy without\n// invoking them.\nvar ReactNativeInternal = require('ReactNative');\nfunction applyForwarding(key) {\n if (__DEV__) {\n Object.defineProperty(\n ReactNative,\n key,\n Object.getOwnPropertyDescriptor(ReactNativeInternal, key)\n );\n return;\n }\n ReactNative[key] = ReactNativeInternal[key];\n}\nfor (var key in ReactNativeInternal) {\n applyForwarding(key);\n}\n\nif (__DEV__) {\n Object.defineProperty(ReactNative.addons, 'Perf', {\n enumerable: true,\n get: () => {\n if (__DEV__) {\n addonWarn('Perf', 'react-addons-perf');\n }\n return require('ReactDefaultPerf');\n }\n });\n Object.defineProperty(ReactNative.addons, 'TestUtils', {\n enumerable: true,\n get: () => {\n if (__DEV__) {\n addonWarn('update', 'react-addons-test-utils');\n }\n return require('ReactTestUtils');\n }\n });\n}\n\nmodule.exports = ReactNative;\n"},"name":"react-native/Libraries/react-native/react-native.js"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/RCTTest/SnapshotViewIOS.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SnapshotViewIOS"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/RCTTest/SnapshotViewIOS.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"SnapshotViewIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[172,205,241,316,347,392],"dependencies":["React","StyleSheet","NativeModules","UIManager","View","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/RCTTest/SnapshotViewIOS.ios.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');var _require=\nrequire('NativeModules');var TestModule=_require.TestModule;\nvar UIManager=require('UIManager');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar SnapshotViewIOS=React.createClass({displayName:'SnapshotViewIOS',\nonDefaultAction:function onDefaultAction(event){\nTestModule.verifySnapshot(TestModule.markTestPassed);},\n\n\nrender:function render(){\nvar testIdentifier=this.props.testIdentifier||'test';\nvar onSnapshotReady=this.props.onSnapshotReady||this.onDefaultAction;\nreturn (\nReact.createElement(RCTSnapshot,babelHelpers.extends({\nstyle:style.snapshot},\nthis.props,{\nonSnapshotReady:onSnapshotReady,\ntestIdentifier:testIdentifier,__source:{fileName:_jsxFileName,lineNumber:31}})));},\n\n\n\n\npropTypes:babelHelpers.extends({},\nView.propTypes,{\n\nonSnapshotReady:React.PropTypes.func,\n\ntestIdentifier:React.PropTypes.string})});\n\n\n\nvar style=StyleSheet.create({\nsnapshot:{\nflex:1}});\n\n\n\n\n\n\nvar RCTSnapshot=UIManager.RCTSnapshot?\nrequireNativeComponent('RCTSnapshot',SnapshotViewIOS):\nView;\n\nmodule.exports=SnapshotViewIOS;","map":null,"id":"SnapshotViewIOS","source":"/**\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 SnapshotViewIOS\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar { TestModule } = require('NativeModules');\nvar UIManager = require('UIManager');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar SnapshotViewIOS = React.createClass({\n onDefaultAction: function(event: Object) {\n TestModule.verifySnapshot(TestModule.markTestPassed);\n },\n\n render: function() {\n var testIdentifier = this.props.testIdentifier || 'test';\n var onSnapshotReady = this.props.onSnapshotReady || this.onDefaultAction;\n return (\n \n );\n },\n\n propTypes: {\n ...View.propTypes,\n // A callback when the Snapshot view is ready to be compared\n onSnapshotReady : React.PropTypes.func,\n // A name to identify the individual instance to the SnapshotView\n testIdentifier : React.PropTypes.string,\n }\n});\n\nvar style = StyleSheet.create({\n snapshot: {\n flex: 1,\n },\n});\n\n// Verify that RCTSnapshot is part of the UIManager since it is only loaded\n// if you have linked against RCTTest like in tests, otherwise we will have\n// a warning printed out\nvar RCTSnapshot = UIManager.RCTSnapshot ?\n requireNativeComponent('RCTSnapshot', SnapshotViewIOS) :\n View;\n\nmodule.exports = SnapshotViewIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/QuickPerformanceLogger/QuickPerformanceLogger.js":{"metadata":{"mtime":1463609891000},"data":{"name":"QuickPerformanceLogger"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PushNotificationIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[60,125,189],"dependencies":["RCTDeviceEventEmitter","NativeModules","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTPushNotificationManager=require('NativeModules').PushNotificationManager;\nvar invariant=require('fbjs/lib/invariant');\n\nvar _notifHandlers=new Map();\nvar _initialNotification=RCTPushNotificationManager&&\nRCTPushNotificationManager.initialNotification;\n\nvar DEVICE_NOTIF_EVENT='remoteNotificationReceived';\nvar NOTIF_REGISTER_EVENT='remoteNotificationsRegistered';\nvar DEVICE_LOCAL_NOTIF_EVENT='localNotificationReceived';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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPushNotificationIOS=function(){babelHelpers.createClass(PushNotificationIOS,null,[{key:'presentLocalNotification',value:function presentLocalNotification(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndetails){\nRCTPushNotificationManager.presentLocalNotification(details);}},{key:'scheduleLocalNotification',value:function scheduleLocalNotification(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndetails){\nRCTPushNotificationManager.scheduleLocalNotification(details);}},{key:'cancelAllLocalNotifications',value:function cancelAllLocalNotifications()\n\n\n\n\n\n{\nRCTPushNotificationManager.cancelAllLocalNotifications();}},{key:'setApplicationIconBadgeNumber',value:function setApplicationIconBadgeNumber(\n\n\n\n\n\nnumber){\nRCTPushNotificationManager.setApplicationIconBadgeNumber(number);}},{key:'getApplicationIconBadgeNumber',value:function getApplicationIconBadgeNumber(\n\n\n\n\n\ncallback){\nRCTPushNotificationManager.getApplicationIconBadgeNumber(callback);}},{key:'cancelLocalNotifications',value:function cancelLocalNotifications(\n\n\n\n\n\n\n\n\n\nuserInfo){\nRCTPushNotificationManager.cancelLocalNotifications(userInfo);}},{key:'addEventListener',value:function addEventListener(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntype,handler){\ninvariant(\ntype==='notification'||type==='register'||type==='localNotification',\n'PushNotificationIOS only supports `notification`, `register` and `localNotification` events');\n\nvar listener;\nif(type==='notification'){\nlistener=RCTDeviceEventEmitter.addListener(\nDEVICE_NOTIF_EVENT,\nfunction(notifData){\nhandler(new PushNotificationIOS(notifData));});}else \n\n\nif(type==='localNotification'){\nlistener=RCTDeviceEventEmitter.addListener(\nDEVICE_LOCAL_NOTIF_EVENT,\nfunction(notifData){\nhandler(new PushNotificationIOS(notifData));});}else \n\n\nif(type==='register'){\nlistener=RCTDeviceEventEmitter.addListener(\nNOTIF_REGISTER_EVENT,\nfunction(registrationInfo){\nhandler(registrationInfo.deviceToken);});}\n\n\n\n_notifHandlers.set(handler,listener);}},{key:'requestPermissions',value:function requestPermissions(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npermissions)\n\n\n\n{\nvar requestedPermissions={};\nif(permissions){\nrequestedPermissions={\nalert:!!permissions.alert,\nbadge:!!permissions.badge,\nsound:!!permissions.sound};}else \n\n{\nrequestedPermissions={\nalert:true,\nbadge:true,\nsound:true};}\n\n\nRCTPushNotificationManager.requestPermissions(requestedPermissions);}},{key:'abandonPermissions',value:function abandonPermissions()\n\n\n\n\n\n\n\n\n\n\n{\nRCTPushNotificationManager.abandonPermissions();}},{key:'checkPermissions',value:function checkPermissions(\n\n\n\n\n\n\n\n\n\n\ncallback){\ninvariant(\ntypeof callback==='function',\n'Must provide a valid callback');\n\nRCTPushNotificationManager.checkPermissions(callback);}},{key:'removeEventListener',value:function removeEventListener(\n\n\n\n\n\n\ntype,handler){\ninvariant(\ntype==='notification'||type==='register'||type==='localNotification',\n'PushNotificationIOS only supports `notification`, `register` and `localNotification` events');\n\nvar listener=_notifHandlers.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_notifHandlers.delete(handler);}},{key:'popInitialNotification',value:function popInitialNotification()\n\n\n\n\n\n\n\n\n\n\n{\nvar initialNotification=_initialNotification&&\nnew PushNotificationIOS(_initialNotification);\n_initialNotification=null;\nreturn initialNotification;}}]);\n\n\n\n\n\n\n\nfunction PushNotificationIOS(nativeNotif){var _this=this;babelHelpers.classCallCheck(this,PushNotificationIOS);\nthis._data={};\n\n\n\n\n\nObject.keys(nativeNotif).forEach(function(notifKey){\nvar notifVal=nativeNotif[notifKey];\nif(notifKey==='aps'){\n_this._alert=notifVal.alert;\n_this._sound=notifVal.sound;\n_this._badgeCount=notifVal.badge;}else \n{\n_this._data[notifKey]=notifVal;}});}babelHelpers.createClass(PushNotificationIOS,[{key:'getMessage',value:function getMessage()\n\n\n\n\n\n\n\n{\n\nreturn this._alert;}},{key:'getSound',value:function getSound()\n\n\n\n\n\n{\nreturn this._sound;}},{key:'getAlert',value:function getAlert()\n\n\n\n\n\n{\nreturn this._alert;}},{key:'getBadgeCount',value:function getBadgeCount()\n\n\n\n\n\n{\nreturn this._badgeCount;}},{key:'getData',value:function getData()\n\n\n\n\n\n{\nreturn this._data;}}]);return PushNotificationIOS;}();\n\n\n\nmodule.exports=PushNotificationIOS;","map":null,"id":"PushNotificationIOS","source":"/**\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 PushNotificationIOS\n * @flow\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTPushNotificationManager = require('NativeModules').PushNotificationManager;\nvar invariant = require('fbjs/lib/invariant');\n\nvar _notifHandlers = new Map();\nvar _initialNotification = RCTPushNotificationManager &&\n RCTPushNotificationManager.initialNotification;\n\nvar DEVICE_NOTIF_EVENT = 'remoteNotificationReceived';\nvar NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered';\nvar DEVICE_LOCAL_NOTIF_EVENT = 'localNotificationReceived';\n\n/**\n * Handle push notifications for your app, including permission handling and\n * icon badge number.\n *\n * To get up and running, [configure your notifications with Apple](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html#//apple_ref/doc/uid/TP40012582-CH26-SW6)\n * and your server-side system. To get an idea, [this is the Parse guide](https://parse.com/tutorials/ios-push-notifications).\n *\n * [Manually link](docs/linking-libraries-ios.html#manual-linking) the PushNotificationIOS library\n *\n * - Be sure to add the following to your `Header Search Paths`:\n * `$(SRCROOT)/../node_modules/react-native/Libraries/PushNotificationIOS`\n * - Set the search to `recursive`\n *\n * Finally, to enable support for `notification` and `register` events you need to augment your AppDelegate.\n *\n * At the top of your `AppDelegate.m`:\n *\n * `#import \"RCTPushNotificationManager.h\"`\n *\n * And then in your AppDelegate implementation add the following:\n *\n * ```\n * // Required to register for notifications\n * - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings\n * {\n * [RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings];\n * }\n * // Required for the register event.\n * - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken\n * {\n * [RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];\n * }\n * // Required for the notification event.\n * - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification\n * {\n * [RCTPushNotificationManager didReceiveRemoteNotification:notification];\n * }\n * // Required for the localNotification event.\n * - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification\n * {\n * [RCTPushNotificationManager didReceiveLocalNotification:notification];\n * }\n * ```\n */\nclass PushNotificationIOS {\n _data: Object;\n _alert: string | Object;\n _sound: string;\n _badgeCount: number;\n\n /**\n * Schedules the localNotification for immediate presentation.\n *\n * details is an object containing:\n *\n * - `alertBody` : The message displayed in the notification alert.\n * - `alertAction` : The \"action\" displayed beneath an actionable notification. Defaults to \"view\";\n * - `soundName` : The sound played when the notification is fired (optional).\n * - `category` : The category of this notification, required for actionable notifications (optional).\n * - `userInfo` : An optional object containing additional notification data.\n * - `applicationIconBadgeNumber` (optional) : The number to display as the app’s icon badge. The default value of this property is 0, which means that no badge is displayed.\n */\n static presentLocalNotification(details: Object) {\n RCTPushNotificationManager.presentLocalNotification(details);\n }\n\n /**\n * Schedules the localNotification for future presentation.\n *\n * details is an object containing:\n *\n * - `fireDate` : The date and time when the system should deliver the notification.\n * - `alertBody` : The message displayed in the notification alert.\n * - `alertAction` : The \"action\" displayed beneath an actionable notification. Defaults to \"view\";\n * - `soundName` : The sound played when the notification is fired (optional).\n * - `category` : The category of this notification, required for actionable notifications (optional).\n * - `userInfo` : An optional object containing additional notification data.\n * - `applicationIconBadgeNumber` (optional) : The number to display as the app’s icon badge. Setting the number to 0 removes the icon badge.\n */\n static scheduleLocalNotification(details: Object) {\n RCTPushNotificationManager.scheduleLocalNotification(details);\n }\n\n /**\n * Cancels all scheduled localNotifications\n */\n static cancelAllLocalNotifications() {\n RCTPushNotificationManager.cancelAllLocalNotifications();\n }\n\n /**\n * Sets the badge number for the app icon on the home screen\n */\n static setApplicationIconBadgeNumber(number: number) {\n RCTPushNotificationManager.setApplicationIconBadgeNumber(number);\n }\n\n /**\n * Gets the current badge number for the app icon on the home screen\n */\n static getApplicationIconBadgeNumber(callback: Function) {\n RCTPushNotificationManager.getApplicationIconBadgeNumber(callback);\n }\n\n /**\n * Cancel local notifications.\n *\n * Optionally restricts the set of canceled notifications to those\n * notifications whose `userInfo` fields match the corresponding fields\n * in the `userInfo` argument.\n */\n static cancelLocalNotifications(userInfo: Object) {\n RCTPushNotificationManager.cancelLocalNotifications(userInfo);\n }\n\n /**\n * Attaches a listener to remote or local notification events while the app is running\n * in the foreground or the background.\n *\n * Valid events are:\n *\n * - `notification` : Fired when a remote notification is received. The\n * handler will be invoked with an instance of `PushNotificationIOS`.\n * - `localNotification` : Fired when a local notification is received. The\n * handler will be invoked with an instance of `PushNotificationIOS`.\n * - `register`: Fired when the user registers for remote notifications. The\n * handler will be invoked with a hex string representing the deviceToken.\n */\n static addEventListener(type: string, handler: Function) {\n invariant(\n type === 'notification' || type === 'register' || type === 'localNotification',\n 'PushNotificationIOS only supports `notification`, `register` and `localNotification` events'\n );\n var listener;\n if (type === 'notification') {\n listener = RCTDeviceEventEmitter.addListener(\n DEVICE_NOTIF_EVENT,\n (notifData) => {\n handler(new PushNotificationIOS(notifData));\n }\n );\n } else if (type === 'localNotification') {\n listener = RCTDeviceEventEmitter.addListener(\n DEVICE_LOCAL_NOTIF_EVENT,\n (notifData) => {\n handler(new PushNotificationIOS(notifData));\n }\n );\n } else if (type === 'register') {\n listener = RCTDeviceEventEmitter.addListener(\n NOTIF_REGISTER_EVENT,\n (registrationInfo) => {\n handler(registrationInfo.deviceToken);\n }\n );\n }\n _notifHandlers.set(handler, listener);\n }\n\n /**\n * Requests notification permissions from iOS, prompting the user's\n * dialog box. By default, it will request all notification permissions, but\n * a subset of these can be requested by passing a map of requested\n * permissions.\n * The following permissions are supported:\n *\n * - `alert`\n * - `badge`\n * - `sound`\n *\n * If a map is provided to the method, only the permissions with truthy values\n * will be requested.\n */\n static requestPermissions(permissions?: {\n alert?: boolean,\n badge?: boolean,\n sound?: boolean\n }) {\n var requestedPermissions = {};\n if (permissions) {\n requestedPermissions = {\n alert: !!permissions.alert,\n badge: !!permissions.badge,\n sound: !!permissions.sound\n };\n } else {\n requestedPermissions = {\n alert: true,\n badge: true,\n sound: true\n };\n }\n RCTPushNotificationManager.requestPermissions(requestedPermissions);\n }\n\n /**\n * Unregister for all remote notifications received via Apple Push Notification service.\n *\n * You should call this method in rare circumstances only, such as when a new version of\n * the app removes support for all types of remote notifications. Users can temporarily\n * prevent apps from receiving remote notifications through the Notifications section of\n * the Settings app. Apps unregistered through this method can always re-register.\n */\n static abandonPermissions() {\n RCTPushNotificationManager.abandonPermissions();\n }\n\n /**\n * See what push permissions are currently enabled. `callback` will be\n * invoked with a `permissions` object:\n *\n * - `alert` :boolean\n * - `badge` :boolean\n * - `sound` :boolean\n */\n static checkPermissions(callback: Function) {\n invariant(\n typeof callback === 'function',\n 'Must provide a valid callback'\n );\n RCTPushNotificationManager.checkPermissions(callback);\n }\n\n /**\n * Removes the event listener. Do this in `componentWillUnmount` to prevent\n * memory leaks\n */\n static removeEventListener(type: string, handler: Function) {\n invariant(\n type === 'notification' || type === 'register' || type === 'localNotification',\n 'PushNotificationIOS only supports `notification`, `register` and `localNotification` events'\n );\n var listener = _notifHandlers.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _notifHandlers.delete(handler);\n }\n\n\n /**\n * An initial notification will be available if the app was cold-launched\n * from a notification.\n *\n * The first caller of `popInitialNotification` will get the initial\n * notification object, or `null`. Subsequent invocations will return null.\n */\n static popInitialNotification() {\n var initialNotification = _initialNotification &&\n new PushNotificationIOS(_initialNotification);\n _initialNotification = null;\n return initialNotification;\n }\n\n /**\n * You will never need to instantiate `PushNotificationIOS` yourself.\n * Listening to the `notification` event and invoking\n * `popInitialNotification` is sufficient\n */\n constructor(nativeNotif: Object) {\n this._data = {};\n\n // Extract data from Apple's `aps` dict as defined:\n\n // https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html\n\n Object.keys(nativeNotif).forEach((notifKey) => {\n var notifVal = nativeNotif[notifKey];\n if (notifKey === 'aps') {\n this._alert = notifVal.alert;\n this._sound = notifVal.sound;\n this._badgeCount = notifVal.badge;\n } else {\n this._data[notifKey] = notifVal;\n }\n });\n }\n\n /**\n * An alias for `getAlert` to get the notification's main message string\n */\n getMessage(): ?string | ?Object {\n // alias because \"alert\" is an ambiguous name\n return this._alert;\n }\n\n /**\n * Gets the sound string from the `aps` object\n */\n getSound(): ?string {\n return this._sound;\n }\n\n /**\n * Gets the notification's main message from the `aps` object\n */\n getAlert(): ?string | ?Object {\n return this._alert;\n }\n\n /**\n * Gets the badge count number from the `aps` object\n */\n getBadgeCount(): ?number {\n return this._badgeCount;\n }\n\n /**\n * Gets the data object on the notif\n */\n getData(): ?Object {\n return this._data;\n }\n}\n\nmodule.exports = PushNotificationIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/PullToRefresh/PullToRefreshViewAndroid.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PullToRefreshViewAndroid"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/PullToRefresh/PullToRefreshViewAndroid.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PullToRefreshViewAndroid","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["UnimplementedView"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports=require('UnimplementedView');","map":null,"id":"PullToRefreshViewAndroid","source":"/**\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 PullToRefreshViewAndroid\n */\n 'use strict';\n\n module.exports = require('UnimplementedView');\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Network/FormData.js":{"metadata":{"mtime":1463609891000},"data":{"name":"FormData","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[],"dependencies":[],"code":"'use strict';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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nFormData=function(){\n\n\nfunction FormData(){babelHelpers.classCallCheck(this,FormData);\nthis._parts=[];}babelHelpers.createClass(FormData,[{key:'append',value:function append(\n\n\nkey,value){\n\n\n\n\n\nthis._parts.push([key,value]);}},{key:'getParts',value:function getParts()\n\n\n{\nreturn this._parts.map(function(_ref){var _ref2=babelHelpers.slicedToArray(_ref,2);var name=_ref2[0];var value=_ref2[1];\nvar contentDisposition='form-data; name=\"'+name+'\"';\n\n\nvar headers={'content-disposition':contentDisposition};\n\n\n\n\n\nif(typeof value==='object'){\nif(typeof value.name==='string'){\nheaders['content-disposition']+='; filename=\"'+value.name+'\"';}\n\nif(typeof value.type==='string'){\nheaders['content-type']=value.type;}\n\nreturn babelHelpers.extends({},value,{headers:headers,fieldName:name});}\n\n\nreturn {string:String(value),headers:headers,fieldName:name};});}}]);return FormData;}();\n\n\n\n\nmodule.exports=FormData;","map":null,"id":"FormData","source":"/**\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 FormData\n * @flow\n */\n'use strict';\n\ntype FormDataValue = any;\ntype FormDataNameValuePair = [string, FormDataValue];\n\ntype Headers = {[name: string]: string};\ntype FormDataPart = {\n string: string;\n headers: Headers;\n} | {\n uri: string;\n headers: Headers;\n name?: string;\n type?: string;\n};\n\n/**\n * Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests\n * with mixed data (string, native files) to be submitted via XMLHttpRequest.\n *\n * Example:\n *\n * var photo = {\n * uri: uriFromCameraRoll,\n * type: 'image/jpeg',\n * name: 'photo.jpg',\n * };\n *\n * var body = new FormData();\n * body.append('authToken', 'secret');\n * body.append('photo', photo);\n * body.append('title', 'A beautiful photo!');\n *\n * xhr.open('POST', serverURL);\n * xhr.send(body);\n */\nclass FormData {\n _parts: Array;\n\n constructor() {\n this._parts = [];\n }\n\n append(key: string, value: FormDataValue) {\n // The XMLHttpRequest spec doesn't specify if duplicate keys are allowed.\n // MDN says that any new values should be appended to existing values.\n // In any case, major browsers allow duplicate keys, so that's what we'll do\n // too. They'll simply get appended as additional form data parts in the\n // request body, leaving the server to deal with them.\n this._parts.push([key, value]);\n }\n\n getParts(): Array {\n return this._parts.map(([name, value]) => {\n var contentDisposition = 'form-data; name=\"' + name + '\"';\n\n /* $FlowIssue(>=0.20.1) #9463928 */\n var headers: Headers = {'content-disposition': contentDisposition};\n\n // The body part is a \"blob\", which in React Native just means\n // an object with a `uri` attribute. Optionally, it can also\n // have a `name` and `type` attribute to specify filename and\n // content type (cf. web Blob interface.)\n if (typeof value === 'object') {\n if (typeof value.name === 'string') {\n headers['content-disposition'] += '; filename=\"' + value.name + '\"';\n }\n if (typeof value.type === 'string') {\n headers['content-type'] = value.type;\n }\n return {...value, headers, fieldName: name};\n }\n // Convert non-object values to strings as per FormData.append() spec\n return {string: String(value), headers, fieldName: name};\n });\n }\n}\n\nmodule.exports = FormData;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Network/NetInfo.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NetInfo","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[42,76,115,162,257],"dependencies":["Map","NativeModules","Platform","RCTDeviceEventEmitter","deprecatedCallback"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar NativeModules=require('NativeModules');\nvar Platform=require('Platform');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTNetInfo=NativeModules.NetInfo;\nvar deprecatedCallback=require('deprecatedCallback');\n\nvar DEVICE_CONNECTIVITY_EVENT='networkStatusDidChange';\n\n\n\n\n\n\n\n\n\n\n\n\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 _subscriptions=new Map();\n\nvar _isConnected=void 0;\nif(Platform.OS==='ios'){\n_isConnected=function _isConnected(\nreachability)\n{\nreturn reachability!=='none'&&reachability!=='unknown';};}else \n\nif(Platform.OS==='android'){\n_isConnected=function _isConnected(\nconnectionType)\n{\nreturn connectionType!=='NONE'&&connectionType!=='UNKNOWN';};}\n\n\n\nvar _isConnectedSubscriptions=new Map();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 NetInfo={\naddEventListener:function addEventListener(\neventName,\nhandler)\n{\nvar listener=RCTDeviceEventEmitter.addListener(\nDEVICE_CONNECTIVITY_EVENT,\nfunction(appStateData){\nhandler(appStateData.network_info);});\n\n\n_subscriptions.set(handler,listener);\nreturn {\nremove:function remove(){return NetInfo.removeEventListener(eventName,handler);}};},\n\n\n\nremoveEventListener:function removeEventListener(\neventName,\nhandler)\n{\nvar listener=_subscriptions.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_subscriptions.delete(handler);},\n\n\nfetch:function fetch(){\nreturn RCTNetInfo.getCurrentConnectivity().then(function(resp){return resp.network_info;});},\n\n\nisConnected:{\naddEventListener:function addEventListener(\neventName,\nhandler)\n{\nvar listener=function listener(connection){\nhandler(_isConnected(connection));};\n\n_isConnectedSubscriptions.set(handler,listener);\nNetInfo.addEventListener(\neventName,\nlistener);\n\nreturn {\nremove:function remove(){return NetInfo.isConnected.removeEventListener(eventName,handler);}};},\n\n\n\nremoveEventListener:function removeEventListener(\neventName,\nhandler)\n{\n\nvar listener=_isConnectedSubscriptions.get(handler);\nNetInfo.removeEventListener(\neventName,\nlistener);\n\n_isConnectedSubscriptions.delete(handler);},\n\n\nfetch:function fetch(){\nreturn NetInfo.fetch().then(\nfunction(connection){return _isConnected(connection);});}},\n\n\n\n\nisConnectionExpensive:function isConnectionExpensive(){\nreturn deprecatedCallback(\nPlatform.OS==='android'?RCTNetInfo.isConnectionMetered():Promise.reject(new Error('Currently not supported on iOS')),\nArray.prototype.slice.call(arguments),\n'single-callback-value-first',\n'NetInfo.isConnectionMetered(callback) is deprecated. Use the returned Promise instead.');}};\n\n\n\n\nmodule.exports=NetInfo;","map":null,"id":"NetInfo","source":"/**\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 NetInfo\n * @flow\n */\n'use strict';\n\nconst Map = require('Map');\nconst NativeModules = require('NativeModules');\nconst Platform = require('Platform');\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nconst RCTNetInfo = NativeModules.NetInfo;\nconst deprecatedCallback = require('deprecatedCallback');\n\nconst DEVICE_CONNECTIVITY_EVENT = 'networkStatusDidChange';\n\ntype ChangeEventName = $Enum<{\n change: string;\n}>;\n\ntype ReachabilityStateIOS = $Enum<{\n cell: string;\n none: string;\n unknown: string;\n wifi: string;\n}>;\n\ntype ConnectivityStateAndroid = $Enum<{\n NONE: string;\n MOBILE: string;\n WIFI: string;\n MOBILE_MMS: string;\n MOBILE_SUPL: string;\n MOBILE_DUN: string;\n MOBILE_HIPRI: string;\n WIMAX: string;\n BLUETOOTH: string;\n DUMMY: string;\n ETHERNET: string;\n MOBILE_FOTA: string;\n MOBILE_IMS: string;\n MOBILE_CBS: string;\n WIFI_P2P: string;\n MOBILE_IA: string;\n MOBILE_EMERGENCY: string;\n PROXY: string;\n VPN: string;\n UNKNOWN: string;\n}>;\n\n\nconst _subscriptions = new Map();\n\nlet _isConnected;\nif (Platform.OS === 'ios') {\n _isConnected = function(\n reachability: ReachabilityStateIOS,\n ): bool {\n return reachability !== 'none' && reachability !== 'unknown';\n };\n} else if (Platform.OS === 'android') {\n _isConnected = function(\n connectionType: ConnectivityStateAndroid,\n ): bool {\n return connectionType !== 'NONE' && connectionType !== 'UNKNOWN';\n };\n}\n\nconst _isConnectedSubscriptions = new Map();\n\n/**\n * NetInfo exposes info about online/offline status\n *\n * ```\n * NetInfo.fetch().done((reach) => {\n * console.log('Initial: ' + reach);\n * });\n * function handleFirstConnectivityChange(reach) {\n * console.log('First change: ' + reach);\n * NetInfo.removeEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * }\n * NetInfo.addEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * ```\n *\n * ### IOS\n *\n * Asynchronously determine if the device is online and on a cellular network.\n *\n * - `none` - device is offline\n * - `wifi` - device is online and connected via wifi, or is the iOS simulator\n * - `cell` - device is connected via Edge, 3G, WiMax, or LTE\n * - `unknown` - error case and the network status is unknown\n *\n * ### Android\n *\n * To request network info, you need to add the following line to your\n * app's `AndroidManifest.xml`:\n *\n * ``\n * Asynchronously determine if the device is connected and details about that connection.\n *\n * Android Connectivity Types.\n *\n * - `NONE` - device is offline\n * - `BLUETOOTH` - The Bluetooth data connection.\n * - `DUMMY` - Dummy data connection.\n * - `ETHERNET` - The Ethernet data connection.\n * - `MOBILE` - The Mobile data connection.\n * - `MOBILE_DUN` - A DUN-specific Mobile data connection.\n * - `MOBILE_HIPRI` - A High Priority Mobile data connection.\n * - `MOBILE_MMS` - An MMS-specific Mobile data connection.\n * - `MOBILE_SUPL` - A SUPL-specific Mobile data connection.\n * - `VPN` - A virtual network using one or more native bearers. Requires API Level 21\n * - `WIFI` - The WIFI data connection.\n * - `WIMAX` - The WiMAX data connection.\n * - `UNKNOWN` - Unknown data connection.\n *\n * The rest ConnectivityStates are hidden by the Android API, but can be used if necessary.\n *\n * ### isConnectionExpensive\n *\n * Available on Android. Detect if the current active connection is metered or not. A network is\n * classified as metered when the user is sensitive to heavy data usage on that connection due to\n * monetary costs, data limitations or battery/performance issues.\n *\n * ```\n * NetInfo.isConnectionExpensive()\n * .then(isConnectionExpensive => {\n * console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive'));\n * })\n * .catch(error => {\n * console.error(error);\n * });\n * ```\n *\n * ### isConnected\n *\n * Available on all platforms. Asynchronously fetch a boolean to determine\n * internet connectivity.\n *\n * ```\n * NetInfo.isConnected.fetch().then(isConnected => {\n * console.log('First, is ' + (isConnected ? 'online' : 'offline'));\n * });\n * function handleFirstConnectivityChange(isConnected) {\n * console.log('Then, is ' + (isConnected ? 'online' : 'offline'));\n * NetInfo.isConnected.removeEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * }\n * NetInfo.isConnected.addEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * ```\n */\nconst NetInfo = {\n addEventListener(\n eventName: ChangeEventName,\n handler: Function\n ): {remove: () => void} {\n const listener = RCTDeviceEventEmitter.addListener(\n DEVICE_CONNECTIVITY_EVENT,\n (appStateData) => {\n handler(appStateData.network_info);\n }\n );\n _subscriptions.set(handler, listener);\n return {\n remove: () => NetInfo.removeEventListener(eventName, handler)\n };\n },\n\n removeEventListener(\n eventName: ChangeEventName,\n handler: Function\n ): void {\n const listener = _subscriptions.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _subscriptions.delete(handler);\n },\n\n fetch(): Promise {\n return RCTNetInfo.getCurrentConnectivity().then(resp => resp.network_info);\n },\n\n isConnected: {\n addEventListener(\n eventName: ChangeEventName,\n handler: Function\n ): {remove: () => void} {\n const listener = (connection) => {\n handler(_isConnected(connection));\n };\n _isConnectedSubscriptions.set(handler, listener);\n NetInfo.addEventListener(\n eventName,\n listener\n );\n return {\n remove: () => NetInfo.isConnected.removeEventListener(eventName, handler)\n };\n },\n\n removeEventListener(\n eventName: ChangeEventName,\n handler: Function\n ): void {\n /* $FlowFixMe */\n const listener = _isConnectedSubscriptions.get(handler);\n NetInfo.removeEventListener(\n eventName,\n listener\n );\n _isConnectedSubscriptions.delete(handler);\n },\n\n fetch(): Promise {\n return NetInfo.fetch().then(\n (connection) => _isConnected(connection)\n );\n },\n },\n\n isConnectionExpensive(): Promise {\n return deprecatedCallback(\n Platform.OS === 'android' ? RCTNetInfo.isConnectionMetered() : Promise.reject(new Error('Currently not supported on iOS')),\n Array.prototype.slice.call(arguments),\n 'single-callback-value-first',\n 'NetInfo.isConnectionMetered(callback) is deprecated. Use the returned Promise instead.'\n );\n },\n};\n\nmodule.exports = NetInfo;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Network/RCTNetworking.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RCTNetworking"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Network/RCTNetworking.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RCTNetworking","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[57],"dependencies":["NativeModules"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar RCTNetworkingNative=require('NativeModules').Networking;var \n\n\n\n\nRCTNetworking=function(){function RCTNetworking(){babelHelpers.classCallCheck(this,RCTNetworking);}babelHelpers.createClass(RCTNetworking,null,[{key:'sendRequest',value:function sendRequest(\n\nquery,callback){\nRCTNetworkingNative.sendRequest(query,callback);}},{key:'abortRequest',value:function abortRequest(\n\n\nrequestId){\nRCTNetworkingNative.cancelRequest(requestId);}}]);return RCTNetworking;}();\n\n\n\n\nmodule.exports=RCTNetworking;","map":null,"id":"RCTNetworking","source":"/**\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 RCTNetworking\n */\n'use strict';\n\nvar RCTNetworkingNative = require('NativeModules').Networking;\n\n/**\n * This class is a wrapper around the native RCTNetworking module.\n */\nclass RCTNetworking {\n\n static sendRequest(query, callback) {\n RCTNetworkingNative.sendRequest(query, callback);\n }\n\n static abortRequest(requestId) {\n RCTNetworkingNative.cancelRequest(requestId);\n }\n\n}\n\nmodule.exports = RCTNetworking;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Network/XMLHttpRequest.android.js":{"metadata":{"mtime":1463609891000},"data":{"name":"XMLHttpRequest"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Network/XMLHttpRequest.ios.js":{"metadata":{"mtime":1463609891000},"data":{"name":"XMLHttpRequest","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[47,86,136],"dependencies":["FormData","RCTNetworking","XMLHttpRequestBase"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar FormData=require('FormData');\nvar RCTNetworking=require('RCTNetworking');\n\nvar XMLHttpRequestBase=require('XMLHttpRequestBase');var \n\nXMLHttpRequest=function(_XMLHttpRequestBase){babelHelpers.inherits(XMLHttpRequest,_XMLHttpRequestBase);function XMLHttpRequest(){babelHelpers.classCallCheck(this,XMLHttpRequest);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(XMLHttpRequest).apply(this,arguments));}babelHelpers.createClass(XMLHttpRequest,[{key:'sendImpl',value:function sendImpl(\n\nmethod,\nurl,\nheaders,\ndata,\nincrementalUpdates,\ntimeout)\n{\nif(typeof data==='string'){\ndata={string:data};}else \nif(data instanceof FormData){\ndata={formData:data.getParts()};}\n\nRCTNetworking.sendRequest(\n{\nmethod:method,\nurl:url,\ndata:data,\nheaders:headers,\nincrementalUpdates:incrementalUpdates,\ntimeout:timeout},\n\nthis.didCreateRequest.bind(this));}}]);return XMLHttpRequest;}(XMLHttpRequestBase);\n\n\n\n\nmodule.exports=XMLHttpRequest;","map":null,"id":"XMLHttpRequest","source":"/**\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 XMLHttpRequest\n * @flow\n */\n'use strict';\n\nvar FormData = require('FormData');\nvar RCTNetworking = require('RCTNetworking');\n\nvar XMLHttpRequestBase = require('XMLHttpRequestBase');\n\nclass XMLHttpRequest extends XMLHttpRequestBase {\n sendImpl(\n method: ?string,\n url: ?string,\n headers: Object,\n data: any,\n incrementalUpdates: boolean,\n timeout: number,\n ): void {\n if (typeof data === 'string') {\n data = {string: data};\n } else if (data instanceof FormData) {\n data = {formData: data.getParts()};\n }\n RCTNetworking.sendRequest(\n {\n method,\n url,\n data,\n headers,\n incrementalUpdates,\n timeout\n },\n this.didCreateRequest.bind(this)\n );\n }\n}\n\nmodule.exports = XMLHttpRequest;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Network/XMLHttpRequestBase.js":{"metadata":{"mtime":1463609891000},"data":{"name":"XMLHttpRequestBase","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,104,155,199,239,268],"dependencies":["RCTNetworking","RCTDeviceEventEmitter","event-target-shim","fbjs/lib/invariant","utf8","fbjs/lib/warning"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTNetworking=require('RCTNetworking');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\n\nvar EventTarget=require('event-target-shim');\nvar invariant=require('fbjs/lib/invariant');\nvar utf8=require('utf8');\nvar warning=require('fbjs/lib/warning');\n\n\n\n\nvar UNSENT=0;\nvar OPENED=1;\nvar HEADERS_RECEIVED=2;\nvar LOADING=3;\nvar DONE=4;\n\nvar SUPPORTED_RESPONSE_TYPES={\narraybuffer:typeof global.ArrayBuffer==='function',\nblob:typeof global.Blob==='function',\ndocument:false,\njson:true,\ntext:true,\n'':true};\n\n\nvar REQUEST_EVENTS=[\n'abort',\n'error',\n'load',\n'loadstart',\n'progress',\n'timeout',\n'loadend'];\n\n\nvar XHR_EVENTS=REQUEST_EVENTS.concat('readystatechange');var \n\nXMLHttpRequestEventTarget=function(_EventTarget){babelHelpers.inherits(XMLHttpRequestEventTarget,_EventTarget);function XMLHttpRequestEventTarget(){babelHelpers.classCallCheck(this,XMLHttpRequestEventTarget);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(XMLHttpRequestEventTarget).apply(this,arguments));}return XMLHttpRequestEventTarget;}(EventTarget.apply(undefined,REQUEST_EVENTS));var \n\n\n\n\n\n\n\n\n\n\n\nXMLHttpRequestBase=function(_EventTarget2){babelHelpers.inherits(XMLHttpRequestBase,_EventTarget2);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 XMLHttpRequestBase(){babelHelpers.classCallCheck(this,XMLHttpRequestBase);var _this2=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(XMLHttpRequestBase).call(this));_this2.UNSENT=UNSENT;_this2.OPENED=OPENED;_this2.HEADERS_RECEIVED=HEADERS_RECEIVED;_this2.LOADING=LOADING;_this2.DONE=DONE;_this2.readyState=UNSENT;_this2.responseText='';_this2.status=0;_this2.timeout=0;_this2.upload=new XMLHttpRequestEventTarget();_this2._aborted=false;_this2._hasError=false;_this2._method=null;_this2._url=null;_this2._timedOut=false;_this2._incrementalEvents=false;\n\n_this2._reset();return _this2;}babelHelpers.createClass(XMLHttpRequestBase,[{key:'_reset',value:function _reset()\n\n\n{\nthis.readyState=this.UNSENT;\nthis.responseHeaders=undefined;\nthis.responseText='';\nthis.status=0;\ndelete this.responseURL;\n\nthis._requestId=null;\n\nthis._cachedResponse=undefined;\nthis._hasError=false;\nthis._headers={};\nthis._responseType='';\nthis._sent=false;\nthis._lowerCaseResponseHeaders={};\n\nthis._clearSubscriptions();\nthis._timedOut=false;}},{key:'didCreateRequest',value:function didCreateRequest(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrequestId){var _this3=this;\nthis._requestId=requestId;\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didSendNetworkData',\nfunction(args){return _this3._didUploadProgress.apply(_this3,babelHelpers.toConsumableArray(args));}));\n\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didReceiveNetworkResponse',\nfunction(args){return _this3._didReceiveResponse.apply(_this3,babelHelpers.toConsumableArray(args));}));\n\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didReceiveNetworkData',\nfunction(args){return _this3._didReceiveData.apply(_this3,babelHelpers.toConsumableArray(args));}));\n\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didCompleteNetworkResponse',\nfunction(args){return _this3._didCompleteResponse.apply(_this3,babelHelpers.toConsumableArray(args));}));}},{key:'_didUploadProgress',value:function _didUploadProgress(\n\n\n\nrequestId,progress,total){\nif(requestId===this._requestId){\nthis.upload.dispatchEvent({\ntype:'progress',\nlengthComputable:true,\nloaded:progress,\ntotal:total});}}},{key:'_didReceiveResponse',value:function _didReceiveResponse(\n\n\n\n\nrequestId,status,responseHeaders,responseURL){\nif(requestId===this._requestId){\nthis.status=status;\nthis.setResponseHeaders(responseHeaders);\nthis.setReadyState(this.HEADERS_RECEIVED);\nif(responseURL||responseURL===''){\nthis.responseURL=responseURL;}else \n{\ndelete this.responseURL;}}}},{key:'_didReceiveData',value:function _didReceiveData(\n\n\n\n\nrequestId,responseText){\nif(requestId===this._requestId){\nif(!this.responseText){\nthis.responseText=responseText;}else \n{\nthis.responseText+=responseText;}\n\nthis._cachedResponse=undefined;\nthis.setReadyState(this.LOADING);}}},{key:'_didCompleteResponse',value:function _didCompleteResponse(\n\n\n\nrequestId,error,timeOutError){\nif(requestId===this._requestId){\nif(error){\nthis.responseText=error;\nthis._hasError=true;\nif(timeOutError){\nthis._timedOut=true;}}\n\n\nthis._clearSubscriptions();\nthis._requestId=null;\nthis.setReadyState(this.DONE);}}},{key:'_clearSubscriptions',value:function _clearSubscriptions()\n\n\n\n{\n(this._subscriptions||[]).forEach(function(sub){\nsub.remove();});\n\nthis._subscriptions=[];}},{key:'getAllResponseHeaders',value:function getAllResponseHeaders()\n\n\n{\nif(!this.responseHeaders){\n\nreturn null;}\n\nvar headers=this.responseHeaders||{};\nreturn Object.keys(headers).map(function(headerName){\nreturn headerName+': '+headers[headerName];}).\njoin('\\n');}},{key:'getResponseHeader',value:function getResponseHeader(\n\n\nheader){\nvar value=this._lowerCaseResponseHeaders[header.toLowerCase()];\nreturn value!==undefined?value:null;}},{key:'setRequestHeader',value:function setRequestHeader(\n\n\nheader,value){\nif(this.readyState!==this.OPENED){\nthrow new Error('Request has not been opened');}\n\nthis._headers[header.toLowerCase()]=value;}},{key:'open',value:function open(\n\n\nmethod,url,async){\n\nif(this.readyState!==this.UNSENT){\nthrow new Error('Cannot open, already sending');}\n\nif(async!==undefined&&!async){\n\nthrow new Error('Synchronous http requests are not supported');}\n\nif(!url){\nthrow new Error('Cannot load an empty url');}\n\nthis._reset();\nthis._method=method.toUpperCase();\nthis._url=url;\nthis._aborted=false;\nthis.setReadyState(this.OPENED);}},{key:'sendImpl',value:function sendImpl(\n\n\n\nmethod,\nurl,\nheaders,\ndata,\nincrementalEvents,\ntimeout)\n{\nthrow new Error('Subclass must define sendImpl method');}},{key:'send',value:function send(\n\n\ndata){\nif(this.readyState!==this.OPENED){\nthrow new Error('Request has not been opened');}\n\nif(this._sent){\nthrow new Error('Request has already been sent');}\n\nthis._sent=true;\nvar incrementalEvents=this._incrementalEvents||!!this.onreadystatechange;\nthis.sendImpl(\nthis._method,\nthis._url,\nthis._headers,\ndata,\nincrementalEvents,\nthis.timeout);}},{key:'abort',value:function abort()\n\n\n\n{\nthis._aborted=true;\nif(this._requestId){\nRCTNetworking.abortRequest(this._requestId);}\n\n\n\nif(!(this.readyState===this.UNSENT||\nthis.readyState===this.OPENED&&!this._sent||\nthis.readyState===this.DONE)){\nthis._reset();\nthis.setReadyState(this.DONE);}\n\n\nthis._reset();}},{key:'setResponseHeaders',value:function setResponseHeaders(\n\n\nresponseHeaders){\nthis.responseHeaders=responseHeaders||null;\nvar headers=responseHeaders||{};\nthis._lowerCaseResponseHeaders=\nObject.keys(headers).reduce(function(lcaseHeaders,headerName){\nlcaseHeaders[headerName.toLowerCase()]=headers[headerName];\nreturn lcaseHeaders;},\n{});}},{key:'setReadyState',value:function setReadyState(\n\n\nnewState){\nthis.readyState=newState;\nthis.dispatchEvent({type:'readystatechange'});\nif(newState===this.DONE&&!this._aborted){\nif(this._hasError){\nif(this._timedOut){\nthis.dispatchEvent({type:'timeout'});}else \n{\nthis.dispatchEvent({type:'error'});}}else \n\n{\nthis.dispatchEvent({type:'load'});}}}},{key:'addEventListener',value:function addEventListener(\n\n\n\n\n\ntype,listener){\n\n\n\n\nif(type==='readystatechange'){\nthis._incrementalEvents=true;}\n\nbabelHelpers.get(Object.getPrototypeOf(XMLHttpRequestBase.prototype),'addEventListener',this).call(this,type,listener);}},{key:'responseType',get:function get(){return this._responseType;},set:function set(responseType){if(this.readyState>HEADERS_RECEIVED){throw new Error(\"Failed to set the 'responseType' property on 'XMLHttpRequest': The \"+\"response type cannot be set if the object's state is LOADING or DONE\");}if(!SUPPORTED_RESPONSE_TYPES.hasOwnProperty(responseType)){warning('The provided value \\''+responseType+'\\' is not a valid \\'responseType\\'.');return;}invariant(SUPPORTED_RESPONSE_TYPES[responseType]||responseType==='document','The provided value \\''+responseType+'\\' is unsupported in this environment.');this._responseType=responseType;}},{key:'response',get:function get(){var responseType=this.responseType;if(responseType===''||responseType==='text'){return this.readyState HEADERS_RECEIVED) {\n throw new Error(\n \"Failed to set the 'responseType' property on 'XMLHttpRequest': The \" +\n \"response type cannot be set if the object's state is LOADING or DONE\"\n );\n }\n if (!SUPPORTED_RESPONSE_TYPES.hasOwnProperty(responseType)) {\n warning(\n `The provided value '${responseType}' is not a valid 'responseType'.`);\n return;\n }\n\n // redboxes early, e.g. for 'arraybuffer' on ios 7\n invariant(\n SUPPORTED_RESPONSE_TYPES[responseType] || responseType === 'document',\n `The provided value '${responseType}' is unsupported in this environment.`\n );\n this._responseType = responseType;\n }\n\n // $FlowIssue #10784535\n get response(): Response {\n const {responseType} = this;\n if (responseType === '' || responseType === 'text') {\n return this.readyState < LOADING || this._hasError\n ? ''\n : this.responseText;\n }\n\n if (this.readyState !== DONE) {\n return null;\n }\n\n if (this._cachedResponse !== undefined) {\n return this._cachedResponse;\n }\n\n switch (this.responseType) {\n case 'document':\n this._cachedResponse = null;\n break;\n\n case 'arraybuffer':\n this._cachedResponse = toArrayBuffer(\n this.responseText, this.getResponseHeader('content-type') || '');\n break;\n\n case 'blob':\n this._cachedResponse = new global.Blob(\n [this.responseText],\n {type: this.getResponseHeader('content-type') || ''}\n );\n break;\n\n case 'json':\n try {\n this._cachedResponse = JSON.parse(this.responseText);\n } catch (_) {\n this._cachedResponse = null;\n }\n break;\n\n default:\n this._cachedResponse = null;\n }\n\n return this._cachedResponse;\n }\n\n didCreateRequest(requestId: number): void {\n this._requestId = requestId;\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didSendNetworkData',\n (args) => this._didUploadProgress(...args)\n ));\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didReceiveNetworkResponse',\n (args) => this._didReceiveResponse(...args)\n ));\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didReceiveNetworkData',\n (args) => this._didReceiveData(...args)\n ));\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didCompleteNetworkResponse',\n (args) => this._didCompleteResponse(...args)\n ));\n }\n\n _didUploadProgress(requestId: number, progress: number, total: number): void {\n if (requestId === this._requestId) {\n this.upload.dispatchEvent({\n type: 'progress',\n lengthComputable: true,\n loaded: progress,\n total,\n });\n }\n }\n\n _didReceiveResponse(requestId: number, status: number, responseHeaders: ?Object, responseURL: ?string): void {\n if (requestId === this._requestId) {\n this.status = status;\n this.setResponseHeaders(responseHeaders);\n this.setReadyState(this.HEADERS_RECEIVED);\n if (responseURL || responseURL === '') {\n this.responseURL = responseURL;\n } else {\n delete this.responseURL;\n }\n }\n }\n\n _didReceiveData(requestId: number, responseText: string): void {\n if (requestId === this._requestId) {\n if (!this.responseText) {\n this.responseText = responseText;\n } else {\n this.responseText += responseText;\n }\n this._cachedResponse = undefined; // force lazy recomputation\n this.setReadyState(this.LOADING);\n }\n }\n\n _didCompleteResponse(requestId: number, error: string, timeOutError: boolean): void {\n if (requestId === this._requestId) {\n if (error) {\n this.responseText = error;\n this._hasError = true;\n if (timeOutError) {\n this._timedOut = true;\n }\n }\n this._clearSubscriptions();\n this._requestId = null;\n this.setReadyState(this.DONE);\n }\n }\n\n _clearSubscriptions(): void {\n (this._subscriptions || []).forEach(sub => {\n sub.remove();\n });\n this._subscriptions = [];\n }\n\n getAllResponseHeaders(): ?string {\n if (!this.responseHeaders) {\n // according to the spec, return null if no response has been received\n return null;\n }\n var headers = this.responseHeaders || {};\n return Object.keys(headers).map((headerName) => {\n return headerName + ': ' + headers[headerName];\n }).join('\\n');\n }\n\n getResponseHeader(header: string): ?string {\n var value = this._lowerCaseResponseHeaders[header.toLowerCase()];\n return value !== undefined ? value : null;\n }\n\n setRequestHeader(header: string, value: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n this._headers[header.toLowerCase()] = value;\n }\n\n open(method: string, url: string, async: ?boolean): void {\n /* Other optional arguments are not supported yet */\n if (this.readyState !== this.UNSENT) {\n throw new Error('Cannot open, already sending');\n }\n if (async !== undefined && !async) {\n // async is default\n throw new Error('Synchronous http requests are not supported');\n }\n if (!url) {\n throw new Error('Cannot load an empty url');\n }\n this._reset();\n this._method = method.toUpperCase();\n this._url = url;\n this._aborted = false;\n this.setReadyState(this.OPENED);\n }\n\n sendImpl(\n method: ?string,\n url: ?string,\n headers: Object,\n data: any,\n incrementalEvents: boolean,\n timeout: number\n ): void {\n throw new Error('Subclass must define sendImpl method');\n }\n\n send(data: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n if (this._sent) {\n throw new Error('Request has already been sent');\n }\n this._sent = true;\n const incrementalEvents = this._incrementalEvents || !!this.onreadystatechange;\n this.sendImpl(\n this._method,\n this._url,\n this._headers,\n data,\n incrementalEvents,\n this.timeout\n );\n }\n\n abort(): void {\n this._aborted = true;\n if (this._requestId) {\n RCTNetworking.abortRequest(this._requestId);\n }\n // only call onreadystatechange if there is something to abort,\n // below logic is per spec\n if (!(this.readyState === this.UNSENT ||\n (this.readyState === this.OPENED && !this._sent) ||\n this.readyState === this.DONE)) {\n this._reset();\n this.setReadyState(this.DONE);\n }\n // Reset again after, in case modified in handler\n this._reset();\n }\n\n setResponseHeaders(responseHeaders: ?Object): void {\n this.responseHeaders = responseHeaders || null;\n var headers = responseHeaders || {};\n this._lowerCaseResponseHeaders =\n Object.keys(headers).reduce((lcaseHeaders, headerName) => {\n lcaseHeaders[headerName.toLowerCase()] = headers[headerName];\n return lcaseHeaders;\n }, {});\n }\n\n setReadyState(newState: number): void {\n this.readyState = newState;\n this.dispatchEvent({type: 'readystatechange'});\n if (newState === this.DONE && !this._aborted) {\n if (this._hasError) {\n if (this._timedOut) {\n this.dispatchEvent({type: 'timeout'});\n } else {\n this.dispatchEvent({type: 'error'});\n }\n } else {\n this.dispatchEvent({type: 'load'});\n }\n }\n }\n\n /* global EventListener */\n addEventListener(type: string, listener: EventListener): void {\n // If we dont' have a 'readystatechange' event handler, we don't\n // have to send repeated LOADING events with incremental updates\n // to responseText, which will avoid a bunch of native -> JS\n // bridge traffic.\n if (type === 'readystatechange') {\n this._incrementalEvents = true;\n }\n super.addEventListener(type, listener);\n }\n}\n\n\nfunction toArrayBuffer(text: string, contentType: string): ArrayBuffer {\n const {length} = text;\n if (length === 0) {\n return new ArrayBuffer(0);\n }\n\n const charsetMatch = contentType.match(/;\\s*charset=([^;]*)/i);\n const charset = charsetMatch ? charsetMatch[1].trim() : 'utf-8';\n\n if (/^utf-?8$/i.test(charset)) {\n return utf8.encode(text);\n } else { //TODO: utf16 / ucs2 / utf32\n const array = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n array[i] = text.charCodeAt(i); // Uint8Array automatically masks with 0xff\n }\n return array.buffer;\n }\n}\n\nmodule.exports = XMLHttpRequestBase;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationAbstractPanResponder.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationAbstractPanResponder","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[51,91],"dependencies":["PanResponder","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PanResponder=require('PanResponder');\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\nvar EmptyPanHandlers={\nonMoveShouldSetPanResponder:null,\nonPanResponderGrant:null,\nonPanResponderMove:null,\nonPanResponderRelease:null,\nonPanResponderTerminate:null};var \n\n\n\n\n\n\nNavigationAbstractPanResponder=\n\n\n\nfunction NavigationAbstractPanResponder(){var _this=this;babelHelpers.classCallCheck(this,NavigationAbstractPanResponder);\nvar config={};\nObject.keys(EmptyPanHandlers).forEach(function(name){\nvar fn=_this[name];\n\ninvariant(\ntypeof fn==='function',\n'subclass of `NavigationAbstractPanResponder` must implement method %s',\nname);\n\n\nconfig[name]=fn.bind(_this);},\nthis);\n\nthis.panHandlers=PanResponder.create(config).panHandlers;};\n\n\n\nmodule.exports=NavigationAbstractPanResponder;","map":null,"id":"NavigationAbstractPanResponder","source":"/**\n * Copyright (c) 2013-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 NavigationAbstractPanResponder\n * @flow\n */\n'use strict';\n\nconst PanResponder = require('PanResponder');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {\n NavigationPanPanHandlers,\n} from 'NavigationTypeDefinition';\n\nconst EmptyPanHandlers = {\n onMoveShouldSetPanResponder: null,\n onPanResponderGrant: null,\n onPanResponderMove: null,\n onPanResponderRelease: null,\n onPanResponderTerminate: null,\n};\n\n/**\n * Abstract class that defines the common interface of PanResponder that handles\n * the gesture actions.\n */\nclass NavigationAbstractPanResponder {\n\n panHandlers: NavigationPanPanHandlers;\n\n constructor() {\n const config = {};\n Object.keys(EmptyPanHandlers).forEach(name => {\n const fn: any = (this: any)[name];\n\n invariant(\n typeof fn === 'function',\n 'subclass of `NavigationAbstractPanResponder` must implement method %s',\n name\n );\n\n config[name] = fn.bind(this);\n }, this);\n\n this.panHandlers = PanResponder.create(config).panHandlers;\n }\n}\n\nmodule.exports = NavigationAbstractPanResponder;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationAnimatedView.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationAnimatedView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[193,238,294,354,400,433,465],"dependencies":["Animated","NavigationContainer","NavigationPropTypes","NavigationScenesReducer","React","StyleSheet","View"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationAnimatedView.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Animated=require('Animated');\nvar NavigationContainer=require('NavigationContainer');\nvar NavigationPropTypes=require('NavigationPropTypes');\nvar NavigationScenesReducer=require('NavigationScenesReducer');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');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\nPropTypes=React.PropTypes;\n\nfunction applyDefaultAnimation(\nposition,\nnavigationState)\n{\nAnimated.spring(\nposition,\n{\nbounciness:0,\ntoValue:navigationState.index}).\n\nstart();}var \n\n\nNavigationAnimatedView=function(_React$Component){babelHelpers.inherits(NavigationAnimatedView,_React$Component);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction NavigationAnimatedView(props,context){babelHelpers.classCallCheck(this,NavigationAnimatedView);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationAnimatedView).call(this,\nprops,context));\n\n\n\nvar layout={\nheight:new Animated.Value(0),\ninitHeight:0,\ninitWidth:0,\nisMeasured:false,\nwidth:new Animated.Value(0)};\n\n\n_this.state={\nlayout:layout,\nposition:new Animated.Value(_this.props.navigationState.index),\nscenes:NavigationScenesReducer([],_this.props.navigationState)};return _this;}babelHelpers.createClass(NavigationAnimatedView,[{key:'componentWillMount',value:function componentWillMount()\n\n\n\n{\nthis._onLayout=this._onLayout.bind(this);\nthis._onProgressChange=this._onProgressChange.bind(this);}},{key:'componentDidMount',value:function componentDidMount()\n\n\n{\nthis._positionListener=\nthis.state.position.addListener(this._onProgressChange);}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps(\n\n\nnextProps){\nif(nextProps.navigationState!==this.props.navigationState){\nthis.setState({\nscenes:NavigationScenesReducer(\nthis.state.scenes,\nnextProps.navigationState,\nthis.props.navigationState)});}}},{key:'componentDidUpdate',value:function componentDidUpdate(\n\n\n\n\n\nlastProps){\nif(lastProps.navigationState.index!==this.props.navigationState.index){\nthis.props.applyAnimation(\nthis.state.position,\nthis.props.navigationState,\nlastProps.navigationState);}}},{key:'componentWillUnmount',value:function componentWillUnmount()\n\n\n\n\n{\nthis.state.position.removeListener(this._positionListener);}},{key:'_onProgressChange',value:function _onProgressChange(\n\n\ndata){\nvar delta=Math.abs(data.value-this.props.navigationState.index);\nif(delta>Number.EPSILON){\nreturn;}\n\n\nvar scenes=this.state.scenes.filter(function(scene){\nreturn !scene.isStale;});\n\n\nif(scenes.length!==this.state.scenes.length){\nthis.setState({scenes:scenes});}}},{key:'render',value:function render()\n\n\n\n{\nvar overlay=this._renderOverlay();\nvar scenes=this._renderScenes();\nreturn (\nReact.createElement(View,{\nonLayout:this._onLayout,\nstyle:this.props.style,__source:{fileName:_jsxFileName,lineNumber:159}},\nReact.createElement(View,{style:styles.scenes,key:'scenes',__source:{fileName:_jsxFileName,lineNumber:162}},\nscenes),\n\noverlay));}},{key:'_renderScenes',value:function _renderScenes()\n\n\n\n\n{\nreturn this.state.scenes.map(this._renderScene,this);}},{key:'_renderScene',value:function _renderScene(\n\n\nscene){var _props=\n\n\n\n\nthis.props;var navigationState=_props.navigationState;var onNavigate=_props.onNavigate;var renderScene=_props.renderScene;var _state=\n\n\n\n\nthis.state;var position=_state.position;var scenes=_state.scenes;\n\nreturn renderScene({\nlayout:this.state.layout,\nnavigationState:navigationState,\nonNavigate:onNavigate,\nposition:position,\nscene:scene,\nscenes:scenes});}},{key:'_renderOverlay',value:function _renderOverlay()\n\n\n\n{\nif(this.props.renderOverlay){var _props2=\n\n\n\n\nthis.props;var _navigationState=_props2.navigationState;var _onNavigate=_props2.onNavigate;var _renderOverlay2=_props2.renderOverlay;var _state2=\n\n\n\n\nthis.state;var _position=_state2.position;var _scenes=_state2.scenes;\n\nreturn _renderOverlay2({\nlayout:this.state.layout,\nnavigationState:_navigationState,\nonNavigate:_onNavigate,\nposition:_position,\nscene:_scenes[_navigationState.index],\nscenes:_scenes});}\n\n\nreturn null;}},{key:'_onLayout',value:function _onLayout(\n\n\nevent){var _event$nativeEvent$la=\nevent.nativeEvent.layout;var height=_event$nativeEvent$la.height;var width=_event$nativeEvent$la.width;\n\nvar layout=babelHelpers.extends({},\nthis.state.layout,{\ninitHeight:height,\ninitWidth:width,\nisMeasured:true});\n\n\nlayout.height.setValue(height);\nlayout.width.setValue(width);\n\nthis.setState({layout:layout});}}]);return NavigationAnimatedView;}(React.Component);NavigationAnimatedView.propTypes={applyAnimation:PropTypes.func,navigationState:NavigationPropTypes.navigationState.isRequired,onNavigate:PropTypes.func.isRequired,renderOverlay:PropTypes.func,renderScene:PropTypes.func.isRequired};NavigationAnimatedView.defaultProps={applyAnimation:applyDefaultAnimation};\n\n\n\nvar styles=StyleSheet.create({\nscenes:{\nflex:1}});\n\n\n\nNavigationAnimatedView=NavigationContainer.create(NavigationAnimatedView);\n\nmodule.exports=NavigationAnimatedView;","map":null,"id":"NavigationAnimatedView","source":"/**\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 NavigationAnimatedView\n * @flow\n */\n'use strict';\n\nconst Animated = require('Animated');\nconst NavigationContainer = require('NavigationContainer');\nconst NavigationPropTypes = require('NavigationPropTypes');\nconst NavigationScenesReducer = require('NavigationScenesReducer');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\nimport type {\n NavigationActionCaller,\n NavigationAnimatedValue,\n NavigationAnimationSetter,\n NavigationLayout,\n NavigationParentState,\n NavigationScene,\n NavigationSceneRenderer,\n} from 'NavigationTypeDefinition';\n\ntype Props = {\n applyAnimation: NavigationAnimationSetter,\n navigationState: NavigationParentState,\n onNavigate: NavigationActionCaller,\n renderOverlay: ?NavigationSceneRenderer,\n renderScene: NavigationSceneRenderer,\n style: any,\n};\n\ntype State = {\n layout: NavigationLayout,\n position: NavigationAnimatedValue,\n scenes: Array,\n};\n\nconst {PropTypes} = React;\n\nfunction applyDefaultAnimation(\n position: NavigationAnimatedValue,\n navigationState: NavigationParentState,\n): void {\n Animated.spring(\n position,\n {\n bounciness: 0,\n toValue: navigationState.index,\n }\n ).start();\n}\n\nclass NavigationAnimatedView\n extends React.Component {\n\n _onLayout: (event: any) => void;\n _onProgressChange: (data: {value: number}) => void;\n _positionListener: any;\n\n props: Props;\n state: State;\n\n static propTypes = {\n applyAnimation: PropTypes.func,\n navigationState: NavigationPropTypes.navigationState.isRequired,\n onNavigate: PropTypes.func.isRequired,\n renderOverlay: PropTypes.func,\n renderScene: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n applyAnimation: applyDefaultAnimation,\n };\n\n constructor(props: Props, context: any) {\n super(props, context);\n\n // The initial layout isn't measured. Measured layout will be only available\n // when the component is mounted.\n const layout = {\n height: new Animated.Value(0),\n initHeight: 0,\n initWidth: 0,\n isMeasured: false,\n width: new Animated.Value(0),\n };\n\n this.state = {\n layout,\n position: new Animated.Value(this.props.navigationState.index),\n scenes: NavigationScenesReducer([], this.props.navigationState),\n };\n }\n\n componentWillMount(): void {\n this._onLayout = this._onLayout.bind(this);\n this._onProgressChange = this._onProgressChange.bind(this);\n }\n\n componentDidMount(): void {\n this._positionListener =\n this.state.position.addListener(this._onProgressChange);\n }\n\n componentWillReceiveProps(nextProps: Props): void {\n if (nextProps.navigationState !== this.props.navigationState) {\n this.setState({\n scenes: NavigationScenesReducer(\n this.state.scenes,\n nextProps.navigationState,\n this.props.navigationState\n ),\n });\n }\n }\n\n componentDidUpdate(lastProps: Props): void {\n if (lastProps.navigationState.index !== this.props.navigationState.index) {\n this.props.applyAnimation(\n this.state.position,\n this.props.navigationState,\n lastProps.navigationState\n );\n }\n }\n\n componentWillUnmount(): void {\n this.state.position.removeListener(this._positionListener);\n }\n\n _onProgressChange(data: Object): void {\n const delta = Math.abs(data.value - this.props.navigationState.index);\n if (delta > Number.EPSILON) {\n return;\n }\n\n const scenes = this.state.scenes.filter(scene => {\n return !scene.isStale;\n });\n\n if (scenes.length !== this.state.scenes.length) {\n this.setState({ scenes });\n }\n }\n\n render(): ReactElement {\n const overlay = this._renderOverlay();\n const scenes = this._renderScenes();\n return (\n \n \n {scenes}\n \n {overlay}\n \n );\n }\n\n _renderScenes(): Array {\n return this.state.scenes.map(this._renderScene, this);\n }\n\n _renderScene(scene: NavigationScene): ?ReactElement {\n const {\n navigationState,\n onNavigate,\n renderScene,\n } = this.props;\n\n const {\n position,\n scenes,\n } = this.state;\n\n return renderScene({\n layout: this.state.layout,\n navigationState,\n onNavigate,\n position,\n scene,\n scenes,\n });\n }\n\n _renderOverlay(): ?ReactElement {\n if (this.props.renderOverlay) {\n const {\n navigationState,\n onNavigate,\n renderOverlay,\n } = this.props;\n\n const {\n position,\n scenes,\n } = this.state;\n\n return renderOverlay({\n layout: this.state.layout,\n navigationState,\n onNavigate,\n position,\n scene: scenes[navigationState.index],\n scenes,\n });\n }\n return null;\n }\n\n _onLayout(event: any): void {\n const {height, width} = event.nativeEvent.layout;\n\n const layout = {\n ...this.state.layout,\n initHeight: height,\n initWidth: width,\n isMeasured: true,\n };\n\n layout.height.setValue(height);\n layout.width.setValue(width);\n\n this.setState({ layout });\n }\n}\n\nconst styles = StyleSheet.create({\n scenes: {\n flex: 1,\n },\n});\n\nNavigationAnimatedView = NavigationContainer.create(NavigationAnimatedView);\n\nmodule.exports = NavigationAnimatedView;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationContainer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationContainer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[187,233],"dependencies":["React","NavigationRootContainer"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationContainer.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar NavigationRootContainer=require('NavigationRootContainer');\n\nfunction createNavigationContainer(\nComponent)\n{var \nNavigationComponent=function(_React$Component){babelHelpers.inherits(NavigationComponent,_React$Component);function NavigationComponent(){babelHelpers.classCallCheck(this,NavigationComponent);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationComponent).apply(this,arguments));}babelHelpers.createClass(NavigationComponent,[{key:'render',value:function render()\n{\nreturn (\nReact.createElement(Component,babelHelpers.extends({\nonNavigate:this.getNavigationHandler()},\nthis.props,{__source:{fileName:_jsxFileName,lineNumber:23}})));}},{key:'getNavigationHandler',value:function getNavigationHandler()\n\n\n\n{\nreturn this.props.onNavigate||this.context.onNavigate;}},{key:'getChildContext',value:function getChildContext()\n\n{\nreturn {\nonNavigate:this.getNavigationHandler()};}}]);return NavigationComponent;}(React.Component);\n\n\n\nNavigationComponent.contextTypes={\nonNavigate:React.PropTypes.func};\n\nNavigationComponent.childContextTypes={\nonNavigate:React.PropTypes.func};\n\nreturn NavigationComponent;}\n\n\nvar NavigationContainer={\ncreate:createNavigationContainer,\nRootContainer:NavigationRootContainer};\n\n\n\nmodule.exports=NavigationContainer;","map":null,"id":"NavigationContainer","source":"/**\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 NavigationContainer\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar NavigationRootContainer = require('NavigationRootContainer');\n\nfunction createNavigationContainer(\n Component: ReactClass,\n): ReactClass & Object {\n class NavigationComponent extends React.Component {\n render() {\n return (\n \n );\n }\n getNavigationHandler() {\n return this.props.onNavigate || this.context.onNavigate;\n }\n getChildContext() {\n return {\n onNavigate: this.getNavigationHandler(),\n };\n }\n }\n NavigationComponent.contextTypes = {\n onNavigate: React.PropTypes.func,\n };\n NavigationComponent.childContextTypes = {\n onNavigate: React.PropTypes.func,\n };\n return NavigationComponent;\n}\n\nvar NavigationContainer = {\n create: createNavigationContainer,\n RootContainer: NavigationRootContainer,\n};\n\n\nmodule.exports = NavigationContainer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationExperimental.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationExperimental","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[61,115,166,222,275,334,394,452,513,565,616],"dependencies":["NavigationAnimatedView","NavigationCard","NavigationCardStack","NavigationContainer","NavigationHeader","NavigationLegacyNavigator","NavigationReducer","NavigationRootContainer","NavigationStateUtils","NavigationView","NavigationPropTypes"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigationAnimatedView=require('NavigationAnimatedView');\nvar NavigationCard=require('NavigationCard');\nvar NavigationCardStack=require('NavigationCardStack');\nvar NavigationContainer=require('NavigationContainer');\nvar NavigationHeader=require('NavigationHeader');\nvar NavigationLegacyNavigator=require('NavigationLegacyNavigator');\nvar NavigationReducer=require('NavigationReducer');\nvar NavigationRootContainer=require('NavigationRootContainer');\nvar NavigationStateUtils=require('NavigationStateUtils');\nvar NavigationView=require('NavigationView');\nvar NavigationPropTypes=require('NavigationPropTypes');\n\nvar NavigationExperimental={\n\nStateUtils:NavigationStateUtils,\nReducer:NavigationReducer,\n\n\nContainer:NavigationContainer,\nRootContainer:NavigationRootContainer,\n\n\nView:NavigationView,\nAnimatedView:NavigationAnimatedView,\n\n\nCard:NavigationCard,\nCardStack:NavigationCardStack,\nHeader:NavigationHeader,\nLegacyNavigator:NavigationLegacyNavigator,\n\nPropTypes:NavigationPropTypes};\n\n\nmodule.exports=NavigationExperimental;","map":null,"id":"NavigationExperimental","source":"/**\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 NavigationExperimental\n * @flow\n */\n'use strict';\n\nconst NavigationAnimatedView = require('NavigationAnimatedView');\nconst NavigationCard = require('NavigationCard');\nconst NavigationCardStack = require('NavigationCardStack');\nconst NavigationContainer = require('NavigationContainer');\nconst NavigationHeader = require('NavigationHeader');\nconst NavigationLegacyNavigator = require('NavigationLegacyNavigator');\nconst NavigationReducer = require('NavigationReducer');\nconst NavigationRootContainer = require('NavigationRootContainer');\nconst NavigationStateUtils = require('NavigationStateUtils');\nconst NavigationView = require('NavigationView');\nconst NavigationPropTypes = require('NavigationPropTypes');\n\nconst NavigationExperimental = {\n // Core\n StateUtils: NavigationStateUtils,\n Reducer: NavigationReducer,\n\n // Containers\n Container: NavigationContainer,\n RootContainer: NavigationRootContainer,\n\n // Views\n View: NavigationView,\n AnimatedView: NavigationAnimatedView,\n\n // CustomComponents:\n Card: NavigationCard,\n CardStack: NavigationCardStack,\n Header: NavigationHeader,\n LegacyNavigator: NavigationLegacyNavigator,\n\n PropTypes: NavigationPropTypes,\n};\n\nmodule.exports = NavigationExperimental;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationPropTypes.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationPropTypes","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[58,89],"dependencies":["Animated","React"],"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 Animated=require('Animated');\nvar React=require('React');var \n\nPropTypes=React.PropTypes;\n\n\nvar action=PropTypes.shape({\ntype:PropTypes.string.isRequired});\n\n\n\nvar animatedValue=PropTypes.instanceOf(Animated.Value);\n\n\nvar navigationState=PropTypes.shape({\nkey:PropTypes.string.isRequired});\n\n\n\nvar navigationParentState=PropTypes.shape({\nindex:PropTypes.number.isRequired,\nkey:PropTypes.string.isRequired,\nchildren:PropTypes.arrayOf(navigationState)});\n\n\n\nvar layout=PropTypes.shape({\nheight:animatedValue,\ninitHeight:PropTypes.number.isRequired,\ninitWidth:PropTypes.number.isRequired,\nisMeasured:PropTypes.bool.isRequired,\nwidth:animatedValue});\n\n\n\nvar scene=PropTypes.shape({\nindex:PropTypes.number.isRequired,\nisStale:PropTypes.bool.isRequired,\nkey:PropTypes.string.isRequired,\nnavigationState:navigationState});\n\n\n\nvar SceneRenderer={\nlayout:layout.isRequired,\nnavigationState:navigationParentState.isRequired,\nonNavigate:PropTypes.func.isRequired,\nposition:animatedValue.isRequired,\nscene:scene.isRequired,\nscenes:PropTypes.arrayOf(scene).isRequired};\n\n\n\nvar panHandlers=PropTypes.shape({\nonMoveShouldSetResponder:PropTypes.func.isRequired,\nonMoveShouldSetResponderCapture:PropTypes.func.isRequired,\nonResponderEnd:PropTypes.func.isRequired,\nonResponderGrant:PropTypes.func.isRequired,\nonResponderMove:PropTypes.func.isRequired,\nonResponderReject:PropTypes.func.isRequired,\nonResponderRelease:PropTypes.func.isRequired,\nonResponderStart:PropTypes.func.isRequired,\nonResponderTerminate:PropTypes.func.isRequired,\nonResponderTerminationRequest:PropTypes.func.isRequired,\nonStartShouldSetResponder:PropTypes.func.isRequired,\nonStartShouldSetResponderCapture:PropTypes.func.isRequired});\n\n\n\n\n\nfunction extractSceneRendererProps(\nprops)\n{\nreturn {\nlayout:props.layout,\nnavigationState:props.navigationState,\nonNavigate:props.onNavigate,\nposition:props.position,\nscene:props.scene,\nscenes:props.scenes};}\n\n\n\nmodule.exports={\n\nextractSceneRendererProps:extractSceneRendererProps,\n\n\nSceneRenderer:SceneRenderer,\n\n\naction:action,\nnavigationParentState:navigationParentState,\nnavigationState:navigationState,\npanHandlers:panHandlers};","map":null,"id":"NavigationPropTypes","source":"/**\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 NavigationPropTypes\n * @flow\n */\n'use strict';\n\nimport type {\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\n/**\n * React component PropTypes Definitions. Consider using this as a supplementary\n * measure with `NavigationTypeDefinition`. This helps to capture the propType\n * error at run-time, where as `NavigationTypeDefinition` capture the flow\n * type check errors at build time.\n */\n\nconst Animated = require('Animated');\nconst React = require('React');\n\nconst {PropTypes} = React;\n\n/* NavigationAction */\nconst action = PropTypes.shape({\n type: PropTypes.string.isRequired,\n});\n\n/* NavigationAnimatedValue */\nconst animatedValue = PropTypes.instanceOf(Animated.Value);\n\n/* NavigationState */\nconst navigationState = PropTypes.shape({\n key: PropTypes.string.isRequired,\n});\n\n/* NavigationParentState */\nconst navigationParentState = PropTypes.shape({\n index: PropTypes.number.isRequired,\n key: PropTypes.string.isRequired,\n children: PropTypes.arrayOf(navigationState),\n});\n\n/* NavigationLayout */\nconst layout = PropTypes.shape({\n height: animatedValue,\n initHeight: PropTypes.number.isRequired,\n initWidth: PropTypes.number.isRequired,\n isMeasured: PropTypes.bool.isRequired,\n width: animatedValue,\n});\n\n/* NavigationScene */\nconst scene = PropTypes.shape({\n index: PropTypes.number.isRequired,\n isStale: PropTypes.bool.isRequired,\n key: PropTypes.string.isRequired,\n navigationState,\n});\n\n/* NavigationSceneRendererProps */\nconst SceneRenderer = {\n layout: layout.isRequired,\n navigationState: navigationParentState.isRequired,\n onNavigate: PropTypes.func.isRequired,\n position: animatedValue.isRequired,\n scene: scene.isRequired,\n scenes: PropTypes.arrayOf(scene).isRequired,\n};\n\n/* NavigationPanPanHandlers */\nconst panHandlers = PropTypes.shape({\n onMoveShouldSetResponder: PropTypes.func.isRequired,\n onMoveShouldSetResponderCapture: PropTypes.func.isRequired,\n onResponderEnd: PropTypes.func.isRequired,\n onResponderGrant: PropTypes.func.isRequired,\n onResponderMove: PropTypes.func.isRequired,\n onResponderReject: PropTypes.func.isRequired,\n onResponderRelease: PropTypes.func.isRequired,\n onResponderStart: PropTypes.func.isRequired,\n onResponderTerminate: PropTypes.func.isRequired,\n onResponderTerminationRequest: PropTypes.func.isRequired,\n onStartShouldSetResponder: PropTypes.func.isRequired,\n onStartShouldSetResponderCapture: PropTypes.func.isRequired,\n});\n\n/**\n * Helper function that extracts the props needed for scene renderer.\n */\nfunction extractSceneRendererProps(\n props: NavigationSceneRendererProps,\n): NavigationSceneRendererProps {\n return {\n layout: props.layout,\n navigationState: props.navigationState,\n onNavigate: props.onNavigate,\n position: props.position,\n scene: props.scene,\n scenes: props.scenes,\n };\n}\n\nmodule.exports = {\n // helpers\n extractSceneRendererProps,\n\n // Bundled propTypes.\n SceneRenderer,\n\n // propTypes\n action,\n navigationParentState,\n navigationState,\n panHandlers,\n};\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationRootContainer.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationRootContainer","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[51,88,132,189,235,266],"dependencies":["AsyncStorage","Linking","NavigationPropTypes","NavigationStateUtils","Platform","React"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar AsyncStorage=require('AsyncStorage');\nvar Linking=require('Linking');\nvar NavigationPropTypes=require('NavigationPropTypes');\nvar NavigationStateUtils=require('NavigationStateUtils');\nvar Platform=require('Platform');\nvar React=require('React');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 getBackAction(){\nreturn {type:'BackAction'};}var \n\n\nPropTypes=React.PropTypes;var \n\nNavigationRootContainer=function(_React$Component){babelHelpers.inherits(NavigationRootContainer,_React$Component);\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 NavigationRootContainer(props){babelHelpers.classCallCheck(this,NavigationRootContainer);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationRootContainer).call(this,\nprops));\n\nvar navState=null;\nif(!_this.props.persistenceKey){\nnavState=NavigationStateUtils.getParent(\n_this.props.reducer(null,props.initialAction));}\n\n\n_this.state={navState:navState};return _this;}babelHelpers.createClass(NavigationRootContainer,[{key:'componentWillMount',value:function componentWillMount()\n\n\n{\nthis.handleNavigation=this.handleNavigation.bind(this);\nthis._handleOpenURLEvent=this._handleOpenURLEvent.bind(this);}},{key:'componentDidMount',value:function componentDidMount()\n\n\n{var _this2=this;\nif(this.props.linkingActionMap){\nLinking.getInitialURL().then(this._handleOpenURL.bind(this));\nPlatform.OS==='ios'&&Linking.addEventListener('url',this._handleOpenURLEvent);}\n\nif(this.props.persistenceKey){\nAsyncStorage.getItem(this.props.persistenceKey,function(err,storedString){\nif(err||!storedString){\n_this2.setState({\n\nnavState:_this2.props.reducer(null,_this2.props.initialAction)});\n\nreturn;}\n\n_this2.setState({\nnavState:JSON.parse(storedString)});});}}},{key:'componentWillUnmount',value:function componentWillUnmount()\n\n\n\n\n\n{\nif(Platform.OS==='ios'){\nLinking.removeEventListener('url',this._handleOpenURLEvent);}}},{key:'_handleOpenURLEvent',value:function _handleOpenURLEvent(\n\n\n\nevent){\nthis._handleOpenURL(event.url);}},{key:'_handleOpenURL',value:function _handleOpenURL(\n\n\nurl){\nif(!this.props.linkingActionMap){\nreturn;}\n\nvar action=this.props.linkingActionMap(url);\nif(action){\nthis.handleNavigation(action);}}},{key:'getChildContext',value:function getChildContext()\n\n\n\n{\nreturn {\nonNavigate:this.handleNavigation};}},{key:'handleNavigation',value:function handleNavigation(\n\n\n\naction){\nvar navState=this.props.reducer(this.state.navState,action);\nif(navState===this.state.navState){\nreturn false;}\n\nthis.setState({\n\nnavState:navState});\n\n\nif(this.props.persistenceKey){\nAsyncStorage.setItem(this.props.persistenceKey,JSON.stringify(navState));}\n\n\nreturn true;}},{key:'render',value:function render()\n\n\n{\nvar navigation=this.props.renderNavigation(\nthis.state.navState,\nthis.handleNavigation);\n\nreturn navigation;}}]);return NavigationRootContainer;}(React.Component);NavigationRootContainer.propTypes={initialAction:NavigationPropTypes.action.isRequired,linkingActionMap:PropTypes.func,persistenceKey:PropTypes.string,reducer:PropTypes.func.isRequired,renderNavigation:PropTypes.func.isRequired};NavigationRootContainer.defaultProps={initialAction:{type:'RootContainerInitialAction'}};NavigationRootContainer.childContextTypes={onNavigate:PropTypes.func};NavigationRootContainer.getBackAction=getBackAction;\n\n\n\nmodule.exports=NavigationRootContainer;","map":null,"id":"NavigationRootContainer","source":"/**\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 NavigationRootContainer\n * @flow\n */\n'use strict';\n\nconst AsyncStorage = require('AsyncStorage');\nconst Linking = require('Linking');\nconst NavigationPropTypes = require('NavigationPropTypes');\nconst NavigationStateUtils = require('NavigationStateUtils');\nconst Platform = require('Platform');\nconst React = require('React');\n\nimport type {\n NavigationAction,\n NavigationParentState,\n NavigationReducer,\n NavigationRenderer,\n} from 'NavigationTypeDefinition';\n\nexport type BackAction = {\n type: 'BackAction',\n};\n\ntype Props = {\n /*\n * The default action to be passed into the reducer when getting the first\n * state. Defaults to {type: 'RootContainerInitialAction'}\n */\n initialAction: NavigationAction,\n\n /*\n * Provide linkingActionMap to instruct the container to subscribe to linking\n * events, and use this mapper to convert URIs into actions that your app can\n * handle\n */\n linkingActionMap: ?((uri: ?string) => NavigationAction),\n\n /*\n * Provide this key, and the container will store the navigation state in\n * AsyncStorage through refreshes, with the provided key\n */\n persistenceKey: ?string,\n\n\n /*\n * A function that will output the latest navigation state as a function of\n * the (optional) previous state, and an action\n */\n reducer: NavigationReducer,\n\n\n /*\n * Set up the rendering of the app for a given navigation state\n */\n renderNavigation: NavigationRenderer,\n};\n\ntype State = {\n navState: ?NavigationParentState,\n};\n\nfunction getBackAction(): BackAction {\n return { type: 'BackAction' };\n}\n\nconst {PropTypes} = React;\n\nclass NavigationRootContainer extends React.Component {\n _handleOpenURLEvent: Function;\n\n props: Props;\n state: State;\n\n static propTypes = {\n initialAction: NavigationPropTypes.action.isRequired,\n linkingActionMap: PropTypes.func,\n persistenceKey: PropTypes.string,\n reducer: PropTypes.func.isRequired,\n renderNavigation: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n initialAction: { type: 'RootContainerInitialAction' },\n };\n\n static childContextTypes = {\n onNavigate: PropTypes.func,\n };\n\n\n static getBackAction = getBackAction;\n\n constructor(props: Props) {\n super(props);\n\n let navState = null;\n if (!this.props.persistenceKey) {\n navState = NavigationStateUtils.getParent(\n this.props.reducer(null, props.initialAction)\n );\n }\n this.state = { navState };\n }\n\n componentWillMount(): void {\n (this: any).handleNavigation = this.handleNavigation.bind(this);\n (this: any)._handleOpenURLEvent = this._handleOpenURLEvent.bind(this);\n }\n\n componentDidMount(): void {\n if (this.props.linkingActionMap) {\n Linking.getInitialURL().then(this._handleOpenURL.bind(this));\n Platform.OS === 'ios' && Linking.addEventListener('url', this._handleOpenURLEvent);\n }\n if (this.props.persistenceKey) {\n AsyncStorage.getItem(this.props.persistenceKey, (err, storedString) => {\n if (err || !storedString) {\n this.setState({\n // $FlowFixMe - navState is missing properties :(\n navState: this.props.reducer(null, this.props.initialAction),\n });\n return;\n }\n this.setState({\n navState: JSON.parse(storedString),\n });\n });\n }\n }\n\n componentWillUnmount(): void {\n if (Platform.OS === 'ios') {\n Linking.removeEventListener('url', this._handleOpenURLEvent);\n }\n }\n\n _handleOpenURLEvent(event: {url: string}): void {\n this._handleOpenURL(event.url);\n }\n\n _handleOpenURL(url: ?string): void {\n if (!this.props.linkingActionMap) {\n return;\n }\n const action = this.props.linkingActionMap(url);\n if (action) {\n this.handleNavigation(action);\n }\n }\n\n getChildContext(): Object {\n return {\n onNavigate: this.handleNavigation,\n };\n }\n\n handleNavigation(action: Object): boolean {\n const navState = this.props.reducer(this.state.navState, action);\n if (navState === this.state.navState) {\n return false;\n }\n this.setState({\n // $FlowFixMe - navState is missing properties :(\n navState,\n });\n\n if (this.props.persistenceKey) {\n AsyncStorage.setItem(this.props.persistenceKey, JSON.stringify(navState));\n }\n\n return true;\n }\n\n render(): ReactElement {\n const navigation = this.props.renderNavigation(\n this.state.navState,\n this.handleNavigation\n );\n return navigation;\n }\n}\n\nmodule.exports = NavigationRootContainer;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationStateUtils.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationStateUtils","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\n\nfunction getParent(state){\nif(\nstate instanceof Object&&\nstate.children instanceof Array&&\nstate.children[0]!==undefined&&\ntypeof state.index==='number'&&\nstate.children[state.index]!==undefined)\n{\nreturn state;}\n\nreturn null;}\n\n\nfunction get(state,key){\nvar parentState=getParent(state);\nif(!parentState){\nreturn null;}\n\nvar childState=parentState.children.find(function(child){return child.key===key;});\nreturn childState||null;}\n\n\nfunction indexOf(state,key){\nvar parentState=getParent(state);\nif(!parentState){\nreturn null;}\n\nvar index=parentState.children.map(function(child){return child.key;}).indexOf(key);\nif(index===-1){\nreturn null;}\n\nreturn index;}\n\n\nfunction push(state,newChildState){\nvar lastChildren=state.children;\nreturn babelHelpers.extends({},\nstate,{\nchildren:[].concat(babelHelpers.toConsumableArray(\nlastChildren),[\nnewChildState]),\n\nindex:lastChildren.length});}\n\n\n\nfunction pop(state){\nvar lastChildren=state.children;\nreturn babelHelpers.extends({},\nstate,{\nchildren:lastChildren.slice(0,lastChildren.length-1),\nindex:lastChildren.length-2});}\n\n\n\nfunction reset(state,nextChildren,nextIndex){\nvar parentState=getParent(state);\nif(!parentState){\nreturn state;}\n\nvar children=nextChildren||parentState.children;\nvar index=nextIndex==null?parentState.index:nextIndex;\nif(children===parentState.children&&index===parentState.index){\nreturn state;}\n\nreturn babelHelpers.extends({},\nparentState,{\nchildren:children,\nindex:index});}\n\n\n\nfunction set(state,key,nextChildren,nextIndex){\nif(!state){\nreturn {\nchildren:nextChildren,\nindex:nextIndex,\nkey:key};}\n\n\nvar parentState=getParent(state);\nif(!parentState){\nreturn {\nchildren:nextChildren,\nindex:nextIndex,\nkey:key};}\n\n\nif(nextChildren===parentState.children&&nextIndex===parentState.index&&key===parentState.key){\nreturn parentState;}\n\nreturn babelHelpers.extends({},\nparentState,{\nchildren:nextChildren,\nindex:nextIndex,\nkey:key});}\n\n\n\nfunction jumpToIndex(state,index){\nvar parentState=getParent(state);\nif(parentState&&parentState.index===index){\nreturn parentState;}\n\nreturn babelHelpers.extends({},\nparentState,{\nindex:index});}\n\n\n\nfunction jumpTo(state,key){\nvar parentState=getParent(state);\nif(!parentState){\nreturn state;}\n\nvar index=parentState.children.indexOf(parentState.children.find(function(child){return child.key===key;}));\ninvariant(\nindex!==-1,\n'Cannot find child with matching key in this NavigationState');\n\nreturn babelHelpers.extends({},\nparentState,{\nindex:index});}\n\n\n\nfunction replaceAt(state,key,newState){\nvar parentState=getParent(state);\nif(!parentState){\nreturn state;}\n\nvar children=[].concat(babelHelpers.toConsumableArray(parentState.children));\nvar index=parentState.children.indexOf(parentState.children.find(function(child){return child.key===key;}));\ninvariant(\nindex!==-1,\n'Cannot find child with matching key in this NavigationState');\n\nchildren[index]=newState;\nreturn babelHelpers.extends({},\nparentState,{\nchildren:children});}\n\n\n\nfunction replaceAtIndex(state,index,newState){\nvar parentState=getParent(state);\nif(!parentState){\nreturn state;}\n\nvar children=[].concat(babelHelpers.toConsumableArray(parentState.children));\nchildren[index]=newState;\nreturn babelHelpers.extends({},\nparentState,{\nchildren:children});}\n\n\n\nvar NavigationStateUtils={\ngetParent:getParent,\nget:get,\nindexOf:indexOf,\npush:push,\npop:pop,\nreset:reset,\nset:set,\njumpToIndex:jumpToIndex,\njumpTo:jumpTo,\nreplaceAt:replaceAt,\nreplaceAtIndex:replaceAtIndex};\n\n\nmodule.exports=NavigationStateUtils;","map":null,"id":"NavigationStateUtils","source":"/**\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 NavigationStateUtils\n * @flow\n */\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {\n NavigationState,\n NavigationParentState,\n} from 'NavigationTypeDefinition';\n\nfunction getParent(state: NavigationState): ?NavigationParentState {\n if (\n (state instanceof Object) &&\n (state.children instanceof Array) &&\n (state.children[0] !== undefined) &&\n (typeof state.index === 'number') &&\n (state.children[state.index] !== undefined)\n ) {\n return state;\n }\n return null;\n}\n\nfunction get(state: NavigationState, key: string): ?NavigationState {\n const parentState = getParent(state);\n if (!parentState) {\n return null;\n }\n const childState = parentState.children.find(child => child.key === key);\n return childState || null;\n}\n\nfunction indexOf(state: NavigationState, key: string): ?number {\n const parentState = getParent(state);\n if (!parentState) {\n return null;\n }\n const index = parentState.children.map(child => child.key).indexOf(key);\n if (index === -1) {\n return null;\n }\n return index;\n}\n\nfunction push(state: NavigationParentState, newChildState: NavigationState): NavigationParentState {\n var lastChildren: Array = state.children;\n return {\n ...state,\n children: [\n ...lastChildren,\n newChildState,\n ],\n index: lastChildren.length,\n };\n}\n\nfunction pop(state: NavigationParentState): NavigationParentState {\n const lastChildren = state.children;\n return {\n ...state,\n children: lastChildren.slice(0, lastChildren.length - 1),\n index: lastChildren.length - 2,\n };\n}\n\nfunction reset(state: NavigationState, nextChildren: ?Array, nextIndex: ?number): NavigationState {\n const parentState = getParent(state);\n if (!parentState) {\n return state;\n }\n const children = nextChildren || parentState.children;\n const index = nextIndex == null ? parentState.index : nextIndex;\n if (children === parentState.children && index === parentState.index) {\n return state;\n }\n return {\n ...parentState,\n children,\n index,\n };\n}\n\nfunction set(state: ?NavigationState, key: string, nextChildren: Array, nextIndex: number): NavigationState {\n if (!state) {\n return {\n children: nextChildren,\n index: nextIndex,\n key,\n };\n }\n const parentState = getParent(state);\n if (!parentState) {\n return {\n children: nextChildren,\n index: nextIndex,\n key,\n };\n }\n if (nextChildren === parentState.children && nextIndex === parentState.index && key === parentState.key) {\n return parentState;\n }\n return {\n ...parentState,\n children: nextChildren,\n index: nextIndex,\n key,\n };\n}\n\nfunction jumpToIndex(state: NavigationState, index: number): NavigationState {\n const parentState = getParent(state);\n if (parentState && parentState.index === index) {\n return parentState;\n }\n return {\n ...parentState,\n index,\n };\n}\n\nfunction jumpTo(state: NavigationState, key: string): NavigationState {\n const parentState = getParent(state);\n if (!parentState) {\n return state;\n }\n const index = parentState.children.indexOf(parentState.children.find(child => child.key === key));\n invariant(\n index !== -1,\n 'Cannot find child with matching key in this NavigationState'\n );\n return {\n ...parentState,\n index,\n };\n}\n\nfunction replaceAt(state: NavigationState, key: string, newState: NavigationState): NavigationState {\n const parentState = getParent(state);\n if (!parentState) {\n return state;\n }\n const children = [...parentState.children];\n const index = parentState.children.indexOf(parentState.children.find(child => child.key === key));\n invariant(\n index !== -1,\n 'Cannot find child with matching key in this NavigationState'\n );\n children[index] = newState;\n return {\n ...parentState,\n children,\n };\n}\n\nfunction replaceAtIndex(state: NavigationState, index: number, newState: NavigationState): NavigationState {\n const parentState = getParent(state);\n if (!parentState) {\n return state;\n }\n const children = [...parentState.children];\n children[index] = newState;\n return {\n ...parentState,\n children,\n };\n}\n\nconst NavigationStateUtils = {\n getParent,\n get: get,\n indexOf,\n push,\n pop,\n reset,\n set: set,\n jumpToIndex,\n jumpTo,\n replaceAt,\n replaceAtIndex,\n};\n\nmodule.exports = NavigationStateUtils;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationTypeDefinition.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationTypeDefinition"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationView.js":{"metadata":{"mtime":1463609891000},"data":{"name":"NavigationView","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[185,230,272,305,337,382,456],"dependencies":["Animated","NavigationContainer","React","StyleSheet","View","NavigationScenesReducer","ReactComponentWithPureRenderMixin"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NavigationExperimental/NavigationView.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Animated=require('Animated');\nvar NavigationContainer=require('NavigationContainer');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\nvar NavigationScenesReducer=require('NavigationScenesReducer');\nvar ReactComponentWithPureRenderMixin=require('ReactComponentWithPureRenderMixin');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPropTypes=React.PropTypes;var \n\n\n\n\n\nNavigationView=function(_React$Component){babelHelpers.inherits(NavigationView,_React$Component);\n\n\n\n\n\n\n\n\n\n\n\n\nfunction NavigationView(props,context){babelHelpers.classCallCheck(this,NavigationView);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(NavigationView).call(this,\nprops,context));\n\nvar layout={\ninitWidth:0,\ninitHeight:0,\nisMeasured:false,\nwidth:new Animated.Value(0),\nheight:new Animated.Value(0)};var \n\n\nnavigationState=_this.props.navigationState;\n\n_this._position=new Animated.Value(navigationState.index);\n\n_this.state={\nlayout:layout,\nscenes:NavigationScenesReducer([],navigationState)};return _this;}babelHelpers.createClass(NavigationView,[{key:'shouldComponentUpdate',value:function shouldComponentUpdate(\n\n\n\nnextProps,nextState){\nreturn ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\nthis,\nnextProps,\nnextState);}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps(\n\n\n\nnextProps){var _this2=this;\nif(nextProps.navigationState!==this.props.navigationState){(function(){var \nnavigationState=nextProps.navigationState;\n_this2.setState(\n{\nscenes:NavigationScenesReducer(\n_this2.state.scenes,\nnavigationState,\nnull)},\n\n\nfunction(){\n_this2._position.setValue(navigationState.index);});})();}}},{key:'componentWillMount',value:function componentWillMount()\n\n\n\n\n\n{\nthis._onLayout=this._onLayout.bind(this);}},{key:'render',value:function render()\n\n\n{var _props=\n\n\n\nthis.props;var navigationState=_props.navigationState;var onNavigate=_props.onNavigate;var _state=\n\n\n\n\nthis.state;var layout=_state.layout;var scenes=_state.scenes;\n\nvar sceneProps={\nlayout:layout,\nnavigationState:navigationState,\nonNavigate:onNavigate,\nposition:this._position,\nscene:scenes[navigationState.index],\nscenes:scenes};\n\n\nreturn (\nReact.createElement(View,{\nonLayout:this._onLayout,\nstyle:this.props.style,__source:{fileName:_jsxFileName,lineNumber:135}},\nthis._renderScene(sceneProps)));}},{key:'_renderScene',value:function _renderScene(\n\n\n\n\nprops){\n\nvar child=this.props.renderScene(props);\nif(child===null){\nreturn null;}\n\nreturn React.createElement(View,{key:props.scene.key,style:styles.scene,__source:{fileName:_jsxFileName,lineNumber:149}},child);}},{key:'_onLayout',value:function _onLayout(\n\n\nevent){var _event$nativeEvent$la=\nevent.nativeEvent.layout;var height=_event$nativeEvent$la.height;var width=_event$nativeEvent$la.width;\n\nvar layout=babelHelpers.extends({},\nthis.state.layout,{\ninitHeight:height,\ninitWidth:width,\nisMeasured:true});\n\n\nlayout.height.setValue(height);\nlayout.width.setValue(width);\n\nthis.setState({layout:layout});}}]);return NavigationView;}(React.Component);NavigationView.propTypes={navigationState:PropTypes.object.isRequired,onNavigate:PropTypes.func.isRequired,renderScene:PropTypes.func.isRequired};\n\n\n\nvar styles=StyleSheet.create({\nscene:{\nbottom:0,\nleft:0,\nposition:'absolute',\nright:0,\ntop:0}});\n\n\n\nmodule.exports=NavigationContainer.create(NavigationView);","map":null,"id":"NavigationView","source":"/**\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 NavigationView\n * @flow\n */\n'use strict';\n\nconst Animated = require('Animated');\nconst NavigationContainer = require('NavigationContainer');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\nconst NavigationScenesReducer = require('NavigationScenesReducer');\nconst ReactComponentWithPureRenderMixin = require('ReactComponentWithPureRenderMixin');\n\nimport type {\n NavigationActionCaller,\n NavigationAnimatedValue,\n NavigationLayout,\n NavigationParentState,\n NavigationScene,\n NavigationSceneRenderer,\n NavigationSceneRendererProps,\n} from 'NavigationTypeDefinition';\n\ntype Props = {\n navigationState: NavigationParentState,\n onNavigate: NavigationActionCaller,\n renderScene: NavigationSceneRenderer,\n style: any,\n};\n\ntype State = {\n layout: NavigationLayout,\n scenes: Array,\n};\n\nconst {PropTypes} = React;\n\n/**\n * A simple view that will render a scene for the currently focused sub-state.\n * The most common use-case is for tabs, where no transition is needed\n */\nclass NavigationView extends React.Component {\n _onLayout: (event: any) => void;\n _position: NavigationAnimatedValue;\n\n props: Props;\n state: State;\n\n static propTypes = {\n navigationState: PropTypes.object.isRequired,\n onNavigate: PropTypes.func.isRequired,\n renderScene: PropTypes.func.isRequired,\n };\n\n constructor(props: Props, context: any) {\n super(props, context);\n\n const layout = {\n initWidth: 0,\n initHeight: 0,\n isMeasured: false,\n width: new Animated.Value(0),\n height: new Animated.Value(0),\n };\n\n const {navigationState} = this.props;\n\n this._position = new Animated.Value(navigationState.index);\n\n this.state = {\n layout,\n scenes: NavigationScenesReducer([], navigationState),\n };\n }\n\n shouldComponentUpdate(nextProps: Props, nextState: State): boolean {\n return ReactComponentWithPureRenderMixin.shouldComponentUpdate.call(\n this,\n nextProps,\n nextState\n );\n }\n\n componentWillReceiveProps(nextProps: Props): void {\n if (nextProps.navigationState !== this.props.navigationState) {\n const {navigationState} = nextProps;\n this.setState(\n {\n scenes: NavigationScenesReducer(\n this.state.scenes,\n navigationState,\n null, // There will be no transtion.\n ),\n },\n () => {\n this._position.setValue(navigationState.index);\n },\n );\n }\n }\n\n componentWillMount(): void {\n this._onLayout = this._onLayout.bind(this);\n }\n\n render(): ReactElement {\n const {\n navigationState,\n onNavigate\n } = this.props;\n\n const {\n layout,\n scenes,\n } = this.state;\n\n const sceneProps = {\n layout,\n navigationState: navigationState,\n onNavigate: onNavigate,\n position: this._position,\n scene: scenes[navigationState.index],\n scenes,\n };\n\n return (\n \n {this._renderScene(sceneProps)}\n \n );\n }\n\n _renderScene(props: NavigationSceneRendererProps): ?ReactElement {\n\n const child = this.props.renderScene(props);\n if (child === null) {\n return null;\n }\n return {child};\n }\n\n _onLayout(event: any): void {\n const {height, width} = event.nativeEvent.layout;\n\n const layout = {\n ...this.state.layout,\n initHeight: height,\n initWidth: width,\n isMeasured: true,\n };\n\n layout.height.setValue(height);\n layout.width.setValue(width);\n\n this.setState({ layout });\n }\n}\n\nconst styles = StyleSheet.create({\n scene: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\n\nmodule.exports = NavigationContainer.create(NavigationView);\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/NativeApp/RCTNativeAppEventEmitter.js":{"metadata":{"mtime":1463609891000},"data":{"name":"RCTNativeAppEventEmitter","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,95],"dependencies":["BatchedBridge","EventEmitter"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BatchedBridge=require('BatchedBridge');\nvar EventEmitter=require('EventEmitter');\n\nvar RCTNativeAppEventEmitter=new EventEmitter();\n\nBatchedBridge.registerCallableModule(\n'RCTNativeAppEventEmitter',\nRCTNativeAppEventEmitter);\n\n\nmodule.exports=RCTNativeAppEventEmitter;","map":null,"id":"RCTNativeAppEventEmitter","source":"/**\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 RCTNativeAppEventEmitter\n * @flow\n */\n'use strict';\n\nvar BatchedBridge = require('BatchedBridge');\nvar EventEmitter = require('EventEmitter');\n\nvar RCTNativeAppEventEmitter = new EventEmitter();\n\nBatchedBridge.registerCallableModule(\n 'RCTNativeAppEventEmitter',\n RCTNativeAppEventEmitter\n);\n\nmodule.exports = RCTNativeAppEventEmitter;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Modal/Modal.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Modal","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[159,194,231,264,296,336,395],"dependencies":["Platform","ReactPropTypes","React","StyleSheet","View","deprecatedPropType","requireNativeComponent"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Modal/Modal.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform=require('Platform');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\nvar deprecatedPropType=require('deprecatedPropType');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar RCTModalHostView=requireNativeComponent('RCTModalHostView',null);var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nModal=function(_React$Component){babelHelpers.inherits(Modal,_React$Component);function Modal(){babelHelpers.classCallCheck(this,Modal);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(Modal).apply(this,arguments));}babelHelpers.createClass(Modal,[{key:'render',value:function render()\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\nif(this.props.visible===false){\nreturn null;}\n\n\nvar containerBackgroundColor={\nbackgroundColor:this.props.transparent?'transparent':'white'};\n\n\nvar animationType=this.props.animationType;\nif(!animationType){\n\nanimationType='none';\nif(this.props.animated){\nanimationType='slide';}}\n\n\n\nreturn (\nReact.createElement(RCTModalHostView,{\nanimationType:animationType,\ntransparent:this.props.transparent,\nonRequestClose:this.props.onRequestClose,\nonShow:this.props.onShow,\nstyle:styles.modal,\nonStartShouldSetResponder:this._shouldSetResponder,__source:{fileName:_jsxFileName,lineNumber:73}},\n\nReact.createElement(View,{style:[styles.container,containerBackgroundColor],__source:{fileName:_jsxFileName,lineNumber:81}},\nthis.props.children)));}},{key:'_shouldSetResponder',value:function _shouldSetResponder()\n\n\n\n\n\n\n{\nreturn true;}}]);return Modal;}(React.Component);Modal.propTypes={animated:deprecatedPropType(PropTypes.bool,'Use the `animationType` prop instead.'),animationType:PropTypes.oneOf(['none','slide','fade']),transparent:PropTypes.bool,visible:PropTypes.bool,onRequestClose:Platform.OS==='android'?PropTypes.func.isRequired:PropTypes.func,onShow:PropTypes.func};Modal.defaultProps={visible:true};\n\n\n\nvar styles=StyleSheet.create({\nmodal:{\nposition:'absolute'},\n\ncontainer:{\nposition:'absolute',\nleft:0,\ntop:0}});\n\n\n\nmodule.exports=Modal;","map":null,"id":"Modal","source":"/**\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 Modal\n * @flow\n */\n'use strict';\n\nconst Platform = require('Platform');\nconst PropTypes = require('ReactPropTypes');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\nconst deprecatedPropType = require('deprecatedPropType');\n\nconst requireNativeComponent = require('requireNativeComponent');\nconst RCTModalHostView = requireNativeComponent('RCTModalHostView', null);\n\n/**\n * A Modal component covers the native view (e.g. UIViewController, Activity)\n * that contains the React Native root.\n *\n * Use Modal in hybrid apps that embed React Native; Modal allows the portion of\n * your app written in React Native to present content above the enclosing\n * native view hierarchy.\n *\n * In apps written with React Native from the root view down, you should use\n * Navigator instead of Modal. With a top-level Navigator, you have more control\n * over how to present the modal scene over the rest of your app by using the\n * configureScene property.\n */\nclass Modal extends React.Component {\n static propTypes = {\n animated: deprecatedPropType(\n PropTypes.bool,\n 'Use the `animationType` prop instead.'\n ),\n animationType: PropTypes.oneOf(['none', 'slide', 'fade']),\n transparent: PropTypes.bool,\n visible: PropTypes.bool,\n onRequestClose: Platform.OS === 'android' ? PropTypes.func.isRequired : PropTypes.func,\n onShow: PropTypes.func,\n };\n\n static defaultProps = {\n visible: true,\n };\n\n render(): ?ReactElement {\n if (this.props.visible === false) {\n return null;\n }\n\n const containerBackgroundColor = {\n backgroundColor: this.props.transparent ? 'transparent' : 'white',\n };\n\n let animationType = this.props.animationType;\n if (!animationType) {\n // manually setting default prop here to keep support for the deprecated 'animated' prop\n animationType = 'none';\n if (this.props.animated) {\n animationType = 'slide';\n }\n }\n\n return (\n \n \n {this.props.children}\n \n \n );\n }\n\n // We don't want any responder events bubbling out of the modal.\n _shouldSetResponder(): boolean {\n return true;\n }\n}\n\nconst styles = StyleSheet.create({\n modal: {\n position: 'absolute',\n },\n container: {\n position: 'absolute',\n left: 0,\n top: 0,\n }\n});\n\nmodule.exports = Modal;"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/LinkingIOS/LinkingIOS.js":{"metadata":{"mtime":1463609891000},"data":{"name":"LinkingIOS","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[46,88,143],"dependencies":["Linking","NativeModules","fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Linking=require('Linking');\nvar RCTLinkingManager=require('NativeModules').LinkingManager;\nvar invariant=require('fbjs/lib/invariant');\n\nvar _initialURL=RCTLinkingManager&&RCTLinkingManager.initialURL;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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nLinkingIOS=function(){function LinkingIOS(){babelHelpers.classCallCheck(this,LinkingIOS);}babelHelpers.createClass(LinkingIOS,null,[{key:'addEventListener',value:function addEventListener(\n\n\n\n\n\n\ntype,handler){\nconsole.warn('\"LinkingIOS.addEventListener\" is deprecated. Use \"Linking.addEventListener\" instead.');\nLinking.addEventListener(type,handler);}},{key:'removeEventListener',value:function removeEventListener(\n\n\n\n\n\n\n\ntype,handler){\nconsole.warn('\"LinkingIOS.removeEventListener\" is deprecated. Use \"Linking.removeEventListener\" instead.');\nLinking.removeEventListener(type,handler);}},{key:'openURL',value:function openURL(\n\n\n\n\n\n\n\nurl){\nconsole.warn('\"LinkingIOS.openURL\" is deprecated. Use the promise based \"Linking.openURL\" instead.');\nLinking.openURL(url);}},{key:'canOpenURL',value:function canOpenURL(\n\n\n\n\n\n\n\n\n\n\n\nurl,callback){\nconsole.warn('\"LinkingIOS.canOpenURL\" is deprecated. Use the promise based \"Linking.canOpenURL\" instead.');\ninvariant(\ntypeof callback==='function',\n'A valid callback function is required');\n\nLinking.canOpenURL(url).then(callback);}},{key:'popInitialURL',value:function popInitialURL()\n\n\n\n\n\n\n\n\n{\nconsole.warn('\"LinkingIOS.popInitialURL\" is deprecated. Use the promise based \"Linking.getInitialURL\" instead.');\nvar initialURL=_initialURL;\n_initialURL=null;\nreturn initialURL;}}]);return LinkingIOS;}();\n\n\n\nmodule.exports=LinkingIOS;","map":null,"id":"LinkingIOS","source":"/**\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 LinkingIOS\n * @flow\n */\n'use strict';\n\nvar Linking = require('Linking');\nvar RCTLinkingManager = require('NativeModules').LinkingManager;\nvar invariant = require('fbjs/lib/invariant');\n\nvar _initialURL = RCTLinkingManager && RCTLinkingManager.initialURL;\n\n/**\n * NOTE: `LinkingIOS` is being deprecated. Use `Linking` instead.\n *\n * `LinkingIOS` gives you a general interface to interact with both incoming\n * and outgoing app links.\n *\n * ### Basic Usage\n *\n * #### Handling deep links\n *\n * If your app was launched from an external url registered to your app you can\n * access and handle it from any component you want with\n *\n * ```\n * componentDidMount() {\n * var url = LinkingIOS.popInitialURL();\n * }\n * ```\n *\n * In case you also want to listen to incoming app links during your app's\n * execution you'll need to add the following lines to you `*AppDelegate.m`:\n *\n * ```\n * - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url\n * sourceApplication:(NSString *)sourceApplication annotation:(id)annotation\n * {\n * return [RCTLinkingManager application:application openURL:url\n * sourceApplication:sourceApplication annotation:annotation];\n * }\n *\n * // Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html).\n * - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity\n * restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler\n * {\n * return [RCTLinkingManager application:application\n * continueUserActivity:userActivity\n * restorationHandler:restorationHandler];\n * }\n *\n * ```\n *\n * And then on your React component you'll be able to listen to the events on\n * `LinkingIOS` as follows\n *\n * ```\n * componentDidMount() {\n * LinkingIOS.addEventListener('url', this._handleOpenURL);\n * },\n * componentWillUnmount() {\n * LinkingIOS.removeEventListener('url', this._handleOpenURL);\n * },\n * _handleOpenURL(event) {\n * console.log(event.url);\n * }\n * ```\n *\n * #### Triggering App links\n *\n * To trigger an app link (browser, email or custom schemas), call\n *\n * ```\n * LinkingIOS.openURL(url)\n * ```\n *\n * If you want to check if any installed app can handle a given URL beforehand, call\n * ```\n * LinkingIOS.canOpenURL(url, (supported) => {\n * if (!supported) {\n * AlertIOS.alert('Can\\'t handle url: ' + url);\n * } else {\n * LinkingIOS.openURL(url);\n * }\n * });\n * ```\n */\nclass LinkingIOS {\n /**\n * Add a handler to LinkingIOS changes by listening to the `url` event type\n * and providing the handler\n *\n * @deprecated\n */\n static addEventListener(type: string, handler: Function) {\n console.warn('\"LinkingIOS.addEventListener\" is deprecated. Use \"Linking.addEventListener\" instead.');\n Linking.addEventListener(type, handler);\n }\n\n /**\n * Remove a handler by passing the `url` event type and the handler\n *\n * @deprecated\n */\n static removeEventListener(type: string, handler: Function ) {\n console.warn('\"LinkingIOS.removeEventListener\" is deprecated. Use \"Linking.removeEventListener\" instead.');\n Linking.removeEventListener(type, handler);\n }\n\n /**\n * Try to open the given `url` with any of the installed apps.\n *\n * @deprecated\n */\n static openURL(url: string) {\n console.warn('\"LinkingIOS.openURL\" is deprecated. Use the promise based \"Linking.openURL\" instead.');\n Linking.openURL(url);\n }\n\n /**\n * Determine whether or not an installed app can handle a given URL.\n * The callback function will be called with `bool supported` as the only argument\n *\n * NOTE: As of iOS 9, your app needs to provide the `LSApplicationQueriesSchemes` key\n * inside `Info.plist`.\n *\n * @deprecated\n */\n static canOpenURL(url: string, callback: Function) {\n console.warn('\"LinkingIOS.canOpenURL\" is deprecated. Use the promise based \"Linking.canOpenURL\" instead.');\n invariant(\n typeof callback === 'function',\n 'A valid callback function is required'\n );\n Linking.canOpenURL(url).then(callback);\n }\n\n /**\n * If the app launch was triggered by an app link, it will pop the link url,\n * otherwise it will return `null`\n *\n * @deprecated\n */\n static popInitialURL(): ?string {\n console.warn('\"LinkingIOS.popInitialURL\" is deprecated. Use the promise based \"Linking.getInitialURL\" instead.');\n var initialURL = _initialURL;\n _initialURL = null;\n return initialURL;\n }\n}\n\nmodule.exports = LinkingIOS;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Linking/Linking.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Linking","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[47,94,144,347,386],"dependencies":["Platform","RCTDeviceEventEmitter","NativeModules","fbjs/lib/invariant","Map"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform=require('Platform');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');var _require=\n\n\n\nrequire('NativeModules');var IntentAndroid=_require.IntentAndroid;var LinkingManagerIOS=_require.LinkingManager;\nvar LinkingManager=Platform.OS==='android'?IntentAndroid:LinkingManagerIOS;\nvar invariant=require('fbjs/lib/invariant');\nvar Map=require('Map');\n\nvar _notifHandlers=new Map();\n\nvar DEVICE_NOTIF_EVENT='openURL';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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nLinking=function(){function Linking(){babelHelpers.classCallCheck(this,Linking);}babelHelpers.createClass(Linking,null,[{key:'addEventListener',value:function addEventListener(\n\n\n\n\n\n\ntype,handler){\nif(Platform.OS==='android'){\nconsole.warn('Linking.addEventListener is not supported on Android');}else \n{\ninvariant(\ntype==='url',\n'Linking only supports `url` events');\n\nvar listener=RCTDeviceEventEmitter.addListener(\nDEVICE_NOTIF_EVENT,\nhandler);\n\n_notifHandlers.set(handler,listener);}}},{key:'removeEventListener',value:function removeEventListener(\n\n\n\n\n\n\n\n\ntype,handler){\nif(Platform.OS==='android'){\nconsole.warn('Linking.removeEventListener is not supported on Android');}else \n{\ninvariant(\ntype==='url',\n'Linking only supports `url` events');\n\nvar listener=_notifHandlers.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_notifHandlers.delete(handler);}}},{key:'openURL',value:function openURL(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nurl){\nthis._validateURL(url);\nreturn LinkingManager.openURL(url);}},{key:'canOpenURL',value:function canOpenURL(\n\n\n\n\n\n\n\n\n\n\n\n\nurl){\nthis._validateURL(url);\nreturn LinkingManager.canOpenURL(url);}},{key:'getInitialURL',value:function getInitialURL()\n\n\n\n\n\n\n\n\n{\nif(Platform.OS==='android'){\nreturn IntentAndroid.getInitialURL();}else \n{\nreturn Promise.resolve(LinkingManagerIOS.initialURL);}}},{key:'_validateURL',value:function _validateURL(\n\n\n\nurl){\ninvariant(\ntypeof url==='string',\n'Invalid URL: should be a string. Was: '+url);\n\ninvariant(\nurl,\n'Invalid URL: cannot be empty');}}]);return Linking;}();\n\n\n\n\nmodule.exports=Linking;","map":null,"id":"Linking","source":"/**\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 Linking\n * @flow\n */\n'use strict';\n\nconst Platform = require('Platform');\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nconst {\n IntentAndroid,\n LinkingManager: LinkingManagerIOS\n} = require('NativeModules');\nconst LinkingManager = Platform.OS === 'android' ? IntentAndroid : LinkingManagerIOS;\nconst invariant = require('fbjs/lib/invariant');\nconst Map = require('Map');\n\nconst _notifHandlers = new Map();\n\nconst DEVICE_NOTIF_EVENT = 'openURL';\n\n/**\n * `Linking` gives you a general interface to interact with both incoming\n * and outgoing app links.\n *\n * ### Basic Usage\n *\n * #### Handling deep links\n *\n * If your app was launched from an external url registered to your app you can\n * access and handle it from any component you want with\n *\n * ```\n * componentDidMount() {\n * var url = Linking.getInitialURL().then((url) => {\n * if (url) {\n * console.log('Initial url is: ' + url);\n * }\n * }).catch(err => console.error('An error occurred', err));\n * }\n * ```\n *\n * NOTE: For instructions on how to add support for deep linking on Android,\n * refer [Enabling Deep Links for App Content - Add Intent Filters for Your Deep Links](http://developer.android.com/training/app-indexing/deep-linking.html#adding-filters).\n *\n * NOTE: On iOS you'll need to link `RCTLinking` to your project by following\n * the steps described [here](docs/linking-libraries-ios.html#manual-linking).\n * In case you also want to listen to incoming app links during your app's\n * execution you'll need to add the following lines to you `*AppDelegate.m`:\n *\n * ```\n *#import \"RCTLinkingManager.h\"\n *\n * - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url\n * sourceApplication:(NSString *)sourceApplication annotation:(id)annotation\n * {\n * return [RCTLinkingManager application:application openURL:url\n * sourceApplication:sourceApplication annotation:annotation];\n * }\n *\n * // Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html).\n * - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity\n * restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler\n * {\n * return [RCTLinkingManager application:application\n * continueUserActivity:userActivity\n * restorationHandler:restorationHandler];\n * }\n *\n * ```\n *\n * And then on your React component you'll be able to listen to the events on\n * `Linking` as follows\n *\n * ```\n * componentDidMount() {\n * Linking.addEventListener('url', this._handleOpenURL);\n * },\n * componentWillUnmount() {\n * Linking.removeEventListener('url', this._handleOpenURL);\n * },\n * _handleOpenURL(event) {\n * console.log(event.url);\n * }\n * ```\n * Note that this is only supported on iOS.\n *\n * #### Opening external links\n *\n * To start the corresponding activity for a link (web URL, email, contact etc.), call\n *\n * ```\n * Linking.openURL(url).catch(err => console.error('An error occurred', err));\n * ```\n *\n * If you want to check if any installed app can handle a given URL beforehand you can call\n * ```\n * Linking.canOpenURL(url).then(supported => {\n * if (!supported) {\n * console.log('Can\\'t handle url: ' + url);\n * } else {\n * return Linking.openURL(url);\n * }\n * }).catch(err => console.error('An error occurred', err));\n * ```\n */\nclass Linking {\n /**\n * Add a handler to Linking changes by listening to the `url` event type\n * and providing the handler\n *\n * @platform ios\n */\n static addEventListener(type: string, handler: Function) {\n if (Platform.OS === 'android') {\n console.warn('Linking.addEventListener is not supported on Android');\n } else {\n invariant(\n type === 'url',\n 'Linking only supports `url` events'\n );\n var listener = RCTDeviceEventEmitter.addListener(\n DEVICE_NOTIF_EVENT,\n handler\n );\n _notifHandlers.set(handler, listener);\n }\n }\n\n /**\n * Remove a handler by passing the `url` event type and the handler\n *\n * @platform ios\n */\n static removeEventListener(type: string, handler: Function ) {\n if (Platform.OS === 'android') {\n console.warn('Linking.removeEventListener is not supported on Android');\n } else {\n invariant(\n type === 'url',\n 'Linking only supports `url` events'\n );\n var listener = _notifHandlers.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _notifHandlers.delete(handler);\n }\n }\n\n /**\n * Try to open the given `url` with any of the installed apps.\n *\n * You can use other URLs, like a location (e.g. \"geo:37.484847,-122.148386\"), a contact,\n * or any other URL that can be opened with the installed apps.\n *\n * NOTE: This method will fail if the system doesn't know how to open the specified URL.\n * If you're passing in a non-http(s) URL, it's best to check {@code canOpenURL} first.\n *\n * NOTE: For web URLs, the protocol (\"http://\", \"https://\") must be set accordingly!\n */\n static openURL(url: string): Promise {\n this._validateURL(url);\n return LinkingManager.openURL(url);\n }\n\n /**\n * Determine whether or not an installed app can handle a given URL.\n *\n * NOTE: For web URLs, the protocol (\"http://\", \"https://\") must be set accordingly!\n *\n * NOTE: As of iOS 9, your app needs to provide the `LSApplicationQueriesSchemes` key\n * inside `Info.plist`.\n *\n * @param URL the URL to open\n */\n static canOpenURL(url: string): Promise {\n this._validateURL(url);\n return LinkingManager.canOpenURL(url);\n }\n\n /**\n * If the app launch was triggered by an app link with,\n * it will give the link url, otherwise it will give `null`\n *\n * NOTE: To support deep linking on Android, refer http://developer.android.com/training/app-indexing/deep-linking.html#handling-intents\n */\n static getInitialURL(): Promise {\n if (Platform.OS === 'android') {\n return IntentAndroid.getInitialURL();\n } else {\n return Promise.resolve(LinkingManagerIOS.initialURL);\n }\n }\n\n static _validateURL(url: string) {\n invariant(\n typeof url === 'string',\n 'Invalid URL: should be a string. Was: ' + url\n );\n invariant(\n url,\n 'Invalid URL: cannot be empty'\n );\n }\n}\n\nmodule.exports = Linking;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.js":{"metadata":{"mtime":1463609891000},"data":{"name":"LayoutAnimation","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48,89,145,200],"dependencies":["ReactPropTypes","UIManager","createStrictShapeTypeChecker","fbjs/lib/keyMirror"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\nvar UIManager=require('UIManager');\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar keyMirror=require('fbjs/lib/keyMirror');\n\nvar TypesEnum={\nspring:true,\nlinear:true,\neaseInEaseOut:true,\neaseIn:true,\neaseOut:true,\nkeyboard:true};\n\nvar Types=keyMirror(TypesEnum);\n\nvar PropertiesEnum={\nopacity:true,\nscaleXY:true};\n\nvar Properties=keyMirror(PropertiesEnum);\n\nvar animChecker=createStrictShapeTypeChecker({\nduration:PropTypes.number,\ndelay:PropTypes.number,\nspringDamping:PropTypes.number,\ninitialVelocity:PropTypes.number,\ntype:PropTypes.oneOf(\nObject.keys(Types)),\n\nproperty:PropTypes.oneOf(\nObject.keys(Properties))});\n\n\n\n\n\n\n\n\n\n\n\n\nvar configChecker=createStrictShapeTypeChecker({\nduration:PropTypes.number.isRequired,\ncreate:animChecker,\nupdate:animChecker,\ndelete:animChecker});\n\n\n\n\n\n\n\n\n\nfunction configureNext(config,onAnimationDidEnd){\nconfigChecker({config:config},'config','LayoutAnimation.configureNext');\nUIManager.configureNextLayoutAnimation(\nconfig,onAnimationDidEnd||function(){},function(){});}\n\n\n\nfunction create(duration,type,creationProp){\nreturn {\nduration:duration,\ncreate:{\ntype:type,\nproperty:creationProp},\n\nupdate:{\ntype:type},\n\ndelete:{\ntype:type,\nproperty:creationProp}};}\n\n\n\n\nvar Presets={\neaseInEaseOut:create(\n300,Types.easeInEaseOut,Properties.opacity),\n\nlinear:create(\n500,Types.linear,Properties.opacity),\n\nspring:{\nduration:700,\ncreate:{\ntype:Types.linear,\nproperty:Properties.opacity},\n\nupdate:{\ntype:Types.spring,\nspringDamping:0.4},\n\ndelete:{\ntype:Types.linear,\nproperty:Properties.opacity}}};\n\n\n\n\n\n\n\n\n\n\n\nvar LayoutAnimation={\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconfigureNext:configureNext,\n\n\n\ncreate:create,\nTypes:Types,\nProperties:Properties,\nconfigChecker:configChecker,\nPresets:Presets,\neaseInEaseOut:configureNext.bind(\nnull,Presets.easeInEaseOut),\n\nlinear:configureNext.bind(\nnull,Presets.linear),\n\nspring:configureNext.bind(\nnull,Presets.spring)};\n\n\n\nmodule.exports=LayoutAnimation;","map":null,"id":"LayoutAnimation","source":"/**\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 LayoutAnimation\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\nvar UIManager = require('UIManager');\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar keyMirror = require('fbjs/lib/keyMirror');\n\nvar TypesEnum = {\n spring: true,\n linear: true,\n easeInEaseOut: true,\n easeIn: true,\n easeOut: true,\n keyboard: true,\n};\nvar Types = keyMirror(TypesEnum);\n\nvar PropertiesEnum = {\n opacity: true,\n scaleXY: true,\n};\nvar Properties = keyMirror(PropertiesEnum);\n\nvar animChecker = createStrictShapeTypeChecker({\n duration: PropTypes.number,\n delay: PropTypes.number,\n springDamping: PropTypes.number,\n initialVelocity: PropTypes.number,\n type: PropTypes.oneOf(\n Object.keys(Types)\n ),\n property: PropTypes.oneOf( // Only applies to create/delete\n Object.keys(Properties)\n ),\n});\n\ntype Anim = {\n duration?: number;\n delay?: number;\n springDamping?: number;\n initialVelocity?: number;\n type?: $Enum;\n property?: $Enum;\n}\n\nvar configChecker = createStrictShapeTypeChecker({\n duration: PropTypes.number.isRequired,\n create: animChecker,\n update: animChecker,\n delete: animChecker,\n});\n\ntype Config = {\n duration: number;\n create?: Anim;\n update?: Anim;\n delete?: Anim;\n}\n\nfunction configureNext(config: Config, onAnimationDidEnd?: Function) {\n configChecker({config}, 'config', 'LayoutAnimation.configureNext');\n UIManager.configureNextLayoutAnimation(\n config, onAnimationDidEnd || function() {}, function() { /* unused */ }\n );\n}\n\nfunction create(duration: number, type, creationProp): Config {\n return {\n duration,\n create: {\n type,\n property: creationProp,\n },\n update: {\n type,\n },\n delete: {\n type,\n property: creationProp,\n },\n };\n}\n\nvar Presets = {\n easeInEaseOut: create(\n 300, Types.easeInEaseOut, Properties.opacity\n ),\n linear: create(\n 500, Types.linear, Properties.opacity\n ),\n spring: {\n duration: 700,\n create: {\n type: Types.linear,\n property: Properties.opacity,\n },\n update: {\n type: Types.spring,\n springDamping: 0.4,\n },\n delete: {\n type: Types.linear,\n property: Properties.opacity,\n },\n },\n};\n\n/**\n * Automatically animates views to their new positions when the\n * next layout happens.\n *\n * A common way to use this API is to call `LayoutAnimation.configureNext`\n * before calling `setState`.\n */\nvar LayoutAnimation = {\n /**\n * Schedules an animation to happen on the next layout.\n *\n * @param config Specifies animation properties:\n *\n * - `duration` in milliseconds\n * - `create`, config for animating in new views (see `Anim` type)\n * - `update`, config for animating views that have been updated\n * (see `Anim` type)\n *\n * @param onAnimationDidEnd Called when the animation finished.\n * Only supported on iOS.\n * @param onError Called on error. Only supported on iOS.\n */\n configureNext,\n /**\n * Helper for creating a config for `configureNext`.\n */\n create,\n Types,\n Properties,\n configChecker: configChecker,\n Presets,\n easeInEaseOut: configureNext.bind(\n null, Presets.easeInEaseOut\n ),\n linear: configureNext.bind(\n null, Presets.linear\n ),\n spring: configureNext.bind(\n null, Presets.spring\n ),\n};\n\nmodule.exports = LayoutAnimation;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Interaction/InteractionManager.js":{"metadata":{"mtime":1463609891000},"data":{"name":"InteractionManager","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52,95,128,158,195,240,288],"dependencies":["BatchedBridge","EventEmitter","Set","TaskQueue","fbjs/lib/invariant","fbjs/lib/keyMirror","setImmediate"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BatchedBridge=require('BatchedBridge');\nvar EventEmitter=require('EventEmitter');\nvar Set=require('Set');\nvar TaskQueue=require('TaskQueue');\n\nvar invariant=require('fbjs/lib/invariant');\nvar keyMirror=require('fbjs/lib/keyMirror');\nvar setImmediate=require('setImmediate');\n\n\n\n\nvar _emitter=new EventEmitter();\n\nvar DEBUG_DELAY=0;\nvar DEBUG=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\nvar InteractionManager={\nEvents:keyMirror({\ninteractionStart:true,\ninteractionComplete:true}),\n\n\n\n\n\nrunAfterInteractions:function runAfterInteractions(task){\nreturn new Promise(function(resolve){\n_scheduleUpdate();\nif(task){\n_taskQueue.enqueue(task);}\n\nvar name=task&&task.name||'?';\n_taskQueue.enqueue({run:resolve,name:'resolve '+name});});},\n\n\n\n\n\n\ncreateInteractionHandle:function createInteractionHandle(){\nDEBUG&&console.log('create interaction handle');\n_scheduleUpdate();\nvar handle=++_inc;\n_addInteractionSet.add(handle);\nreturn handle;},\n\n\n\n\n\nclearInteractionHandle:function clearInteractionHandle(handle){\nDEBUG&&console.log('clear interaction handle');\ninvariant(\n!!handle,\n'Must provide a handle to clear.');\n\n_scheduleUpdate();\n_addInteractionSet.delete(handle);\n_deleteInteractionSet.add(handle);},\n\n\naddListener:_emitter.addListener.bind(_emitter),\n\n\n\n\n\n\nsetDeadline:function setDeadline(deadline){\n_deadline=deadline;}};\n\n\n\nvar _interactionSet=new Set();\nvar _addInteractionSet=new Set();\nvar _deleteInteractionSet=new Set();\nvar _taskQueue=new TaskQueue({onMoreTasks:_scheduleUpdate});\nvar _nextUpdateHandle=0;\nvar _inc=0;\nvar _deadline=-1;\n\n\n\n\nfunction _scheduleUpdate(){\nif(!_nextUpdateHandle){\nif(_deadline>0){\n_nextUpdateHandle=setTimeout(_processUpdate,0+DEBUG_DELAY);}else \n{\n_nextUpdateHandle=setImmediate(_processUpdate);}}}\n\n\n\n\n\n\n\nfunction _processUpdate(){\n_nextUpdateHandle=0;\n\nvar interactionCount=_interactionSet.size;\n_addInteractionSet.forEach(function(handle){return (\n_interactionSet.add(handle));});\n\n_deleteInteractionSet.forEach(function(handle){return (\n_interactionSet.delete(handle));});\n\nvar nextInteractionCount=_interactionSet.size;\n\nif(interactionCount!==0&&nextInteractionCount===0){\n\n_emitter.emit(InteractionManager.Events.interactionComplete);}else \nif(interactionCount===0&&nextInteractionCount!==0){\n\n_emitter.emit(InteractionManager.Events.interactionStart);}\n\n\n\nif(nextInteractionCount===0){\nwhile(_taskQueue.hasTasksToProcess()){\n_taskQueue.processNext();\nif(_deadline>0&&\nBatchedBridge.getEventLoopRunningTime()>=_deadline){\n\n_scheduleUpdate();\nbreak;}}}\n\n\n\n_addInteractionSet.clear();\n_deleteInteractionSet.clear();}\n\n\nmodule.exports=InteractionManager;","map":null,"id":"InteractionManager","source":"/**\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 InteractionManager\n * @flow\n */\n'use strict';\n\nconst BatchedBridge = require('BatchedBridge');\nconst EventEmitter = require('EventEmitter');\nconst Set = require('Set');\nconst TaskQueue = require('TaskQueue');\n\nconst invariant = require('fbjs/lib/invariant');\nconst keyMirror = require('fbjs/lib/keyMirror');\nconst setImmediate = require('setImmediate');\n\ntype Handle = number;\nimport type {Task} from 'TaskQueue';\n\nconst _emitter = new EventEmitter();\n\nconst DEBUG_DELAY = 0;\nconst DEBUG = false;\n\n/**\n * InteractionManager allows long-running work to be scheduled after any\n * interactions/animations have completed. In particular, this allows JavaScript\n * animations to run smoothly.\n *\n * Applications can schedule tasks to run after interactions with the following:\n *\n * ```\n * InteractionManager.runAfterInteractions(() => {\n * // ...long-running synchronous task...\n * });\n * ```\n *\n * Compare this to other scheduling alternatives:\n *\n * - requestAnimationFrame(): for code that animates a view over time.\n * - setImmediate/setTimeout(): run code later, note this may delay animations.\n * - runAfterInteractions(): run code later, without delaying active animations.\n *\n * The touch handling system considers one or more active touches to be an\n * 'interaction' and will delay `runAfterInteractions()` callbacks until all\n * touches have ended or been cancelled.\n *\n * InteractionManager also allows applications to register animations by\n * creating an interaction 'handle' on animation start, and clearing it upon\n * completion:\n *\n * ```\n * var handle = InteractionManager.createInteractionHandle();\n * // run animation... (`runAfterInteractions` tasks are queued)\n * // later, on animation completion:\n * InteractionManager.clearInteractionHandle(handle);\n * // queued tasks run if all handles were cleared\n * ```\n *\n * `runAfterInteractions` takes either a plain callback function, or a\n * `PromiseTask` object with a `gen` method that returns a `Promise`. If a\n * `PromiseTask` is supplied, then it is fully resolved (including asynchronous\n * dependencies that also schedule more tasks via `runAfterInteractions`) before\n * starting on the next task that might have been queued up synchronously\n * earlier.\n *\n * By default, queued tasks are executed together in a loop in one\n * `setImmediate` batch. If `setDeadline` is called with a positive number, then\n * tasks will only be executed until the deadline (in terms of js event loop run\n * time) approaches, at which point execution will yield via setTimeout,\n * allowing events such as touches to start interactions and block queued tasks\n * from executing, making apps more responsive.\n */\nvar InteractionManager = {\n Events: keyMirror({\n interactionStart: true,\n interactionComplete: true,\n }),\n\n /**\n * Schedule a function to run after all interactions have completed.\n */\n runAfterInteractions(task: ?Task): Promise {\n return new Promise(resolve => {\n _scheduleUpdate();\n if (task) {\n _taskQueue.enqueue(task);\n }\n const name = task && task.name || '?';\n _taskQueue.enqueue({run: resolve, name: 'resolve ' + name});\n });\n },\n\n /**\n * Notify manager that an interaction has started.\n */\n createInteractionHandle(): Handle {\n DEBUG && console.log('create interaction handle');\n _scheduleUpdate();\n var handle = ++_inc;\n _addInteractionSet.add(handle);\n return handle;\n },\n\n /**\n * Notify manager that an interaction has completed.\n */\n clearInteractionHandle(handle: Handle) {\n DEBUG && console.log('clear interaction handle');\n invariant(\n !!handle,\n 'Must provide a handle to clear.'\n );\n _scheduleUpdate();\n _addInteractionSet.delete(handle);\n _deleteInteractionSet.add(handle);\n },\n\n addListener: _emitter.addListener.bind(_emitter),\n\n /**\n * A positive number will use setTimeout to schedule any tasks after the\n * eventLoopRunningTime hits the deadline value, otherwise all tasks will be\n * executed in one setImmediate batch (default).\n */\n setDeadline(deadline: number) {\n _deadline = deadline;\n },\n};\n\nconst _interactionSet = new Set();\nconst _addInteractionSet = new Set();\nconst _deleteInteractionSet = new Set();\nconst _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate});\nlet _nextUpdateHandle = 0;\nlet _inc = 0;\nlet _deadline = -1;\n\n/**\n * Schedule an asynchronous update to the interaction state.\n */\nfunction _scheduleUpdate() {\n if (!_nextUpdateHandle) {\n if (_deadline > 0) {\n _nextUpdateHandle = setTimeout(_processUpdate, 0 + DEBUG_DELAY);\n } else {\n _nextUpdateHandle = setImmediate(_processUpdate);\n }\n }\n}\n\n/**\n * Notify listeners, process queue, etc\n */\nfunction _processUpdate() {\n _nextUpdateHandle = 0;\n\n var interactionCount = _interactionSet.size;\n _addInteractionSet.forEach(handle =>\n _interactionSet.add(handle)\n );\n _deleteInteractionSet.forEach(handle =>\n _interactionSet.delete(handle)\n );\n var nextInteractionCount = _interactionSet.size;\n\n if (interactionCount !== 0 && nextInteractionCount === 0) {\n // transition from 1+ --> 0 interactions\n _emitter.emit(InteractionManager.Events.interactionComplete);\n } else if (interactionCount === 0 && nextInteractionCount !== 0) {\n // transition from 0 --> 1+ interactions\n _emitter.emit(InteractionManager.Events.interactionStart);\n }\n\n // process the queue regardless of a transition\n if (nextInteractionCount === 0) {\n while (_taskQueue.hasTasksToProcess()) {\n _taskQueue.processNext();\n if (_deadline > 0 &&\n BatchedBridge.getEventLoopRunningTime() >= _deadline) {\n // Hit deadline before processing all tasks, so process more later.\n _scheduleUpdate();\n break;\n }\n }\n }\n _addInteractionSet.clear();\n _deleteInteractionSet.clear();\n}\n\nmodule.exports = InteractionManager;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Interaction/InteractionMixin.js":{"metadata":{"mtime":1463609891000},"data":{"name":"InteractionMixin","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[52],"dependencies":["InteractionManager"],"code":"'use strict';\n\n\n\n\n\n\n\nvar InteractionManager=require('InteractionManager');\n\n\n\n\n\n\nvar InteractionMixin={\ncomponentWillUnmount:function componentWillUnmount(){\nwhile(this._interactionMixinHandles.length){\nInteractionManager.clearInteractionHandle(\nthis._interactionMixinHandles.pop());}},\n\n\n\n\n_interactionMixinHandles:[],\n\ncreateInteractionHandle:function createInteractionHandle(){\nvar handle=InteractionManager.createInteractionHandle();\nthis._interactionMixinHandles.push(handle);\nreturn handle;},\n\n\nclearInteractionHandle:function clearInteractionHandle(clearHandle){\nInteractionManager.clearInteractionHandle(clearHandle);\nthis._interactionMixinHandles=this._interactionMixinHandles.filter(\nfunction(handle){return handle!==clearHandle;});},\n\n\n\n\n\n\n\n\nrunAfterInteractions:function runAfterInteractions(callback){\nInteractionManager.runAfterInteractions(callback);}};\n\n\n\nmodule.exports=InteractionMixin;","map":null,"id":"InteractionMixin","source":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule InteractionMixin\n * @flow\n */\n'use strict';\n\nvar InteractionManager = require('InteractionManager');\n\n/**\n * This mixin provides safe versions of InteractionManager start/end methods\n * that ensures `clearInteractionHandle` is always called\n * once per start, even if the component is unmounted.\n */\nvar InteractionMixin = {\n componentWillUnmount: function() {\n while (this._interactionMixinHandles.length) {\n InteractionManager.clearInteractionHandle(\n this._interactionMixinHandles.pop()\n );\n }\n },\n\n _interactionMixinHandles: ([]: Array),\n\n createInteractionHandle: function() {\n var handle = InteractionManager.createInteractionHandle();\n this._interactionMixinHandles.push(handle);\n return handle;\n },\n\n clearInteractionHandle: function(clearHandle: number) {\n InteractionManager.clearInteractionHandle(clearHandle);\n this._interactionMixinHandles = this._interactionMixinHandles.filter(\n handle => handle !== clearHandle\n );\n },\n\n /**\n * Schedule work for after all interactions have completed.\n *\n * @param {function} callback\n */\n runAfterInteractions: function(callback: Function) {\n InteractionManager.runAfterInteractions(callback);\n },\n};\n\nmodule.exports = InteractionMixin;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Interaction/JSEventLoopWatchdog.js":{"metadata":{"mtime":1463609891000},"data":{"name":"JSEventLoopWatchdog"}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Interaction/PanResponder.js":{"metadata":{"mtime":1463609891000},"data":{"name":"PanResponder","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[57,111],"dependencies":["./InteractionManager","TouchHistoryMath"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar InteractionManager=require('./InteractionManager');\nvar TouchHistoryMath=require('TouchHistoryMath');\n\nvar currentCentroidXOfTouchesChangedAfter=TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nvar currentCentroidYOfTouchesChangedAfter=TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nvar previousCentroidXOfTouchesChangedAfter=TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nvar previousCentroidYOfTouchesChangedAfter=TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nvar currentCentroidX=TouchHistoryMath.currentCentroidX;\nvar currentCentroidY=TouchHistoryMath.currentCentroidY;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 PanResponder={\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_initializeGestureState:function _initializeGestureState(gestureState){\ngestureState.moveX=0;\ngestureState.moveY=0;\ngestureState.x0=0;\ngestureState.y0=0;\ngestureState.dx=0;\ngestureState.dy=0;\ngestureState.vx=0;\ngestureState.vy=0;\ngestureState.numberActiveTouches=0;\n\ngestureState._accountsForMovesUpTo=0;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_updateGestureStateOnMove:function _updateGestureStateOnMove(gestureState,touchHistory){\ngestureState.numberActiveTouches=touchHistory.numberActiveTouches;\ngestureState.moveX=currentCentroidXOfTouchesChangedAfter(touchHistory,gestureState._accountsForMovesUpTo);\ngestureState.moveY=currentCentroidYOfTouchesChangedAfter(touchHistory,gestureState._accountsForMovesUpTo);\nvar movedAfter=gestureState._accountsForMovesUpTo;\nvar prevX=previousCentroidXOfTouchesChangedAfter(touchHistory,movedAfter);\nvar x=currentCentroidXOfTouchesChangedAfter(touchHistory,movedAfter);\nvar prevY=previousCentroidYOfTouchesChangedAfter(touchHistory,movedAfter);\nvar y=currentCentroidYOfTouchesChangedAfter(touchHistory,movedAfter);\nvar nextDX=gestureState.dx+(x-prevX);\nvar nextDY=gestureState.dy+(y-prevY);\n\n\nvar dt=touchHistory.mostRecentTimeStamp-gestureState._accountsForMovesUpTo;\ngestureState.vx=(nextDX-gestureState.dx)/dt;\ngestureState.vy=(nextDY-gestureState.dy)/dt;\n\ngestureState.dx=nextDX;\ngestureState.dy=nextDY;\ngestureState._accountsForMovesUpTo=touchHistory.mostRecentTimeStamp;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreate:function create(config){\nvar interactionState={\nhandle:null};\n\nvar gestureState={\n\nstateID:Math.random()};\n\nPanResponder._initializeGestureState(gestureState);\nvar panHandlers={\nonStartShouldSetResponder:function onStartShouldSetResponder(e){\nreturn config.onStartShouldSetPanResponder===undefined?\nfalse:\nconfig.onStartShouldSetPanResponder(e,gestureState);},\n\nonMoveShouldSetResponder:function onMoveShouldSetResponder(e){\nreturn config.onMoveShouldSetPanResponder===undefined?\nfalse:\nconfig.onMoveShouldSetPanResponder(e,gestureState);},\n\nonStartShouldSetResponderCapture:function onStartShouldSetResponderCapture(e){\n\n\nif(e.nativeEvent.touches.length===1){\nPanResponder._initializeGestureState(gestureState);}\n\ngestureState.numberActiveTouches=e.touchHistory.numberActiveTouches;\nreturn config.onStartShouldSetPanResponderCapture!==undefined?\nconfig.onStartShouldSetPanResponderCapture(e,gestureState):\nfalse;},\n\n\nonMoveShouldSetResponderCapture:function onMoveShouldSetResponderCapture(e){\nvar touchHistory=e.touchHistory;\n\n\n\nif(gestureState._accountsForMovesUpTo===touchHistory.mostRecentTimeStamp){\nreturn false;}\n\nPanResponder._updateGestureStateOnMove(gestureState,touchHistory);\nreturn config.onMoveShouldSetPanResponderCapture?\nconfig.onMoveShouldSetPanResponderCapture(e,gestureState):\nfalse;},\n\n\nonResponderGrant:function onResponderGrant(e){\nif(!interactionState.handle){\ninteractionState.handle=InteractionManager.createInteractionHandle();}\n\ngestureState.x0=currentCentroidX(e.touchHistory);\ngestureState.y0=currentCentroidY(e.touchHistory);\ngestureState.dx=0;\ngestureState.dy=0;\nif(config.onPanResponderGrant){\nconfig.onPanResponderGrant(e,gestureState);}\n\n\nreturn config.onShouldBlockNativeResponder===undefined?\ntrue:\nconfig.onShouldBlockNativeResponder();},\n\n\nonResponderReject:function onResponderReject(e){\nclearInteractionHandle(interactionState,config.onPanResponderReject,e,gestureState);},\n\n\nonResponderRelease:function onResponderRelease(e){\nclearInteractionHandle(interactionState,config.onPanResponderRelease,e,gestureState);\nPanResponder._initializeGestureState(gestureState);},\n\n\nonResponderStart:function onResponderStart(e){\nvar touchHistory=e.touchHistory;\ngestureState.numberActiveTouches=touchHistory.numberActiveTouches;\nif(config.onPanResponderStart){\nconfig.onPanResponderStart(e,gestureState);}},\n\n\n\nonResponderMove:function onResponderMove(e){\nvar touchHistory=e.touchHistory;\n\n\nif(gestureState._accountsForMovesUpTo===touchHistory.mostRecentTimeStamp){\nreturn;}\n\n\n\nPanResponder._updateGestureStateOnMove(gestureState,touchHistory);\nif(config.onPanResponderMove){\nconfig.onPanResponderMove(e,gestureState);}},\n\n\n\nonResponderEnd:function onResponderEnd(e){\nvar touchHistory=e.touchHistory;\ngestureState.numberActiveTouches=touchHistory.numberActiveTouches;\nclearInteractionHandle(interactionState,config.onPanResponderEnd,e,gestureState);},\n\n\nonResponderTerminate:function onResponderTerminate(e){\nclearInteractionHandle(interactionState,config.onPanResponderTerminate,e,gestureState);\nPanResponder._initializeGestureState(gestureState);},\n\n\nonResponderTerminationRequest:function onResponderTerminationRequest(e){\nreturn config.onPanResponderTerminationRequest===undefined?\ntrue:\nconfig.onPanResponderTerminationRequest(e,gestureState);}};\n\n\nreturn {panHandlers:panHandlers};}};\n\n\n\nfunction clearInteractionHandle(\ninteractionState,\ncallback,\nevent,\ngestureState)\n{\nif(interactionState.handle){\nInteractionManager.clearInteractionHandle(interactionState.handle);\ninteractionState.handle=null;}\n\nif(callback){\ncallback(event,gestureState);}}\n\n\n\nmodule.exports=PanResponder;","map":null,"id":"PanResponder","source":"/**\n * Copyright (c) 2013-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 PanResponder\n */\n\n'use strict';\n\nconst InteractionManager = require('./InteractionManager');\nconst TouchHistoryMath = require('TouchHistoryMath');\n\nconst currentCentroidXOfTouchesChangedAfter = TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nconst currentCentroidYOfTouchesChangedAfter = TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nconst previousCentroidXOfTouchesChangedAfter = TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nconst previousCentroidYOfTouchesChangedAfter = TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nconst currentCentroidX = TouchHistoryMath.currentCentroidX;\nconst currentCentroidY = TouchHistoryMath.currentCentroidY;\n\n/**\n * `PanResponder` reconciles several touches into a single gesture. It makes\n * single-touch gestures resilient to extra touches, and can be used to\n * recognize simple multi-touch gestures.\n *\n * By default, `PanResponder` holds an `InteractionManager handle to block\n * long-running JS events from interrupting active gestures.\n *\n * It provides a predictable wrapper of the responder handlers provided by the\n * [gesture responder system](docs/gesture-responder-system.html).\n * For each handler, it provides a new `gestureState` object alongside the\n * native event object:\n *\n * ```\n * onPanResponderMove: (event, gestureState) => {}\n * ```\n *\n * A native event is a synthetic touch event with the following form:\n *\n * - `nativeEvent`\n * + `changedTouches` - Array of all touch events that have changed since the last event\n * + `identifier` - The ID of the touch\n * + `locationX` - The X position of the touch, relative to the element\n * + `locationY` - The Y position of the touch, relative to the element\n * + `pageX` - The X position of the touch, relative to the root element\n * + `pageY` - The Y position of the touch, relative to the root element\n * + `target` - The node id of the element receiving the touch event\n * + `timestamp` - A time identifier for the touch, useful for velocity calculation\n * + `touches` - Array of all current touches on the screen\n *\n * A `gestureState` object has the following:\n *\n * - `stateID` - ID of the gestureState- persisted as long as there at least\n * one touch on screen\n * - `moveX` - the latest screen coordinates of the recently-moved touch\n * - `moveY` - the latest screen coordinates of the recently-moved touch\n * - `x0` - the screen coordinates of the responder grant\n * - `y0` - the screen coordinates of the responder grant\n * - `dx` - accumulated distance of the gesture since the touch started\n * - `dy` - accumulated distance of the gesture since the touch started\n * - `vx` - current velocity of the gesture\n * - `vy` - current velocity of the gesture\n * - `numberActiveTouches` - Number of touches currently on screen\n *\n * ### Basic Usage\n *\n * ```\n * componentWillMount: function() {\n * this._panResponder = PanResponder.create({\n * // Ask to be the responder:\n * onStartShouldSetPanResponder: (evt, gestureState) => true,\n * onStartShouldSetPanResponderCapture: (evt, gestureState) => true,\n * onMoveShouldSetPanResponder: (evt, gestureState) => true,\n * onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,\n *\n * onPanResponderGrant: (evt, gestureState) => {\n * // The guesture has started. Show visual feedback so the user knows\n * // what is happening!\n *\n * // gestureState.{x,y}0 will be set to zero now\n * },\n * onPanResponderMove: (evt, gestureState) => {\n * // The most recent move distance is gestureState.move{X,Y}\n *\n * // The accumulated gesture distance since becoming responder is\n * // gestureState.d{x,y}\n * },\n * onPanResponderTerminationRequest: (evt, gestureState) => true,\n * onPanResponderRelease: (evt, gestureState) => {\n * // The user has released all touches while this view is the\n * // responder. This typically means a gesture has succeeded\n * },\n * onPanResponderTerminate: (evt, gestureState) => {\n * // Another component has become the responder, so this gesture\n * // should be cancelled\n * },\n * onShouldBlockNativeResponder: (evt, gestureState) => {\n * // Returns whether this component should block native components from becoming the JS\n * // responder. Returns true by default. Is currently only supported on android.\n * return true;\n * },\n * });\n * },\n *\n * render: function() {\n * return (\n * \n * );\n * },\n *\n * ```\n *\n * ### Working Example\n *\n * To see it in action, try the\n * [PanResponder example in UIExplorer](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/PanResponderExample.js)\n */\n\nconst PanResponder = {\n\n /**\n *\n * A graphical explanation of the touch data flow:\n *\n * +----------------------------+ +--------------------------------+\n * | ResponderTouchHistoryStore | |TouchHistoryMath |\n * +----------------------------+ +----------+---------------------+\n * |Global store of touchHistory| |Allocation-less math util |\n * |including activeness, start | |on touch history (centroids |\n * |position, prev/cur position.| |and multitouch movement etc) |\n * | | | |\n * +----^-----------------------+ +----^---------------------------+\n * | |\n * | (records relevant history |\n * | of touches relevant for |\n * | implementing higher level |\n * | gestures) |\n * | |\n * +----+-----------------------+ +----|---------------------------+\n * | ResponderEventPlugin | | | Your App/Component |\n * +----------------------------+ +----|---------------------------+\n * |Negotiates which view gets | Low level | | High level |\n * |onResponderMove events. | events w/ | +-+-------+ events w/ |\n * |Also records history into | touchHistory| | Pan | multitouch + |\n * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative|\n * +----------------------------+ attached to | | | distance and |\n * each event | +---------+ velocity. |\n * | |\n * | |\n * +--------------------------------+\n *\n *\n *\n * Gesture that calculates cumulative movement over time in a way that just\n * \"does the right thing\" for multiple touches. The \"right thing\" is very\n * nuanced. When moving two touches in opposite directions, the cumulative\n * distance is zero in each dimension. When two touches move in parallel five\n * pixels in the same direction, the cumulative distance is five, not ten. If\n * two touches start, one moves five in a direction, then stops and the other\n * touch moves fives in the same direction, the cumulative distance is ten.\n *\n * This logic requires a kind of processing of time \"clusters\" of touch events\n * so that two touch moves that essentially occur in parallel but move every\n * other frame respectively, are considered part of the same movement.\n *\n * Explanation of some of the non-obvious fields:\n *\n * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is\n * invalid. If a move event has been observed, `(moveX, moveY)` is the\n * centroid of the most recently moved \"cluster\" of active touches.\n * (Currently all move have the same timeStamp, but later we should add some\n * threshold for what is considered to be \"moving\"). If a palm is\n * accidentally counted as a touch, but a finger is moving greatly, the palm\n * will move slightly, but we only want to count the single moving touch.\n * - x0/y0: Centroid location (non-cumulative) at the time of becoming\n * responder.\n * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch\n * distance. Accounts for touch moves that are clustered together in time,\n * moving the same direction. Only valid when currently responder (otherwise,\n * it only represents the drag distance below the threshold).\n * - vx/vy: Velocity.\n */\n\n _initializeGestureState: function (gestureState) {\n gestureState.moveX = 0;\n gestureState.moveY = 0;\n gestureState.x0 = 0;\n gestureState.y0 = 0;\n gestureState.dx = 0;\n gestureState.dy = 0;\n gestureState.vx = 0;\n gestureState.vy = 0;\n gestureState.numberActiveTouches = 0;\n // All `gestureState` accounts for timeStamps up until:\n gestureState._accountsForMovesUpTo = 0;\n },\n\n /**\n * This is nuanced and is necessary. It is incorrect to continuously take all\n * active *and* recently moved touches, find the centroid, and track how that\n * result changes over time. Instead, we must take all recently moved\n * touches, and calculate how the centroid has changed just for those\n * recently moved touches, and append that change to an accumulator. This is\n * to (at least) handle the case where the user is moving three fingers, and\n * then one of the fingers stops but the other two continue.\n *\n * This is very different than taking all of the recently moved touches and\n * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n * changes* in the centroid of recently moved touches.\n *\n * There is also some nuance with how we handle multiple moved touches in a\n * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n * individual events, multiple touches generate two 'move' events, each of\n * them triggering `onResponderMove`. But with the way `PanResponder` works,\n * all of the gesture inference is performed on the first dispatch, since it\n * looks at all of the touches (even the ones for which there hasn't been a\n * native dispatch yet). Therefore, `PanResponder` does not call\n * `onResponderMove` passed the first dispatch. This diverges from the\n * typical responder callback pattern (without using `PanResponder`), but\n * avoids more dispatches than necessary.\n */\n _updateGestureStateOnMove: function (gestureState, touchHistory) {\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n gestureState.moveX = currentCentroidXOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);\n gestureState.moveY = currentCentroidYOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);\n const movedAfter = gestureState._accountsForMovesUpTo;\n const prevX = previousCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n const x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n const prevY = previousCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n const y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n const nextDX = gestureState.dx + (x - prevX);\n const nextDY = gestureState.dy + (y - prevY);\n\n // TODO: This must be filtered intelligently.\n const dt = touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;\n gestureState.vx = (nextDX - gestureState.dx) / dt;\n gestureState.vy = (nextDY - gestureState.dy) / dt;\n\n gestureState.dx = nextDX;\n gestureState.dy = nextDY;\n gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;\n },\n\n /**\n * @param {object} config Enhanced versions of all of the responder callbacks\n * that provide not only the typical `ResponderSyntheticEvent`, but also the\n * `PanResponder` gesture state. Simply replace the word `Responder` with\n * `PanResponder` in each of the typical `onResponder*` callbacks. For\n * example, the `config` object would look like:\n *\n * - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onPanResponderReject: (e, gestureState) => {...}`\n * - `onPanResponderGrant: (e, gestureState) => {...}`\n * - `onPanResponderStart: (e, gestureState) => {...}`\n * - `onPanResponderEnd: (e, gestureState) => {...}`\n * - `onPanResponderRelease: (e, gestureState) => {...}`\n * - `onPanResponderMove: (e, gestureState) => {...}`\n * - `onPanResponderTerminate: (e, gestureState) => {...}`\n * - `onPanResponderTerminationRequest: (e, gestureState) => {...}`\n * - `onShouldBlockNativeResponder: (e, gestureState) => {...}`\n *\n * In general, for events that have capture equivalents, we update the\n * gestureState once in the capture phase and can use it in the bubble phase\n * as well.\n *\n * Be careful with onStartShould* callbacks. They only reflect updated\n * `gestureState` for start/end events that bubble/capture to the Node.\n * Once the node is the responder, you can rely on every start/end event\n * being processed by the gesture and `gestureState` being updated\n * accordingly. (numberActiveTouches) may not be totally accurate unless you\n * are the responder.\n */\n create: function (config) {\n const interactionState = {\n handle: (null: ?number),\n };\n const gestureState = {\n // Useful for debugging\n stateID: Math.random(),\n };\n PanResponder._initializeGestureState(gestureState);\n const panHandlers = {\n onStartShouldSetResponder: function (e) {\n return config.onStartShouldSetPanResponder === undefined ?\n false :\n config.onStartShouldSetPanResponder(e, gestureState);\n },\n onMoveShouldSetResponder: function (e) {\n return config.onMoveShouldSetPanResponder === undefined ?\n false :\n config.onMoveShouldSetPanResponder(e, gestureState);\n },\n onStartShouldSetResponderCapture: function (e) {\n // TODO: Actually, we should reinitialize the state any time\n // touches.length increases from 0 active to > 0 active.\n if (e.nativeEvent.touches.length === 1) {\n PanResponder._initializeGestureState(gestureState);\n }\n gestureState.numberActiveTouches = e.touchHistory.numberActiveTouches;\n return config.onStartShouldSetPanResponderCapture !== undefined ?\n config.onStartShouldSetPanResponderCapture(e, gestureState) :\n false;\n },\n\n onMoveShouldSetResponderCapture: function (e) {\n const touchHistory = e.touchHistory;\n // Responder system incorrectly dispatches should* to current responder\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return false;\n }\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n return config.onMoveShouldSetPanResponderCapture ?\n config.onMoveShouldSetPanResponderCapture(e, gestureState) :\n false;\n },\n\n onResponderGrant: function (e) {\n if (!interactionState.handle) {\n interactionState.handle = InteractionManager.createInteractionHandle();\n }\n gestureState.x0 = currentCentroidX(e.touchHistory);\n gestureState.y0 = currentCentroidY(e.touchHistory);\n gestureState.dx = 0;\n gestureState.dy = 0;\n if (config.onPanResponderGrant) {\n config.onPanResponderGrant(e, gestureState);\n }\n // TODO: t7467124 investigate if this can be removed\n return config.onShouldBlockNativeResponder === undefined ?\n true :\n config.onShouldBlockNativeResponder();\n },\n\n onResponderReject: function (e) {\n clearInteractionHandle(interactionState, config.onPanResponderReject, e, gestureState);\n },\n\n onResponderRelease: function (e) {\n clearInteractionHandle(interactionState, config.onPanResponderRelease, e, gestureState);\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderStart: function (e) {\n const touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n if (config.onPanResponderStart) {\n config.onPanResponderStart(e, gestureState);\n }\n },\n\n onResponderMove: function (e) {\n const touchHistory = e.touchHistory;\n // Guard against the dispatch of two touch moves when there are two\n // simultaneously changed touches.\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return;\n }\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n if (config.onPanResponderMove) {\n config.onPanResponderMove(e, gestureState);\n }\n },\n\n onResponderEnd: function (e) {\n const touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n clearInteractionHandle(interactionState, config.onPanResponderEnd, e, gestureState);\n },\n\n onResponderTerminate: function (e) {\n clearInteractionHandle(interactionState, config.onPanResponderTerminate, e, gestureState);\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderTerminationRequest: function (e) {\n return config.onPanResponderTerminationRequest === undefined ?\n true :\n config.onPanResponderTerminationRequest(e, gestureState);\n }\n };\n return { panHandlers: panHandlers };\n }\n};\n\nfunction clearInteractionHandle(\n interactionState: {handle: ?number},\n callback: Function,\n event: Object,\n gestureState: Object\n) {\n if (interactionState.handle) {\n InteractionManager.clearInteractionHandle(interactionState.handle);\n interactionState.handle = null;\n }\n if (callback) {\n callback(event, gestureState);\n }\n}\n\nmodule.exports = PanResponder;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Interaction/TaskQueue.js":{"metadata":{"mtime":1463609891000},"data":{"name":"TaskQueue","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[48],"dependencies":["fbjs/lib/invariant"],"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('fbjs/lib/invariant');\n\n\n\n\n\n\n\n\n\n\n\nvar DEBUG=false;var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTaskQueue=function(){\n\n\n\n\n\n\n\nfunction TaskQueue(_ref){var onMoreTasks=_ref.onMoreTasks;babelHelpers.classCallCheck(this,TaskQueue);\nthis._onMoreTasks=onMoreTasks;\nthis._queueStack=[{tasks:[],popable:false}];}babelHelpers.createClass(TaskQueue,[{key:'enqueue',value:function enqueue(\n\n\n\n\n\n\n\ntask){\nthis._getCurrentQueue().push(task);}},{key:'hasTasksToProcess',value:function hasTasksToProcess()\n\n\n\n\n\n\n\n\n\n\n\n\n{\nreturn this._getCurrentQueue().length>0;}},{key:'processNext',value:function processNext()\n\n\n\n\n\n{\nvar queue=this._getCurrentQueue();\nif(queue.length){\nvar task=queue.shift();\ntry{\nif(task.gen){\nDEBUG&&console.log('genPromise for task '+task.name);\nthis._genPromise(task);}else \nif(task.run){\nDEBUG&&console.log('run task '+task.name);\ntask.run();}else \n{\ninvariant(\ntypeof task==='function',\n'Expected Function, SimpleTask, or PromiseTask, but got:\\n'+\nJSON.stringify(task,null,2));\n\nDEBUG&&console.log('run anonymous task');\ntask();}}\n\ncatch(e){\ne.message='TaskQueue: Error with task '+(task.name||'')+': '+\ne.message;\nthrow e;}}}},{key:'_getCurrentQueue',value:function _getCurrentQueue()\n\n\n\n\n\n\n\n{\nvar stackIdx=this._queueStack.length-1;\nvar queue=this._queueStack[stackIdx];\nif(queue.popable&&\nqueue.tasks.length===0&&\nthis._queueStack.length>1){\nthis._queueStack.pop();\nDEBUG&&console.log('popped queue: ',{stackIdx:stackIdx,queueStackSize:this._queueStack.length});\nreturn this._getCurrentQueue();}else \n{\nreturn queue.tasks;}}},{key:'_genPromise',value:function _genPromise(\n\n\n\ntask){var _this=this;\n\n\n\n\nthis._queueStack.push({tasks:[],popable:false});\nvar stackIdx=this._queueStack.length-1;\nDEBUG&&console.log('push new queue: ',{stackIdx:stackIdx});\nDEBUG&&console.log('exec gen task '+task.name);\ntask.gen().\nthen(function(){\nDEBUG&&console.log('onThen for gen task '+task.name,{stackIdx:stackIdx,queueStackSize:_this._queueStack.length});\n_this._queueStack[stackIdx].popable=true;\n_this.hasTasksToProcess()&&_this._onMoreTasks();}).\n\ncatch(function(ex){\nex.message='TaskQueue: Error resolving Promise in task '+task.name+': '+ex.message;\nthrow ex;}).\n\ndone();}}]);return TaskQueue;}();\n\n\n\n\nmodule.exports=TaskQueue;","map":null,"id":"TaskQueue","source":"/**\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 TaskQueue\n * @flow\n */\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\ntype SimpleTask = {\n name: string;\n run: () => void;\n};\ntype PromiseTask = {\n name: string;\n gen: () => Promise;\n};\nexport type Task = Function | SimpleTask | PromiseTask;\n\nconst DEBUG = false;\n\n/**\n * TaskQueue - A system for queueing and executing a mix of simple callbacks and\n * trees of dependent tasks based on Promises. No tasks are executed unless\n * `processNext` is called.\n *\n * `enqueue` takes a Task object with either a simple `run` callback, or a\n * `gen` function that returns a `Promise` and puts it in the queue. If a gen\n * function is supplied, then the promise it returns will block execution of\n * tasks already in the queue until it resolves. This can be used to make sure\n * the first task is fully resolved (including asynchronous dependencies that\n * also schedule more tasks via `enqueue`) before starting on the next task.\n * The `onMoreTasks` constructor argument is used to inform the owner that an\n * async task has resolved and that the queue should be processed again.\n *\n * Note: Tasks are only actually executed with explicit calls to `processNext`.\n */\nclass TaskQueue {\n /**\n * TaskQueue instances are self contained and independent, so multiple tasks\n * of varying semantics and priority can operate together.\n *\n * `onMoreTasks` is invoked when `PromiseTask`s resolve if there are more\n * tasks to process.\n */\n constructor({onMoreTasks}: {onMoreTasks: () => void}) {\n this._onMoreTasks = onMoreTasks;\n this._queueStack = [{tasks: [], popable: false}];\n }\n\n /**\n * Add a task to the queue. It is recommended to name your tasks for easier\n * async debugging. Tasks will not be executed until `processNext` is called\n * explicitly.\n */\n enqueue(task: Task): void {\n this._getCurrentQueue().push(task);\n }\n\n /**\n * Check to see if `processNext` should be called.\n *\n * @returns {boolean} Returns true if there are tasks that are ready to be\n * processed with `processNext`, or returns false if there are no more tasks\n * to be processed right now, although there may be tasks in the queue that\n * are blocked by earlier `PromiseTask`s that haven't resolved yet.\n * `onMoreTasks` will be called after each `PromiseTask` resolves if there are\n * tasks ready to run at that point.\n */\n hasTasksToProcess(): bool {\n return this._getCurrentQueue().length > 0;\n }\n\n /**\n * Executes the next task in the queue.\n */\n processNext(): void {\n const queue = this._getCurrentQueue();\n if (queue.length) {\n const task = queue.shift();\n try {\n if (task.gen) {\n DEBUG && console.log('genPromise for task ' + task.name);\n this._genPromise((task: any)); // Rather than annoying tagged union\n } else if (task.run) {\n DEBUG && console.log('run task ' + task.name);\n task.run();\n } else {\n invariant(\n typeof task === 'function',\n 'Expected Function, SimpleTask, or PromiseTask, but got:\\n' +\n JSON.stringify(task, null, 2)\n );\n DEBUG && console.log('run anonymous task');\n task();\n }\n } catch (e) {\n e.message = 'TaskQueue: Error with task ' + (task.name || '') + ': ' +\n e.message;\n throw e;\n }\n }\n }\n\n _queueStack: Array<{tasks: Array, popable: bool}>;\n _onMoreTasks: () => void;\n\n _getCurrentQueue(): Array {\n const stackIdx = this._queueStack.length - 1;\n const queue = this._queueStack[stackIdx];\n if (queue.popable &&\n queue.tasks.length === 0 &&\n this._queueStack.length > 1) {\n this._queueStack.pop();\n DEBUG && console.log('popped queue: ', {stackIdx, queueStackSize: this._queueStack.length});\n return this._getCurrentQueue();\n } else {\n return queue.tasks;\n }\n }\n\n _genPromise(task: PromiseTask) {\n // Each async task pushes it's own queue onto the queue stack. This\n // effectively defers execution of previously queued tasks until the promise\n // resolves, at which point we allow the new queue to be popped, which\n // happens once it is fully processed.\n this._queueStack.push({tasks: [], popable: false});\n const stackIdx = this._queueStack.length - 1;\n DEBUG && console.log('push new queue: ', {stackIdx});\n DEBUG && console.log('exec gen task ' + task.name);\n task.gen()\n .then(() => {\n DEBUG && console.log('onThen for gen task ' + task.name, {stackIdx, queueStackSize: this._queueStack.length});\n this._queueStack[stackIdx].popable = true;\n this.hasTasksToProcess() && this._onMoreTasks();\n })\n .catch((ex) => {\n ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;\n throw ex;\n })\n .done();\n }\n}\n\n\nmodule.exports = TaskQueue;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/BorderBox.js":{"metadata":{"mtime":1463609891000},"data":{"name":"BorderBox","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[164,191],"dependencies":["React","View"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/BorderBox.js';\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){babelHelpers.inherits(BorderBox,_React$Component);function BorderBox(){babelHelpers.classCallCheck(this,BorderBox);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(BorderBox).apply(this,arguments));}babelHelpers.createClass(BorderBox,[{key:'render',value:function render()\n{\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],__source:{fileName:_jsxFileName,lineNumber:30}},\nthis.props.children));}}]);return BorderBox;}(React.Component);\n\n\n\n\n\nmodule.exports=BorderBox;","map":null,"id":"BorderBox","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/BoxInspector.js":{"metadata":{"mtime":1463609891000},"data":{"name":"BoxInspector","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[167,200,232,258,295],"dependencies":["React","StyleSheet","Text","View","resolveBoxStyle"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/BoxInspector.js';\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 resolveBoxStyle=require('resolveBoxStyle');\n\nvar blank={\ntop:0,\nleft:0,\nright:0,\nbottom:0};var \n\n\nBoxInspector=function(_React$Component){babelHelpers.inherits(BoxInspector,_React$Component);function BoxInspector(){babelHelpers.classCallCheck(this,BoxInspector);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(BoxInspector).apply(this,arguments));}babelHelpers.createClass(BoxInspector,[{key:'render',value:function render()\n{\nvar frame=this.props.frame;\nvar style=this.props.style;\nvar margin=style&&resolveBoxStyle('margin',style)||blank;\nvar padding=style&&resolveBoxStyle('padding',style)||blank;\nreturn (\nReact.createElement(BoxContainer,{title:'margin',titleStyle:styles.marginLabel,box:margin,__source:{fileName:_jsxFileName,lineNumber:34}},\nReact.createElement(BoxContainer,{title:'padding',box:padding,__source:{fileName:_jsxFileName,lineNumber:35}},\nReact.createElement(View,{__source:{fileName:_jsxFileName,lineNumber:36}},\nReact.createElement(Text,{style:styles.innerText,__source:{fileName:_jsxFileName,lineNumber:37}},'(',\nframe.left,', ',frame.top,')'),\n\nReact.createElement(Text,{style:styles.innerText,__source:{fileName:_jsxFileName,lineNumber:40}},\nframe.width,' × ',frame.height)))));}}]);return BoxInspector;}(React.Component);var \n\n\n\n\n\n\n\n\nBoxContainer=function(_React$Component2){babelHelpers.inherits(BoxContainer,_React$Component2);function BoxContainer(){babelHelpers.classCallCheck(this,BoxContainer);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(BoxContainer).apply(this,arguments));}babelHelpers.createClass(BoxContainer,[{key:'render',value:function render()\n{\nvar box=this.props.box;\nreturn (\nReact.createElement(View,{style:styles.box,__source:{fileName:_jsxFileName,lineNumber:54}},\nReact.createElement(View,{style:styles.row,__source:{fileName:_jsxFileName,lineNumber:55}},\nReact.createElement(Text,{style:[this.props.titleStyle,styles.label],__source:{fileName:_jsxFileName,lineNumber:56}},this.props.title),\nReact.createElement(Text,{style:styles.boxText,__source:{fileName:_jsxFileName,lineNumber:57}},box.top)),\n\nReact.createElement(View,{style:styles.row,__source:{fileName:_jsxFileName,lineNumber:59}},\nReact.createElement(Text,{style:styles.boxText,__source:{fileName:_jsxFileName,lineNumber:60}},box.left),\nthis.props.children,\nReact.createElement(Text,{style:styles.boxText,__source:{fileName:_jsxFileName,lineNumber:62}},box.right)),\n\nReact.createElement(Text,{style:styles.boxText,__source:{fileName:_jsxFileName,lineNumber:64}},box.bottom)));}}]);return BoxContainer;}(React.Component);\n\n\n\n\n\nvar styles=StyleSheet.create({\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-around'},\n\nmarginLabel:{\nwidth:60},\n\nlabel:{\nfontSize:10,\ncolor:'rgb(255,100,0)',\nmarginLeft:5,\nflex:1,\ntextAlign:'left',\ntop:-3},\n\nbuffer:{\nfontSize:10,\ncolor:'yellow',\nflex:1,\ntextAlign:'center'},\n\ninnerText:{\ncolor:'yellow',\nfontSize:12,\ntextAlign:'center',\nwidth:70},\n\nbox:{\nborderWidth:1,\nborderColor:'grey'},\n\nboxText:{\ncolor:'white',\nfontSize:12,\nmarginHorizontal:3,\nmarginVertical:2,\ntextAlign:'center'}});\n\n\n\nmodule.exports=BoxInspector;","map":null,"id":"BoxInspector","source":"/**\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 BoxInspector\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\nvar resolveBoxStyle = require('resolveBoxStyle');\n\nvar blank = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n};\n\nclass BoxInspector extends React.Component {\n render() {\n var frame = this.props.frame;\n var style = this.props.style;\n var margin = style && resolveBoxStyle('margin', style) || blank;\n var padding = style && resolveBoxStyle('padding', style) || blank;\n return (\n \n \n \n \n ({frame.left}, {frame.top})\n \n \n {frame.width} × {frame.height}\n \n \n \n \n );\n }\n}\n\nclass BoxContainer extends React.Component {\n render() {\n var box = this.props.box;\n return (\n \n \n {this.props.title}\n {box.top}\n \n \n {box.left}\n {this.props.children}\n {box.right}\n \n {box.bottom}\n \n );\n }\n}\n\nvar styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-around',\n },\n marginLabel: {\n width: 60,\n },\n label: {\n fontSize: 10,\n color: 'rgb(255,100,0)',\n marginLeft: 5,\n flex: 1,\n textAlign: 'left',\n top: -3,\n },\n buffer: {\n fontSize: 10,\n color: 'yellow',\n flex: 1,\n textAlign: 'center',\n },\n innerText: {\n color: 'yellow',\n fontSize: 12,\n textAlign: 'center',\n width: 70,\n },\n box: {\n borderWidth: 1,\n borderColor: 'grey',\n },\n boxText: {\n color: 'white',\n fontSize: 12,\n marginHorizontal: 3,\n marginVertical: 2,\n textAlign: 'center',\n },\n});\n\nmodule.exports = BoxInspector;\n\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/ElementBox.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ElementBox","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[165,192,224,261,303,349],"dependencies":["React","View","StyleSheet","BorderBox","resolveBoxStyle","flattenStyle"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/ElementBox.js';\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){babelHelpers.inherits(ElementBox,_React$Component);function ElementBox(){babelHelpers.classCallCheck(this,ElementBox);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(ElementBox).apply(this,arguments));}babelHelpers.createClass(ElementBox,[{key:'render',value:function render()\n{\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',__source:{fileName:_jsxFileName,lineNumber:47}},\nReact.createElement(BorderBox,{box:margin,style:styles.margin,__source:{fileName:_jsxFileName,lineNumber:48}},\nReact.createElement(BorderBox,{box:padding,style:styles.padding,__source:{fileName:_jsxFileName,lineNumber:49}},\nReact.createElement(View,{style:[styles.content,contentStyle],__source:{fileName:_jsxFileName,lineNumber:50}})))));}}]);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;","map":null,"id":"ElementBox","source":"/**\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/ElementProperties.js":{"metadata":{"mtime":1463609891000},"data":{"name":"ElementProperties","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[179,218,255,292,334,366,406,466,512,547,593],"dependencies":["BoxInspector","ReactPropTypes","React","StyleInspector","StyleSheet","Text","TouchableHighlight","TouchableWithoutFeedback","View","flattenStyle","mapWithSeparator"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/ElementProperties.js';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BoxInspector=require('BoxInspector');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleInspector=require('StyleInspector');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TouchableHighlight=require('TouchableHighlight');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\nvar View=require('View');\n\nvar flattenStyle=require('flattenStyle');\nvar mapWithSeparator=require('mapWithSeparator');\n\nvar ElementProperties=React.createClass({displayName:'ElementProperties',\npropTypes:{\nhierarchy:PropTypes.array.isRequired,\nstyle:PropTypes.oneOfType([\nPropTypes.object,\nPropTypes.array,\nPropTypes.number])},\n\n\n\nrender:function render(){var _this=this;\nvar style=flattenStyle(this.props.style);\nvar selection=this.props.selection;\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{__source:{fileName:_jsxFileName,lineNumber:43}},\nReact.createElement(View,{style:styles.info,__source:{fileName:_jsxFileName,lineNumber:44}},\nReact.createElement(View,{style:styles.breadcrumb,__source:{fileName:_jsxFileName,lineNumber:45}},\nmapWithSeparator(\nthis.props.hierarchy,\nfunction(item,i){return (\nReact.createElement(TouchableHighlight,{\nkey:'item-'+i,\nstyle:[styles.breadItem,i===selection&&styles.selected],\nonPress:function onPress(){return _this.props.setSelection(i);},__source:{fileName:_jsxFileName,lineNumber:49}},\nReact.createElement(Text,{style:styles.breadItemText,__source:{fileName:_jsxFileName,lineNumber:53}},\nitem.getName?item.getName():'Unknown')));},\n\n\n\nfunction(i){return (\nReact.createElement(Text,{key:'sep-'+i,style:styles.breadSep,__source:{fileName:_jsxFileName,lineNumber:59}},'â–¸'));})),\n\n\n\n\n\nReact.createElement(View,{style:styles.row,__source:{fileName:_jsxFileName,lineNumber:65}},\nReact.createElement(StyleInspector,{style:style,__source:{fileName:_jsxFileName,lineNumber:66}}),\nReact.createElement(BoxInspector,{style:style,frame:this.props.frame,__source:{fileName:_jsxFileName,lineNumber:67}})))));}});\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nbreadSep:{\nfontSize:8,\ncolor:'white'},\n\nbreadcrumb:{\nflexDirection:'row',\nflexWrap:'wrap',\nmarginBottom:5},\n\nselected:{\nborderColor:'white',\nborderRadius:5},\n\nbreadItem:{\nborderWidth:1,\nborderColor:'transparent',\nmarginHorizontal:2},\n\nbreadItemText:{\nfontSize:10,\ncolor:'white',\nmarginHorizontal:5},\n\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-between'},\n\ninfo:{\npadding:10},\n\npath:{\ncolor:'white',\nfontSize:9}});\n\n\n\nmodule.exports=ElementProperties;","map":null,"id":"ElementProperties","source":"/**\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 ElementProperties\n * @flow\n */\n'use strict';\n\nvar BoxInspector = require('BoxInspector');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleInspector = require('StyleInspector');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TouchableHighlight = require('TouchableHighlight');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nvar View = require('View');\n\nvar flattenStyle = require('flattenStyle');\nvar mapWithSeparator = require('mapWithSeparator');\n\nvar ElementProperties = React.createClass({\n propTypes: {\n hierarchy: PropTypes.array.isRequired,\n style: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.array,\n PropTypes.number,\n ]),\n },\n\n render: function() {\n var style = flattenStyle(this.props.style);\n var selection = this.props.selection;\n // Without the `TouchableWithoutFeedback`, taps on this inspector pane\n // would change the inspected element to whatever is under the inspector\n return (\n \n \n \n {mapWithSeparator(\n this.props.hierarchy,\n (item, i) => (\n this.props.setSelection(i)}>\n \n {item.getName ? item.getName() : 'Unknown'}\n \n \n ),\n (i) => (\n \n ▸\n \n )\n )}\n \n \n \n \n \n \n \n );\n }\n});\n\nvar styles = StyleSheet.create({\n breadSep: {\n fontSize: 8,\n color: 'white',\n },\n breadcrumb: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginBottom: 5,\n },\n selected: {\n borderColor: 'white',\n borderRadius: 5,\n },\n breadItem: {\n borderWidth: 1,\n borderColor: 'transparent',\n marginHorizontal: 2,\n },\n breadItemText: {\n fontSize: 10,\n color: 'white',\n marginHorizontal: 5,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n info: {\n padding: 10,\n },\n path: {\n color: 'white',\n fontSize: 9,\n },\n});\n\nmodule.exports = ElementProperties;\n"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/Inspector.js":{"metadata":{"mtime":1463609891000},"data":{"name":"Inspector","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[172,216,264,310,347,380,417,453,498,613],"dependencies":["Dimensions","InspectorOverlay","InspectorPanel","InspectorUtils","React","StyleSheet","Touchable","NativeModules","View","flattenStyle"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/Inspector.js';\n\n\n\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 Touchable=require('Touchable');\nvar UIManager=require('NativeModules').UIManager;\nvar View=require('View');\n\nif(window.__REACT_DEVTOOLS_GLOBAL_HOOK__){\n\nwindow.__REACT_DEVTOOLS_GLOBAL_HOOK__.resolveRNStyle=require('flattenStyle');}var \n\n\nInspector=function(_React$Component){babelHelpers.inherits(Inspector,_React$Component);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Inspector(props){babelHelpers.classCallCheck(this,Inspector);var _this=babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(Inspector).call(this,\nprops));\n\n_this.state={\ndevtoolsAgent:null,\nhierarchy:null,\npanelPos:'bottom',\ninspecting:true,\nperfing:false,\ninspected:null,\nselection:null,\ninspectedViewTag:_this.props.inspectedViewTag};return _this;}babelHelpers.createClass(Inspector,[{key:'componentDidMount',value:function componentDidMount()\n\n\n\n{\nif(window.__REACT_DEVTOOLS_GLOBAL_HOOK__){\nthis.attachToDevtools=this.attachToDevtools.bind(this);\nwindow.__REACT_DEVTOOLS_GLOBAL_HOOK__.on('react-devtools',this.attachToDevtools);\n\nif(window.__REACT_DEVTOOLS_GLOBAL_HOOK__.reactDevtoolsAgent){\nthis.attachToDevtools(window.__REACT_DEVTOOLS_GLOBAL_HOOK__.reactDevtoolsAgent);}}}},{key:'componentWillUnmount',value:function componentWillUnmount()\n\n\n\n\n{\nif(this._subs){\nthis._subs.map(function(fn){return fn();});}\n\nif(window.__REACT_DEVTOOLS_GLOBAL_HOOK__){\nwindow.__REACT_DEVTOOLS_GLOBAL_HOOK__.off('react-devtools',this.attachToDevtools);}}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps(\n\n\n\nnewProps){\nthis.setState({inspectedViewTag:newProps.inspectedViewTag});}},{key:'attachToDevtools',value:function attachToDevtools(\n\n\nagent){var _this2=this;\nvar _hideWait=null;\nvar hlSub=agent.sub('highlight',function(_ref){var node=_ref.node;var name=_ref.name;var props=_ref.props;\nclearTimeout(_hideWait);\nUIManager.measure(node,function(x,y,width,height,left,top){\n_this2.setState({\nhierarchy:[],\ninspected:{\nframe:{left:left,top:top,width:width,height:height},\nstyle:props?props.style:{}}});});});\n\n\n\n\nvar hideSub=agent.sub('hideHighlight',function(){\nif(_this2.state.inspected===null){\nreturn;}\n\n\n_hideWait=setTimeout(function(){\n_this2.setState({\ninspected:null});},\n\n100);});\n\nthis._subs=[hlSub,hideSub];\n\nagent.on('shutdown',function(){\n_this2.setState({devtoolsAgent:null});\n_this2._subs=null;});\n\nthis.setState({\ndevtoolsAgent:agent});}},{key:'setSelection',value:function setSelection(\n\n\n\ni){var _this3=this;\nvar instance=this.state.hierarchy[i];\n\n\nvar publicInstance=instance['_instance']||{};\nUIManager.measure(instance.getNativeNode(),function(x,y,width,height,left,top){\n_this3.setState({\ninspected:{\nframe:{left:left,top:top,width:width,height:height},\nstyle:publicInstance.props?publicInstance.props.style:{}},\n\nselection:i});});}},{key:'onTouchInstance',value:function onTouchInstance(\n\n\n\n\ninstance,frame,pointerY){\nif(this.state.devtoolsAgent){\nthis.state.devtoolsAgent.selectFromReactInstance(instance,true);}\n\nvar hierarchy=InspectorUtils.getOwnerHierarchy(instance);\n\n\nvar publicInstance=instance._instance||{};\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:function setPerfing(\n\n\n\n\nval){\nthis.setState({\nperfing:val,\ninspecting:false,\ninspected:null});}},{key:'setInspecting',value:function setInspecting(\n\n\n\nval){\nthis.setState({\ninspecting:val,\ninspected:null});}},{key:'setTouchTargetting',value:function setTouchTargetting(\n\n\n\nval){var _this4=this;\nTouchable.TOUCH_TARGET_DEBUG=val;\nthis.props.onRequestRerenderApp(function(inspectedViewTag){\n_this4.setState({inspectedViewTag:inspectedViewTag});});}},{key:'render',value:function render()\n\n\n\n{\nvar panelContainerStyle=this.state.panelPos==='bottom'?{bottom:0}:{top:0};\nreturn (\nReact.createElement(View,{style:styles.container,pointerEvents:'box-none',__source:{fileName:_jsxFileName,lineNumber:188}},\nthis.state.inspecting&&\nReact.createElement(InspectorOverlay,{\nrootTag:this.props.rootTag,\ninspected:this.state.inspected,\ninspectedViewTag:this.state.inspectedViewTag,\nonTouchInstance:this.onTouchInstance.bind(this),__source:{fileName:_jsxFileName,lineNumber:190}}),\n\nReact.createElement(View,{style:[styles.panelContainer,panelContainerStyle],__source:{fileName:_jsxFileName,lineNumber:196}},\nReact.createElement(InspectorPanel,{\ndevtoolsIsOpen:!!this.state.devtoolsAgent,\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),\ntouchTargetting:Touchable.TOUCH_TARGET_DEBUG,\nsetTouchTargetting:this.setTouchTargetting.bind(this),__source:{fileName:_jsxFileName,lineNumber:197}}))));}}]);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;","map":null,"id":"Inspector","source":"/**\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\n/* eslint-disable dot-notation, no-dimensions-get-window */\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 Touchable = require('Touchable');\nvar UIManager = require('NativeModules').UIManager;\nvar View = require('View');\n\nif (window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n // required for devtools to be able to edit react native styles\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.resolveRNStyle = require('flattenStyle');\n}\n\nclass Inspector extends React.Component {\n props: {\n inspectedViewTag: ?number,\n rootTag: ?number,\n onRequestRerenderApp: (callback: (tag: ?number) => void) => void\n };\n\n state: {\n devtoolsAgent: ?Object,\n hierarchy: any,\n panelPos: string,\n inspecting: bool,\n selection: ?number,\n perfing: bool,\n inspected: any,\n inspectedViewTag: any,\n };\n\n _subs: ?Array<() => void>;\n\n constructor(props: Object) {\n super(props);\n\n this.state = {\n devtoolsAgent: null,\n hierarchy: null,\n panelPos: 'bottom',\n inspecting: true,\n perfing: false,\n inspected: null,\n selection: null,\n inspectedViewTag: this.props.inspectedViewTag,\n };\n }\n\n componentDidMount() {\n if (window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n (this : any).attachToDevtools = this.attachToDevtools.bind(this);\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.on('react-devtools', this.attachToDevtools);\n // if devtools is already started\n if (window.__REACT_DEVTOOLS_GLOBAL_HOOK__.reactDevtoolsAgent) {\n this.attachToDevtools(window.__REACT_DEVTOOLS_GLOBAL_HOOK__.reactDevtoolsAgent);\n }\n }\n }\n\n componentWillUnmount() {\n if (this._subs) {\n this._subs.map(fn => fn());\n }\n if (window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.off('react-devtools', this.attachToDevtools);\n }\n }\n\n componentWillReceiveProps(newProps: Object) {\n this.setState({inspectedViewTag: newProps.inspectedViewTag});\n }\n\n attachToDevtools(agent: Object) {\n var _hideWait = null;\n var hlSub = agent.sub('highlight', ({node, name, props}) => {\n clearTimeout(_hideWait);\n UIManager.measure(node, (x, y, width, height, left, top) => {\n this.setState({\n hierarchy: [],\n inspected: {\n frame: {left, top, width, height},\n style: props ? props.style : {},\n },\n });\n });\n });\n var hideSub = agent.sub('hideHighlight', () => {\n if (this.state.inspected === null) {\n return;\n }\n // we wait to actually hide in order to avoid flicker\n _hideWait = setTimeout(() => {\n this.setState({\n inspected: null,\n });\n }, 100);\n });\n this._subs = [hlSub, hideSub];\n\n agent.on('shutdown', () => {\n this.setState({devtoolsAgent: null});\n this._subs = null;\n });\n this.setState({\n devtoolsAgent: agent,\n });\n }\n\n setSelection(i: number) {\n var instance = this.state.hierarchy[i];\n // if we inspect a stateless component we can't use the getPublicInstance method\n // therefore we use the internal _instance property directly.\n var publicInstance = instance['_instance'] || {};\n UIManager.measure(instance.getNativeNode(), (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 if (this.state.devtoolsAgent) {\n this.state.devtoolsAgent.selectFromReactInstance(instance, true);\n }\n var hierarchy = InspectorUtils.getOwnerHierarchy(instance);\n // if we inspect a stateless component we can't use the getPublicInstance method\n // therefore we use the internal _instance property directly.\n var publicInstance = instance._instance || {};\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 setTouchTargetting(val: bool) {\n Touchable.TOUCH_TARGET_DEBUG = val;\n this.props.onRequestRerenderApp((inspectedViewTag) => {\n this.setState({inspectedViewTag});\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js":{"metadata":{"mtime":1463609891000},"data":{"name":"InspectorOverlay","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[176,218,255,288,325,370,402],"dependencies":["Dimensions","InspectorUtils","React","StyleSheet","NativeModules","View","ElementBox"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js';\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:{\ninspected:PropTypes.shape({\nframe:PropTypes.object,\nstyle:PropTypes.any}),\n\ninspectedViewTag:PropTypes.number,\nonTouchInstance:PropTypes.func.isRequired},\n\n\nfindViewForTouchEvent:function findViewForTouchEvent(e){var _this=this;var _e$nativeEvent$touche=\ne.nativeEvent.touches[0];var locationX=_e$nativeEvent$touche.locationX;var locationY=_e$nativeEvent$touche.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 shouldSetResponser(e){\nthis.findViewForTouchEvent(e);\nreturn true;},\n\n\nrender:function render(){\nvar content=null;\nif(this.props.inspected){\ncontent=React.createElement(ElementBox,{frame:this.props.inspected.frame,style:this.props.inspected.style,__source:{fileName:_jsxFileName,lineNumber:61}});}\n\n\nreturn (\nReact.createElement(View,{\nonStartShouldSetResponder:this.shouldSetResponser,\nonResponderMove:this.findViewForTouchEvent,\nstyle:[styles.inspector,{height:Dimensions.get('window').height}],__source:{fileName:_jsxFileName,lineNumber:65}},\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;","map":null,"id":"InspectorOverlay","source":"/**\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 inspected: PropTypes.shape({\n frame: PropTypes.object,\n style: PropTypes.any,\n }),\n inspectedViewTag: PropTypes.number,\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"}}},"/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/InspectorPanel.js":{"metadata":{"mtime":1463609891000},"data":{"name":"InspectorPanel","k1StnWBuVRLSsRlgaU/6KQ==\u0000moduleData":{"dependencyOffsets":[169,202,234,260,299,352,397,442],"dependencies":["React","StyleSheet","Text","View","ElementProperties","PerformanceOverlay","Touchable","TouchableHighlight"],"code":"'use strict';var _jsxFileName='/Users/Matt/Apps/react-native-starter-app/node_modules/react-native/Libraries/Inspector/InspectorPanel.js';\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 Touchable=require('Touchable');\nvar TouchableHighlight=require('TouchableHighlight');\n\nvar PropTypes=React.PropTypes;var \n\nInspectorPanel=function(_React$Component){babelHelpers.inherits(InspectorPanel,_React$Component);function InspectorPanel(){babelHelpers.classCallCheck(this,InspectorPanel);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(InspectorPanel).apply(this,arguments));}babelHelpers.createClass(InspectorPanel,[{key:'renderWaiting',value:function renderWaiting()\n{\nif(this.props.inspecting){\nreturn (\nReact.createElement(Text,{style:styles.waitingText,__source:{fileName:_jsxFileName,lineNumber:29}},'Tap something to inspect it'));}\n\n\n\n\nreturn React.createElement(Text,{style:styles.waitingText,__source:{fileName:_jsxFileName,lineNumber:34}},'Nothing is inspected');}},{key:'render',value:function render()\n\n\n{\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,__source:{fileName:_jsxFileName,lineNumber:41}});}else \n\n\nif(this.props.perfing){\ncontents=\nReact.createElement(PerformanceOverlay,{__source:{fileName:_jsxFileName,lineNumber:51}});}else \n\n{\ncontents=\nReact.createElement(View,{style:styles.waiting,__source:{fileName:_jsxFileName,lineNumber:55}},\nthis.renderWaiting());}\n\n\n\nreturn (\nReact.createElement(View,{style:styles.container,__source:{fileName:_jsxFileName,lineNumber:61}},\n!this.props.devtoolsIsOpen&&contents,\nReact.createElement(View,{style:styles.buttonRow,__source:{fileName:_jsxFileName,lineNumber:63}},\nReact.createElement(Button,{\ntitle:'Inspect',\npressed:this.props.inspecting,\nonClick:this.props.setInspecting,__source:{fileName:_jsxFileName,lineNumber:64}}),\n\nReact.createElement(Button,{title:'Perf',\npressed:this.props.perfing,\nonClick:this.props.setPerfing,__source:{fileName:_jsxFileName,lineNumber:69}}),\n\nReact.createElement(Button,{title:'Touchables',\npressed:this.props.touchTargetting,\nonClick:this.props.setTouchTargetting,__source:{fileName:_jsxFileName,lineNumber:73}}))));}}]);return InspectorPanel;}(React.Component);\n\n\n\n\n\n\n\nInspectorPanel.propTypes={\ndevtoolsIsOpen:PropTypes.bool,\ninspecting:PropTypes.bool,\nsetInspecting:PropTypes.func,\ninspected:PropTypes.object,\nperfing:PropTypes.bool,\nsetPerfing:PropTypes.func,\ntouchTargetting:PropTypes.bool,\nsetTouchTargetting:PropTypes.func};var \n\n\nButton=function(_React$Component2){babelHelpers.inherits(Button,_React$Component2);function Button(){babelHelpers.classCallCheck(this,Button);return babelHelpers.possibleConstructorReturn(this,Object.getPrototypeOf(Button).apply(this,arguments));}babelHelpers.createClass(Button,[{key:'render',value:function render()\n{var _this3=this;\nreturn (\nReact.createElement(TouchableHighlight,{onPress:function onPress(){return _this3.props.onClick(!_this3.props.pressed);},style:[\nstyles.button,\nthis.props.pressed&&styles.buttonPressed],__source:{fileName:_jsxFileName,lineNumber:97}},\n\nReact.createElement(Text,{style:styles.buttonText,__source:{fileName:_jsxFileName,lineNumber:101}},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,\ncolor:'white'}});\n\n\n\nmodule.exports=InspectorPanel;","map":null,"id":"InspectorPanel","source":"/**\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 Touchable = require('Touchable');\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 {!this.props.devtoolsIsOpen && contents}\n \n \n