GT2/GT2-iOS/node_modules/react-devtools-core/build/backend.js.map

1 line
406 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///backend.js","webpack:///webpack/bootstrap 0ba723809147dbeaa75b","webpack:///./src/backend.js","webpack:////Users/gaearon/p/react-devtools/agent/Agent.js","webpack:////Users/gaearon/p/react-devtools/~/events/events.js","webpack:////Users/gaearon/p/react-devtools/~/object-assign/index.js","webpack:////Users/gaearon/p/react-devtools/utils/guid.js","webpack:////Users/gaearon/p/react-devtools/agent/getIn.js","webpack:////Users/gaearon/p/react-devtools/agent/Bridge.js","webpack:////Users/gaearon/p/react-devtools/agent/consts.js","webpack:////Users/gaearon/p/react-devtools/~/es6-symbol/index.js","webpack:////Users/gaearon/p/react-devtools/~/es6-symbol/is-implemented.js","webpack:////Users/gaearon/p/react-devtools/~/es6-symbol/polyfill.js","webpack:////Users/gaearon/p/react-devtools/~/d/index.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/assign/index.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/assign/is-implemented.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/assign/shim.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/keys/index.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/keys/is-implemented.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/keys/shim.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/valid-value.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/normalize-options.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/object/is-callable.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/string/#/contains/index.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/string/#/contains/is-implemented.js","webpack:////Users/gaearon/p/react-devtools/~/es5-ext/string/#/contains/shim.js","webpack:////Users/gaearon/p/react-devtools/~/es6-symbol/validate-symbol.js","webpack:////Users/gaearon/p/react-devtools/~/es6-symbol/is-symbol.js","webpack:////Users/gaearon/p/react-devtools/agent/hydrate.js","webpack:////Users/gaearon/p/react-devtools/agent/dehydrate.js","webpack:////Users/gaearon/p/react-devtools/~/fbjs/lib/performanceNow.js","webpack:////Users/gaearon/p/react-devtools/~/fbjs/lib/performance.js","webpack:////Users/gaearon/p/react-devtools/~/fbjs/lib/ExecutionEnvironment.js","webpack:////Users/gaearon/p/react-devtools/backend/installGlobalHook.js","webpack:////Users/gaearon/p/react-devtools/plugins/Relay/installRelayHook.js","webpack:////Users/gaearon/p/react-devtools/agent/inject.js","webpack:////Users/gaearon/p/react-devtools/backend/backend.js","webpack:////Users/gaearon/p/react-devtools/backend/attachRenderer.js","webpack:////Users/gaearon/p/react-devtools/backend/getData.js","webpack:////Users/gaearon/p/react-devtools/backend/copyWithSet.js","webpack:////Users/gaearon/p/react-devtools/backend/getDisplayName.js","webpack:////Users/gaearon/p/react-devtools/backend/traverseAllChildrenImpl.js","webpack:////Users/gaearon/p/react-devtools/~/fbjs/lib/invariant.js","webpack:////Users/gaearon/p/react-devtools/backend/getData012.js","webpack:////Users/gaearon/p/react-devtools/backend/attachRendererFiber.js","webpack:////Users/gaearon/p/react-devtools/backend/getDataFiber.js","webpack:////Users/gaearon/p/react-devtools/backend/ReactTypeOfWork.js","webpack:////Users/gaearon/p/react-devtools/plugins/ReactNativeStyle/setupBackend.js","webpack:////Users/gaearon/p/react-devtools/plugins/ReactNativeStyle/resolveBoxStyle.js","webpack:////Users/gaearon/p/react-devtools/plugins/Relay/backend.js","webpack:////Users/gaearon/p/react-devtools/frontend/Highlighter/setup.js","webpack:////Users/gaearon/p/react-devtools/frontend/Highlighter/Highlighter.js","webpack:////Users/gaearon/p/react-devtools/frontend/Highlighter/Overlay.js","webpack:////Users/gaearon/p/react-devtools/frontend/Themes/Fonts.js","webpack:////Users/gaearon/p/react-devtools/frontend/Highlighter/MultiOverlay.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","connectToDevTools","options","scheduleRetry","setTimeout","handleClose","hasClosed","closeListeners","forEach","fn","handleMessage","evt","data","JSON","parse","e","console","error","messageListeners","log","_ref","_ref$host","host","undefined","_ref$port","port","websocket","_ref$resolveRNStyle","resolveRNStyle","_ref$isAppActive","isAppActive","uri","ws","window","WebSocket","onclose","onerror","onmessage","onopen","wall","listen","push","onClose","send","stringify","setupBackend","agent","emit","__REACT_DEVTOOLS_GLOBAL_HOOK__","bridge","Bridge","Agent","rnStyle","rnStyleMeasure","addBridge","setupRNStyle","setupRelay","_connectTimeout","warn","once","inject","clearTimeout","installGlobalHook","installRelayHook","document","on","setupHighlighter","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","prototype","Object","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","_typeof","Symbol","iterator","obj","_createClass","defineProperties","target","props","i","length","descriptor","defineProperty","key","protoProps","staticProps","_require","EventEmitter","assign","guid","getIn","_EventEmitter","global","capabilities","_this","getPrototypeOf","internalInstancesById","Map","idsByInternalInstances","WeakMap","renderers","elementData","roots","Set","reactInternals","lastSelected","get","publicInstance","$r","_prevSelected","_scrollUpdate","isReactDOM","createElement","scroll","body","scrollIntoView","dom","editTextContent","_updateScroll","bind","addEventListener","_onScroll","_onClick","_onMouseOver","_onResize","ev","_this2","removeListener","renderer","_this3","_setState","_setProps","_setContext","_makeGlobal","highlight","highlightMany","enabled","_inspectEnabled","text","node","getNodeForID","textContent","$node","$type","type","$inst","newSelected","$0","sentSelected","selectFromDOMNode","scrollToNode","forget","domElement","nodeType","Node","ELEMENT_NODE","parentElement","scrollIntoViewIfNeeded","name","ids","_this4","nodes","component","getNativeFromReactElement","quiet","offsetFromLeaf","arguments","getIDForNode","getId","getReactElementFromNative","_ref2","path","updater","setInProps","_ref3","setInState","_ref4","setInContext","_ref5","$tmp","internalInstance","has","set","add","_this5","children","map","canUpdate","forceUpdate","_this6","requestAnimationFrame","event","stopPropagation","preventDefault","_events","_maxListeners","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","n","isNaN","er","handler","len","args","listeners","Error","err","context","Array","slice","apply","addListener","listener","newListener","warned","trace","g","fired","list","position","splice","removeAllListeners","ret","listenerCount","evlistener","emitter","toObject","val","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","source","from","symbols","to","s","getOwnPropertySymbols","Math","random","toString","substr","_toConsumableArray","arr","isArray","arr2","base","reduce","attr","concat","getWindowFunction","polyfill","String","indexOf","_extends","consts","hydrate","dehydrate","performanceNow","lastRunTimeMS","cancelIdleCallback","requestIdleCallback","cb","delayMS","startTime","didTimeout","timeRemaining","Infinity","endTime","_cbs","_inspectables","_cid","_listeners","_buffer","_flushHandle","_callers","_paused","_wall","_handleMessage","cleaned","proto","protoclean","callback","prev","scheduleFlush","timeout","flushBufferWhileIdle","deadline","chunkCount","chunkSize","round","minChunkSize","take","min","max","currentBuffer","flushBufferSlice","bufferSlice","events","san","setInspectable","ix","off","payload","cancelFlush","_handleCall","_inspectResponse","fns","handlers","result","inspectable","protod","isFn","iterVal","count","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","entry","getOwnPropertyNames","newProto","pIsFn","inspected","meta","symbol","isConcatSpreadable","toPrimitive","toStringTag","unscopables","NativeSymbol","SymbolPolyfill","HiddenSymbol","d","validateSymbol","objPrototype","globalSymbols","generateName","created","desc","ie11BugWorkaround","postfix","gs","description","__description__","__name__","for","keyFor","hasInstance","match","replace","search","species","split","valueOf","normalizeOpts","isCallable","contains","dscr","w","foo","bar","trzy","keys","dest","src","l","object","process","str","searchString","isSymbol","x","last","pop","obj_","getPropType","_reactFragment","ArrayBuffer","isView","DataView","createDehydrated","readOnly","level","byteLength","uninspectable","item","res","performance","now","Date","ExecutionEnvironment","canUseDOM","msPerformance","webkitPerformance","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","isInWorker","detectReactBuildType","version","bundleType","Function","Mount","_renderNewRootComponent","renderRootCode","hasDetectedBadDCE","hook","_renderers","helpers","checkDCE","code","reactBuildType","sub","supportsFiber","_fiberRoots","getFiberRoots","rendererID","onCommitFiberUnmount","fiber","handleCommitFiberUnmount","onCommitFiberRoot","mountedRoots","current","isKnownRoot","isUnmounting","memoizedState","element","handleCommitFiberRoot","decorate","old","_eventQueue","_listener","setRequestListener","recordRequest","start","request","requestNumber","then","response","end","textChunks","getQueryString","TEXT_CHUNK_LENGTH","getDebugName","variables","getVariables","instrumentRelayRequests","relayInternals","NetworkLayer","mutation","queries","query","instrumented","_relayInternals","subs","setReactInternals","walkTree","onMounted","addRoot","onUpdated","onUnmounted","success","reactDevtoolsAgent","attachRenderer","oldReact","React","__internals","rid","shutdown","cleanup","rootNodeIDMap","extras","isPre013","Reconciler","findFiberByHostInstance","attachRendererFiber","findNodeHandle","nativeTagToRootNodeID","nativeTag","ComponentTree","getNodeFromInstance","getClosestInstanceFromNode","getID","getNode","_rootNodeID","parentNode","oldMethods","oldRenderComponent","oldRenderRoot","decorateResult","renderComponent","_reactInternalInstance","Component","decorateMany","Mixin","mountComponent","getData012","updateComponent","unmountComponent","rootID","transaction","getData","performUpdateIfNecessary","nextChild","receiveComponent","visit","visitRoot","onMount","walkRoots","_instancesByReactRootID","_instancesByContainerID","restoreMany","onRoot","walkNode","child","olds","state","ref","_currentElement","_renderedComponent","_instance","_renderedChildren","childrenList","unfilteredChildren","filteredChildren","traverseAllChildrenImpl","_traverseContext","childType","_source","_nativeNode","_hostNode","getDisplayName","isReactTopLevelWrapper","_stringText","inst","enqueueForceUpdate","setState","setNativeProps","nativeProps","internalInst","copyWithSet","setIn","parent","copyWithSetImpl","idx","updated","cachedDisplayNames","displayName","FB_MODULE_RE","componentName","moduleName","startsWith","escape","escapeRegex","escaperLookup","=",":","escapedString","getComponentKey","index","nameSoFar","traverseContext","$$typeof","REACT_ELEMENT_TYPE","SEPARATOR","nextName","subtreeCount","nextNamePrefix","SUBSEPARATOR","iteratorFn","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","step","ii","addendum","childrenString","invariant","join","condition","format","a","b","f","argIndex","framesToPop","getOpaqueNode","opaqueNodes","alternate","hasDataChanged","prevFiber","nextFiber","tag","ClassComponent","effectTag","PerformedWork","stateNode","updateQueue","hasForceUpdate","memoizedProps","_debugSource","flushPendingEvents","pendingEvents","enqueueMount","getDataFiber","isRoot","HostRoot","enqueueUpdateIfNecessary","hasChildOrderChanged","enqueueUnmount","opaqueNode","unshift","mountFiber","outer","sibling","updateFiber","prevChildAtSameIndex","prevChild","wasMounted","isMounted","hostInstance","findHostInstanceByFiber","FunctionalComponent","HostPortal","containerInfo","HostComponent","HostText","Fragment","pendingProps","IndeterminateComponent","CoroutineComponent","CoroutineHandlerPhase","YieldComponent","_defineProperty","measureStyle","style","styleOverridesByHostComponentId","measure","y","width","height","left","top","margin","resolveBoxStyle","blank","padding","measuredLayout","shallowClone","nobj","renameStyle","oldName","newName","newStyle","customStyle","lastLength","setStyle","onCall","right","bottom","prefix","capFirst","toUpperCase","subscriptionEnabled","sendStoreData","DefaultStoreData","getNodeData","shouldEnable","_hook$_relayInternals","Highlighter","hl","hideHighlight","refreshMultiOverlay","startInspecting","stopInspecting","remove","captureSubscription","removeEventListener","makeMagnifier","button","innerHTML","backgroundColor","border","outline","cursor","fontSize","zIndex","Overlay","MultiOverlay","win","onSelect","_win","_onSelect","_overlay","_multiOverlay","_subs","_inspecting","onHover","onMouseDown","onClick","unsub","_button","removeChild","removeMultiOverlay","COMMENT_NODE","inspect","removeOverlay","refresh","cancelBubble","onclick","appendChild","findTipPos","dims","tipHeight","innerHeight","innerWidth","getElementDimensions","calculatedStyle","getComputedStyle","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","marginLeft","marginRight","marginTop","marginBottom","paddingLeft","paddingRight","paddingTop","paddingBottom","getOwnerWindow","ownerDocument","defaultView","getOwnerIframe","nodeWindow","frameElement","getBoundingClientRectWithBorderOffset","dimensions","mergeRectOffsets","getBoundingClientRect","rects","previousRect","rect","getNestedBoundingClientRect","boundaryWindow","ownerIframe","currentIframe","onlyOneMore","boxWrap","what","borderStyle","monospace","doc","container","content","borderColor","overlayStyles","background","pointerEvents","tip","borderRadius","fontFamily","family","fontWeight","sizes","normal","nameSpan","color","dimSpan","box","nodeName","toLowerCase","tipPos","large","sansSerif","small","_currentNodes","div","boxSizing"],"mappings":"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","file":"backend.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDevToolsBackend\"] = factory();\n\telse\n\t\troot[\"ReactDevToolsBackend\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDevToolsBackend\"] = factory();\n\telse\n\t\troot[\"ReactDevToolsBackend\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar Agent = __webpack_require__(1);\n\tvar Bridge = __webpack_require__(6);\n\tvar installGlobalHook = __webpack_require__(31);\n\tvar installRelayHook = __webpack_require__(32);\n\tvar inject = __webpack_require__(33);\n\tvar setupRNStyle = __webpack_require__(45);\n\tvar setupRelay = __webpack_require__(47);\n\t\n\tinstallGlobalHook(window);\n\tinstallRelayHook(window);\n\t\n\tif (window.document) {\n\t // This shell is universal, and might be used inside a web app.\n\t window.__REACT_DEVTOOLS_GLOBAL_HOOK__.on('react-devtools', function (agent) {\n\t var setupHighlighter = __webpack_require__(48);\n\t setupHighlighter(agent);\n\t });\n\t}\n\t\n\tfunction connectToDevTools(options) {\n\t var _ref = options || {},\n\t _ref$host = _ref.host,\n\t host = _ref$host === undefined ? 'localhost' : _ref$host,\n\t _ref$port = _ref.port,\n\t port = _ref$port === undefined ? 8097 : _ref$port,\n\t websocket = _ref.websocket,\n\t _ref$resolveRNStyle = _ref.resolveRNStyle,\n\t resolveRNStyle = _ref$resolveRNStyle === undefined ? null : _ref$resolveRNStyle,\n\t _ref$isAppActive = _ref.isAppActive,\n\t isAppActive = _ref$isAppActive === undefined ? function () {\n\t return true;\n\t } : _ref$isAppActive;\n\t\n\t function scheduleRetry() {\n\t // Two seconds because RN had issues with too fast retries.\n\t setTimeout(function () {\n\t return connectToDevTools(options);\n\t }, 2000);\n\t }\n\t\n\t if (!isAppActive()) {\n\t // If the app is in background, maybe retry later.\n\t // Don't actually attempt to connect until we're in foreground.\n\t scheduleRetry();\n\t return;\n\t }\n\t\n\t var messageListeners = [];\n\t var closeListeners = [];\n\t var uri = 'ws://' + host + ':' + port;\n\t // If existing websocket is passed, use it.\n\t // This is necessary to support our custom integrations.\n\t // See D6251744.\n\t var ws = websocket ? websocket : new window.WebSocket(uri);\n\t ws.onclose = handleClose;\n\t ws.onerror = handleClose;\n\t ws.onmessage = handleMessage;\n\t ws.onopen = function () {\n\t var wall = {\n\t listen: function listen(fn) {\n\t messageListeners.push(fn);\n\t },\n\t onClose: function onClose(fn) {\n\t closeListeners.push(fn);\n\t },\n\t send: function send(data) {\n\t ws.send(JSON.stringify(data));\n\t }\n\t };\n\t setupBackend(wall, resolveRNStyle);\n\t };\n\t\n\t var hasClosed = false;\n\t function handleClose() {\n\t if (!hasClosed) {\n\t hasClosed = true;\n\t scheduleRetry();\n\t closeListeners.forEach(function (fn) {\n\t return fn();\n\t });\n\t }\n\t }\n\t\n\t function handleMessage(evt) {\n\t var data;\n\t try {\n\t data = JSON.parse(evt.data);\n\t } catch (e) {\n\t console.error('failed to parse json: ' + evt.data);\n\t return;\n\t }\n\t messageListeners.forEach(function (fn) {\n\t try {\n\t fn(data);\n\t } catch (e) {\n\t // jsc doesn't play so well with tracebacks that go into eval'd code,\n\t // so the stack trace here will stop at the `eval()` call. Getting the\n\t // message that caused the error is the best we can do for now.\n\t console.log(data);\n\t throw e;\n\t }\n\t });\n\t }\n\t}\n\t\n\tfunction setupBackend(wall, resolveRNStyle) {\n\t wall.onClose(function () {\n\t if (agent) {\n\t agent.emit('shutdown');\n\t }\n\t // This appears necessary for plugin (e.g. Relay) cleanup.\n\t window.__REACT_DEVTOOLS_GLOBAL_HOOK__.emit('shutdown');\n\t bridge = null;\n\t agent = null;\n\t console.log('closing devtools');\n\t });\n\t\n\t var bridge = new Bridge(wall);\n\t var agent = new Agent(window, {\n\t rnStyle: !!resolveRNStyle,\n\t rnStyleMeasure: !!resolveRNStyle\n\t });\n\t agent.addBridge(bridge);\n\t\n\t if (resolveRNStyle) {\n\t setupRNStyle(bridge, agent, resolveRNStyle);\n\t }\n\t\n\t setupRelay(bridge, agent, window.__REACT_DEVTOOLS_GLOBAL_HOOK__);\n\t\n\t var _connectTimeout = setTimeout(function () {\n\t console.warn('react-devtools agent got no connection');\n\t }, 20000);\n\t\n\t agent.once('connected', function () {\n\t if (!agent) {\n\t return;\n\t }\n\t inject(window.__REACT_DEVTOOLS_GLOBAL_HOOK__, agent);\n\t clearTimeout(_connectTimeout);\n\t });\n\t}\n\t\n\tmodule.exports = { connectToDevTools: connectToDevTools };\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _require = __webpack_require__(2),\n\t EventEmitter = _require.EventEmitter;\n\t\n\tvar assign = __webpack_require__(3);\n\tvar guid = __webpack_require__(4);\n\tvar getIn = __webpack_require__(5);\n\t\n\t/**\n\t * The agent lives on the page in the same context as React, observes events\n\t * from the `backend`, and communicates (via a `Bridge`) with the frontend.\n\t *\n\t * It is responsible for generating string IDs (ElementID) for each react\n\t * element, maintaining a mapping of those IDs to elements, handling messages\n\t * from the frontend, and translating between react elements and native\n\t * handles.\n\t *\n\t *\n\t * React\n\t * |\n\t * v\n\t * backend\n\t * |\n\t * v\n\t * -----------\n\t * | **Agent** |\n\t * -----------\n\t * ^\n\t * |\n\t * v\n\t * (Bridge)\n\t * ^\n\t * |\n\t * serialization\n\t * |\n\t * v\n\t * (Bridge)\n\t * ^\n\t * |\n\t * v\n\t * ----------------\n\t * | Frontend Store |\n\t * ----------------\n\t *\n\t *\n\t * Events from the `backend`:\n\t * - root (got a root)\n\t * - mount (a component mounted)\n\t * - update (a component updated)\n\t * - unmount (a component mounted)\n\t *\n\t * Events from the `frontend` Store:\n\t * - see `addBridge` for subscriptions\n\t *\n\t * Events that Agent fires:\n\t * - selected\n\t * - hideHighlight\n\t * - startInspecting\n\t * - stopInspecting\n\t * - shutdown\n\t * - highlight /highlightMany\n\t * - setSelection\n\t * - root\n\t * - mount\n\t * - update\n\t * - unmount\n\t */\n\tvar Agent = function (_EventEmitter) {\n\t _inherits(Agent, _EventEmitter);\n\t\n\t // the window or global -> used to \"make a value available in the console\"\n\t function Agent(global, capabilities) {\n\t _classCallCheck(this, Agent);\n\t\n\t var _this = _possibleConstructorReturn(this, (Agent.__proto__ || Object.getPrototypeOf(Agent)).call(this));\n\t\n\t _this.global = global;\n\t _this.internalInstancesById = new Map();\n\t _this.idsByInternalInstances = new WeakMap();\n\t _this.renderers = new Map();\n\t _this.elementData = new Map();\n\t _this.roots = new Set();\n\t _this.reactInternals = {};\n\t var lastSelected;\n\t _this.on('selected', function (id) {\n\t var data = _this.elementData.get(id);\n\t if (data && data.publicInstance && _this.global.$r === lastSelected) {\n\t _this.global.$r = data.publicInstance;\n\t lastSelected = data.publicInstance;\n\t }\n\t });\n\t _this._prevSelected = null;\n\t _this._scrollUpdate = false;\n\t var isReactDOM = window.document && typeof window.document.createElement === 'function';\n\t _this.capabilities = assign({\n\t scroll: isReactDOM && typeof window.document.body.scrollIntoView === 'function',\n\t dom: isReactDOM,\n\t editTextContent: false\n\t }, capabilities);\n\t\n\t if (isReactDOM) {\n\t _this._updateScroll = _this._updateScroll.bind(_this);\n\t window.addEventListener('scroll', _this._onScroll.bind(_this), true);\n\t window.addEventListener('click', _this._onClick.bind(_this), true);\n\t window.addEventListener('mouseover', _this._onMouseOver.bind(_this), true);\n\t window.addEventListener('resize', _this._onResize.bind(_this), true);\n\t }\n\t return _this;\n\t }\n\t\n\t // returns an \"unsubscribe\" function\n\t\n\t\n\t _createClass(Agent, [{\n\t key: 'sub',\n\t value: function sub(ev, fn) {\n\t var _this2 = this;\n\t\n\t this.on(ev, fn);\n\t return function () {\n\t _this2.removeListener(ev, fn);\n\t };\n\t }\n\t }, {\n\t key: 'setReactInternals',\n\t value: function setReactInternals(renderer, reactInternals) {\n\t this.reactInternals[renderer] = reactInternals;\n\t }\n\t }, {\n\t key: 'addBridge',\n\t value: function addBridge(bridge) {\n\t var _this3 = this;\n\t\n\t /** Events received from the frontend **/\n\t // the initial handshake\n\t bridge.on('requestCapabilities', function () {\n\t bridge.send('capabilities', _this3.capabilities);\n\t _this3.emit('connected');\n\t });\n\t bridge.on('setState', this._setState.bind(this));\n\t bridge.on('setProps', this._setProps.bind(this));\n\t bridge.on('setContext', this._setContext.bind(this));\n\t bridge.on('makeGlobal', this._makeGlobal.bind(this));\n\t bridge.on('highlight', function (id) {\n\t return _this3.highlight(id);\n\t });\n\t bridge.on('highlightMany', function (id) {\n\t return _this3.highlightMany(id);\n\t });\n\t bridge.on('hideHighlight', function () {\n\t return _this3.emit('hideHighlight');\n\t });\n\t bridge.on('startInspecting', function () {\n\t return _this3.emit('startInspecting');\n\t });\n\t bridge.on('stopInspecting', function () {\n\t return _this3.emit('stopInspecting');\n\t });\n\t bridge.on('selected', function (id) {\n\t return _this3.emit('selected', id);\n\t });\n\t bridge.on('setInspectEnabled', function (enabled) {\n\t _this3._inspectEnabled = enabled;\n\t _this3.emit('stopInspecting');\n\t });\n\t bridge.on('shutdown', function () {\n\t return _this3.emit('shutdown');\n\t });\n\t bridge.on('changeTextContent', function (_ref) {\n\t var id = _ref.id,\n\t text = _ref.text;\n\t\n\t var node = _this3.getNodeForID(id);\n\t if (!node) {\n\t return;\n\t }\n\t node.textContent = text;\n\t });\n\t // used to \"inspect node in Elements pane\"\n\t bridge.on('putSelectedNode', function (id) {\n\t window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$node = _this3.getNodeForID(id);\n\t });\n\t // used to \"view source in Sources pane\"\n\t bridge.on('putSelectedInstance', function (id) {\n\t var node = _this3.elementData.get(id);\n\t if (node) {\n\t window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$type = node.type;\n\t } else {\n\t window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$type = null;\n\t }\n\t if (node && node.publicInstance) {\n\t window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$inst = node.publicInstance;\n\t } else {\n\t window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$inst = null;\n\t }\n\t });\n\t // used to select the inspected node ($0)\n\t bridge.on('checkSelection', function () {\n\t var newSelected = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$0;\n\t if (newSelected !== _this3._prevSelected) {\n\t _this3._prevSelected = newSelected;\n\t var sentSelected = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$node;\n\t if (newSelected !== sentSelected) {\n\t _this3.selectFromDOMNode(newSelected, true);\n\t }\n\t }\n\t });\n\t bridge.on('scrollToNode', function (id) {\n\t return _this3.scrollToNode(id);\n\t });\n\t bridge.on('traceupdatesstatechange', function (value) {\n\t return _this3.emit('traceupdatesstatechange', value);\n\t });\n\t bridge.on('colorizerchange', function (value) {\n\t return _this3.emit('colorizerchange', value);\n\t });\n\t\n\t /** Events sent to the frontend **/\n\t this.on('root', function (id) {\n\t return bridge.send('root', id);\n\t });\n\t this.on('mount', function (data) {\n\t return bridge.send('mount', data);\n\t });\n\t this.on('update', function (data) {\n\t return bridge.send('update', data);\n\t });\n\t this.on('unmount', function (id) {\n\t bridge.send('unmount', id);\n\t // once an element has been unmounted, the bridge doesn't need to be\n\t // able to inspect it anymore.\n\t bridge.forget(id);\n\t });\n\t this.on('setSelection', function (data) {\n\t return bridge.send('select', data);\n\t });\n\t this.on('setInspectEnabled', function (data) {\n\t return bridge.send('setInspectEnabled', data);\n\t });\n\t }\n\t }, {\n\t key: 'scrollToNode',\n\t value: function scrollToNode(id) {\n\t var node = this.getNodeForID(id);\n\t if (!node) {\n\t console.warn('unable to get the node for scrolling');\n\t return;\n\t }\n\t var domElement = node.nodeType === Node.ELEMENT_NODE ? node : node.parentElement;\n\t if (!domElement) {\n\t console.warn('unable to get the domElement for scrolling');\n\t return;\n\t }\n\t\n\t if (typeof domElement.scrollIntoViewIfNeeded === 'function') {\n\t domElement.scrollIntoViewIfNeeded();\n\t } else if (typeof domElement.scrollIntoView === 'function') {\n\t domElement.scrollIntoView();\n\t }\n\t this.highlight(id);\n\t }\n\t }, {\n\t key: 'highlight',\n\t value: function highlight(id) {\n\t var data = this.elementData.get(id);\n\t var node = this.getNodeForID(id);\n\t if (data && node) {\n\t this.emit('highlight', { node: node, name: data.name, props: data.props });\n\t }\n\t }\n\t }, {\n\t key: 'highlightMany',\n\t value: function highlightMany(ids) {\n\t var _this4 = this;\n\t\n\t var nodes = [];\n\t ids.forEach(function (id) {\n\t var node = _this4.getNodeForID(id);\n\t if (node) {\n\t nodes.push(node);\n\t }\n\t });\n\t if (nodes.length) {\n\t this.emit('highlightMany', nodes);\n\t }\n\t }\n\t }, {\n\t key: 'getNodeForID',\n\t value: function getNodeForID(id) {\n\t var component = this.internalInstancesById.get(id);\n\t if (!component) {\n\t return null;\n\t }\n\t var renderer = this.renderers.get(id);\n\t if (renderer && this.reactInternals[renderer].getNativeFromReactElement) {\n\t return this.reactInternals[renderer].getNativeFromReactElement(component);\n\t }\n\t return null;\n\t }\n\t }, {\n\t key: 'selectFromDOMNode',\n\t value: function selectFromDOMNode(node, quiet) {\n\t var offsetFromLeaf = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\t\n\t var id = this.getIDForNode(node);\n\t if (!id) {\n\t return;\n\t }\n\t this.emit('setSelection', { id: id, quiet: quiet, offsetFromLeaf: offsetFromLeaf });\n\t }\n\t\n\t // TODO: remove this method because it's breaking encapsulation.\n\t // It was used by RN inspector but this required leaking Fibers to it.\n\t // RN inspector will use selectFromDOMNode() instead now.\n\t // Remove this method in a few months after this comment was added.\n\t\n\t }, {\n\t key: 'selectFromReactInstance',\n\t value: function selectFromReactInstance(instance, quiet) {\n\t var id = this.getId(instance);\n\t if (!id) {\n\t console.log('no instance id', instance);\n\t return;\n\t }\n\t this.emit('setSelection', { id: id, quiet: quiet });\n\t }\n\t }, {\n\t key: 'getIDForNode',\n\t value: function getIDForNode(node) {\n\t if (!this.reactInternals) {\n\t return null;\n\t }\n\t var component;\n\t for (var renderer in this.reactInternals) {\n\t // If a renderer doesn't know about a reactId, it will throw an error.\n\t try {\n\t // $FlowFixMe possibly null - it's not null\n\t component = this.reactInternals[renderer].getReactElementFromNative(node);\n\t } catch (e) {}\n\t if (component) {\n\t return this.getId(component);\n\t }\n\t }\n\t return null;\n\t }\n\t }, {\n\t key: '_setProps',\n\t value: function _setProps(_ref2) {\n\t var id = _ref2.id,\n\t path = _ref2.path,\n\t value = _ref2.value;\n\t\n\t var data = this.elementData.get(id);\n\t if (data && data.updater && data.updater.setInProps) {\n\t data.updater.setInProps(path, value);\n\t } else {\n\t console.warn(\"trying to set props on a component that doesn't support it\");\n\t }\n\t }\n\t }, {\n\t key: '_setState',\n\t value: function _setState(_ref3) {\n\t var id = _ref3.id,\n\t path = _ref3.path,\n\t value = _ref3.value;\n\t\n\t var data = this.elementData.get(id);\n\t if (data && data.updater && data.updater.setInState) {\n\t data.updater.setInState(path, value);\n\t } else {\n\t console.warn(\"trying to set state on a component that doesn't support it\");\n\t }\n\t }\n\t }, {\n\t key: '_setContext',\n\t value: function _setContext(_ref4) {\n\t var id = _ref4.id,\n\t path = _ref4.path,\n\t value = _ref4.value;\n\t\n\t var data = this.elementData.get(id);\n\t if (data && data.updater && data.updater.setInContext) {\n\t data.updater.setInContext(path, value);\n\t } else {\n\t console.warn(\"trying to set context on a component that doesn't support it\");\n\t }\n\t }\n\t }, {\n\t key: '_makeGlobal',\n\t value: function _makeGlobal(_ref5) {\n\t var id = _ref5.id,\n\t path = _ref5.path;\n\t\n\t var data = this.elementData.get(id);\n\t if (!data) {\n\t return;\n\t }\n\t var value;\n\t if (path === 'instance') {\n\t value = data.publicInstance;\n\t } else {\n\t value = getIn(data, path);\n\t }\n\t this.global.$tmp = value;\n\t console.log('$tmp =', value);\n\t }\n\t }, {\n\t key: 'getId',\n\t value: function getId(internalInstance) {\n\t if ((typeof internalInstance === 'undefined' ? 'undefined' : _typeof(internalInstance)) !== 'object' || !internalInstance) {\n\t return internalInstance;\n\t }\n\t if (!this.idsByInternalInstances.has(internalInstance)) {\n\t this.idsByInternalInstances.set(internalInstance, guid());\n\t this.internalInstancesById.set(this.idsByInternalInstances.get(internalInstance), internalInstance);\n\t }\n\t return this.idsByInternalInstances.get(internalInstance);\n\t }\n\t }, {\n\t key: 'addRoot',\n\t value: function addRoot(renderer, internalInstance) {\n\t var id = this.getId(internalInstance);\n\t this.roots.add(id);\n\t this.emit('root', id);\n\t }\n\t }, {\n\t key: 'onMounted',\n\t value: function onMounted(renderer, component, data) {\n\t var _this5 = this;\n\t\n\t var id = this.getId(component);\n\t this.renderers.set(id, renderer);\n\t this.elementData.set(id, data);\n\t\n\t var send = assign({}, data);\n\t if (send.children && send.children.map) {\n\t send.children = send.children.map(function (c) {\n\t return _this5.getId(c);\n\t });\n\t }\n\t send.id = id;\n\t send.canUpdate = send.updater && !!send.updater.forceUpdate;\n\t delete send.type;\n\t delete send.updater;\n\t this.emit('mount', send);\n\t }\n\t }, {\n\t key: 'onUpdated',\n\t value: function onUpdated(component, data) {\n\t var _this6 = this;\n\t\n\t var id = this.getId(component);\n\t this.elementData.set(id, data);\n\t\n\t var send = assign({}, data);\n\t if (send.children && send.children.map) {\n\t send.children = send.children.map(function (c) {\n\t return _this6.getId(c);\n\t });\n\t }\n\t send.id = id;\n\t send.canUpdate = send.updater && !!send.updater.forceUpdate;\n\t delete send.type;\n\t delete send.updater;\n\t this.emit('update', send);\n\t }\n\t }, {\n\t key: 'onUnmounted',\n\t value: function onUnmounted(component) {\n\t var id = this.getId(component);\n\t this.elementData.delete(id);\n\t this.roots.delete(id);\n\t this.renderers.delete(id);\n\t this.emit('unmount', id);\n\t this.idsByInternalInstances.delete(component);\n\t }\n\t }, {\n\t key: '_onScroll',\n\t value: function _onScroll() {\n\t if (!this._scrollUpdate) {\n\t this._scrollUpdate = true;\n\t window.requestAnimationFrame(this._updateScroll);\n\t }\n\t }\n\t }, {\n\t key: '_updateScroll',\n\t value: function _updateScroll() {\n\t this.emit('refreshMultiOverlay');\n\t this.emit('stopInspecting');\n\t this._scrollUpdate = false;\n\t }\n\t }, {\n\t key: '_onClick',\n\t value: function _onClick(event) {\n\t if (!this._inspectEnabled) {\n\t return;\n\t }\n\t\n\t var id = this.getIDForNode(event.target);\n\t if (!id) {\n\t return;\n\t }\n\t\n\t event.stopPropagation();\n\t event.preventDefault();\n\t\n\t this.emit('setSelection', { id: id });\n\t this.emit('setInspectEnabled', false);\n\t }\n\t }, {\n\t key: '_onMouseOver',\n\t value: function _onMouseOver(event) {\n\t if (this._inspectEnabled) {\n\t var id = this.getIDForNode(event.target);\n\t if (!id) {\n\t return;\n\t }\n\t\n\t this.highlight(id);\n\t }\n\t }\n\t }, {\n\t key: '_onResize',\n\t value: function _onResize(event) {\n\t this.emit('stopInspecting');\n\t }\n\t }]);\n\t\n\t return Agent;\n\t}(EventEmitter);\n\t\n\tmodule.exports = Agent;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\tfunction EventEmitter() {\n\t this._events = this._events || {};\n\t this._maxListeners = this._maxListeners || undefined;\n\t}\n\tmodule.exports = EventEmitter;\n\t\n\t// Backwards-compat with node 0.10.x\n\tEventEmitter.EventEmitter = EventEmitter;\n\t\n\tEventEmitter.prototype._events = undefined;\n\tEventEmitter.prototype._maxListeners = undefined;\n\t\n\t// By default EventEmitters will print a warning if more than 10 listeners are\n\t// added to it. This is a useful default which helps finding memory leaks.\n\tEventEmitter.defaultMaxListeners = 10;\n\t\n\t// Obviously not all Emitters should be limited to 10. This function allows\n\t// that to be increased. Set to zero for unlimited.\n\tEventEmitter.prototype.setMaxListeners = function(n) {\n\t if (!isNumber(n) || n < 0 || isNaN(n))\n\t throw TypeError('n must be a positive number');\n\t this._maxListeners = n;\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.emit = function(type) {\n\t var er, handler, len, args, i, listeners;\n\t\n\t if (!this._events)\n\t this._events = {};\n\t\n\t // If there is no 'error' event listener then throw.\n\t if (type === 'error') {\n\t if (!this._events.error ||\n\t (isObject(this._events.error) && !this._events.error.length)) {\n\t er = arguments[1];\n\t if (er instanceof Error) {\n\t throw er; // Unhandled 'error' event\n\t } else {\n\t // At least give some kind of context to the user\n\t var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n\t err.context = er;\n\t throw err;\n\t }\n\t }\n\t }\n\t\n\t handler = this._events[type];\n\t\n\t if (isUndefined(handler))\n\t return false;\n\t\n\t if (isFunction(handler)) {\n\t switch (arguments.length) {\n\t // fast cases\n\t case 1:\n\t handler.call(this);\n\t break;\n\t case 2:\n\t handler.call(this, arguments[1]);\n\t break;\n\t case 3:\n\t handler.call(this, arguments[1], arguments[2]);\n\t break;\n\t // slower\n\t default:\n\t args = Array.prototype.slice.call(arguments, 1);\n\t handler.apply(this, args);\n\t }\n\t } else if (isObject(handler)) {\n\t args = Array.prototype.slice.call(arguments, 1);\n\t listeners = handler.slice();\n\t len = listeners.length;\n\t for (i = 0; i < len; i++)\n\t listeners[i].apply(this, args);\n\t }\n\t\n\t return true;\n\t};\n\t\n\tEventEmitter.prototype.addListener = function(type, listener) {\n\t var m;\n\t\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t if (!this._events)\n\t this._events = {};\n\t\n\t // To avoid recursion in the case that type === \"newListener\"! Before\n\t // adding it to the listeners, first emit \"newListener\".\n\t if (this._events.newListener)\n\t this.emit('newListener', type,\n\t isFunction(listener.listener) ?\n\t listener.listener : listener);\n\t\n\t if (!this._events[type])\n\t // Optimize the case of one listener. Don't need the extra array object.\n\t this._events[type] = listener;\n\t else if (isObject(this._events[type]))\n\t // If we've already got an array, just append.\n\t this._events[type].push(listener);\n\t else\n\t // Adding the second element, need to change to array.\n\t this._events[type] = [this._events[type], listener];\n\t\n\t // Check for listener leak\n\t if (isObject(this._events[type]) && !this._events[type].warned) {\n\t if (!isUndefined(this._maxListeners)) {\n\t m = this._maxListeners;\n\t } else {\n\t m = EventEmitter.defaultMaxListeners;\n\t }\n\t\n\t if (m && m > 0 && this._events[type].length > m) {\n\t this._events[type].warned = true;\n\t console.error('(node) warning: possible EventEmitter memory ' +\n\t 'leak detected. %d listeners added. ' +\n\t 'Use emitter.setMaxListeners() to increase limit.',\n\t this._events[type].length);\n\t if (typeof console.trace === 'function') {\n\t // not supported in IE 10\n\t console.trace();\n\t }\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\t\n\tEventEmitter.prototype.once = function(type, listener) {\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t var fired = false;\n\t\n\t function g() {\n\t this.removeListener(type, g);\n\t\n\t if (!fired) {\n\t fired = true;\n\t listener.apply(this, arguments);\n\t }\n\t }\n\t\n\t g.listener = listener;\n\t this.on(type, g);\n\t\n\t return this;\n\t};\n\t\n\t// emits a 'removeListener' event iff the listener was removed\n\tEventEmitter.prototype.removeListener = function(type, listener) {\n\t var list, position, length, i;\n\t\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t if (!this._events || !this._events[type])\n\t return this;\n\t\n\t list = this._events[type];\n\t length = list.length;\n\t position = -1;\n\t\n\t if (list === listener ||\n\t (isFunction(list.listener) && list.listener === listener)) {\n\t delete this._events[type];\n\t if (this._events.removeListener)\n\t this.emit('removeListener', type, listener);\n\t\n\t } else if (isObject(list)) {\n\t for (i = length; i-- > 0;) {\n\t if (list[i] === listener ||\n\t (list[i].listener && list[i].listener === listener)) {\n\t position = i;\n\t break;\n\t }\n\t }\n\t\n\t if (position < 0)\n\t return this;\n\t\n\t if (list.length === 1) {\n\t list.length = 0;\n\t delete this._events[type];\n\t } else {\n\t list.splice(position, 1);\n\t }\n\t\n\t if (this._events.removeListener)\n\t this.emit('removeListener', type, listener);\n\t }\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.removeAllListeners = function(type) {\n\t var key, listeners;\n\t\n\t if (!this._events)\n\t return this;\n\t\n\t // not listening for removeListener, no need to emit\n\t if (!this._events.removeListener) {\n\t if (arguments.length === 0)\n\t this._events = {};\n\t else if (this._events[type])\n\t delete this._events[type];\n\t return this;\n\t }\n\t\n\t // emit removeListener for all listeners on all events\n\t if (arguments.length === 0) {\n\t for (key in this._events) {\n\t if (key === 'removeListener') continue;\n\t this.removeAllListeners(key);\n\t }\n\t this.removeAllListeners('removeListener');\n\t this._events = {};\n\t return this;\n\t }\n\t\n\t listeners = this._events[type];\n\t\n\t if (isFunction(listeners)) {\n\t this.removeListener(type, listeners);\n\t } else if (listeners) {\n\t // LIFO order\n\t while (listeners.length)\n\t this.removeListener(type, listeners[listeners.length - 1]);\n\t }\n\t delete this._events[type];\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.listeners = function(type) {\n\t var ret;\n\t if (!this._events || !this._events[type])\n\t ret = [];\n\t else if (isFunction(this._events[type]))\n\t ret = [this._events[type]];\n\t else\n\t ret = this._events[type].slice();\n\t return ret;\n\t};\n\t\n\tEventEmitter.prototype.listenerCount = function(type) {\n\t if (this._events) {\n\t var evlistener = this._events[type];\n\t\n\t if (isFunction(evlistener))\n\t return 1;\n\t else if (evlistener)\n\t return evlistener.length;\n\t }\n\t return 0;\n\t};\n\t\n\tEventEmitter.listenerCount = function(emitter, type) {\n\t return emitter.listenerCount(type);\n\t};\n\t\n\tfunction isFunction(arg) {\n\t return typeof arg === 'function';\n\t}\n\t\n\tfunction isNumber(arg) {\n\t return typeof arg === 'number';\n\t}\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isUndefined(arg) {\n\t return arg === void 0;\n\t}\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t/* eslint-disable no-unused-vars */\n\t'use strict';\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\t\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\t\n\t\treturn Object(val);\n\t}\n\t\n\tmodule.exports = Object.assign || function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\t\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\t\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (Object.getOwnPropertySymbols) {\n\t\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn to;\n\t};\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tfunction guid() {\n\t return 'g' + Math.random().toString(16).substr(2);\n\t}\n\t\n\tmodule.exports = guid;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t/**\n\t * Retrieves the value from the path of nested objects\n\t * @param {Object} base Base or root object for path\n\t * @param {Array<String>} path nested path\n\t * @return {any} Value at end of path or `mull`\n\t */\n\tfunction getIn(base, path) {\n\t return path.reduce(function (obj, attr) {\n\t if (obj) {\n\t if (obj.hasOwnProperty(attr)) {\n\t return obj[attr];\n\t }\n\t if (typeof obj[Symbol.iterator] === 'function') {\n\t // Convert iterable to array and return array[index]\n\t return [].concat(_toConsumableArray(obj))[attr];\n\t }\n\t }\n\t\n\t return null;\n\t }, base);\n\t}\n\t\n\tmodule.exports = getIn;\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar consts = __webpack_require__(7);\n\tvar hydrate = __webpack_require__(26);\n\tvar dehydrate = __webpack_require__(27);\n\tvar getIn = __webpack_require__(5);\n\tvar performanceNow = __webpack_require__(28);\n\t\n\t// Use the polyfill if the function is not native implementation\n\tfunction getWindowFunction(name, polyfill) {\n\t if (String(window[name]).indexOf('[native code]') === -1) {\n\t return polyfill;\n\t }\n\t return window[name];\n\t}\n\t\n\t// Custom polyfill that runs the queue with a backoff.\n\t// If you change it, make sure it behaves reasonably well in Firefox.\n\tvar lastRunTimeMS = 5;\n\tvar cancelIdleCallback = getWindowFunction('cancelIdleCallback', clearTimeout);\n\tvar requestIdleCallback = getWindowFunction('requestIdleCallback', function (cb, options) {\n\t // Magic numbers determined by tweaking in Firefox.\n\t // There is no special meaning to them.\n\t var delayMS = 3000 * lastRunTimeMS;\n\t if (delayMS > 500) {\n\t delayMS = 500;\n\t }\n\t\n\t return setTimeout(function () {\n\t var startTime = performanceNow();\n\t cb({\n\t didTimeout: false,\n\t timeRemaining: function timeRemaining() {\n\t return Infinity;\n\t }\n\t });\n\t var endTime = performanceNow();\n\t lastRunTimeMS = (endTime - startTime) / 1000;\n\t }, delayMS);\n\t});\n\t\n\t/**\n\t * The bridge is responsible for serializing requests between the Agent and\n\t * the Frontend Store. It needs to be connected to a Wall object that can send\n\t * JSONable data to the bridge on the other side.\n\t *\n\t * complex data\n\t * |\n\t * v\n\t * [Bridge]\n\t * |\n\t * jsonable data\n\t * |\n\t * v\n\t * [wall]\n\t * |\n\t * v\n\t * ~ some barrier ~\n\t * |\n\t * v\n\t * [wall]\n\t * |\n\t * v\n\t * [Bridge]\n\t * |\n\t * v\n\t * \"hydrated\" data\n\t *\n\t * When an item is passed in that can't be serialized (anything other than a\n\t * plain array, object, or literal value), the object is \"cleaned\", and\n\t * rehydrated on the other side with `Symbol` attributes indicating that the\n\t * object needs to be inspected for more detail.\n\t *\n\t * Example:\n\t *\n\t * bridge.send('evname', {id: 'someid', foo: MyCoolObjectInstance})\n\t * ->\n\t * shows up, hydrated as\n\t * {\n\t * id: 'someid',\n\t * foo: {\n\t * [consts.name]: 'MyCoolObjectInstance',\n\t * [consts.type]: 'object',\n\t * [consts.meta]: {},\n\t * [consts.inspected]: false,\n\t * }\n\t * }\n\t *\n\t * The `consts` variables are Symbols, and as such are non-ennumerable.\n\t * The front-end therefore needs to check for `consts.inspected` on received\n\t * objects, and can thereby display object proxies and inspect them.\n\t *\n\t * Complex objects that are passed are expected to have a top-level `id`\n\t * attribute, which is used for later lookup + inspection. Once it has been\n\t * determined that an object is no longer needed, call `.forget(id)` to clean\n\t * up.\n\t */\n\tvar Bridge = function () {\n\t function Bridge(wall) {\n\t _classCallCheck(this, Bridge);\n\t\n\t this._cbs = new Map();\n\t this._inspectables = new Map();\n\t this._cid = 0;\n\t this._listeners = {};\n\t this._buffer = [];\n\t this._flushHandle = null;\n\t this._callers = {};\n\t this._paused = false;\n\t this._wall = wall;\n\t\n\t wall.listen(this._handleMessage.bind(this));\n\t }\n\t\n\t _createClass(Bridge, [{\n\t key: 'inspect',\n\t value: function inspect(id, path, cb) {\n\t var _cid = this._cid++;\n\t this._cbs.set(_cid, function (data, cleaned, proto, protoclean) {\n\t if (cleaned.length) {\n\t hydrate(data, cleaned);\n\t }\n\t if (proto && protoclean.length) {\n\t hydrate(proto, protoclean);\n\t }\n\t if (proto) {\n\t data[consts.proto] = proto;\n\t }\n\t cb(data);\n\t });\n\t\n\t this._wall.send({\n\t type: 'inspect',\n\t callback: _cid,\n\t path: path,\n\t id: id\n\t });\n\t }\n\t }, {\n\t key: 'call',\n\t value: function call(name, args, cb) {\n\t var _cid = this._cid++;\n\t this._cbs.set(_cid, cb);\n\t\n\t this._wall.send({\n\t type: 'call',\n\t callback: _cid,\n\t args: args,\n\t name: name\n\t });\n\t }\n\t }, {\n\t key: 'onCall',\n\t value: function onCall(name, handler) {\n\t if (this._callers[name]) {\n\t throw new Error('only one call handler per call name allowed');\n\t }\n\t this._callers[name] = handler;\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t this._wall.send({\n\t type: 'pause'\n\t });\n\t }\n\t }, {\n\t key: 'resume',\n\t value: function resume() {\n\t this._wall.send({\n\t type: 'resume'\n\t });\n\t }\n\t }, {\n\t key: 'setInspectable',\n\t value: function setInspectable(id, data) {\n\t var prev = this._inspectables.get(id);\n\t if (!prev) {\n\t this._inspectables.set(id, data);\n\t return;\n\t }\n\t this._inspectables.set(id, _extends({}, prev, data));\n\t }\n\t }, {\n\t key: 'send',\n\t value: function send(evt, data) {\n\t this._buffer.push({ evt: evt, data: data });\n\t this.scheduleFlush();\n\t }\n\t }, {\n\t key: 'scheduleFlush',\n\t value: function scheduleFlush() {\n\t if (!this._flushHandle && this._buffer.length) {\n\t var timeout = this._paused ? 5000 : 500;\n\t this._flushHandle = requestIdleCallback(this.flushBufferWhileIdle.bind(this), { timeout: timeout });\n\t }\n\t }\n\t }, {\n\t key: 'cancelFlush',\n\t value: function cancelFlush() {\n\t if (this._flushHandle) {\n\t cancelIdleCallback(this._flushHandle);\n\t this._flushHandle = null;\n\t }\n\t }\n\t }, {\n\t key: 'flushBufferWhileIdle',\n\t value: function flushBufferWhileIdle(deadline) {\n\t this._flushHandle = null;\n\t\n\t // Magic numbers were determined by tweaking in a heavy UI and seeing\n\t // what performs reasonably well both when DevTools are hidden and visible.\n\t // The goal is that we try to catch up but avoid blocking the UI.\n\t // When paused, it's okay to lag more, but not forever because otherwise\n\t // when user activates React tab, it will freeze syncing.\n\t var chunkCount = this._paused ? 20 : 10;\n\t var chunkSize = Math.round(this._buffer.length / chunkCount);\n\t var minChunkSize = this._paused ? 50 : 100;\n\t\n\t while (this._buffer.length && (deadline.timeRemaining() > 0 || deadline.didTimeout)) {\n\t var take = Math.min(this._buffer.length, Math.max(minChunkSize, chunkSize));\n\t var currentBuffer = this._buffer.splice(0, take);\n\t this.flushBufferSlice(currentBuffer);\n\t }\n\t\n\t if (this._buffer.length) {\n\t this.scheduleFlush();\n\t }\n\t }\n\t }, {\n\t key: 'flushBufferSlice',\n\t value: function flushBufferSlice(bufferSlice) {\n\t var _this = this;\n\t\n\t var events = bufferSlice.map(function (_ref) {\n\t var evt = _ref.evt,\n\t data = _ref.data;\n\t\n\t var cleaned = [];\n\t var san = dehydrate(data, cleaned);\n\t if (cleaned.length) {\n\t _this.setInspectable(data.id, data);\n\t }\n\t return { type: 'event', evt: evt, data: san, cleaned: cleaned };\n\t });\n\t this._wall.send({ type: 'many-events', events: events });\n\t }\n\t }, {\n\t key: 'forget',\n\t value: function forget(id) {\n\t this._inspectables.delete(id);\n\t }\n\t }, {\n\t key: 'on',\n\t value: function on(evt, fn) {\n\t if (!this._listeners[evt]) {\n\t this._listeners[evt] = [fn];\n\t } else {\n\t this._listeners[evt].push(fn);\n\t }\n\t }\n\t }, {\n\t key: 'off',\n\t value: function off(evt, fn) {\n\t if (!this._listeners[evt]) {\n\t return;\n\t }\n\t var ix = this._listeners[evt].indexOf(fn);\n\t if (ix !== -1) {\n\t this._listeners[evt].splice(ix, 1);\n\t }\n\t }\n\t }, {\n\t key: 'once',\n\t value: function once(evt, fn) {\n\t var self = this;\n\t var listener = function listener() {\n\t fn.apply(this, arguments);\n\t self.off(evt, listener);\n\t };\n\t this.on(evt, listener);\n\t }\n\t }, {\n\t key: '_handleMessage',\n\t value: function _handleMessage(payload) {\n\t var _this2 = this;\n\t\n\t if (payload.type === 'resume') {\n\t this._paused = false;\n\t this.scheduleFlush();\n\t return;\n\t }\n\t\n\t if (payload.type === 'pause') {\n\t this._paused = true;\n\t this.cancelFlush();\n\t return;\n\t }\n\t\n\t if (payload.type === 'callback') {\n\t var callback = this._cbs.get(payload.id);\n\t if (callback) {\n\t callback.apply(undefined, _toConsumableArray(payload.args));\n\t this._cbs.delete(payload.id);\n\t }\n\t return;\n\t }\n\t\n\t if (payload.type === 'call') {\n\t this._handleCall(payload.name, payload.args, payload.callback);\n\t return;\n\t }\n\t\n\t if (payload.type === 'inspect') {\n\t this._inspectResponse(payload.id, payload.path, payload.callback);\n\t return;\n\t }\n\t\n\t if (payload.type === 'event') {\n\t // console.log('[bridge<-]', payload.evt);\n\t if (payload.cleaned) {\n\t hydrate(payload.data, payload.cleaned);\n\t }\n\t var fns = this._listeners[payload.evt];\n\t var data = payload.data;\n\t if (fns) {\n\t fns.forEach(function (fn) {\n\t return fn(data);\n\t });\n\t }\n\t }\n\t\n\t if (payload.type === 'many-events') {\n\t payload.events.forEach(function (event) {\n\t // console.log('[bridge<-]', payload.evt);\n\t if (event.cleaned) {\n\t hydrate(event.data, event.cleaned);\n\t }\n\t var handlers = _this2._listeners[event.evt];\n\t if (handlers) {\n\t handlers.forEach(function (fn) {\n\t return fn(event.data);\n\t });\n\t }\n\t });\n\t }\n\t }\n\t }, {\n\t key: '_handleCall',\n\t value: function _handleCall(name, args, callback) {\n\t if (!this._callers[name]) {\n\t console.warn('unknown call: \"' + name + '\"');\n\t return;\n\t }\n\t args = !Array.isArray(args) ? [args] : args;\n\t var result;\n\t try {\n\t result = this._callers[name].apply(null, args);\n\t } catch (e) {\n\t console.error('Failed to call', e);\n\t return;\n\t }\n\t this._wall.send({\n\t type: 'callback',\n\t id: callback,\n\t args: [result]\n\t });\n\t }\n\t }, {\n\t key: '_inspectResponse',\n\t value: function _inspectResponse(id, path, callback) {\n\t var inspectable = this._inspectables.get(id);\n\t var result = {};\n\t var cleaned = [];\n\t var proto = null;\n\t var protoclean = [];\n\t\n\t if (inspectable) {\n\t var val = getIn(inspectable, path);\n\t var protod = false;\n\t var isFn = typeof val === 'function';\n\t\n\t if (val && typeof val[Symbol.iterator] === 'function') {\n\t var iterVal = Object.create({}); // flow throws \"object literal incompatible with object type\"\n\t var count = 0;\n\t var _iteratorNormalCompletion = true;\n\t var _didIteratorError = false;\n\t var _iteratorError = undefined;\n\t\n\t try {\n\t for (var _iterator = val[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t var entry = _step.value;\n\t\n\t if (count > 100) {\n\t // TODO: replace this if block with better logic to handle large iterables\n\t break;\n\t }\n\t iterVal[count] = entry;\n\t count++;\n\t }\n\t } catch (err) {\n\t _didIteratorError = true;\n\t _iteratorError = err;\n\t } finally {\n\t try {\n\t if (!_iteratorNormalCompletion && _iterator.return) {\n\t _iterator.return();\n\t }\n\t } finally {\n\t if (_didIteratorError) {\n\t throw _iteratorError;\n\t }\n\t }\n\t }\n\t\n\t val = iterVal;\n\t }\n\t\n\t Object.getOwnPropertyNames(val).forEach(function (name) {\n\t if (name === '__proto__') {\n\t protod = true;\n\t }\n\t if (isFn && (name === 'arguments' || name === 'callee' || name === 'caller')) {\n\t return;\n\t }\n\t result[name] = dehydrate(val[name], cleaned, [name]);\n\t });\n\t\n\t /* eslint-disable no-proto */\n\t if (!protod && val.__proto__ && val.constructor.name !== 'Object') {\n\t var newProto = {};\n\t var pIsFn = typeof val.__proto__ === 'function';\n\t Object.getOwnPropertyNames(val.__proto__).forEach(function (name) {\n\t if (pIsFn && (name === 'arguments' || name === 'callee' || name === 'caller')) {\n\t return;\n\t }\n\t newProto[name] = dehydrate(val.__proto__[name], protoclean, [name]);\n\t });\n\t proto = newProto;\n\t }\n\t /* eslint-enable no-proto */\n\t }\n\t\n\t this._wall.send({\n\t type: 'callback',\n\t id: callback,\n\t args: [result, cleaned, proto, protoclean]\n\t });\n\t }\n\t }]);\n\t\n\t return Bridge;\n\t}();\n\t\n\tmodule.exports = Bridge;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _Symbol = __webpack_require__(8);\n\t\n\tmodule.exports = {\n\t name: _Symbol('name'),\n\t type: _Symbol('type'),\n\t inspected: _Symbol('inspected'),\n\t meta: _Symbol('meta'),\n\t proto: _Symbol('proto')\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(9)() ? Symbol : __webpack_require__(10);\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function () {\n\t\tvar symbol;\n\t\tif (typeof Symbol !== 'function') return false;\n\t\tsymbol = Symbol('test symbol');\n\t\ttry { String(symbol); } catch (e) { return false; }\n\t\tif (typeof Symbol.iterator === 'symbol') return true;\n\t\n\t\t// Return 'true' for polyfills\n\t\tif (typeof Symbol.isConcatSpreadable !== 'object') return false;\n\t\tif (typeof Symbol.iterator !== 'object') return false;\n\t\tif (typeof Symbol.toPrimitive !== 'object') return false;\n\t\tif (typeof Symbol.toStringTag !== 'object') return false;\n\t\tif (typeof Symbol.unscopables !== 'object') return false;\n\t\n\t\treturn true;\n\t};\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// ES2015 Symbol polyfill for environments that do not support it (or partially support it_\n\t\n\t'use strict';\n\t\n\tvar d = __webpack_require__(11)\n\t , validateSymbol = __webpack_require__(24)\n\t\n\t , create = Object.create, defineProperties = Object.defineProperties\n\t , defineProperty = Object.defineProperty, objPrototype = Object.prototype\n\t , NativeSymbol, SymbolPolyfill, HiddenSymbol, globalSymbols = create(null);\n\t\n\tif (typeof Symbol === 'function') NativeSymbol = Symbol;\n\t\n\tvar generateName = (function () {\n\t\tvar created = create(null);\n\t\treturn function (desc) {\n\t\t\tvar postfix = 0, name, ie11BugWorkaround;\n\t\t\twhile (created[desc + (postfix || '')]) ++postfix;\n\t\t\tdesc += (postfix || '');\n\t\t\tcreated[desc] = true;\n\t\t\tname = '@@' + desc;\n\t\t\tdefineProperty(objPrototype, name, d.gs(null, function (value) {\n\t\t\t\t// For IE11 issue see:\n\t\t\t\t// https://connect.microsoft.com/IE/feedbackdetail/view/1928508/\n\t\t\t\t// ie11-broken-getters-on-dom-objects\n\t\t\t\t// https://github.com/medikoo/es6-symbol/issues/12\n\t\t\t\tif (ie11BugWorkaround) return;\n\t\t\t\tie11BugWorkaround = true;\n\t\t\t\tdefineProperty(this, name, d(value));\n\t\t\t\tie11BugWorkaround = false;\n\t\t\t}));\n\t\t\treturn name;\n\t\t};\n\t}());\n\t\n\t// Internal constructor (not one exposed) for creating Symbol instances.\n\t// This one is used to ensure that `someSymbol instanceof Symbol` always return false\n\tHiddenSymbol = function Symbol(description) {\n\t\tif (this instanceof HiddenSymbol) throw new TypeError('TypeError: Symbol is not a constructor');\n\t\treturn SymbolPolyfill(description);\n\t};\n\t\n\t// Exposed `Symbol` constructor\n\t// (returns instances of HiddenSymbol)\n\tmodule.exports = SymbolPolyfill = function Symbol(description) {\n\t\tvar symbol;\n\t\tif (this instanceof Symbol) throw new TypeError('TypeError: Symbol is not a constructor');\n\t\tsymbol = create(HiddenSymbol.prototype);\n\t\tdescription = (description === undefined ? '' : String(description));\n\t\treturn defineProperties(symbol, {\n\t\t\t__description__: d('', description),\n\t\t\t__name__: d('', generateName(description))\n\t\t});\n\t};\n\tdefineProperties(SymbolPolyfill, {\n\t\tfor: d(function (key) {\n\t\t\tif (globalSymbols[key]) return globalSymbols[key];\n\t\t\treturn (globalSymbols[key] = SymbolPolyfill(String(key)));\n\t\t}),\n\t\tkeyFor: d(function (s) {\n\t\t\tvar key;\n\t\t\tvalidateSymbol(s);\n\t\t\tfor (key in globalSymbols) if (globalSymbols[key] === s) return key;\n\t\t}),\n\t\n\t\t// If there's native implementation of given symbol, let's fallback to it\n\t\t// to ensure proper interoperability with other native functions e.g. Array.from\n\t\thasInstance: d('', (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill('hasInstance')),\n\t\tisConcatSpreadable: d('', (NativeSymbol && NativeSymbol.isConcatSpreadable) ||\n\t\t\tSymbolPolyfill('isConcatSpreadable')),\n\t\titerator: d('', (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill('iterator')),\n\t\tmatch: d('', (NativeSymbol && NativeSymbol.match) || SymbolPolyfill('match')),\n\t\treplace: d('', (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill('replace')),\n\t\tsearch: d('', (NativeSymbol && NativeSymbol.search) || SymbolPolyfill('search')),\n\t\tspecies: d('', (NativeSymbol && NativeSymbol.species) || SymbolPolyfill('species')),\n\t\tsplit: d('', (NativeSymbol && NativeSymbol.split) || SymbolPolyfill('split')),\n\t\ttoPrimitive: d('', (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill('toPrimitive')),\n\t\ttoStringTag: d('', (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill('toStringTag')),\n\t\tunscopables: d('', (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill('unscopables'))\n\t});\n\t\n\t// Internal tweaks for real symbol producer\n\tdefineProperties(HiddenSymbol.prototype, {\n\t\tconstructor: d(SymbolPolyfill),\n\t\ttoString: d('', function () { return this.__name__; })\n\t});\n\t\n\t// Proper implementation of methods exposed on Symbol.prototype\n\t// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype\n\tdefineProperties(SymbolPolyfill.prototype, {\n\t\ttoString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),\n\t\tvalueOf: d(function () { return validateSymbol(this); })\n\t});\n\tdefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('',\n\t\tfunction () { return validateSymbol(this); }));\n\tdefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));\n\t\n\t// Proper implementaton of toPrimitive and toStringTag for returned symbol instances\n\tdefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag,\n\t\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));\n\t\n\t// Note: It's important to define `toPrimitive` as last one, as some implementations\n\t// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)\n\t// And that may invoke error in definition flow:\n\t// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149\n\tdefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive,\n\t\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar assign = __webpack_require__(12)\n\t , normalizeOpts = __webpack_require__(19)\n\t , isCallable = __webpack_require__(20)\n\t , contains = __webpack_require__(21)\n\t\n\t , d;\n\t\n\td = module.exports = function (dscr, value/*, options*/) {\n\t\tvar c, e, w, options, desc;\n\t\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\t\toptions = value;\n\t\t\tvalue = dscr;\n\t\t\tdscr = null;\n\t\t} else {\n\t\t\toptions = arguments[2];\n\t\t}\n\t\tif (dscr == null) {\n\t\t\tc = w = true;\n\t\t\te = false;\n\t\t} else {\n\t\t\tc = contains.call(dscr, 'c');\n\t\t\te = contains.call(dscr, 'e');\n\t\t\tw = contains.call(dscr, 'w');\n\t\t}\n\t\n\t\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\t\treturn !options ? desc : assign(normalizeOpts(options), desc);\n\t};\n\t\n\td.gs = function (dscr, get, set/*, options*/) {\n\t\tvar c, e, options, desc;\n\t\tif (typeof dscr !== 'string') {\n\t\t\toptions = set;\n\t\t\tset = get;\n\t\t\tget = dscr;\n\t\t\tdscr = null;\n\t\t} else {\n\t\t\toptions = arguments[3];\n\t\t}\n\t\tif (get == null) {\n\t\t\tget = undefined;\n\t\t} else if (!isCallable(get)) {\n\t\t\toptions = get;\n\t\t\tget = set = undefined;\n\t\t} else if (set == null) {\n\t\t\tset = undefined;\n\t\t} else if (!isCallable(set)) {\n\t\t\toptions = set;\n\t\t\tset = undefined;\n\t\t}\n\t\tif (dscr == null) {\n\t\t\tc = true;\n\t\t\te = false;\n\t\t} else {\n\t\t\tc = contains.call(dscr, 'c');\n\t\t\te = contains.call(dscr, 'e');\n\t\t}\n\t\n\t\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\t\treturn !options ? desc : assign(normalizeOpts(options), desc);\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(13)()\n\t\t? Object.assign\n\t\t: __webpack_require__(14);\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function () {\n\t\tvar assign = Object.assign, obj;\n\t\tif (typeof assign !== 'function') return false;\n\t\tobj = { foo: 'raz' };\n\t\tassign(obj, { bar: 'dwa' }, { trzy: 'trzy' });\n\t\treturn (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';\n\t};\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar keys = __webpack_require__(15)\n\t , value = __webpack_require__(18)\n\t\n\t , max = Math.max;\n\t\n\tmodule.exports = function (dest, src/*, …srcn*/) {\n\t\tvar error, i, l = max(arguments.length, 2), assign;\n\t\tdest = Object(value(dest));\n\t\tassign = function (key) {\n\t\t\ttry { dest[key] = src[key]; } catch (e) {\n\t\t\t\tif (!error) error = e;\n\t\t\t}\n\t\t};\n\t\tfor (i = 1; i < l; ++i) {\n\t\t\tsrc = arguments[i];\n\t\t\tkeys(src).forEach(assign);\n\t\t}\n\t\tif (error !== undefined) throw error;\n\t\treturn dest;\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(16)()\n\t\t? Object.keys\n\t\t: __webpack_require__(17);\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function () {\n\t\ttry {\n\t\t\tObject.keys('primitive');\n\t\t\treturn true;\n\t\t} catch (e) { return false; }\n\t};\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar keys = Object.keys;\n\t\n\tmodule.exports = function (object) {\n\t\treturn keys(object == null ? object : Object(object));\n\t};\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function (value) {\n\t\tif (value == null) throw new TypeError(\"Cannot use null or undefined\");\n\t\treturn value;\n\t};\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar forEach = Array.prototype.forEach, create = Object.create;\n\t\n\tvar process = function (src, obj) {\n\t\tvar key;\n\t\tfor (key in src) obj[key] = src[key];\n\t};\n\t\n\tmodule.exports = function (options/*, …options*/) {\n\t\tvar result = create(null);\n\t\tforEach.call(arguments, function (options) {\n\t\t\tif (options == null) return;\n\t\t\tprocess(Object(options), result);\n\t\t});\n\t\treturn result;\n\t};\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t// Deprecated\n\t\n\t'use strict';\n\t\n\tmodule.exports = function (obj) { return typeof obj === 'function'; };\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(22)()\n\t\t? String.prototype.contains\n\t\t: __webpack_require__(23);\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar str = 'razdwatrzy';\n\t\n\tmodule.exports = function () {\n\t\tif (typeof str.contains !== 'function') return false;\n\t\treturn ((str.contains('dwa') === true) && (str.contains('foo') === false));\n\t};\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar indexOf = String.prototype.indexOf;\n\t\n\tmodule.exports = function (searchString/*, position*/) {\n\t\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n\t};\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar isSymbol = __webpack_require__(25);\n\t\n\tmodule.exports = function (value) {\n\t\tif (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n\t\treturn value;\n\t};\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function (x) {\n\t\treturn (x && ((typeof x === 'symbol') || (x['@@toStringTag'] === 'Symbol'))) || false;\n\t};\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar consts = __webpack_require__(7);\n\t\n\tfunction hydrate(data, cleaned) {\n\t cleaned.forEach(function (path) {\n\t var last = path.pop();\n\t var obj = path.reduce(function (obj_, attr) {\n\t return obj_ ? obj_[attr] : null;\n\t }, data);\n\t if (!obj || !obj[last]) {\n\t return;\n\t }\n\t var replace = {};\n\t replace[consts.name] = obj[last].name;\n\t replace[consts.type] = obj[last].type;\n\t replace[consts.meta] = obj[last].meta;\n\t replace[consts.inspected] = false;\n\t obj[last] = replace;\n\t });\n\t}\n\t\n\tmodule.exports = hydrate;\n\n/***/ },\n/* 27 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\t/**\n\t * Get a enhanced/artificial type string based on the object instance\n\t */\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tfunction getPropType(data) {\n\t if (!data) {\n\t return null;\n\t }\n\t var type = typeof data === 'undefined' ? 'undefined' : _typeof(data);\n\t\n\t if (type === 'object') {\n\t if (data._reactFragment) {\n\t return 'react_fragment';\n\t }\n\t if (Array.isArray(data)) {\n\t return 'array';\n\t }\n\t if (ArrayBuffer.isView(data)) {\n\t if (data instanceof DataView) {\n\t return 'data_view';\n\t }\n\t return 'typed_array';\n\t }\n\t if (data instanceof ArrayBuffer) {\n\t return 'array_buffer';\n\t }\n\t if (typeof data[Symbol.iterator] === 'function') {\n\t return 'iterator';\n\t }\n\t if (Object.prototype.toString.call(data) === '[object Date]') {\n\t return 'date';\n\t }\n\t }\n\t\n\t return type;\n\t}\n\t\n\t/**\n\t * Generate the dehydrated metadata for complex object instances\n\t */\n\tfunction createDehydrated(type, data, cleaned, path) {\n\t var meta = {};\n\t\n\t if (type === 'array' || type === 'typed_array') {\n\t meta.length = data.length;\n\t }\n\t if (type === 'iterator' || type === 'typed_array') {\n\t meta.readOnly = true;\n\t }\n\t\n\t cleaned.push(path);\n\t\n\t return {\n\t type: type,\n\t meta: meta,\n\t name: !data.constructor || data.constructor.name === 'Object' ? '' : data.constructor.name\n\t };\n\t}\n\t\n\t/**\n\t * Strip out complex data (instances, functions, and data nested > 2 levels\n\t * deep). The paths of the stripped out objects are appended to the `cleaned`\n\t * list. On the other side of the barrier, the cleaned list is used to\n\t * \"re-hydrate\" the cleaned representation into an object with symbols as\n\t * attributes, so that a sanitized object can be distinguished from a normal\n\t * object.\n\t *\n\t * Input: {\"some\": {\"attr\": fn()}, \"other\": AnInstance}\n\t * Output: {\n\t * \"some\": {\n\t * \"attr\": {\"name\": the fn.name, type: \"function\"}\n\t * },\n\t * \"other\": {\n\t * \"name\": \"AnInstance\",\n\t * \"type\": \"object\",\n\t * },\n\t * }\n\t * and cleaned = [[\"some\", \"attr\"], [\"other\"]]\n\t */\n\tfunction dehydrate(data, cleaned) {\n\t var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\t var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\t\n\t\n\t var type = getPropType(data);\n\t\n\t switch (type) {\n\t\n\t case 'function':\n\t cleaned.push(path);\n\t return {\n\t name: data.name,\n\t type: 'function'\n\t };\n\t\n\t case 'string':\n\t return data.length <= 500 ? data : data.slice(0, 500) + '...';\n\t\n\t // We have to do this assignment b/c Flow doesn't think \"symbol\" is\n\t // something typeof would return. Error 'unexpected predicate \"symbol\"'\n\t case 'symbol':\n\t cleaned.push(path);\n\t return {\n\t type: 'symbol',\n\t name: data.toString()\n\t };\n\t\n\t // React Fragments error if you try to inspect them.\n\t case 'react_fragment':\n\t return 'A React Fragment';\n\t\n\t // ArrayBuffers error if you try to inspect them.\n\t case 'array_buffer':\n\t case 'data_view':\n\t cleaned.push(path);\n\t return {\n\t type: type,\n\t name: type === 'data_view' ? 'DataView' : 'ArrayBuffer',\n\t meta: {\n\t length: data.byteLength,\n\t uninspectable: true\n\t }\n\t };\n\t\n\t case 'array':\n\t if (level > 2) {\n\t return createDehydrated(type, data, cleaned, path);\n\t }\n\t return data.map(function (item, i) {\n\t return dehydrate(item, cleaned, path.concat([i]), level + 1);\n\t });\n\t\n\t case 'typed_array':\n\t case 'iterator':\n\t return createDehydrated(type, data, cleaned, path);\n\t case 'date':\n\t cleaned.push(path);\n\t return {\n\t name: data.toString(),\n\t type: 'date',\n\t meta: {\n\t uninspectable: true\n\t }\n\t };\n\t case 'object':\n\t if (level > 2 || data.constructor && typeof data.constructor === 'function' && data.constructor.name !== 'Object') {\n\t return createDehydrated(type, data, cleaned, path);\n\t } else {\n\t\n\t var res = {};\n\t for (var name in data) {\n\t res[name] = dehydrate(data[name], cleaned, path.concat([name]), level + 1);\n\t }\n\t return res;\n\t }\n\t\n\t default:\n\t return data;\n\t }\n\t}\n\t\n\tmodule.exports = dehydrate;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule performanceNow\n\t * @typechecks\n\t */\n\t\n\t'use strict';\n\t\n\tvar performance = __webpack_require__(29);\n\t\n\tvar performanceNow;\n\t\n\t/**\n\t * Detect if we can use `window.performance.now()` and gracefully fallback to\n\t * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n\t * because of Facebook's testing infrastructure.\n\t */\n\tif (performance.now) {\n\t performanceNow = function () {\n\t return performance.now();\n\t };\n\t} else {\n\t performanceNow = function () {\n\t return Date.now();\n\t };\n\t}\n\t\n\tmodule.exports = performanceNow;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule performance\n\t * @typechecks\n\t */\n\t\n\t'use strict';\n\t\n\tvar ExecutionEnvironment = __webpack_require__(30);\n\t\n\tvar performance;\n\t\n\tif (ExecutionEnvironment.canUseDOM) {\n\t performance = window.performance || window.msPerformance || window.webkitPerformance;\n\t}\n\t\n\tmodule.exports = performance || {};\n\n/***/ },\n/* 30 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule ExecutionEnvironment\n\t */\n\t\n\t'use strict';\n\t\n\tvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\t\n\t/**\n\t * Simple, lightweight module assisting with the detection and context of\n\t * Worker. Helps avoid circular dependencies and allows code to reason about\n\t * whether or not they are in a Worker, even if they never include the main\n\t * `ReactWorker` dependency.\n\t */\n\tvar ExecutionEnvironment = {\n\t\n\t canUseDOM: canUseDOM,\n\t\n\t canUseWorkers: typeof Worker !== 'undefined',\n\t\n\t canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\t\n\t canUseViewport: canUseDOM && !!window.screen,\n\t\n\t isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\t\n\t};\n\t\n\tmodule.exports = ExecutionEnvironment;\n\n/***/ },\n/* 31 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\t/**\n\t * NOTE: This file cannot `require` any other modules. We `.toString()` the\n\t * function in some places and inject the source into the page.\n\t */\n\tfunction installGlobalHook(window) {\n\t if (window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n\t return;\n\t }\n\t function detectReactBuildType(renderer) {\n\t try {\n\t if (typeof renderer.version === 'string') {\n\t // React DOM Fiber (16+)\n\t if (renderer.bundleType > 0) {\n\t // This is not a production build.\n\t // We are currently only using 0 (PROD) and 1 (DEV)\n\t // but might add 2 (PROFILE) in the future.\n\t return 'development';\n\t }\n\t\n\t // React 16 uses flat bundles. If we report the bundle as production\n\t // version, it means we also minified and envified it ourselves.\n\t return 'production';\n\t // Note: There is still a risk that the CommonJS entry point has not\n\t // been envified or uglified. In this case the user would have *both*\n\t // development and production bundle, but only the prod one would run.\n\t // This would be really bad. We have a separate check for this because\n\t // it happens *outside* of the renderer injection. See `checkDCE` below.\n\t }\n\t var toString = Function.prototype.toString;\n\t if (renderer.Mount && renderer.Mount._renderNewRootComponent) {\n\t // React DOM Stack\n\t var renderRootCode = toString.call(renderer.Mount._renderNewRootComponent);\n\t // Filter out bad results (if that is even possible):\n\t if (renderRootCode.indexOf('function') !== 0) {\n\t // Hope for the best if we're not sure.\n\t return 'production';\n\t }\n\t // Check for React DOM Stack < 15.1.0 in development.\n\t // If it contains \"storedMeasure\" call, it's wrapped in ReactPerf (DEV only).\n\t // This would be true even if it's minified, as method name still matches.\n\t if (renderRootCode.indexOf('storedMeasure') !== -1) {\n\t return 'development';\n\t }\n\t // For other versions (and configurations) it's not so easy.\n\t // Let's quickly exclude proper production builds.\n\t // If it contains a warning message, it's either a DEV build,\n\t // or an PROD build without proper dead code elimination.\n\t if (renderRootCode.indexOf('should be a pure function') !== -1) {\n\t // Now how do we tell a DEV build from a bad PROD build?\n\t // If we see NODE_ENV, we're going to assume this is a dev build\n\t // because most likely it is referring to an empty shim.\n\t if (renderRootCode.indexOf('NODE_ENV') !== -1) {\n\t return 'development';\n\t }\n\t // If we see \"development\", we're dealing with an envified DEV build\n\t // (such as the official React DEV UMD).\n\t if (renderRootCode.indexOf('development') !== -1) {\n\t return 'development';\n\t }\n\t // I've seen process.env.NODE_ENV !== 'production' being smartly\n\t // replaced by `true` in DEV by Webpack. I don't know how that\n\t // works but we can safely guard against it because `true` was\n\t // never used in the function source since it was written.\n\t if (renderRootCode.indexOf('true') !== -1) {\n\t return 'development';\n\t }\n\t // By now either it is a production build that has not been minified,\n\t // or (worse) this is a minified development build using non-standard\n\t // environment (e.g. \"staging\"). We're going to look at whether\n\t // the function argument name is mangled:\n\t if (\n\t // 0.13 to 15\n\t renderRootCode.indexOf('nextElement') !== -1 ||\n\t // 0.12\n\t renderRootCode.indexOf('nextComponent') !== -1) {\n\t // We can't be certain whether this is a development build or not,\n\t // but it is definitely unminified.\n\t return 'unminified';\n\t } else {\n\t // This is likely a minified development build.\n\t return 'development';\n\t }\n\t }\n\t // By now we know that it's envified and dead code elimination worked,\n\t // but what if it's still not minified? (Is this even possible?)\n\t // Let's check matches for the first argument name.\n\t if (\n\t // 0.13 to 15\n\t renderRootCode.indexOf('nextElement') !== -1 ||\n\t // 0.12\n\t renderRootCode.indexOf('nextComponent') !== -1) {\n\t return 'unminified';\n\t }\n\t // Seems like we're using the production version.\n\t // Now let's check if we're still on 0.14 or lower:\n\t if (renderRootCode.indexOf('._registerComponent') !== -1) {\n\t // TODO: we can remove the condition above once 16\n\t // is older than a year. Since this branch only runs\n\t // for Stack, we can flip it completely when Stack\n\t // is old enough. The branch for Fiber is above,\n\t // and it can check renderer.version directly.\n\t return 'outdated';\n\t }\n\t // We're all good.\n\t return 'production';\n\t }\n\t } catch (err) {\n\t // Weird environments may exist.\n\t // This code needs a higher fault tolerance\n\t // because it runs even with closed DevTools.\n\t // TODO: should we catch errors in all injected code, and not just this part?\n\t }\n\t return 'production';\n\t }\n\t\n\t var hasDetectedBadDCE = false;\n\t\n\t var hook = {\n\t // Shared between Stack and Fiber:\n\t _renderers: {},\n\t helpers: {},\n\t checkDCE: function checkDCE(fn) {\n\t // This runs for production versions of React.\n\t // Needs to be super safe.\n\t try {\n\t var toString = Function.prototype.toString;\n\t var code = toString.call(fn);\n\t // This is a string embedded in the passed function under DEV-only\n\t // condition. However the function executes only in PROD. Therefore,\n\t // if we see it, dead code elimination did not work.\n\t if (code.indexOf('^_^') > -1) {\n\t // Remember to report during next injection.\n\t hasDetectedBadDCE = true;\n\t // Bonus: throw an exception hoping that it gets picked up by\n\t // a reporting system. Not synchronously so that it doesn't break the\n\t // calling code.\n\t setTimeout(function () {\n\t throw new Error('React is running in production mode, but dead code ' + 'elimination has not been applied. Read how to correctly ' + 'configure React for production: ' + 'https://fb.me/react-perf-use-the-production-build');\n\t });\n\t }\n\t } catch (err) {}\n\t },\n\t inject: function inject(renderer) {\n\t var id = Math.random().toString(16).slice(2);\n\t hook._renderers[id] = renderer;\n\t var reactBuildType = hasDetectedBadDCE ? 'deadcode' : detectReactBuildType(renderer);\n\t hook.emit('renderer', { id: id, renderer: renderer, reactBuildType: reactBuildType });\n\t return id;\n\t },\n\t _listeners: {},\n\t sub: function sub(evt, fn) {\n\t hook.on(evt, fn);\n\t return function () {\n\t return hook.off(evt, fn);\n\t };\n\t },\n\t on: function on(evt, fn) {\n\t if (!hook._listeners[evt]) {\n\t hook._listeners[evt] = [];\n\t }\n\t hook._listeners[evt].push(fn);\n\t },\n\t off: function off(evt, fn) {\n\t if (!hook._listeners[evt]) {\n\t return;\n\t }\n\t var ix = hook._listeners[evt].indexOf(fn);\n\t if (ix !== -1) {\n\t hook._listeners[evt].splice(ix, 1);\n\t }\n\t if (!hook._listeners[evt].length) {\n\t hook._listeners[evt] = null;\n\t }\n\t },\n\t emit: function emit(evt, data) {\n\t if (hook._listeners[evt]) {\n\t hook._listeners[evt].map(function (fn) {\n\t return fn(data);\n\t });\n\t }\n\t },\n\t // Fiber-only:\n\t supportsFiber: true,\n\t _fiberRoots: {},\n\t getFiberRoots: function getFiberRoots(rendererID) {\n\t var roots = hook._fiberRoots;\n\t if (!roots[rendererID]) {\n\t roots[rendererID] = new Set();\n\t }\n\t return roots[rendererID];\n\t },\n\t\n\t onCommitFiberUnmount: function onCommitFiberUnmount(rendererID, fiber) {\n\t // TODO: can we use hook for roots too?\n\t if (hook.helpers[rendererID]) {\n\t hook.helpers[rendererID].handleCommitFiberUnmount(fiber);\n\t }\n\t },\n\t onCommitFiberRoot: function onCommitFiberRoot(rendererID, root) {\n\t var mountedRoots = hook.getFiberRoots(rendererID);\n\t var current = root.current;\n\t var isKnownRoot = mountedRoots.has(root);\n\t var isUnmounting = current.memoizedState == null || current.memoizedState.element == null;\n\t // Keep track of mounted roots so we can hydrate when DevTools connect.\n\t if (!isKnownRoot && !isUnmounting) {\n\t mountedRoots.add(root);\n\t } else if (isKnownRoot && isUnmounting) {\n\t mountedRoots.delete(root);\n\t }\n\t if (hook.helpers[rendererID]) {\n\t hook.helpers[rendererID].handleCommitFiberRoot(root);\n\t }\n\t }\n\t };\n\t Object.defineProperty(window, '__REACT_DEVTOOLS_GLOBAL_HOOK__', {\n\t value: hook\n\t });\n\t}\n\t\n\tmodule.exports = installGlobalHook;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\t/**\n\t * NOTE: This file cannot `require` any other modules. We `.toString()` the\n\t * function in some places and inject the source into the page.\n\t * Also do not declare any variables in top level scope!\n\t */\n\t\n\tfunction installRelayHook(window) {\n\t var performance = window.performance;\n\t var performanceNow;\n\t if (performance && typeof performance.now === 'function') {\n\t performanceNow = function performanceNow() {\n\t return performance.now();\n\t };\n\t } else {\n\t performanceNow = function performanceNow() {\n\t return Date.now();\n\t };\n\t }\n\t\n\t var TEXT_CHUNK_LENGTH = 500;\n\t\n\t var hook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n\t if (!hook) {\n\t return;\n\t }\n\t\n\t function decorate(obj, attr, fn) {\n\t var old = obj[attr];\n\t obj[attr] = function () {\n\t var res = old.apply(this, arguments);\n\t fn.apply(this, arguments);\n\t return res;\n\t };\n\t }\n\t\n\t var _eventQueue = [];\n\t var _listener = null;\n\t function emit(name, data) {\n\t _eventQueue.push({ name: name, data: data });\n\t if (_listener) {\n\t _listener(name, data);\n\t }\n\t }\n\t\n\t function setRequestListener(listener) {\n\t if (_listener) {\n\t throw new Error('Relay Devtools: Called only call setRequestListener once.');\n\t }\n\t _listener = listener;\n\t _eventQueue.forEach(function (_ref) {\n\t var name = _ref.name,\n\t data = _ref.data;\n\t\n\t listener(name, data);\n\t });\n\t\n\t return function () {\n\t _listener = null;\n\t };\n\t }\n\t\n\t function recordRequest(type, start, request, requestNumber) {\n\t var id = Math.random().toString(16).substr(2);\n\t request.then(function (response) {\n\t emit('relay:success', {\n\t id: id,\n\t end: performanceNow(),\n\t response: response.response\n\t });\n\t }, function (error) {\n\t emit('relay:failure', {\n\t id: id,\n\t end: performanceNow(),\n\t error: error\n\t });\n\t });\n\t var textChunks = [];\n\t var text = request.getQueryString();\n\t while (text.length > 0) {\n\t textChunks.push(text.substr(0, TEXT_CHUNK_LENGTH));\n\t text = text.substr(TEXT_CHUNK_LENGTH);\n\t }\n\t return {\n\t id: id,\n\t name: request.getDebugName(),\n\t requestNumber: requestNumber,\n\t start: start,\n\t text: textChunks,\n\t type: type,\n\t variables: request.getVariables()\n\t };\n\t }\n\t\n\t var requestNumber = 0;\n\t\n\t function instrumentRelayRequests(relayInternals) {\n\t var NetworkLayer = relayInternals.NetworkLayer;\n\t\n\t decorate(NetworkLayer, 'sendMutation', function (mutation) {\n\t requestNumber++;\n\t emit('relay:pending', [recordRequest('mutation', performanceNow(), mutation, requestNumber)]);\n\t });\n\t\n\t decorate(NetworkLayer, 'sendQueries', function (queries) {\n\t requestNumber++;\n\t var start = performanceNow();\n\t emit('relay:pending', queries.map(function (query) {\n\t return recordRequest('query', start, query, requestNumber);\n\t }));\n\t });\n\t\n\t var instrumented = {};\n\t for (var key in relayInternals) {\n\t if (relayInternals.hasOwnProperty(key)) {\n\t instrumented[key] = relayInternals[key];\n\t }\n\t }\n\t instrumented.setRequestListener = setRequestListener;\n\t return instrumented;\n\t }\n\t\n\t var _relayInternals = null;\n\t Object.defineProperty(hook, '_relayInternals', {\n\t configurable: true,\n\t set: function set(relayInternals) {\n\t _relayInternals = instrumentRelayRequests(relayInternals);\n\t },\n\t get: function get() {\n\t return _relayInternals;\n\t }\n\t });\n\t}\n\t\n\tmodule.exports = installRelayHook;\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar setupBackend = __webpack_require__(34);\n\t\n\tmodule.exports = function (hook, agent) {\n\t var subs = [hook.sub('renderer-attached', function (_ref) {\n\t var id = _ref.id,\n\t renderer = _ref.renderer,\n\t helpers = _ref.helpers;\n\t\n\t agent.setReactInternals(id, helpers);\n\t helpers.walkTree(agent.onMounted.bind(agent, id), agent.addRoot.bind(agent, id));\n\t }), hook.sub('root', function (_ref2) {\n\t var renderer = _ref2.renderer,\n\t internalInstance = _ref2.internalInstance;\n\t return agent.addRoot(renderer, internalInstance);\n\t }), hook.sub('mount', function (_ref3) {\n\t var renderer = _ref3.renderer,\n\t internalInstance = _ref3.internalInstance,\n\t data = _ref3.data;\n\t return agent.onMounted(renderer, internalInstance, data);\n\t }), hook.sub('update', function (_ref4) {\n\t var renderer = _ref4.renderer,\n\t internalInstance = _ref4.internalInstance,\n\t data = _ref4.data;\n\t return agent.onUpdated(internalInstance, data);\n\t }), hook.sub('unmount', function (_ref5) {\n\t var renderer = _ref5.renderer,\n\t internalInstance = _ref5.internalInstance;\n\t return agent.onUnmounted(internalInstance);\n\t })];\n\t\n\t var success = setupBackend(hook);\n\t if (!success) {\n\t return;\n\t }\n\t\n\t hook.emit('react-devtools', agent);\n\t hook.reactDevtoolsAgent = agent;\n\t agent.on('shutdown', function () {\n\t subs.forEach(function (fn) {\n\t return fn();\n\t });\n\t hook.reactDevtoolsAgent = null;\n\t });\n\t};\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t *\n\t * This is the chrome devtools\n\t *\n\t * 1. Devtools sets the __REACT_DEVTOOLS_GLOBAL_HOOK__ global.\n\t * 2. React (if present) calls .inject() with the internal renderer\n\t * 3. Devtools sees the renderer, and then adds this backend, along with the Agent\n\t * and whatever else is needed.\n\t * 4. The agent then calls `.emit('react-devtools', agent)`\n\t *\n\t * Now things are hooked up.\n\t *\n\t * When devtools closes, it calls `cleanup()` to remove the listeners\n\t * and any overhead caused by the backend.\n\t */\n\t'use strict';\n\t\n\tvar attachRenderer = __webpack_require__(35);\n\t\n\tmodule.exports = function setupBackend(hook) {\n\t var oldReact = window.React && window.React.__internals;\n\t if (oldReact && Object.keys(hook._renderers).length === 0) {\n\t hook.inject(oldReact);\n\t }\n\t\n\t for (var rid in hook._renderers) {\n\t hook.helpers[rid] = attachRenderer(hook, rid, hook._renderers[rid]);\n\t hook.emit('renderer-attached', { id: rid, renderer: hook._renderers[rid], helpers: hook.helpers[rid] });\n\t }\n\t\n\t hook.on('renderer', function (_ref) {\n\t var id = _ref.id,\n\t renderer = _ref.renderer;\n\t\n\t hook.helpers[id] = attachRenderer(hook, id, renderer);\n\t hook.emit('renderer-attached', { id: id, renderer: renderer, helpers: hook.helpers[id] });\n\t });\n\t\n\t var shutdown = function shutdown() {\n\t for (var id in hook.helpers) {\n\t hook.helpers[id].cleanup();\n\t }\n\t hook.off('shutdown', shutdown);\n\t };\n\t hook.on('shutdown', shutdown);\n\t\n\t return true;\n\t};\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar getData = __webpack_require__(36);\n\tvar getData012 = __webpack_require__(41);\n\tvar attachRendererFiber = __webpack_require__(42);\n\t\n\t/**\n\t * This takes care of patching the renderer to emit events on the global\n\t * `Hook`. The returned object has a `.cleanup` method to un-patch everything.\n\t */\n\tfunction attachRenderer(hook, rid, renderer) {\n\t var rootNodeIDMap = new Map();\n\t var extras = {};\n\t // Before 0.13 there was no Reconciler, so we patch Component.Mixin\n\t var isPre013 = !renderer.Reconciler;\n\t\n\t // React Fiber\n\t if (typeof renderer.findFiberByHostInstance === 'function') {\n\t return attachRendererFiber(hook, rid, renderer);\n\t }\n\t\n\t // React Native\n\t if (renderer.Mount.findNodeHandle && renderer.Mount.nativeTagToRootNodeID) {\n\t extras.getNativeFromReactElement = function (component) {\n\t return renderer.Mount.findNodeHandle(component);\n\t };\n\t\n\t extras.getReactElementFromNative = function (nativeTag) {\n\t var id = renderer.Mount.nativeTagToRootNodeID(nativeTag);\n\t return rootNodeIDMap.get(id);\n\t };\n\t // React DOM 15+\n\t } else if (renderer.ComponentTree) {\n\t extras.getNativeFromReactElement = function (component) {\n\t return renderer.ComponentTree.getNodeFromInstance(component);\n\t };\n\t\n\t extras.getReactElementFromNative = function (node) {\n\t return renderer.ComponentTree.getClosestInstanceFromNode(node);\n\t };\n\t // React DOM\n\t } else if (renderer.Mount.getID && renderer.Mount.getNode) {\n\t extras.getNativeFromReactElement = function (component) {\n\t try {\n\t return renderer.Mount.getNode(component._rootNodeID);\n\t } catch (e) {\n\t return undefined;\n\t }\n\t };\n\t\n\t extras.getReactElementFromNative = function (node) {\n\t var id = renderer.Mount.getID(node);\n\t while (node && node.parentNode && !id) {\n\t node = node.parentNode;\n\t id = renderer.Mount.getID(node);\n\t }\n\t return rootNodeIDMap.get(id);\n\t };\n\t } else {\n\t console.warn('Unknown react version (does not have getID), probably an unshimmed React Native');\n\t }\n\t\n\t var oldMethods;\n\t var oldRenderComponent;\n\t var oldRenderRoot;\n\t\n\t // React DOM\n\t if (renderer.Mount._renderNewRootComponent) {\n\t oldRenderRoot = decorateResult(renderer.Mount, '_renderNewRootComponent', function (internalInstance) {\n\t hook.emit('root', { renderer: rid, internalInstance: internalInstance });\n\t });\n\t // React Native\n\t } else if (renderer.Mount.renderComponent) {\n\t oldRenderComponent = decorateResult(renderer.Mount, 'renderComponent', function (internalInstance) {\n\t hook.emit('root', { renderer: rid, internalInstance: internalInstance._reactInternalInstance });\n\t });\n\t }\n\t\n\t if (renderer.Component) {\n\t console.error('You are using a version of React with limited support in this version of the devtools.\\nPlease upgrade to use at least 0.13, or you can downgrade to use the old version of the devtools:\\ninstructions here https://github.com/facebook/react-devtools/tree/devtools-next#how-do-i-use-this-for-react--013');\n\t // 0.11 - 0.12\n\t // $FlowFixMe renderer.Component is not \"possibly undefined\"\n\t oldMethods = decorateMany(renderer.Component.Mixin, {\n\t mountComponent: function mountComponent() {\n\t var _this = this;\n\t\n\t rootNodeIDMap.set(this._rootNodeID, this);\n\t // FIXME DOMComponent calls Component.Mixin, and sets up the\n\t // `children` *after* that call, meaning we don't have access to the\n\t // children at this point. Maybe we should find something else to shim\n\t // (do we have access to DOMComponent here?) so that we don't have to\n\t // setTimeout.\n\t setTimeout(function () {\n\t hook.emit('mount', { internalInstance: _this, data: getData012(_this), renderer: rid });\n\t }, 0);\n\t },\n\t updateComponent: function updateComponent() {\n\t var _this2 = this;\n\t\n\t setTimeout(function () {\n\t hook.emit('update', { internalInstance: _this2, data: getData012(_this2), renderer: rid });\n\t }, 0);\n\t },\n\t unmountComponent: function unmountComponent() {\n\t hook.emit('unmount', { internalInstance: this, renderer: rid });\n\t rootNodeIDMap.delete(this._rootNodeID, this);\n\t }\n\t });\n\t } else if (renderer.Reconciler) {\n\t oldMethods = decorateMany(renderer.Reconciler, {\n\t mountComponent: function mountComponent(internalInstance, rootID, transaction, context) {\n\t var data = getData(internalInstance);\n\t rootNodeIDMap.set(internalInstance._rootNodeID, internalInstance);\n\t hook.emit('mount', { internalInstance: internalInstance, data: data, renderer: rid });\n\t },\n\t performUpdateIfNecessary: function performUpdateIfNecessary(internalInstance, nextChild, transaction, context) {\n\t hook.emit('update', { internalInstance: internalInstance, data: getData(internalInstance), renderer: rid });\n\t },\n\t receiveComponent: function receiveComponent(internalInstance, nextChild, transaction, context) {\n\t hook.emit('update', { internalInstance: internalInstance, data: getData(internalInstance), renderer: rid });\n\t },\n\t unmountComponent: function unmountComponent(internalInstance) {\n\t hook.emit('unmount', { internalInstance: internalInstance, renderer: rid });\n\t rootNodeIDMap.delete(internalInstance._rootNodeID, internalInstance);\n\t }\n\t });\n\t }\n\t\n\t extras.walkTree = function (visit, visitRoot) {\n\t var onMount = function onMount(component, data) {\n\t rootNodeIDMap.set(component._rootNodeID, component);\n\t visit(component, data);\n\t };\n\t walkRoots(renderer.Mount._instancesByReactRootID || renderer.Mount._instancesByContainerID, onMount, visitRoot, isPre013);\n\t };\n\t\n\t extras.cleanup = function () {\n\t if (oldMethods) {\n\t if (renderer.Component) {\n\t restoreMany(renderer.Component.Mixin, oldMethods);\n\t } else {\n\t restoreMany(renderer.Reconciler, oldMethods);\n\t }\n\t }\n\t if (oldRenderRoot) {\n\t renderer.Mount._renderNewRootComponent = oldRenderRoot;\n\t }\n\t if (oldRenderComponent) {\n\t renderer.Mount.renderComponent = oldRenderComponent;\n\t }\n\t oldMethods = null;\n\t oldRenderRoot = null;\n\t oldRenderComponent = null;\n\t };\n\t\n\t return extras;\n\t}\n\t\n\tfunction walkRoots(roots, onMount, onRoot, isPre013) {\n\t for (var name in roots) {\n\t walkNode(roots[name], onMount, isPre013);\n\t onRoot(roots[name]);\n\t }\n\t}\n\t\n\tfunction walkNode(internalInstance, onMount, isPre013) {\n\t var data = isPre013 ? getData012(internalInstance) : getData(internalInstance);\n\t if (data.children && Array.isArray(data.children)) {\n\t data.children.forEach(function (child) {\n\t return walkNode(child, onMount, isPre013);\n\t });\n\t }\n\t onMount(internalInstance, data);\n\t}\n\t\n\tfunction decorateResult(obj, attr, fn) {\n\t var old = obj[attr];\n\t obj[attr] = function (instance) {\n\t var res = old.apply(this, arguments);\n\t fn(res);\n\t return res;\n\t };\n\t return old;\n\t}\n\t\n\tfunction decorate(obj, attr, fn) {\n\t var old = obj[attr];\n\t obj[attr] = function (instance) {\n\t var res = old.apply(this, arguments);\n\t fn.apply(this, arguments);\n\t return res;\n\t };\n\t return old;\n\t}\n\t\n\tfunction decorateMany(source, fns) {\n\t var olds = {};\n\t for (var name in fns) {\n\t olds[name] = decorate(source, name, fns[name]);\n\t }\n\t return olds;\n\t}\n\t\n\tfunction restoreMany(source, olds) {\n\t for (var name in olds) {\n\t source[name] = olds[name];\n\t }\n\t}\n\t\n\tmodule.exports = attachRenderer;\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar copyWithSet = __webpack_require__(37);\n\tvar getDisplayName = __webpack_require__(38);\n\tvar traverseAllChildrenImpl = __webpack_require__(39);\n\t\n\t/**\n\t * Convert a react internal instance to a sanitized data object.\n\t */\n\tfunction getData(internalInstance) {\n\t var children = null;\n\t var props = null;\n\t var state = null;\n\t var context = null;\n\t var updater = null;\n\t var name = null;\n\t var type = null;\n\t var key = null;\n\t var ref = null;\n\t var source = null;\n\t var text = null;\n\t var publicInstance = null;\n\t var nodeType = 'Native';\n\t // If the parent is a native node without rendered children, but with\n\t // multiple string children, then the `element` that gets passed in here is\n\t // a plain value -- a string or number.\n\t if ((typeof internalInstance === 'undefined' ? 'undefined' : _typeof(internalInstance)) !== 'object') {\n\t nodeType = 'Text';\n\t text = internalInstance + '';\n\t } else if (internalInstance._currentElement === null || internalInstance._currentElement === false) {\n\t nodeType = 'Empty';\n\t } else if (internalInstance._renderedComponent) {\n\t nodeType = 'NativeWrapper';\n\t children = [internalInstance._renderedComponent];\n\t props = internalInstance._instance.props;\n\t state = internalInstance._instance.state;\n\t context = internalInstance._instance.context;\n\t if (context && Object.keys(context).length === 0) {\n\t context = null;\n\t }\n\t } else if (internalInstance._renderedChildren) {\n\t children = childrenList(internalInstance._renderedChildren);\n\t } else if (internalInstance._currentElement && internalInstance._currentElement.props) {\n\t // This is a native node without rendered children -- meaning the children\n\t // prop is the unfiltered list of children.\n\t // This may include 'null' or even other invalid values, so we need to\n\t // filter it the same way that ReactDOM does.\n\t // Instead of pulling in the whole React library, we just copied over the\n\t // 'traverseAllChildrenImpl' method.\n\t // https://github.com/facebook/react/blob/240b84ed8e1db715d759afaae85033718a0b24e1/src/isomorphic/children/ReactChildren.js#L112-L158\n\t var unfilteredChildren = internalInstance._currentElement.props.children;\n\t var filteredChildren = [];\n\t traverseAllChildrenImpl(unfilteredChildren, '', // nameSoFar\n\t function (_traverseContext, child) {\n\t var childType = typeof child === 'undefined' ? 'undefined' : _typeof(child);\n\t if (childType === 'string' || childType === 'number') {\n\t filteredChildren.push(child);\n\t }\n\t });\n\t if (filteredChildren.length <= 1) {\n\t // children must be an array of nodes or a string or undefined\n\t // can't be an empty array\n\t children = filteredChildren.length ? String(filteredChildren[0]) : undefined;\n\t } else {\n\t children = filteredChildren;\n\t }\n\t }\n\t\n\t if (!props && internalInstance._currentElement && internalInstance._currentElement.props) {\n\t props = internalInstance._currentElement.props;\n\t }\n\t\n\t // != used deliberately here to catch undefined and null\n\t if (internalInstance._currentElement != null) {\n\t type = internalInstance._currentElement.type;\n\t if (internalInstance._currentElement.key) {\n\t key = String(internalInstance._currentElement.key);\n\t }\n\t source = internalInstance._currentElement._source;\n\t ref = internalInstance._currentElement.ref;\n\t if (typeof type === 'string') {\n\t name = type;\n\t if (internalInstance._nativeNode != null) {\n\t publicInstance = internalInstance._nativeNode;\n\t }\n\t if (internalInstance._hostNode != null) {\n\t publicInstance = internalInstance._hostNode;\n\t }\n\t } else if (typeof type === 'function') {\n\t nodeType = 'Composite';\n\t name = getDisplayName(type);\n\t // 0.14 top-level wrapper\n\t // TODO(jared): The backend should just act as if these don't exist.\n\t if (internalInstance._renderedComponent && (internalInstance._currentElement.props === internalInstance._renderedComponent._currentElement || internalInstance._currentElement.type.isReactTopLevelWrapper)) {\n\t nodeType = 'Wrapper';\n\t }\n\t if (name === null) {\n\t name = 'No display name';\n\t }\n\t } else if (typeof internalInstance._stringText === 'string') {\n\t nodeType = 'Text';\n\t text = internalInstance._stringText;\n\t } else {\n\t name = getDisplayName(type);\n\t }\n\t }\n\t\n\t if (internalInstance._instance) {\n\t var inst = internalInstance._instance;\n\t\n\t // A forceUpdate for stateless (functional) components.\n\t var forceUpdate = inst.forceUpdate || inst.updater && inst.updater.enqueueForceUpdate && function (cb) {\n\t inst.updater.enqueueForceUpdate(this, cb, 'forceUpdate');\n\t };\n\t updater = {\n\t setState: inst.setState && inst.setState.bind(inst),\n\t forceUpdate: forceUpdate && forceUpdate.bind(inst),\n\t setInProps: forceUpdate && setInProps.bind(null, internalInstance, forceUpdate),\n\t setInState: inst.forceUpdate && setInState.bind(null, inst),\n\t setInContext: forceUpdate && setInContext.bind(null, inst, forceUpdate)\n\t };\n\t if (typeof type === 'function') {\n\t publicInstance = inst;\n\t }\n\t\n\t // TODO: React ART currently falls in this bucket, but this doesn't\n\t // actually make sense and we should clean this up after stabilizing our\n\t // API for backends\n\t if (inst._renderedChildren) {\n\t children = childrenList(inst._renderedChildren);\n\t }\n\t }\n\t\n\t if (typeof internalInstance.setNativeProps === 'function') {\n\t // For editing styles in RN\n\t updater = {\n\t setNativeProps: function setNativeProps(nativeProps) {\n\t internalInstance.setNativeProps(nativeProps);\n\t }\n\t };\n\t }\n\t\n\t return {\n\t nodeType: nodeType,\n\t type: type,\n\t key: key,\n\t ref: ref,\n\t source: source,\n\t name: name,\n\t props: props,\n\t state: state,\n\t context: context,\n\t children: children,\n\t text: text,\n\t updater: updater,\n\t publicInstance: publicInstance\n\t };\n\t}\n\t\n\tfunction setInProps(internalInst, forceUpdate, path, value) {\n\t var element = internalInst._currentElement;\n\t internalInst._currentElement = _extends({}, element, {\n\t props: copyWithSet(element.props, path, value)\n\t });\n\t forceUpdate.call(internalInst._instance);\n\t}\n\t\n\tfunction setInState(inst, path, value) {\n\t setIn(inst.state, path, value);\n\t inst.forceUpdate();\n\t}\n\t\n\tfunction setInContext(inst, forceUpdate, path, value) {\n\t setIn(inst.context, path, value);\n\t forceUpdate.call(inst);\n\t}\n\t\n\tfunction setIn(obj, path, value) {\n\t var last = path.pop();\n\t var parent = path.reduce(function (obj_, attr) {\n\t return obj_ ? obj_[attr] : null;\n\t }, obj);\n\t if (parent) {\n\t parent[last] = value;\n\t }\n\t}\n\t\n\tfunction childrenList(children) {\n\t var res = [];\n\t for (var name in children) {\n\t res.push(children[name]);\n\t }\n\t return res;\n\t}\n\t\n\tmodule.exports = getData;\n\n/***/ },\n/* 37 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction copyWithSetImpl(obj, path, idx, value) {\n\t if (idx >= path.length) {\n\t return value;\n\t }\n\t var key = path[idx];\n\t var updated = Array.isArray(obj) ? obj.slice() : _extends({}, obj);\n\t // $FlowFixMe number or string is fine here\n\t updated[key] = copyWithSetImpl(obj[key], path, idx + 1, value);\n\t return updated;\n\t}\n\t\n\tfunction copyWithSet(obj, path, value) {\n\t return copyWithSetImpl(obj, path, 0, value);\n\t}\n\t\n\tmodule.exports = copyWithSet;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar FB_MODULE_RE = /^(.*) \\[from (.*)\\]$/;\n\tvar cachedDisplayNames = new WeakMap();\n\t\n\tfunction getDisplayName(type) {\n\t if (cachedDisplayNames.has(type)) {\n\t return cachedDisplayNames.get(type);\n\t }\n\t\n\t var displayName = void 0;\n\t\n\t // The displayName property is not guaranteed to be a string.\n\t // It's only safe to use for our purposes if it's a string.\n\t // github.com/facebook/react-devtools/issues/803\n\t if (typeof type.displayName === 'string') {\n\t displayName = type.displayName;\n\t }\n\t\n\t if (!displayName) {\n\t displayName = type.name || 'Unknown';\n\t }\n\t\n\t // Facebook-specific hack to turn \"Image [from Image.react]\" into just \"Image\".\n\t // We need displayName with module name for error reports but it clutters the DevTools.\n\t var match = displayName.match(FB_MODULE_RE);\n\t if (match) {\n\t var componentName = match[1];\n\t var moduleName = match[2];\n\t if (componentName && moduleName) {\n\t if (moduleName === componentName || moduleName.startsWith(componentName + '.')) {\n\t displayName = componentName;\n\t }\n\t }\n\t }\n\t\n\t cachedDisplayNames.set(type, displayName);\n\t return displayName;\n\t}\n\t\n\tmodule.exports = getDisplayName;\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar invariant = __webpack_require__(40);\n\t\n\tvar SEPARATOR = '.';\n\tvar SUBSEPARATOR = ':';\n\t\n\tvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\t// The Symbol used to tag the ReactElement type. If there is no native Symbol\n\t// nor polyfill, then a plain number is used for performance.\n\tvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\tvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element') || 0xeac7;\n\t\n\t/**\n\t * Escape and wrap key so it is safe to use as a reactid\n\t *\n\t * @param {string} key to be escaped.\n\t * @return {string} the escaped key.\n\t */\n\tfunction escape(key) {\n\t var escapeRegex = /[=:]/g;\n\t var escaperLookup = {\n\t '=': '=0',\n\t ':': '=2'\n\t };\n\t var escapedString = ('' + key).replace(escapeRegex, function (match) {\n\t return escaperLookup[match];\n\t });\n\t\n\t return '$' + escapedString;\n\t}\n\t\n\t/**\n\t * Generate a key string that identifies a component within a set.\n\t *\n\t * @param {*} component A component that could contain a manual key.\n\t * @param {number} index Index that is used if a manual key is not provided.\n\t * @return {string}\n\t */\n\tfunction getComponentKey(component, index) {\n\t // Do some typechecking here since we call this blindly. We want to ensure\n\t // that we don't block potential future ES APIs.\n\t if ((typeof component === 'undefined' ? 'undefined' : _typeof(component)) === 'object' && component !== null && component.key != null) {\n\t // Explicit key\n\t return escape(component.key);\n\t }\n\t // Implicit key determined by the index in the set\n\t return index.toString(36);\n\t}\n\t\n\t/**\n\t * We do a copied the 'traverseAllChildrenImpl' method from\n\t * `React.Children` so that we don't pull in the whole React library.\n\t * @param {?*} children Children tree container.\n\t * @param {!string} nameSoFar Name of the key path so far.\n\t * @param {!function} callback Callback to invoke with each child found.\n\t * @param {?*} traverseContext Used to pass information throughout the traversal\n\t * process.\n\t * @return {!number} The number of children in this subtree.\n\t */\n\tfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n\t var type = typeof children === 'undefined' ? 'undefined' : _typeof(children);\n\t\n\t if (type === 'undefined' || type === 'boolean') {\n\t // All of the above are perceived as null.\n\t children = null;\n\t }\n\t\n\t if (children === null || type === 'string' || type === 'number' ||\n\t // The following is inlined from ReactElement. This means we can optimize\n\t // some checks. React Fiber also inlines this logic for similar purposes.\n\t type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n\t callback(traverseContext, children,\n\t // If it's the only child, treat the name as if it was wrapped in an array\n\t // so that it's consistent if the number of children grows.\n\t nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n\t return 1;\n\t }\n\t\n\t var child;\n\t var nextName;\n\t var subtreeCount = 0; // Count of children found in the current subtree.\n\t var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\t\n\t if (Array.isArray(children)) {\n\t for (var i = 0; i < children.length; i++) {\n\t child = children[i];\n\t nextName = nextNamePrefix + getComponentKey(child, i);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t } else {\n\t var iteratorFn = ITERATOR_SYMBOL && children[ITERATOR_SYMBOL] || children[FAUX_ITERATOR_SYMBOL];\n\t if (typeof iteratorFn === 'function') {\n\t var iterator = iteratorFn.call(children);\n\t var step;\n\t var ii = 0;\n\t while (!(step = iterator.next()).done) {\n\t child = step.value;\n\t nextName = nextNamePrefix + getComponentKey(child, ii++);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t } else if (type === 'object') {\n\t var addendum = ' If you meant to render a collection of children, use an array ' + 'instead.';\n\t var childrenString = '' + children;\n\t invariant(false, 'The React Devtools cannot render an object as a child. (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum);\n\t }\n\t }\n\t\n\t return subtreeCount;\n\t}\n\t\n\tmodule.exports = traverseAllChildrenImpl;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @providesModule invariant\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\t\n\tfunction invariant(condition, format, a, b, c, d, e, f) {\n\t if (false) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t }\n\t\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t }));\n\t error.name = 'Invariant Violation';\n\t }\n\t\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t}\n\t\n\tmodule.exports = invariant;\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar copyWithSet = __webpack_require__(37);\n\t\n\tfunction getData012(internalInstance) {\n\t var children = null;\n\t var props = internalInstance.props;\n\t var state = internalInstance.state;\n\t var context = internalInstance.context;\n\t var updater = null;\n\t var name = null;\n\t var type = null;\n\t var key = null;\n\t var ref = null;\n\t var text = null;\n\t var publicInstance = null;\n\t var nodeType = 'Native';\n\t if (internalInstance._renderedComponent) {\n\t nodeType = 'Wrapper';\n\t children = [internalInstance._renderedComponent];\n\t if (context && Object.keys(context).length === 0) {\n\t context = null;\n\t }\n\t } else if (internalInstance._renderedChildren) {\n\t name = internalInstance.constructor.displayName;\n\t children = childrenList(internalInstance._renderedChildren);\n\t } else if (typeof props.children === 'string') {\n\t // string children\n\t name = internalInstance.constructor.displayName;\n\t children = props.children;\n\t nodeType = 'Native';\n\t }\n\t\n\t if (!props && internalInstance._currentElement && internalInstance._currentElement.props) {\n\t props = internalInstance._currentElement.props;\n\t }\n\t\n\t if (internalInstance._currentElement) {\n\t type = internalInstance._currentElement.type;\n\t if (internalInstance._currentElement.key) {\n\t key = String(internalInstance._currentElement.key);\n\t }\n\t ref = internalInstance._currentElement.ref;\n\t if (typeof type === 'string') {\n\t name = type;\n\t } else {\n\t nodeType = 'Composite';\n\t name = type.displayName;\n\t if (!name) {\n\t name = 'No display name';\n\t }\n\t }\n\t }\n\t\n\t if (!name) {\n\t name = internalInstance.constructor.displayName || 'No display name';\n\t nodeType = 'Composite';\n\t }\n\t\n\t if (typeof props === 'string') {\n\t nodeType = 'Text';\n\t text = props;\n\t props = null;\n\t name = null;\n\t }\n\t\n\t if (internalInstance.forceUpdate) {\n\t updater = {\n\t setState: internalInstance.setState.bind(internalInstance),\n\t forceUpdate: internalInstance.forceUpdate.bind(internalInstance),\n\t setInProps: internalInstance.forceUpdate && setInProps.bind(null, internalInstance),\n\t setInState: internalInstance.forceUpdate && setInState.bind(null, internalInstance),\n\t setInContext: internalInstance.forceUpdate && setInContext.bind(null, internalInstance)\n\t };\n\t publicInstance = internalInstance;\n\t }\n\t\n\t return {\n\t nodeType: nodeType,\n\t type: type,\n\t key: key,\n\t ref: ref,\n\t source: null,\n\t name: name,\n\t props: props,\n\t state: state,\n\t context: context,\n\t children: children,\n\t text: text,\n\t updater: updater,\n\t publicInstance: publicInstance\n\t };\n\t}\n\t\n\tfunction setInProps(inst, path, value) {\n\t inst.props = copyWithSet(inst.props, path, value);\n\t inst.forceUpdate();\n\t}\n\t\n\tfunction setInState(inst, path, value) {\n\t setIn(inst.state, path, value);\n\t inst.forceUpdate();\n\t}\n\t\n\tfunction setInContext(inst, path, value) {\n\t setIn(inst.context, path, value);\n\t inst.forceUpdate();\n\t}\n\t\n\tfunction setIn(obj, path, value) {\n\t var last = path.pop();\n\t var parent = path.reduce(function (obj_, attr) {\n\t return obj_ ? obj_[attr] : null;\n\t }, obj);\n\t if (parent) {\n\t parent[last] = value;\n\t }\n\t}\n\t\n\tfunction childrenList(children) {\n\t var res = [];\n\t for (var name in children) {\n\t res.push(children[name]);\n\t }\n\t return res;\n\t}\n\t\n\tmodule.exports = getData012;\n\n/***/ },\n/* 42 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar getDataFiber = __webpack_require__(43);\n\t\n\tvar _require = __webpack_require__(44),\n\t ClassComponent = _require.ClassComponent,\n\t HostRoot = _require.HostRoot;\n\t\n\t// Inlined from ReactTypeOfSideEffect\n\t\n\t\n\tvar PerformedWork = 1;\n\t\n\tfunction attachRendererFiber(hook, rid, renderer) {\n\t // This is a slightly annoying indirection.\n\t // It is currently necessary because DevTools wants\n\t // to use unique objects as keys for instances.\n\t // However fibers have two versions.\n\t // We use this set to remember first encountered fiber for\n\t // each conceptual instance.\n\t var opaqueNodes = new Set();\n\t function getOpaqueNode(fiber) {\n\t if (opaqueNodes.has(fiber)) {\n\t return fiber;\n\t }\n\t var alternate = fiber.alternate;\n\t\n\t if (alternate != null && opaqueNodes.has(alternate)) {\n\t return alternate;\n\t }\n\t opaqueNodes.add(fiber);\n\t return fiber;\n\t }\n\t\n\t function hasDataChanged(prevFiber, nextFiber) {\n\t if (prevFiber.tag === ClassComponent) {\n\t // Skip if the class performed no work (shouldComponentUpdate bailout).\n\t // eslint-disable-next-line no-bitwise\n\t if ((nextFiber.effectTag & PerformedWork) !== PerformedWork) {\n\t return false;\n\t }\n\t\n\t // Only classes have context.\n\t if (prevFiber.stateNode.context !== nextFiber.stateNode.context) {\n\t return true;\n\t }\n\t // Force updating won't update state or props.\n\t if (nextFiber.updateQueue != null && nextFiber.updateQueue.hasForceUpdate) {\n\t return true;\n\t }\n\t }\n\t // Compare the fields that would result in observable changes in DevTools.\n\t // We don't compare type, tag, index, and key, because these are known to match.\n\t return prevFiber.memoizedProps !== nextFiber.memoizedProps || prevFiber.memoizedState !== nextFiber.memoizedState || prevFiber.ref !== nextFiber.ref || prevFiber._debugSource !== nextFiber._debugSource;\n\t }\n\t\n\t var pendingEvents = [];\n\t\n\t function flushPendingEvents() {\n\t var events = pendingEvents;\n\t pendingEvents = [];\n\t for (var i = 0; i < events.length; i++) {\n\t var event = events[i];\n\t hook.emit(event.type, event);\n\t }\n\t }\n\t\n\t function enqueueMount(fiber) {\n\t pendingEvents.push({\n\t internalInstance: getOpaqueNode(fiber),\n\t data: getDataFiber(fiber, getOpaqueNode),\n\t renderer: rid,\n\t type: 'mount'\n\t });\n\t\n\t var isRoot = fiber.tag === HostRoot;\n\t if (isRoot) {\n\t pendingEvents.push({\n\t internalInstance: getOpaqueNode(fiber),\n\t renderer: rid,\n\t type: 'root'\n\t });\n\t }\n\t }\n\t\n\t function enqueueUpdateIfNecessary(fiber, hasChildOrderChanged) {\n\t if (!hasChildOrderChanged && !hasDataChanged(fiber.alternate, fiber)) {\n\t return;\n\t }\n\t pendingEvents.push({\n\t internalInstance: getOpaqueNode(fiber),\n\t data: getDataFiber(fiber, getOpaqueNode),\n\t renderer: rid,\n\t type: 'update'\n\t });\n\t }\n\t\n\t function enqueueUnmount(fiber) {\n\t var isRoot = fiber.tag === HostRoot;\n\t var opaqueNode = getOpaqueNode(fiber);\n\t var event = {\n\t internalInstance: opaqueNode,\n\t renderer: rid,\n\t type: 'unmount'\n\t };\n\t if (isRoot) {\n\t pendingEvents.push(event);\n\t } else {\n\t // Non-root fibers are deleted during the commit phase.\n\t // They are deleted in the child-first order. However\n\t // DevTools currently expects deletions to be parent-first.\n\t // This is why we unshift deletions rather than push them.\n\t pendingEvents.unshift(event);\n\t }\n\t opaqueNodes.delete(opaqueNode);\n\t }\n\t\n\t function mountFiber(fiber) {\n\t // Depth-first.\n\t // Logs mounting of children first, parents later.\n\t var node = fiber;\n\t outer: while (true) {\n\t if (node.child) {\n\t node.child.return = node;\n\t node = node.child;\n\t continue;\n\t }\n\t enqueueMount(node);\n\t if (node == fiber) {\n\t return;\n\t }\n\t if (node.sibling) {\n\t node.sibling.return = node.return;\n\t node = node.sibling;\n\t continue;\n\t }\n\t while (node.return) {\n\t node = node.return;\n\t enqueueMount(node);\n\t if (node == fiber) {\n\t return;\n\t }\n\t if (node.sibling) {\n\t node.sibling.return = node.return;\n\t node = node.sibling;\n\t continue outer;\n\t }\n\t }\n\t return;\n\t }\n\t }\n\t\n\t function updateFiber(nextFiber, prevFiber) {\n\t var hasChildOrderChanged = false;\n\t if (nextFiber.child !== prevFiber.child) {\n\t // If the first child is different, we need to traverse them.\n\t // Each next child will be either a new child (mount) or an alternate (update).\n\t var nextChild = nextFiber.child;\n\t var prevChildAtSameIndex = prevFiber.child;\n\t while (nextChild) {\n\t // We already know children will be referentially different because\n\t // they are either new mounts or alternates of previous children.\n\t // Schedule updates and mounts depending on whether alternates exist.\n\t // We don't track deletions here because they are reported separately.\n\t if (nextChild.alternate) {\n\t var prevChild = nextChild.alternate;\n\t updateFiber(nextChild, prevChild);\n\t // However we also keep track if the order of the children matches\n\t // the previous order. They are always different referentially, but\n\t // if the instances line up conceptually we'll want to know that.\n\t if (!hasChildOrderChanged && prevChild !== prevChildAtSameIndex) {\n\t hasChildOrderChanged = true;\n\t }\n\t } else {\n\t mountFiber(nextChild);\n\t if (!hasChildOrderChanged) {\n\t hasChildOrderChanged = true;\n\t }\n\t }\n\t // Try the next child.\n\t nextChild = nextChild.sibling;\n\t // Advance the pointer in the previous list so that we can\n\t // keep comparing if they line up.\n\t if (!hasChildOrderChanged && prevChildAtSameIndex != null) {\n\t prevChildAtSameIndex = prevChildAtSameIndex.sibling;\n\t }\n\t }\n\t // If we have no more children, but used to, they don't line up.\n\t if (!hasChildOrderChanged && prevChildAtSameIndex != null) {\n\t hasChildOrderChanged = true;\n\t }\n\t }\n\t enqueueUpdateIfNecessary(nextFiber, hasChildOrderChanged);\n\t }\n\t\n\t function walkTree() {\n\t hook.getFiberRoots(rid).forEach(function (root) {\n\t // Hydrate all the roots for the first time.\n\t mountFiber(root.current);\n\t });\n\t flushPendingEvents();\n\t }\n\t\n\t function cleanup() {\n\t // We don't patch any methods so there is no cleanup.\n\t }\n\t\n\t function handleCommitFiberUnmount(fiber) {\n\t // This is not recursive.\n\t // We can't traverse fibers after unmounting so instead\n\t // we rely on React telling us about each unmount.\n\t // It will be flushed after the root is committed.\n\t enqueueUnmount(fiber);\n\t }\n\t\n\t function handleCommitFiberRoot(root) {\n\t var current = root.current;\n\t var alternate = current.alternate;\n\t if (alternate) {\n\t // TODO: relying on this seems a bit fishy.\n\t var wasMounted = alternate.memoizedState != null && alternate.memoizedState.element != null;\n\t var isMounted = current.memoizedState != null && current.memoizedState.element != null;\n\t if (!wasMounted && isMounted) {\n\t // Mount a new root.\n\t mountFiber(current);\n\t } else if (wasMounted && isMounted) {\n\t // Update an existing root.\n\t updateFiber(current, alternate);\n\t } else if (wasMounted && !isMounted) {\n\t // Unmount an existing root.\n\t enqueueUnmount(current);\n\t }\n\t } else {\n\t // Mount a new root.\n\t mountFiber(current);\n\t }\n\t // We're done here.\n\t flushPendingEvents();\n\t }\n\t\n\t // The naming is confusing.\n\t // They deal with opaque nodes (fibers), not elements.\n\t function getNativeFromReactElement(fiber) {\n\t try {\n\t var opaqueNode = fiber;\n\t var hostInstance = renderer.findHostInstanceByFiber(opaqueNode);\n\t return hostInstance;\n\t } catch (err) {\n\t // The fiber might have unmounted by now.\n\t return null;\n\t }\n\t }\n\t function getReactElementFromNative(hostInstance) {\n\t var fiber = renderer.findFiberByHostInstance(hostInstance);\n\t if (fiber != null) {\n\t // TODO: type fibers.\n\t var opaqueNode = getOpaqueNode(fiber);\n\t return opaqueNode;\n\t }\n\t return null;\n\t }\n\t return {\n\t getNativeFromReactElement: getNativeFromReactElement,\n\t getReactElementFromNative: getReactElementFromNative,\n\t handleCommitFiberRoot: handleCommitFiberRoot,\n\t handleCommitFiberUnmount: handleCommitFiberUnmount,\n\t cleanup: cleanup,\n\t walkTree: walkTree\n\t };\n\t}\n\t\n\tmodule.exports = attachRendererFiber;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar copyWithSet = __webpack_require__(37);\n\tvar getDisplayName = __webpack_require__(38);\n\t\n\tvar _require = __webpack_require__(44),\n\t FunctionalComponent = _require.FunctionalComponent,\n\t ClassComponent = _require.ClassComponent,\n\t HostRoot = _require.HostRoot,\n\t HostPortal = _require.HostPortal,\n\t HostComponent = _require.HostComponent,\n\t HostText = _require.HostText,\n\t Fragment = _require.Fragment;\n\t\n\t// TODO: we might want to change the data structure\n\t// once we no longer suppport Stack versions of `getData`.\n\t\n\t\n\tfunction getDataFiber(fiber, getOpaqueNode) {\n\t var type = fiber.type;\n\t var key = fiber.key;\n\t var ref = fiber.ref;\n\t var source = fiber._debugSource;\n\t var publicInstance = null;\n\t var props = null;\n\t var state = null;\n\t var children = null;\n\t var context = null;\n\t var updater = null;\n\t var nodeType = null;\n\t var name = null;\n\t var text = null;\n\t\n\t switch (fiber.tag) {\n\t case FunctionalComponent:\n\t case ClassComponent:\n\t nodeType = 'Composite';\n\t name = getDisplayName(fiber.type);\n\t publicInstance = fiber.stateNode;\n\t props = fiber.memoizedProps;\n\t state = fiber.memoizedState;\n\t if (publicInstance != null) {\n\t context = publicInstance.context;\n\t if (context && Object.keys(context).length === 0) {\n\t context = null;\n\t }\n\t }\n\t var inst = publicInstance;\n\t if (inst) {\n\t updater = {\n\t setState: inst.setState && inst.setState.bind(inst),\n\t forceUpdate: inst.forceUpdate && inst.forceUpdate.bind(inst),\n\t setInProps: inst.forceUpdate && setInProps.bind(null, fiber),\n\t setInState: inst.forceUpdate && setInState.bind(null, inst),\n\t setInContext: inst.forceUpdate && setInContext.bind(null, inst)\n\t };\n\t }\n\t children = [];\n\t break;\n\t case HostRoot:\n\t nodeType = 'Wrapper';\n\t children = [];\n\t break;\n\t case HostPortal:\n\t nodeType = 'Portal';\n\t name = 'ReactPortal';\n\t props = {\n\t target: fiber.stateNode.containerInfo\n\t };\n\t children = [];\n\t break;\n\t case HostComponent:\n\t nodeType = 'Native';\n\t name = fiber.type;\n\t\n\t // TODO (bvaughn) we plan to remove this prefix anyway.\n\t // We can cut this special case out when it's gone.\n\t name = name.replace('topsecret-', '');\n\t\n\t publicInstance = fiber.stateNode;\n\t props = fiber.memoizedProps;\n\t if (typeof props.children === 'string' || typeof props.children === 'number') {\n\t children = props.children.toString();\n\t } else {\n\t children = [];\n\t }\n\t if (typeof fiber.stateNode.setNativeProps === 'function') {\n\t // For editing styles in RN\n\t updater = {\n\t setNativeProps: function setNativeProps(nativeProps) {\n\t fiber.stateNode.setNativeProps(nativeProps);\n\t }\n\t };\n\t }\n\t break;\n\t case HostText:\n\t nodeType = 'Text';\n\t text = fiber.memoizedProps;\n\t break;\n\t case Fragment:\n\t nodeType = 'Wrapper';\n\t children = [];\n\t break;\n\t default:\n\t // Coroutines and yields\n\t nodeType = 'Native';\n\t props = fiber.memoizedProps;\n\t name = 'TODO_NOT_IMPLEMENTED_YET';\n\t children = [];\n\t break;\n\t }\n\t\n\t if (Array.isArray(children)) {\n\t var child = fiber.child;\n\t while (child) {\n\t children.push(getOpaqueNode(child));\n\t child = child.sibling;\n\t }\n\t }\n\t\n\t return {\n\t nodeType: nodeType,\n\t type: type,\n\t key: key,\n\t ref: ref,\n\t source: source,\n\t name: name,\n\t props: props,\n\t state: state,\n\t context: context,\n\t children: children,\n\t text: text,\n\t updater: updater,\n\t publicInstance: publicInstance\n\t };\n\t}\n\t\n\tfunction setInProps(fiber, path, value) {\n\t var inst = fiber.stateNode;\n\t fiber.pendingProps = copyWithSet(inst.props, path, value);\n\t if (fiber.alternate) {\n\t // We don't know which fiber is the current one because DevTools may bail out of getDataFiber() call,\n\t // and so the data object may refer to another version of the fiber. Therefore we update pendingProps\n\t // on both. I hope that this is safe.\n\t fiber.alternate.pendingProps = fiber.pendingProps;\n\t }\n\t fiber.stateNode.forceUpdate();\n\t}\n\t\n\tfunction setInState(inst, path, value) {\n\t setIn(inst.state, path, value);\n\t inst.forceUpdate();\n\t}\n\t\n\tfunction setInContext(inst, path, value) {\n\t setIn(inst.context, path, value);\n\t inst.forceUpdate();\n\t}\n\t\n\tfunction setIn(obj, path, value) {\n\t var last = path.pop();\n\t var parent = path.reduce(function (obj_, attr) {\n\t return obj_ ? obj_[attr] : null;\n\t }, obj);\n\t if (parent) {\n\t parent[last] = value;\n\t }\n\t}\n\t\n\tmodule.exports = getDataFiber;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\t// Copied from React repo.\n\t\n\tmodule.exports = {\n\t IndeterminateComponent: 0, // Before we know whether it is functional or class\n\t FunctionalComponent: 1,\n\t ClassComponent: 2,\n\t HostRoot: 3, // Root of a host tree. Could be nested inside another node.\n\t HostPortal: 4, // A subtree. Could be an entry point to a different renderer.\n\t HostComponent: 5,\n\t HostText: 6,\n\t CoroutineComponent: 7,\n\t CoroutineHandlerPhase: 8,\n\t YieldComponent: 9,\n\t Fragment: 10\n\t};\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tvar resolveBoxStyle = __webpack_require__(46);\n\t\n\tvar styleOverridesByHostComponentId = {};\n\t\n\tmodule.exports = function setupRNStyle(bridge, agent, resolveRNStyle) {\n\t bridge.onCall('rn-style:get', function (id) {\n\t var node = agent.elementData.get(id);\n\t if (!node || !node.props) {\n\t return null;\n\t }\n\t return resolveRNStyle(node.props.style);\n\t });\n\t\n\t bridge.on('rn-style:measure', function (id) {\n\t measureStyle(agent, bridge, resolveRNStyle, id);\n\t });\n\t\n\t bridge.on('rn-style:rename', function (_ref) {\n\t var id = _ref.id,\n\t oldName = _ref.oldName,\n\t newName = _ref.newName,\n\t val = _ref.val;\n\t\n\t renameStyle(agent, id, oldName, newName, val);\n\t setTimeout(function () {\n\t return measureStyle(agent, bridge, resolveRNStyle, id);\n\t });\n\t });\n\t\n\t bridge.on('rn-style:set', function (_ref2) {\n\t var id = _ref2.id,\n\t attr = _ref2.attr,\n\t val = _ref2.val;\n\t\n\t setStyle(agent, id, attr, val);\n\t setTimeout(function () {\n\t return measureStyle(agent, bridge, resolveRNStyle, id);\n\t });\n\t });\n\t};\n\t\n\tvar blank = {\n\t top: 0,\n\t left: 0,\n\t right: 0,\n\t bottom: 0\n\t};\n\t\n\tfunction measureStyle(agent, bridge, resolveRNStyle, id) {\n\t var node = agent.elementData.get(id);\n\t if (!node || !node.props) {\n\t bridge.send('rn-style:measure', {});\n\t return;\n\t }\n\t\n\t var style = resolveRNStyle(node.props.style);\n\t // If it's a host component we edited before, amend styles.\n\t if (styleOverridesByHostComponentId[id]) {\n\t style = Object.assign({}, style, styleOverridesByHostComponentId[id]);\n\t }\n\t\n\t var instance = node.publicInstance;\n\t if (!instance || !instance.measure) {\n\t bridge.send('rn-style:measure', { style: style });\n\t return;\n\t }\n\t\n\t instance.measure(function (x, y, width, height, left, top) {\n\t // RN Android sometimes returns undefined here. Don't send measurements in this case.\n\t // https://github.com/jhen0409/react-native-debugger/issues/84#issuecomment-304611817\n\t if (typeof x !== 'number') {\n\t bridge.send('rn-style:measure', { style: style });\n\t return;\n\t }\n\t var margin = style && resolveBoxStyle('margin', style) || blank;\n\t var padding = style && resolveBoxStyle('padding', style) || blank;\n\t bridge.send('rn-style:measure', {\n\t style: style,\n\t measuredLayout: {\n\t x: x,\n\t y: y,\n\t width: width,\n\t height: height,\n\t left: left,\n\t top: top,\n\t margin: margin,\n\t padding: padding\n\t }\n\t });\n\t });\n\t}\n\t\n\tfunction shallowClone(obj) {\n\t var nobj = {};\n\t for (var n in obj) {\n\t nobj[n] = obj[n];\n\t }\n\t return nobj;\n\t}\n\t\n\tfunction renameStyle(agent, id, oldName, newName, val) {\n\t var _ref3;\n\t\n\t var data = agent.elementData.get(id);\n\t var newStyle = newName ? (_ref3 = {}, _defineProperty(_ref3, oldName, undefined), _defineProperty(_ref3, newName, val), _ref3) : _defineProperty({}, oldName, undefined);\n\t\n\t if (data && data.updater && data.updater.setInProps) {\n\t // First attempt: use setInProps().\n\t // We do this for composite components, and it works relatively well.\n\t var style = data && data.props && data.props.style;\n\t var customStyle;\n\t if (Array.isArray(style)) {\n\t var lastLength = style.length - 1;\n\t if (_typeof(style[lastLength]) === 'object' && !Array.isArray(style[lastLength])) {\n\t customStyle = shallowClone(style[lastLength]);\n\t delete customStyle[oldName];\n\t if (newName) {\n\t customStyle[newName] = val;\n\t } else {\n\t customStyle[oldName] = undefined;\n\t }\n\t // $FlowFixMe we know that updater is not null here\n\t data.updater.setInProps(['style', lastLength], customStyle);\n\t } else {\n\t style = style.concat([newStyle]);\n\t // $FlowFixMe we know that updater is not null here\n\t data.updater.setInProps(['style'], style);\n\t }\n\t } else {\n\t if ((typeof style === 'undefined' ? 'undefined' : _typeof(style)) === 'object') {\n\t customStyle = shallowClone(style);\n\t delete customStyle[oldName];\n\t if (newName) {\n\t customStyle[newName] = val;\n\t } else {\n\t customStyle[oldName] = undefined;\n\t }\n\t // $FlowFixMe we know that updater is not null here\n\t data.updater.setInProps(['style'], customStyle);\n\t } else {\n\t style = [style, newStyle];\n\t data.updater.setInProps(['style'], style);\n\t }\n\t }\n\t } else if (data && data.updater && data.updater.setNativeProps) {\n\t // Fallback: use setNativeProps(). We're dealing with a host component.\n\t // Remember to \"correct\" resolved styles when we read them next time.\n\t if (!styleOverridesByHostComponentId[id]) {\n\t styleOverridesByHostComponentId[id] = newStyle;\n\t } else {\n\t Object.assign(styleOverridesByHostComponentId[id], newStyle);\n\t }\n\t data.updater.setNativeProps({ style: newStyle });\n\t } else {\n\t return;\n\t }\n\t agent.emit('hideHighlight');\n\t}\n\t\n\tfunction setStyle(agent, id, attr, val) {\n\t var data = agent.elementData.get(id);\n\t var newStyle = _defineProperty({}, attr, val);\n\t\n\t if (data && data.updater && data.updater.setInProps) {\n\t // First attempt: use setInProps().\n\t // We do this for composite components, and it works relatively well.\n\t var style = data.props && data.props.style;\n\t if (Array.isArray(style)) {\n\t var lastLength = style.length - 1;\n\t if (_typeof(style[lastLength]) === 'object' && !Array.isArray(style[lastLength])) {\n\t // $FlowFixMe we know that updater is not null here\n\t data.updater.setInProps(['style', lastLength, attr], val);\n\t } else {\n\t style = style.concat([newStyle]);\n\t // $FlowFixMe we know that updater is not null here\n\t data.updater.setInProps(['style'], style);\n\t }\n\t } else {\n\t style = [style, newStyle];\n\t data.updater.setInProps(['style'], style);\n\t }\n\t } else if (data && data.updater && data.updater.setNativeProps) {\n\t // Fallback: use setNativeProps(). We're dealing with a host component.\n\t // Remember to \"correct\" resolved styles when we read them next time.\n\t if (!styleOverridesByHostComponentId[id]) {\n\t styleOverridesByHostComponentId[id] = newStyle;\n\t } else {\n\t Object.assign(styleOverridesByHostComponentId[id], newStyle);\n\t }\n\t data.updater.setNativeProps({ style: newStyle });\n\t } else {\n\t return;\n\t }\n\t agent.emit('hideHighlight');\n\t}\n\n/***/ },\n/* 46 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t/**\n\t * This is mirror from\n\t * https://github.com/facebook/react-native/blob/master/Libraries/Inspector/resolveBoxStyle.js\n\t *\n\t * Resolve a style property into it's component parts, e.g.\n\t *\n\t * resolveBoxStyle('margin', {margin: 5, marginBottom: 10})\n\t * ->\n\t * {top: 5, left: 5, right: 5, bottom: 10}\n\t *\n\t * If none are set, returns false.\n\t */\n\tfunction resolveBoxStyle(prefix, style) {\n\t var res = {};\n\t var subs = ['top', 'left', 'bottom', 'right'];\n\t var set = false;\n\t subs.forEach(function (sub) {\n\t res[sub] = style[prefix] || 0;\n\t });\n\t if (style[prefix]) {\n\t set = true;\n\t }\n\t if (style[prefix + 'Vertical']) {\n\t res.top = res.bottom = style[prefix + 'Vertical'];\n\t set = true;\n\t }\n\t if (style[prefix + 'Horizontal']) {\n\t res.left = res.right = style[prefix + 'Horizontal'];\n\t set = true;\n\t }\n\t subs.forEach(function (sub) {\n\t var val = style[prefix + capFirst(sub)];\n\t if (val) {\n\t res[sub] = val;\n\t set = true;\n\t }\n\t });\n\t if (!set) {\n\t return null;\n\t }\n\t return res;\n\t}\n\t\n\tfunction capFirst(text) {\n\t return text[0].toUpperCase() + text.slice(1);\n\t}\n\t\n\tmodule.exports = resolveBoxStyle;\n\n/***/ },\n/* 47 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tfunction decorate(obj, attr, fn) {\n\t var old = obj[attr];\n\t obj[attr] = function () {\n\t var res = old.apply(this, arguments);\n\t fn.apply(this, arguments);\n\t return res;\n\t };\n\t return function () {\n\t obj[attr] = old;\n\t };\n\t}\n\t\n\tvar subscriptionEnabled = false;\n\t\n\tmodule.exports = function (bridge, agent, hook) {\n\t var shouldEnable = !!hook._relayInternals;\n\t\n\t bridge.onCall('relay:check', function () {\n\t return shouldEnable;\n\t });\n\t if (!shouldEnable) {\n\t return;\n\t }\n\t var _hook$_relayInternals = hook._relayInternals,\n\t DefaultStoreData = _hook$_relayInternals.DefaultStoreData,\n\t setRequestListener = _hook$_relayInternals.setRequestListener;\n\t\n\t\n\t function sendStoreData() {\n\t if (subscriptionEnabled) {\n\t bridge.send('relay:store', {\n\t id: 'relay:store',\n\t nodes: DefaultStoreData.getNodeData()\n\t });\n\t }\n\t }\n\t\n\t bridge.onCall('relay:store:enable', function () {\n\t subscriptionEnabled = true;\n\t sendStoreData();\n\t });\n\t\n\t bridge.onCall('relay:store:disable', function () {\n\t subscriptionEnabled = false;\n\t });\n\t\n\t sendStoreData();\n\t decorate(DefaultStoreData, 'handleUpdatePayload', sendStoreData);\n\t decorate(DefaultStoreData, 'handleQueryPayload', sendStoreData);\n\t\n\t var removeListener = setRequestListener(function (event, data) {\n\t bridge.send(event, data);\n\t });\n\t hook.on('shutdown', removeListener);\n\t};\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar Highlighter = __webpack_require__(49);\n\t\n\tmodule.exports = function setup(agent) {\n\t var hl = new Highlighter(window, function (node) {\n\t agent.selectFromDOMNode(node);\n\t });\n\t agent.on('highlight', function (data) {\n\t return hl.highlight(data.node, data.name);\n\t });\n\t agent.on('highlightMany', function (nodes) {\n\t return hl.highlightMany(nodes);\n\t });\n\t agent.on('hideHighlight', function () {\n\t return hl.hideHighlight();\n\t });\n\t agent.on('refreshMultiOverlay', function () {\n\t return hl.refreshMultiOverlay();\n\t });\n\t agent.on('startInspecting', function () {\n\t return hl.startInspecting();\n\t });\n\t agent.on('stopInspecting', function () {\n\t return hl.stopInspecting();\n\t });\n\t agent.on('shutdown', function () {\n\t hl.remove();\n\t });\n\t};\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Overlay = __webpack_require__(50);\n\tvar MultiOverlay = __webpack_require__(52);\n\t\n\t/**\n\t * Manages the highlighting of items on an html page, as well as\n\t * hover-to-inspect.\n\t */\n\t\n\tvar Highlighter = function () {\n\t function Highlighter(win, onSelect) {\n\t _classCallCheck(this, Highlighter);\n\t\n\t this._win = win;\n\t this._onSelect = onSelect;\n\t this._overlay = null;\n\t this._multiOverlay = null;\n\t this._subs = [];\n\t }\n\t\n\t _createClass(Highlighter, [{\n\t key: 'startInspecting',\n\t value: function startInspecting() {\n\t this._inspecting = true;\n\t this._subs = [captureSubscription(this._win, 'mouseover', this.onHover.bind(this)), captureSubscription(this._win, 'mousedown', this.onMouseDown.bind(this)), captureSubscription(this._win, 'click', this.onClick.bind(this))];\n\t }\n\t }, {\n\t key: 'stopInspecting',\n\t value: function stopInspecting() {\n\t this._subs.forEach(function (unsub) {\n\t return unsub();\n\t });\n\t this.hideHighlight();\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t this.stopInspecting();\n\t if (this._button && this._button.parentNode) {\n\t this._button.parentNode.removeChild(this._button);\n\t }\n\t }\n\t }, {\n\t key: 'highlight',\n\t value: function highlight(node, name) {\n\t this.removeMultiOverlay();\n\t if (node.nodeType !== Node.COMMENT_NODE) {\n\t if (!this._overlay) {\n\t this._overlay = new Overlay(this._win);\n\t }\n\t this._overlay.inspect(node, name);\n\t }\n\t }\n\t }, {\n\t key: 'highlightMany',\n\t value: function highlightMany(nodes) {\n\t this.removeOverlay();\n\t if (!this._multiOverlay) {\n\t this._multiOverlay = new MultiOverlay(this._win);\n\t }\n\t this._multiOverlay.highlightMany(nodes);\n\t }\n\t }, {\n\t key: 'hideHighlight',\n\t value: function hideHighlight() {\n\t this._inspecting = false;\n\t this.removeOverlay();\n\t this.removeMultiOverlay();\n\t }\n\t }, {\n\t key: 'refreshMultiOverlay',\n\t value: function refreshMultiOverlay() {\n\t if (!this._multiOverlay) {\n\t return;\n\t }\n\t this._multiOverlay.refresh();\n\t }\n\t }, {\n\t key: 'removeOverlay',\n\t value: function removeOverlay() {\n\t if (!this._overlay) {\n\t return;\n\t }\n\t this._overlay.remove();\n\t this._overlay = null;\n\t }\n\t }, {\n\t key: 'removeMultiOverlay',\n\t value: function removeMultiOverlay() {\n\t if (!this._multiOverlay) {\n\t return;\n\t }\n\t this._multiOverlay.remove();\n\t this._multiOverlay = null;\n\t }\n\t }, {\n\t key: 'onMouseDown',\n\t value: function onMouseDown(evt) {\n\t if (!this._inspecting) {\n\t return;\n\t }\n\t evt.preventDefault();\n\t evt.stopPropagation();\n\t evt.cancelBubble = true;\n\t this._onSelect(evt.target);\n\t }\n\t }, {\n\t key: 'onClick',\n\t value: function onClick(evt) {\n\t if (!this._inspecting) {\n\t return;\n\t }\n\t this._subs.forEach(function (unsub) {\n\t return unsub();\n\t });\n\t evt.preventDefault();\n\t evt.stopPropagation();\n\t evt.cancelBubble = true;\n\t this.hideHighlight();\n\t }\n\t }, {\n\t key: 'onHover',\n\t value: function onHover(evt) {\n\t if (!this._inspecting) {\n\t return;\n\t }\n\t evt.preventDefault();\n\t evt.stopPropagation();\n\t evt.cancelBubble = true;\n\t this.highlight(evt.target);\n\t }\n\t }, {\n\t key: 'injectButton',\n\t value: function injectButton() {\n\t this._button = makeMagnifier();\n\t this._button.onclick = this.startInspecting.bind(this);\n\t this._win.document.body.appendChild(this._button);\n\t }\n\t }]);\n\t\n\t return Highlighter;\n\t}();\n\t\n\tfunction captureSubscription(obj, evt, cb) {\n\t obj.addEventListener(evt, cb, true);\n\t return function () {\n\t return obj.removeEventListener(evt, cb, true);\n\t };\n\t}\n\t\n\tfunction makeMagnifier() {\n\t var button = window.document.createElement('button');\n\t button.innerHTML = '&#128269;';\n\t button.style.backgroundColor = 'transparent';\n\t button.style.border = 'none';\n\t button.style.outline = 'none';\n\t button.style.cursor = 'pointer';\n\t button.style.position = 'fixed';\n\t button.style.bottom = '10px';\n\t button.style.right = '10px';\n\t button.style.fontSize = '30px';\n\t button.style.zIndex = 10000000;\n\t return button;\n\t}\n\t\n\tmodule.exports = Highlighter;\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar assign = __webpack_require__(3);\n\t\n\tvar _require = __webpack_require__(51),\n\t monospace = _require.monospace;\n\t\n\t/**\n\t * Note that this component is not affected by the active Theme,\n\t * Because it highlights elements in the main Chrome window (outside of devtools).\n\t * The colors below were chosen to roughly match those used by Chrome devtools.\n\t */\n\tvar Overlay = function () {\n\t function Overlay(window) {\n\t _classCallCheck(this, Overlay);\n\t\n\t var doc = window.document;\n\t this.win = window;\n\t this.container = doc.createElement('div');\n\t this.node = doc.createElement('div');\n\t this.border = doc.createElement('div');\n\t this.padding = doc.createElement('div');\n\t this.content = doc.createElement('div');\n\t\n\t this.border.style.borderColor = overlayStyles.border;\n\t this.padding.style.borderColor = overlayStyles.padding;\n\t this.content.style.backgroundColor = overlayStyles.background;\n\t\n\t assign(this.node.style, {\n\t borderColor: overlayStyles.margin,\n\t pointerEvents: 'none',\n\t position: 'fixed'\n\t });\n\t\n\t this.tip = doc.createElement('div');\n\t assign(this.tip.style, {\n\t backgroundColor: '#333740',\n\t borderRadius: '2px',\n\t fontFamily: monospace.family,\n\t fontWeight: 'bold',\n\t padding: '3px 5px',\n\t position: 'fixed',\n\t fontSize: monospace.sizes.normal\n\t });\n\t\n\t this.nameSpan = doc.createElement('span');\n\t this.tip.appendChild(this.nameSpan);\n\t assign(this.nameSpan.style, {\n\t color: '#ee78e6',\n\t borderRight: '1px solid #aaaaaa',\n\t paddingRight: '0.5rem',\n\t marginRight: '0.5rem'\n\t });\n\t this.dimSpan = doc.createElement('span');\n\t this.tip.appendChild(this.dimSpan);\n\t assign(this.dimSpan.style, {\n\t color: '#d7d7d7'\n\t });\n\t\n\t this.container.style.zIndex = 10000000;\n\t this.node.style.zIndex = 10000000;\n\t this.tip.style.zIndex = 10000000;\n\t this.container.appendChild(this.node);\n\t this.container.appendChild(this.tip);\n\t this.node.appendChild(this.border);\n\t this.border.appendChild(this.padding);\n\t this.padding.appendChild(this.content);\n\t doc.body.appendChild(this.container);\n\t }\n\t\n\t _createClass(Overlay, [{\n\t key: 'remove',\n\t value: function remove() {\n\t if (this.container.parentNode) {\n\t this.container.parentNode.removeChild(this.container);\n\t }\n\t }\n\t }, {\n\t key: 'inspect',\n\t value: function inspect(node, name) {\n\t // We can't get the size of text nodes or comment nodes. React as of v15\n\t // heavily uses comment nodes to delimit text.\n\t if (node.nodeType !== Node.ELEMENT_NODE) {\n\t return;\n\t }\n\t var box = getNestedBoundingClientRect(node, this.win);\n\t var dims = getElementDimensions(node);\n\t\n\t boxWrap(dims, 'margin', this.node);\n\t boxWrap(dims, 'border', this.border);\n\t boxWrap(dims, 'padding', this.padding);\n\t\n\t assign(this.content.style, {\n\t height: box.height - dims.borderTop - dims.borderBottom - dims.paddingTop - dims.paddingBottom + 'px',\n\t width: box.width - dims.borderLeft - dims.borderRight - dims.paddingLeft - dims.paddingRight + 'px'\n\t });\n\t\n\t assign(this.node.style, {\n\t top: box.top - dims.marginTop + 'px',\n\t left: box.left - dims.marginLeft + 'px'\n\t });\n\t\n\t this.nameSpan.textContent = name || node.nodeName.toLowerCase();\n\t this.dimSpan.textContent = box.width + 'px × ' + box.height + 'px';\n\t\n\t var tipPos = findTipPos({\n\t top: box.top - dims.marginTop,\n\t left: box.left - dims.marginLeft,\n\t height: box.height + dims.marginTop + dims.marginBottom,\n\t width: box.width + dims.marginLeft + dims.marginRight\n\t }, this.win);\n\t assign(this.tip.style, tipPos);\n\t }\n\t }]);\n\t\n\t return Overlay;\n\t}();\n\t\n\tfunction findTipPos(dims, win) {\n\t var tipHeight = 20;\n\t var margin = 5;\n\t var top;\n\t if (dims.top + dims.height + tipHeight <= win.innerHeight) {\n\t if (dims.top + dims.height < 0) {\n\t top = margin;\n\t } else {\n\t top = dims.top + dims.height + margin;\n\t }\n\t } else if (dims.top - tipHeight <= win.innerHeight) {\n\t if (dims.top - tipHeight - margin < margin) {\n\t top = margin;\n\t } else {\n\t top = dims.top - tipHeight - margin;\n\t }\n\t } else {\n\t top = win.innerHeight - tipHeight - margin;\n\t }\n\t\n\t top += 'px';\n\t\n\t if (dims.left < 0) {\n\t return { top: top, left: margin };\n\t }\n\t if (dims.left + 200 > win.innerWidth) {\n\t return { top: top, right: margin };\n\t }\n\t return { top: top, left: dims.left + margin + 'px' };\n\t}\n\t\n\tfunction getElementDimensions(domElement) {\n\t var calculatedStyle = window.getComputedStyle(domElement);\n\t\n\t return {\n\t borderLeft: +calculatedStyle.borderLeftWidth.match(/[0-9]*/)[0],\n\t borderRight: +calculatedStyle.borderRightWidth.match(/[0-9]*/)[0],\n\t borderTop: +calculatedStyle.borderTopWidth.match(/[0-9]*/)[0],\n\t borderBottom: +calculatedStyle.borderBottomWidth.match(/[0-9]*/)[0],\n\t marginLeft: +calculatedStyle.marginLeft.match(/[0-9]*/)[0],\n\t marginRight: +calculatedStyle.marginRight.match(/[0-9]*/)[0],\n\t marginTop: +calculatedStyle.marginTop.match(/[0-9]*/)[0],\n\t marginBottom: +calculatedStyle.marginBottom.match(/[0-9]*/)[0],\n\t paddingLeft: +calculatedStyle.paddingLeft.match(/[0-9]*/)[0],\n\t paddingRight: +calculatedStyle.paddingRight.match(/[0-9]*/)[0],\n\t paddingTop: +calculatedStyle.paddingTop.match(/[0-9]*/)[0],\n\t paddingBottom: +calculatedStyle.paddingBottom.match(/[0-9]*/)[0]\n\t };\n\t}\n\t\n\t// Get the window object for the document that a node belongs to,\n\t// or return null if it cannot be found (node not attached to DOM,\n\t// etc).\n\tfunction getOwnerWindow(node) {\n\t if (!node.ownerDocument) {\n\t return null;\n\t }\n\t return node.ownerDocument.defaultView;\n\t}\n\t\n\t// Get the iframe containing a node, or return null if it cannot\n\t// be found (node not within iframe, etc).\n\tfunction getOwnerIframe(node) {\n\t var nodeWindow = getOwnerWindow(node);\n\t if (nodeWindow) {\n\t return nodeWindow.frameElement;\n\t }\n\t return null;\n\t}\n\t\n\t// Get a bounding client rect for a node, with an\n\t// offset added to compensate for its border.\n\tfunction getBoundingClientRectWithBorderOffset(node) {\n\t var dimensions = getElementDimensions(node);\n\t\n\t return mergeRectOffsets([node.getBoundingClientRect(), {\n\t top: dimensions.borderTop,\n\t left: dimensions.borderLeft,\n\t bottom: dimensions.borderBottom,\n\t right: dimensions.borderRight,\n\t // This width and height won't get used by mergeRectOffsets (since this\n\t // is not the first rect in the array), but we set them so that this\n\t // object typechecks as a DOMRect.\n\t width: 0,\n\t height: 0\n\t }]);\n\t}\n\t\n\t// Add together the top, left, bottom, and right properties of\n\t// each DOMRect, but keep the width and height of the first one.\n\tfunction mergeRectOffsets(rects) {\n\t return rects.reduce(function (previousRect, rect) {\n\t if (previousRect == null) {\n\t return rect;\n\t }\n\t\n\t return {\n\t top: previousRect.top + rect.top,\n\t left: previousRect.left + rect.left,\n\t width: previousRect.width,\n\t height: previousRect.height,\n\t bottom: previousRect.bottom + rect.bottom,\n\t right: previousRect.right + rect.right\n\t };\n\t });\n\t}\n\t\n\t// Calculate a boundingClientRect for a node relative to boundaryWindow,\n\t// taking into account any offsets caused by intermediate iframes.\n\tfunction getNestedBoundingClientRect(node, boundaryWindow) {\n\t var ownerIframe = getOwnerIframe(node);\n\t if (ownerIframe && ownerIframe !== boundaryWindow) {\n\t var rects = [node.getBoundingClientRect()];\n\t var currentIframe = ownerIframe;\n\t var onlyOneMore = false;\n\t while (currentIframe) {\n\t var rect = getBoundingClientRectWithBorderOffset(currentIframe);\n\t rects.push(rect);\n\t currentIframe = getOwnerIframe(currentIframe);\n\t\n\t if (onlyOneMore) {\n\t break;\n\t }\n\t // We don't want to calculate iframe offsets upwards beyond\n\t // the iframe containing the boundaryWindow, but we\n\t // need to calculate the offset relative to the boundaryWindow.\n\t if (currentIframe && getOwnerWindow(currentIframe) === boundaryWindow) {\n\t onlyOneMore = true;\n\t }\n\t }\n\t\n\t return mergeRectOffsets(rects);\n\t } else {\n\t return node.getBoundingClientRect();\n\t }\n\t}\n\t\n\tfunction boxWrap(dims, what, node) {\n\t assign(node.style, {\n\t borderTopWidth: dims[what + 'Top'] + 'px',\n\t borderLeftWidth: dims[what + 'Left'] + 'px',\n\t borderRightWidth: dims[what + 'Right'] + 'px',\n\t borderBottomWidth: dims[what + 'Bottom'] + 'px',\n\t borderStyle: 'solid'\n\t });\n\t}\n\t\n\tvar overlayStyles = {\n\t background: 'rgba(120, 170, 210, 0.7)',\n\t padding: 'rgba(77, 200, 0, 0.3)',\n\t margin: 'rgba(255, 155, 0, 0.3)',\n\t border: 'rgba(255, 200, 50, 0.3)'\n\t};\n\t\n\tmodule.exports = Overlay;\n\n/***/ },\n/* 51 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tmodule.exports = {\n\t monospace: {\n\t family: 'Menlo, Consolas, monospace',\n\t sizes: {\n\t normal: 11,\n\t large: 14\n\t }\n\t },\n\t sansSerif: {\n\t family: '\"Helvetica Neue\", \"Lucida Grande\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, sans-serif',\n\t sizes: {\n\t small: 10,\n\t normal: 12,\n\t large: 14\n\t }\n\t }\n\t};\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar assign = __webpack_require__(3);\n\t\n\tvar MultiOverlay = function () {\n\t function MultiOverlay(window) {\n\t _classCallCheck(this, MultiOverlay);\n\t\n\t this.win = window;\n\t var doc = window.document;\n\t this.container = doc.createElement('div');\n\t doc.body.appendChild(this.container);\n\t this._currentNodes = null;\n\t }\n\t\n\t _createClass(MultiOverlay, [{\n\t key: 'highlightMany',\n\t value: function highlightMany(nodes) {\n\t var _this = this;\n\t\n\t this._currentNodes = nodes;\n\t this.container.innerHTML = '';\n\t\n\t nodes.forEach(function (node) {\n\t var div = _this.win.document.createElement('div');\n\t if (typeof node.getBoundingClientRect !== 'function') {\n\t return;\n\t }\n\t var box = node.getBoundingClientRect();\n\t if (box.bottom < 0 || box.top > window.innerHeight) {\n\t return;\n\t }\n\t assign(div.style, {\n\t top: box.top + 'px',\n\t left: box.left + 'px',\n\t width: box.width + 'px',\n\t height: box.height + 'px',\n\t border: '2px dotted rgba(200, 100, 100, .8)',\n\t boxSizing: 'border-box',\n\t backgroundColor: 'rgba(200, 100, 100, .2)',\n\t position: 'fixed',\n\t zIndex: 10000000,\n\t pointerEvents: 'none'\n\t });\n\t _this.container.appendChild(div);\n\t });\n\t }\n\t }, {\n\t key: 'refresh',\n\t value: function refresh() {\n\t if (this._currentNodes) {\n\t this.highlightMany(this._currentNodes);\n\t }\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t if (this.container.parentNode) {\n\t this.container.parentNode.removeChild(this.container);\n\t this._currentNodes = null;\n\t }\n\t }\n\t }]);\n\t\n\t return MultiOverlay;\n\t}();\n\t\n\tmodule.exports = MultiOverlay;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** backend.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 0ba723809147dbeaa75b\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 * @flow\n */\n'use strict';\n\ntype ConnectOptions = {\n host?: string,\n port?: number,\n resolveRNStyle?: (style: number) => ?Object,\n isAppActive?: () => boolean,\n websocket?: ?WebSocket,\n};\n\nvar Agent = require('../../../agent/Agent');\nvar Bridge = require('../../../agent/Bridge');\nvar installGlobalHook = require('../../../backend/installGlobalHook');\nvar installRelayHook = require('../../../plugins/Relay/installRelayHook');\nvar inject = require('../../../agent/inject');\nvar setupRNStyle = require('../../../plugins/ReactNativeStyle/setupBackend');\nvar setupRelay = require('../../../plugins/Relay/backend');\n\ninstallGlobalHook(window);\ninstallRelayHook(window);\n\nif (window.document) {\n // This shell is universal, and might be used inside a web app.\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.on('react-devtools', agent => {\n var setupHighlighter = require('../../../frontend/Highlighter/setup');\n setupHighlighter(agent);\n });\n}\n\nfunction connectToDevTools(options: ?ConnectOptions) {\n var {\n host = 'localhost',\n port = 8097,\n websocket,\n resolveRNStyle = null,\n isAppActive = () => true,\n } = options || {};\n\n function scheduleRetry() {\n // Two seconds because RN had issues with too fast retries.\n setTimeout(() => connectToDevTools(options), 2000);\n }\n\n if (!isAppActive()) {\n // If the app is in background, maybe retry later.\n // Don't actually attempt to connect until we're in foreground.\n scheduleRetry();\n return;\n }\n\n var messageListeners = [];\n var closeListeners = [];\n var uri = 'ws://' + host + ':' + port;\n // If existing websocket is passed, use it.\n // This is necessary to support our custom integrations.\n // See D6251744.\n var ws = websocket ? websocket : new window.WebSocket(uri);\n ws.onclose = handleClose;\n ws.onerror = handleClose;\n ws.onmessage = handleMessage;\n ws.onopen = function() {\n var wall = {\n listen(fn) {\n messageListeners.push(fn);\n },\n onClose(fn) {\n closeListeners.push(fn);\n },\n send(data) {\n ws.send(JSON.stringify(data));\n },\n };\n setupBackend(wall, resolveRNStyle);\n };\n\n var hasClosed = false;\n function handleClose() {\n if (!hasClosed) {\n hasClosed = true;\n scheduleRetry();\n closeListeners.forEach(fn => fn());\n }\n }\n\n function handleMessage(evt) {\n var data;\n try {\n data = JSON.parse(evt.data);\n } catch (e) {\n console.error('failed to parse json: ' + evt.data);\n return;\n }\n messageListeners.forEach(fn => {\n try {\n fn(data);\n } catch (e) {\n // jsc doesn't play so well with tracebacks that go into eval'd code,\n // so the stack trace here will stop at the `eval()` call. Getting the\n // message that caused the error is the best we can do for now.\n console.log(data);\n throw e;\n }\n });\n }\n}\n\nfunction setupBackend(wall, resolveRNStyle) {\n wall.onClose(() => {\n if (agent) {\n agent.emit('shutdown');\n }\n // This appears necessary for plugin (e.g. Relay) cleanup.\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.emit('shutdown');\n bridge = null;\n agent = null;\n console.log('closing devtools');\n });\n\n var bridge = new Bridge(wall);\n var agent = new Agent(window, {\n rnStyle: !!resolveRNStyle,\n rnStyleMeasure: !!resolveRNStyle,\n });\n agent.addBridge(bridge);\n\n if (resolveRNStyle) {\n setupRNStyle(bridge, agent, resolveRNStyle);\n }\n\n setupRelay(bridge, agent, window.__REACT_DEVTOOLS_GLOBAL_HOOK__);\n\n var _connectTimeout = setTimeout(() => {\n console.warn('react-devtools agent got no connection');\n }, 20000);\n\n agent.once('connected', () => {\n if (!agent) {\n return;\n }\n inject(window.__REACT_DEVTOOLS_GLOBAL_HOOK__, agent);\n clearTimeout(_connectTimeout);\n });\n}\n\nmodule.exports = { connectToDevTools };\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/backend.js\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 * @flow\n */\n'use strict';\n\nvar {EventEmitter} = require('events');\n\nvar assign = require('object-assign');\nvar guid = require('../utils/guid');\nvar getIn = require('./getIn');\n\nimport type {RendererID, DataType, OpaqueNodeHandle, NativeType, Helpers} from '../backend/types';\n\ntype ElementID = string;\n\nimport type Bridge from './Bridge';\n\n/**\n * The agent lives on the page in the same context as React, observes events\n * from the `backend`, and communicates (via a `Bridge`) with the frontend.\n *\n * It is responsible for generating string IDs (ElementID) for each react\n * element, maintaining a mapping of those IDs to elements, handling messages\n * from the frontend, and translating between react elements and native\n * handles.\n *\n *\n * React\n * |\n * v\n * backend\n * |\n * v\n * -----------\n * | **Agent** |\n * -----------\n * ^\n * |\n * v\n * (Bridge)\n * ^\n * |\n * serialization\n * |\n * v\n * (Bridge)\n * ^\n * |\n * v\n * ----------------\n * | Frontend Store |\n * ----------------\n *\n *\n * Events from the `backend`:\n * - root (got a root)\n * - mount (a component mounted)\n * - update (a component updated)\n * - unmount (a component mounted)\n *\n * Events from the `frontend` Store:\n * - see `addBridge` for subscriptions\n *\n * Events that Agent fires:\n * - selected\n * - hideHighlight\n * - startInspecting\n * - stopInspecting\n * - shutdown\n * - highlight /highlightMany\n * - setSelection\n * - root\n * - mount\n * - update\n * - unmount\n */\nclass Agent extends EventEmitter {\n // the window or global -> used to \"make a value available in the console\"\n global: Object;\n internalInstancesById: Map<ElementID, OpaqueNodeHandle>;\n idsByInternalInstances: WeakMap<OpaqueNodeHandle, ElementID>;\n renderers: Map<ElementID, RendererID>;\n elementData: Map<ElementID, DataType>;\n roots: Set<ElementID>;\n reactInternals: {[key: RendererID]: Helpers};\n _prevSelected: ?NativeType;\n _scrollUpdate: boolean;\n capabilities: {[key: string]: boolean};\n _updateScroll: () => void;\n _inspectEnabled: boolean;\n\n constructor(global: Object, capabilities?: Object) {\n super();\n this.global = global;\n this.internalInstancesById = new Map();\n this.idsByInternalInstances = new WeakMap();\n this.renderers = new Map();\n this.elementData = new Map();\n this.roots = new Set();\n this.reactInternals = {};\n var lastSelected;\n this.on('selected', id => {\n var data = this.elementData.get(id);\n if (data && data.publicInstance && this.global.$r === lastSelected) {\n this.global.$r = data.publicInstance;\n lastSelected = data.publicInstance;\n }\n });\n this._prevSelected = null;\n this._scrollUpdate = false;\n var isReactDOM = window.document && typeof window.document.createElement === 'function';\n this.capabilities = assign({\n scroll: isReactDOM && typeof window.document.body.scrollIntoView === 'function',\n dom: isReactDOM,\n editTextContent: false,\n }, capabilities);\n\n if (isReactDOM) {\n this._updateScroll = this._updateScroll.bind(this);\n window.addEventListener('scroll', this._onScroll.bind(this), true);\n window.addEventListener('click', this._onClick.bind(this), true);\n window.addEventListener('mouseover', this._onMouseOver.bind(this), true);\n window.addEventListener('resize', this._onResize.bind(this), true);\n }\n }\n\n // returns an \"unsubscribe\" function\n sub(ev: string, fn: (data: any) => void): () => void {\n this.on(ev, fn);\n return () => {\n this.removeListener(ev, fn);\n };\n }\n\n setReactInternals(renderer: RendererID, reactInternals: Helpers) {\n this.reactInternals[renderer] = reactInternals;\n }\n\n addBridge(bridge: Bridge) {\n /** Events received from the frontend **/\n // the initial handshake\n bridge.on('requestCapabilities', () => {\n bridge.send('capabilities', this.capabilities);\n this.emit('connected');\n });\n bridge.on('setState', this._setState.bind(this));\n bridge.on('setProps', this._setProps.bind(this));\n bridge.on('setContext', this._setContext.bind(this));\n bridge.on('makeGlobal', this._makeGlobal.bind(this));\n bridge.on('highlight', id => this.highlight(id));\n bridge.on('highlightMany', id => this.highlightMany(id));\n bridge.on('hideHighlight', () => this.emit('hideHighlight'));\n bridge.on('startInspecting', () => this.emit('startInspecting'));\n bridge.on('stopInspecting', () => this.emit('stopInspecting'));\n bridge.on('selected', id => this.emit('selected', id));\n bridge.on('setInspectEnabled', enabled => {\n this._inspectEnabled = enabled;\n this.emit('stopInspecting');\n });\n bridge.on('shutdown', () => this.emit('shutdown'));\n bridge.on('changeTextContent', ({id, text}) => {\n var node = this.getNodeForID(id);\n if (!node) {\n return;\n }\n node.textContent = text;\n });\n // used to \"inspect node in Elements pane\"\n bridge.on('putSelectedNode', id => {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$node = this.getNodeForID(id);\n });\n // used to \"view source in Sources pane\"\n bridge.on('putSelectedInstance', id => {\n var node = this.elementData.get(id);\n if (node) {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$type = node.type;\n } else {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$type = null;\n }\n if (node && node.publicInstance) {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$inst = node.publicInstance;\n } else {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$inst = null;\n }\n });\n // used to select the inspected node ($0)\n bridge.on('checkSelection', () => {\n var newSelected = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$0;\n if (newSelected !== this._prevSelected) {\n this._prevSelected = newSelected;\n var sentSelected = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$node;\n if (newSelected !== sentSelected) {\n this.selectFromDOMNode(newSelected, true);\n }\n }\n });\n bridge.on('scrollToNode', id => this.scrollToNode(id));\n bridge.on('traceupdatesstatechange', value => this.emit('traceupdatesstatechange', value));\n bridge.on('colorizerchange', value => this.emit('colorizerchange', value));\n\n /** Events sent to the frontend **/\n this.on('root', id => bridge.send('root', id));\n this.on('mount', data => bridge.send('mount', data));\n this.on('update', data => bridge.send('update', data));\n this.on('unmount', id => {\n bridge.send('unmount', id);\n // once an element has been unmounted, the bridge doesn't need to be\n // able to inspect it anymore.\n bridge.forget(id);\n });\n this.on('setSelection', data => bridge.send('select', data));\n this.on('setInspectEnabled', data => bridge.send('setInspectEnabled', data));\n }\n\n scrollToNode(id: ElementID): void {\n var node = this.getNodeForID(id);\n if (!node) {\n console.warn('unable to get the node for scrolling');\n return;\n }\n var domElement = node.nodeType === Node.ELEMENT_NODE ? node : node.parentElement;\n if (!domElement) {\n console.warn('unable to get the domElement for scrolling');\n return;\n }\n\n if (typeof domElement.scrollIntoViewIfNeeded === 'function') {\n domElement.scrollIntoViewIfNeeded();\n } else if (typeof domElement.scrollIntoView === 'function') {\n domElement.scrollIntoView();\n }\n this.highlight(id);\n }\n\n highlight(id: ElementID) {\n var data = this.elementData.get(id);\n var node = this.getNodeForID(id);\n if (data && node) {\n this.emit('highlight', {node, name: data.name, props: data.props});\n }\n }\n\n highlightMany(ids: Array<ElementID>) {\n var nodes = [];\n ids.forEach(id => {\n var node = this.getNodeForID(id);\n if (node) {\n nodes.push(node);\n }\n });\n if (nodes.length) {\n this.emit('highlightMany', nodes);\n }\n }\n\n getNodeForID(id: ElementID): ?Object {\n var component = this.internalInstancesById.get(id);\n if (!component) {\n return null;\n }\n var renderer = this.renderers.get(id);\n if (renderer && this.reactInternals[renderer].getNativeFromReactElement) {\n return this.reactInternals[renderer].getNativeFromReactElement(component);\n }\n return null;\n }\n\n selectFromDOMNode(node: Object, quiet?: boolean, offsetFromLeaf: ?number = 0) {\n var id = this.getIDForNode(node);\n if (!id) {\n return;\n }\n this.emit('setSelection', {id, quiet, offsetFromLeaf});\n }\n\n // TODO: remove this method because it's breaking encapsulation.\n // It was used by RN inspector but this required leaking Fibers to it.\n // RN inspector will use selectFromDOMNode() instead now.\n // Remove this method in a few months after this comment was added.\n selectFromReactInstance(instance: OpaqueNodeHandle, quiet?: boolean) {\n var id = this.getId(instance);\n if (!id) {\n console.log('no instance id', instance);\n return;\n }\n this.emit('setSelection', {id, quiet});\n }\n\n getIDForNode(node: Object): ?ElementID {\n if (!this.reactInternals) {\n return null;\n }\n var component;\n for (var renderer in this.reactInternals) {\n // If a renderer doesn't know about a reactId, it will throw an error.\n try {\n // $FlowFixMe possibly null - it's not null\n component = this.reactInternals[renderer].getReactElementFromNative(node);\n } catch (e) {}\n if (component) {\n return this.getId(component);\n }\n }\n return null;\n }\n\n _setProps({id, path, value}: {id: ElementID, path: Array<string>, value: any}) {\n var data = this.elementData.get(id);\n if (data && data.updater && data.updater.setInProps) {\n data.updater.setInProps(path, value);\n } else {\n console.warn(\"trying to set props on a component that doesn't support it\");\n }\n }\n\n _setState({id, path, value}: {id: ElementID, path: Array<string>, value: any}) {\n var data = this.elementData.get(id);\n if (data && data.updater && data.updater.setInState) {\n data.updater.setInState(path, value);\n } else {\n console.warn(\"trying to set state on a component that doesn't support it\");\n }\n }\n\n _setContext({id, path, value}: {id: ElementID, path: Array<string>, value: any}) {\n var data = this.elementData.get(id);\n if (data && data.updater && data.updater.setInContext) {\n data.updater.setInContext(path, value);\n } else {\n console.warn(\"trying to set context on a component that doesn't support it\");\n }\n }\n\n _makeGlobal({id, path}: {id: ElementID, path: Array<string>}) {\n var data = this.elementData.get(id);\n if (!data) {\n return;\n }\n var value;\n if (path === 'instance') {\n value = data.publicInstance;\n } else {\n value = getIn(data, path);\n }\n this.global.$tmp = value;\n console.log('$tmp =', value);\n }\n\n getId(internalInstance: OpaqueNodeHandle): ElementID {\n if (typeof internalInstance !== 'object' || !internalInstance) {\n return internalInstance;\n }\n if (!this.idsByInternalInstances.has(internalInstance)) {\n this.idsByInternalInstances.set(internalInstance, guid());\n this.internalInstancesById.set(\n this.idsByInternalInstances.get(internalInstance),\n internalInstance\n );\n }\n return this.idsByInternalInstances.get(internalInstance);\n }\n\n addRoot(renderer: RendererID, internalInstance: OpaqueNodeHandle) {\n var id = this.getId(internalInstance);\n this.roots.add(id);\n this.emit('root', id);\n }\n\n onMounted(renderer: RendererID, component: OpaqueNodeHandle, data: DataType) {\n var id = this.getId(component);\n this.renderers.set(id, renderer);\n this.elementData.set(id, data);\n\n var send = assign({}, data);\n if (send.children && send.children.map) {\n send.children = send.children.map(c => this.getId(c));\n }\n send.id = id;\n send.canUpdate = send.updater && !!send.updater.forceUpdate;\n delete send.type;\n delete send.updater;\n this.emit('mount', send);\n }\n\n onUpdated(component: OpaqueNodeHandle, data: DataType) {\n var id = this.getId(component);\n this.elementData.set(id, data);\n\n var send = assign({}, data);\n if (send.children && send.children.map) {\n send.children = send.children.map(c => this.getId(c));\n }\n send.id = id;\n send.canUpdate = send.updater && !!send.updater.forceUpdate;\n delete send.type;\n delete send.updater;\n this.emit('update', send);\n }\n\n onUnmounted(component: OpaqueNodeHandle) {\n var id = this.getId(component);\n this.elementData.delete(id);\n this.roots.delete(id);\n this.renderers.delete(id);\n this.emit('unmount', id);\n this.idsByInternalInstances.delete(component);\n }\n\n _onScroll() {\n if (!this._scrollUpdate) {\n this._scrollUpdate = true;\n window.requestAnimationFrame(this._updateScroll);\n }\n }\n\n _updateScroll() {\n this.emit('refreshMultiOverlay');\n this.emit('stopInspecting');\n this._scrollUpdate = false;\n }\n\n _onClick(event: Event) {\n if (!this._inspectEnabled) {\n return;\n }\n\n var id = this.getIDForNode(event.target);\n if (!id) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n this.emit('setSelection', {id});\n this.emit('setInspectEnabled', false);\n }\n\n _onMouseOver(event: Event) {\n if (this._inspectEnabled) {\n const id = this.getIDForNode(event.target);\n if (!id) {\n return;\n }\n \n this.highlight(id);\n }\n }\n\n _onResize(event: Event) {\n this.emit('stopInspecting');\n }\n}\n\nmodule.exports = Agent;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/agent/Agent.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/events/events.js\n ** module id = 2\n ** module chunks = 0\n **/","/* eslint-disable no-unused-vars */\n'use strict';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/object-assign/index.js\n ** module id = 3\n ** module chunks = 0\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 * @flow\n */\n'use strict';\n\nfunction guid(): string {\n return 'g' + Math.random().toString(16).substr(2);\n}\n\nmodule.exports = guid;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/utils/guid.js\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 */\n\n/**\n * Retrieves the value from the path of nested objects\n * @param {Object} base Base or root object for path\n * @param {Array<String>} path nested path\n * @return {any} Value at end of path or `mull`\n */\nfunction getIn(base, path) {\n return path.reduce((obj, attr) => {\n if (obj) {\n if (obj.hasOwnProperty(attr)) {\n return obj[attr];\n }\n if (typeof obj[Symbol.iterator] === 'function') {\n // Convert iterable to array and return array[index]\n return [...obj][attr];\n }\n }\n\n return null;\n }, base);\n}\n\nmodule.exports = getIn;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/agent/getIn.js\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 * @flow\n */\n'use strict';\n\nvar consts = require('./consts');\nvar hydrate = require('./hydrate');\nvar dehydrate = require('./dehydrate');\nvar getIn = require('./getIn');\nvar performanceNow = require('fbjs/lib/performanceNow');\n\n// Use the polyfill if the function is not native implementation\nfunction getWindowFunction(name, polyfill): Function {\n if (String(window[name]).indexOf('[native code]') === -1) {\n return polyfill;\n }\n return window[name];\n}\n\n// Custom polyfill that runs the queue with a backoff.\n// If you change it, make sure it behaves reasonably well in Firefox.\nvar lastRunTimeMS = 5;\nvar cancelIdleCallback = getWindowFunction('cancelIdleCallback', clearTimeout);\nvar requestIdleCallback = getWindowFunction('requestIdleCallback', function(cb, options) {\n // Magic numbers determined by tweaking in Firefox.\n // There is no special meaning to them.\n var delayMS = 3000 * lastRunTimeMS;\n if (delayMS > 500) {\n delayMS = 500;\n }\n\n return setTimeout(() => {\n var startTime = performanceNow();\n cb({\n didTimeout: false,\n timeRemaining() {\n return Infinity;\n },\n });\n var endTime = performanceNow();\n lastRunTimeMS = (endTime - startTime) / 1000;\n }, delayMS);\n});\n\ntype AnyFn = (...x: any) => any;\nexport type Wall = {\n listen: (fn: (data: PayloadType) => void) => void,\n send: (data: PayloadType) => void,\n};\n\ntype IdleDeadline = {\n didTimeout: bool,\n timeRemaining: () => number,\n};\n\ntype EventPayload = {\n type: 'event',\n cleaned: ?Array<Array<string>>,\n evt: string,\n data: any,\n};\n\ntype PayloadType = {\n type: 'inspect',\n id: string,\n path: Array<string>,\n callback: number,\n} | {\n type: 'many-events',\n events: Array<EventPayload>,\n} | {\n type: 'call',\n name: string,\n args: Array<any>,\n callback: number,\n} | {\n type: 'callback',\n id: number,\n args: Array<any>,\n} | {\n type: 'pause',\n} | {\n type: 'resume',\n} | EventPayload;\n\n/**\n * The bridge is responsible for serializing requests between the Agent and\n * the Frontend Store. It needs to be connected to a Wall object that can send\n * JSONable data to the bridge on the other side.\n *\n * complex data\n * |\n * v\n * [Bridge]\n * |\n * jsonable data\n * |\n * v\n * [wall]\n * |\n * v\n * ~ some barrier ~\n * |\n * v\n * [wall]\n * |\n * v\n * [Bridge]\n * |\n * v\n * \"hydrated\" data\n *\n * When an item is passed in that can't be serialized (anything other than a\n * plain array, object, or literal value), the object is \"cleaned\", and\n * rehydrated on the other side with `Symbol` attributes indicating that the\n * object needs to be inspected for more detail.\n *\n * Example:\n *\n * bridge.send('evname', {id: 'someid', foo: MyCoolObjectInstance})\n * ->\n * shows up, hydrated as\n * {\n * id: 'someid',\n * foo: {\n * [consts.name]: 'MyCoolObjectInstance',\n * [consts.type]: 'object',\n * [consts.meta]: {},\n * [consts.inspected]: false,\n * }\n * }\n *\n * The `consts` variables are Symbols, and as such are non-ennumerable.\n * The front-end therefore needs to check for `consts.inspected` on received\n * objects, and can thereby display object proxies and inspect them.\n *\n * Complex objects that are passed are expected to have a top-level `id`\n * attribute, which is used for later lookup + inspection. Once it has been\n * determined that an object is no longer needed, call `.forget(id)` to clean\n * up.\n */\nclass Bridge {\n _buffer: Array<{evt: string, data: any}>;\n _cbs: Map;\n _cid: number;\n _inspectables: Map;\n _listeners: {[key: string]: Array<(data: any) => void>};\n _flushHandle: ?number;\n _wall: Wall;\n _callers: {[key: string]: AnyFn};\n _paused: boolean;\n\n constructor(wall: Wall) {\n this._cbs = new Map();\n this._inspectables = new Map();\n this._cid = 0;\n this._listeners = {};\n this._buffer = [];\n this._flushHandle = null;\n this._callers = {};\n this._paused = false;\n this._wall = wall;\n\n wall.listen(this._handleMessage.bind(this));\n }\n\n inspect(id: string, path: Array<string>, cb: (val: any) => any) {\n var _cid = this._cid++;\n this._cbs.set(_cid, (data, cleaned, proto, protoclean) => {\n if (cleaned.length) {\n hydrate(data, cleaned);\n }\n if (proto && protoclean.length) {\n hydrate(proto, protoclean);\n }\n if (proto) {\n data[consts.proto] = proto;\n }\n cb(data);\n });\n\n this._wall.send({\n type: 'inspect',\n callback: _cid,\n path,\n id,\n });\n }\n\n call(name: string, args: Array<any>, cb: (val: any) => any) {\n var _cid = this._cid++;\n this._cbs.set(_cid, cb);\n\n this._wall.send({\n type: 'call',\n callback: _cid,\n args,\n name,\n });\n }\n\n onCall(name: string, handler: (data: any) => any) {\n if (this._callers[name]) {\n throw new Error('only one call handler per call name allowed');\n }\n this._callers[name] = handler;\n }\n\n pause() {\n this._wall.send({\n type: 'pause',\n });\n }\n\n resume() {\n this._wall.send({\n type: 'resume',\n });\n }\n\n setInspectable(id: string, data: Object) {\n var prev = this._inspectables.get(id);\n if (!prev) {\n this._inspectables.set(id, data);\n return;\n }\n this._inspectables.set(id, {...prev, ...data});\n }\n\n send(evt: string, data: any) {\n this._buffer.push({evt, data});\n this.scheduleFlush();\n }\n\n scheduleFlush() {\n if (!this._flushHandle && this._buffer.length) {\n var timeout = this._paused ? 5000 : 500;\n this._flushHandle = requestIdleCallback(\n this.flushBufferWhileIdle.bind(this),\n {timeout}\n );\n }\n }\n\n cancelFlush() {\n if (this._flushHandle) {\n cancelIdleCallback(this._flushHandle);\n this._flushHandle = null;\n }\n }\n\n flushBufferWhileIdle(deadline: IdleDeadline) {\n this._flushHandle = null;\n\n // Magic numbers were determined by tweaking in a heavy UI and seeing\n // what performs reasonably well both when DevTools are hidden and visible.\n // The goal is that we try to catch up but avoid blocking the UI.\n // When paused, it's okay to lag more, but not forever because otherwise\n // when user activates React tab, it will freeze syncing.\n var chunkCount = this._paused ? 20 : 10;\n var chunkSize = Math.round(this._buffer.length / chunkCount);\n var minChunkSize = this._paused ? 50 : 100;\n\n while (this._buffer.length && (\n deadline.timeRemaining() > 0 ||\n deadline.didTimeout\n )) {\n var take = Math.min(this._buffer.length, Math.max(minChunkSize, chunkSize));\n var currentBuffer = this._buffer.splice(0, take);\n this.flushBufferSlice(currentBuffer);\n }\n\n if (this._buffer.length) {\n this.scheduleFlush();\n }\n }\n\n flushBufferSlice(bufferSlice: Array<{evt: string, data: any}>) {\n var events = bufferSlice.map(({evt, data}) => {\n var cleaned = [];\n var san = dehydrate(data, cleaned);\n if (cleaned.length) {\n this.setInspectable(data.id, data);\n }\n return {type: 'event', evt, data: san, cleaned};\n });\n this._wall.send({type: 'many-events', events});\n }\n\n forget(id: string) {\n this._inspectables.delete(id);\n }\n\n on(evt: string, fn: AnyFn) {\n if (!this._listeners[evt]) {\n this._listeners[evt] = [fn];\n } else {\n this._listeners[evt].push(fn);\n }\n }\n\n off(evt: string, fn: AnyFn) {\n if (!this._listeners[evt]) {\n return;\n }\n var ix = this._listeners[evt].indexOf(fn);\n if (ix !== -1) {\n this._listeners[evt].splice(ix, 1);\n }\n }\n\n once(evt: string, fn: AnyFn) {\n var self = this;\n var listener = function() {\n fn.apply(this, arguments);\n self.off(evt, listener);\n };\n this.on(evt, listener);\n }\n\n _handleMessage(payload: PayloadType) {\n if (payload.type === 'resume') {\n this._paused = false;\n this.scheduleFlush();\n return;\n }\n\n if (payload.type === 'pause') {\n this._paused = true;\n this.cancelFlush();\n return;\n }\n\n if (payload.type === 'callback') {\n var callback = this._cbs.get(payload.id);\n if (callback) {\n callback(...payload.args);\n this._cbs.delete(payload.id);\n }\n return;\n }\n\n if (payload.type === 'call') {\n this._handleCall(payload.name, payload.args, payload.callback);\n return;\n }\n\n if (payload.type === 'inspect') {\n this._inspectResponse(payload.id, payload.path, payload.callback);\n return;\n }\n\n if (payload.type === 'event') {\n // console.log('[bridge<-]', payload.evt);\n if (payload.cleaned) {\n hydrate(payload.data, payload.cleaned);\n }\n var fns = this._listeners[payload.evt];\n var data = payload.data;\n if (fns) {\n fns.forEach(fn => fn(data));\n }\n }\n\n if (payload.type === 'many-events') {\n payload.events.forEach(event => {\n // console.log('[bridge<-]', payload.evt);\n if (event.cleaned) {\n hydrate(event.data, event.cleaned);\n }\n var handlers = this._listeners[event.evt];\n if (handlers) {\n handlers.forEach(fn => fn(event.data));\n }\n });\n }\n }\n\n _handleCall(name: string, args: Array<any>, callback: number) {\n if (!this._callers[name]) {\n console.warn('unknown call: \"' + name + '\"');\n return;\n }\n args = !Array.isArray(args) ? [args] : args;\n var result;\n try {\n result = this._callers[name].apply(null, args);\n } catch (e) {\n console.error('Failed to call', e);\n return;\n }\n this._wall.send({\n type: 'callback',\n id: callback,\n args: [result],\n });\n }\n\n _inspectResponse(id: string, path: Array<string>, callback: number) {\n var inspectable = this._inspectables.get(id);\n var result = {};\n var cleaned = [];\n var proto = null;\n var protoclean = [];\n\n if (inspectable) {\n var val = getIn(inspectable, path);\n var protod = false;\n var isFn = typeof val === 'function';\n\n if (val && typeof val[Symbol.iterator] === 'function') {\n var iterVal = Object.create({}); // flow throws \"object literal incompatible with object type\"\n var count = 0;\n for (const entry of val) {\n if (count > 100) {\n // TODO: replace this if block with better logic to handle large iterables\n break;\n }\n iterVal[count] = entry;\n count++;\n }\n val = iterVal;\n }\n\n Object.getOwnPropertyNames(val).forEach(name => {\n if (name === '__proto__') {\n protod = true;\n }\n if (isFn && (name === 'arguments' || name === 'callee' || name === 'caller')) {\n return;\n }\n result[name] = dehydrate(val[name], cleaned, [name]);\n });\n\n /* eslint-disable no-proto */\n if (!protod && val.__proto__ && val.constructor.name !== 'Object') {\n var newProto = {};\n var pIsFn = typeof val.__proto__ === 'function';\n Object.getOwnPropertyNames(val.__proto__).forEach(name => {\n if (pIsFn && (name === 'arguments' || name === 'callee' || name === 'caller')) {\n return;\n }\n newProto[name] = dehydrate(val.__proto__[name], protoclean, [name]);\n });\n proto = newProto;\n }\n /* eslint-enable no-proto */\n }\n\n this._wall.send({\n type: 'callback',\n id: callback,\n args: [result, cleaned, proto, protoclean],\n });\n }\n}\n\nmodule.exports = Bridge;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/agent/Bridge.js\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 * @flow\n */\n'use strict';\n\nvar Symbol = require('es6-symbol');\n\nmodule.exports = {\n name: Symbol('name'),\n type: Symbol('type'),\n inspected: Symbol('inspected'),\n meta: Symbol('meta'),\n proto: Symbol('proto'),\n};\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/agent/consts.js\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')() ? Symbol : require('./polyfill');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es6-symbol/index.js\n ** module id = 8\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function () {\n\tvar symbol;\n\tif (typeof Symbol !== 'function') return false;\n\tsymbol = Symbol('test symbol');\n\ttry { String(symbol); } catch (e) { return false; }\n\tif (typeof Symbol.iterator === 'symbol') return true;\n\n\t// Return 'true' for polyfills\n\tif (typeof Symbol.isConcatSpreadable !== 'object') return false;\n\tif (typeof Symbol.iterator !== 'object') return false;\n\tif (typeof Symbol.toPrimitive !== 'object') return false;\n\tif (typeof Symbol.toStringTag !== 'object') return false;\n\tif (typeof Symbol.unscopables !== 'object') return false;\n\n\treturn true;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es6-symbol/is-implemented.js\n ** module id = 9\n ** module chunks = 0\n **/","// ES2015 Symbol polyfill for environments that do not support it (or partially support it_\n\n'use strict';\n\nvar d = require('d')\n , validateSymbol = require('./validate-symbol')\n\n , create = Object.create, defineProperties = Object.defineProperties\n , defineProperty = Object.defineProperty, objPrototype = Object.prototype\n , NativeSymbol, SymbolPolyfill, HiddenSymbol, globalSymbols = create(null);\n\nif (typeof Symbol === 'function') NativeSymbol = Symbol;\n\nvar generateName = (function () {\n\tvar created = create(null);\n\treturn function (desc) {\n\t\tvar postfix = 0, name, ie11BugWorkaround;\n\t\twhile (created[desc + (postfix || '')]) ++postfix;\n\t\tdesc += (postfix || '');\n\t\tcreated[desc] = true;\n\t\tname = '@@' + desc;\n\t\tdefineProperty(objPrototype, name, d.gs(null, function (value) {\n\t\t\t// For IE11 issue see:\n\t\t\t// https://connect.microsoft.com/IE/feedbackdetail/view/1928508/\n\t\t\t// ie11-broken-getters-on-dom-objects\n\t\t\t// https://github.com/medikoo/es6-symbol/issues/12\n\t\t\tif (ie11BugWorkaround) return;\n\t\t\tie11BugWorkaround = true;\n\t\t\tdefineProperty(this, name, d(value));\n\t\t\tie11BugWorkaround = false;\n\t\t}));\n\t\treturn name;\n\t};\n}());\n\n// Internal constructor (not one exposed) for creating Symbol instances.\n// This one is used to ensure that `someSymbol instanceof Symbol` always return false\nHiddenSymbol = function Symbol(description) {\n\tif (this instanceof HiddenSymbol) throw new TypeError('TypeError: Symbol is not a constructor');\n\treturn SymbolPolyfill(description);\n};\n\n// Exposed `Symbol` constructor\n// (returns instances of HiddenSymbol)\nmodule.exports = SymbolPolyfill = function Symbol(description) {\n\tvar symbol;\n\tif (this instanceof Symbol) throw new TypeError('TypeError: Symbol is not a constructor');\n\tsymbol = create(HiddenSymbol.prototype);\n\tdescription = (description === undefined ? '' : String(description));\n\treturn defineProperties(symbol, {\n\t\t__description__: d('', description),\n\t\t__name__: d('', generateName(description))\n\t});\n};\ndefineProperties(SymbolPolyfill, {\n\tfor: d(function (key) {\n\t\tif (globalSymbols[key]) return globalSymbols[key];\n\t\treturn (globalSymbols[key] = SymbolPolyfill(String(key)));\n\t}),\n\tkeyFor: d(function (s) {\n\t\tvar key;\n\t\tvalidateSymbol(s);\n\t\tfor (key in globalSymbols) if (globalSymbols[key] === s) return key;\n\t}),\n\n\t// If there's native implementation of given symbol, let's fallback to it\n\t// to ensure proper interoperability with other native functions e.g. Array.from\n\thasInstance: d('', (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill('hasInstance')),\n\tisConcatSpreadable: d('', (NativeSymbol && NativeSymbol.isConcatSpreadable) ||\n\t\tSymbolPolyfill('isConcatSpreadable')),\n\titerator: d('', (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill('iterator')),\n\tmatch: d('', (NativeSymbol && NativeSymbol.match) || SymbolPolyfill('match')),\n\treplace: d('', (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill('replace')),\n\tsearch: d('', (NativeSymbol && NativeSymbol.search) || SymbolPolyfill('search')),\n\tspecies: d('', (NativeSymbol && NativeSymbol.species) || SymbolPolyfill('species')),\n\tsplit: d('', (NativeSymbol && NativeSymbol.split) || SymbolPolyfill('split')),\n\ttoPrimitive: d('', (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill('toPrimitive')),\n\ttoStringTag: d('', (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill('toStringTag')),\n\tunscopables: d('', (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill('unscopables'))\n});\n\n// Internal tweaks for real symbol producer\ndefineProperties(HiddenSymbol.prototype, {\n\tconstructor: d(SymbolPolyfill),\n\ttoString: d('', function () { return this.__name__; })\n});\n\n// Proper implementation of methods exposed on Symbol.prototype\n// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype\ndefineProperties(SymbolPolyfill.prototype, {\n\ttoString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),\n\tvalueOf: d(function () { return validateSymbol(this); })\n});\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('',\n\tfunction () { return validateSymbol(this); }));\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));\n\n// Proper implementaton of toPrimitive and toStringTag for returned symbol instances\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag,\n\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));\n\n// Note: It's important to define `toPrimitive` as last one, as some implementations\n// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)\n// And that may invoke error in definition flow:\n// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive,\n\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es6-symbol/polyfill.js\n ** module id = 10\n ** module chunks = 0\n **/","'use strict';\n\nvar assign = require('es5-ext/object/assign')\n , normalizeOpts = require('es5-ext/object/normalize-options')\n , isCallable = require('es5-ext/object/is-callable')\n , contains = require('es5-ext/string/#/contains')\n\n , d;\n\nd = module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (dscr == null) {\n\t\tc = w = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t\tw = contains.call(dscr, 'w');\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== 'string') {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (get == null) {\n\t\tget = undefined;\n\t} else if (!isCallable(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (set == null) {\n\t\tset = undefined;\n\t} else if (!isCallable(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (dscr == null) {\n\t\tc = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/d/index.js\n ** module id = 11\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.assign\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/assign/index.js\n ** module id = 12\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== 'function') return false;\n\tobj = { foo: 'raz' };\n\tassign(obj, { bar: 'dwa' }, { trzy: 'trzy' });\n\treturn (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/assign/is-implemented.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\nvar keys = require('../keys')\n , value = require('../valid-value')\n\n , max = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, l = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry { dest[key] = src[key]; } catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < l; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/assign/shim.js\n ** module id = 14\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.keys\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/keys/index.js\n ** module id = 15\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys('primitive');\n\t\treturn true;\n\t} catch (e) { return false; }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/keys/is-implemented.js\n ** module id = 16\n ** module chunks = 0\n **/","'use strict';\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) {\n\treturn keys(object == null ? object : Object(object));\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/keys/shim.js\n ** module id = 17\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function (value) {\n\tif (value == null) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/valid-value.js\n ** module id = 18\n ** module chunks = 0\n **/","'use strict';\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\nmodule.exports = function (options/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (options == null) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/normalize-options.js\n ** module id = 19\n ** module chunks = 0\n **/","// Deprecated\n\n'use strict';\n\nmodule.exports = function (obj) { return typeof obj === 'function'; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/object/is-callable.js\n ** module id = 20\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? String.prototype.contains\n\t: require('./shim');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/string/#/contains/index.js\n ** module id = 21\n ** module chunks = 0\n **/","'use strict';\n\nvar str = 'razdwatrzy';\n\nmodule.exports = function () {\n\tif (typeof str.contains !== 'function') return false;\n\treturn ((str.contains('dwa') === true) && (str.contains('foo') === false));\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/string/#/contains/is-implemented.js\n ** module id = 22\n ** module chunks = 0\n **/","'use strict';\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es5-ext/string/#/contains/shim.js\n ** module id = 23\n ** module chunks = 0\n **/","'use strict';\n\nvar isSymbol = require('./is-symbol');\n\nmodule.exports = function (value) {\n\tif (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n\treturn value;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es6-symbol/validate-symbol.js\n ** module id = 24\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function (x) {\n\treturn (x && ((typeof x === 'symbol') || (x['@@toStringTag'] === 'Symbol'))) || false;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/es6-symbol/is-symbol.js\n ** module id = 25\n ** module chunks = 0\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 * @flow\n */\n'use strict';\n\nvar consts = require('./consts');\n\nfunction hydrate(data: Object, cleaned: Array<Array<string>>): void {\n cleaned.forEach(path => {\n var last = path.pop();\n var obj = path.reduce((obj_, attr) => obj_ ? obj_[attr] : null, data);\n if (!obj || !obj[last]) {\n return;\n }\n var replace: {[key: Symbol]: boolean | string} = {};\n replace[consts.name] = obj[last].name;\n replace[consts.type] = obj[last].type;\n replace[consts.meta] = obj[last].meta;\n replace[consts.inspected] = false;\n obj[last] = replace;\n });\n}\n\nmodule.exports = hydrate;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/agent/hydrate.js\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 * @flow\n */\n'use strict';\n\n/**\n * Get a enhanced/artificial type string based on the object instance\n */\nfunction getPropType(data: Object): string | null {\n if (!data) {\n return null;\n }\n var type = typeof data;\n\n if (type === 'object') {\n if (data._reactFragment) {\n return 'react_fragment';\n }\n if (Array.isArray(data)) {\n return 'array';\n }\n if (ArrayBuffer.isView(data)) {\n if (data instanceof DataView) {\n return 'data_view';\n }\n return 'typed_array';\n }\n if (data instanceof ArrayBuffer) {\n return 'array_buffer';\n }\n if (typeof data[Symbol.iterator] === 'function') {\n return 'iterator';\n }\n if (Object.prototype.toString.call(data) === '[object Date]') {\n return 'date';\n }\n }\n\n return type;\n}\n\n/**\n * Generate the dehydrated metadata for complex object instances\n */\nfunction createDehydrated(type: string, data: Object, cleaned: Array<Array<string>>, path: Array<string>): Object {\n var meta = {};\n\n if (type === 'array' || type === 'typed_array') {\n meta.length = data.length;\n }\n if (type === 'iterator' || type === 'typed_array') {\n meta.readOnly = true;\n }\n\n cleaned.push(path);\n\n return {\n type,\n meta,\n name: !data.constructor || data.constructor.name === 'Object' ? '' : data.constructor.name,\n };\n}\n\n/**\n * Strip out complex data (instances, functions, and data nested > 2 levels\n * deep). The paths of the stripped out objects are appended to the `cleaned`\n * list. On the other side of the barrier, the cleaned list is used to\n * \"re-hydrate\" the cleaned representation into an object with symbols as\n * attributes, so that a sanitized object can be distinguished from a normal\n * object.\n *\n * Input: {\"some\": {\"attr\": fn()}, \"other\": AnInstance}\n * Output: {\n * \"some\": {\n * \"attr\": {\"name\": the fn.name, type: \"function\"}\n * },\n * \"other\": {\n * \"name\": \"AnInstance\",\n * \"type\": \"object\",\n * },\n * }\n * and cleaned = [[\"some\", \"attr\"], [\"other\"]]\n */\nfunction dehydrate(data: Object, cleaned: Array<Array<string>>, path?: Array<string> = [], level?: number = 0): string | Object {\n\n var type = getPropType(data);\n\n switch (type) {\n\n case 'function':\n cleaned.push(path);\n return {\n name: data.name,\n type: 'function',\n };\n\n case 'string':\n return data.length <= 500 ? data : data.slice(0, 500) + '...';\n\n // We have to do this assignment b/c Flow doesn't think \"symbol\" is\n // something typeof would return. Error 'unexpected predicate \"symbol\"'\n case 'symbol':\n cleaned.push(path);\n return {\n type: 'symbol',\n name: data.toString(),\n };\n\n // React Fragments error if you try to inspect them.\n case 'react_fragment':\n return 'A React Fragment';\n\n // ArrayBuffers error if you try to inspect them.\n case 'array_buffer':\n case 'data_view':\n cleaned.push(path);\n return {\n type,\n name: type === 'data_view' ? 'DataView' : 'ArrayBuffer',\n meta: {\n length: data.byteLength,\n uninspectable: true,\n },\n };\n\n case 'array':\n if (level > 2) {\n return createDehydrated(type, data, cleaned, path);\n }\n return data.map((item, i) => dehydrate(item, cleaned, path.concat([i]), level + 1));\n\n case 'typed_array':\n case 'iterator':\n return createDehydrated(type, data, cleaned, path);\n case 'date':\n cleaned.push(path);\n return {\n name: data.toString(),\n type: 'date',\n meta: {\n uninspectable: true,\n },\n };\n case 'object':\n if (level > 2 || (data.constructor && typeof data.constructor === 'function' && data.constructor.name !== 'Object')) {\n return createDehydrated(type, data, cleaned, path);\n } else {\n\n var res = {};\n for (var name in data) {\n res[name] = dehydrate(data[name], cleaned, path.concat([name]), level + 1);\n }\n return res;\n }\n\n default:\n return data;\n }\n}\n\nmodule.exports = dehydrate;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/agent/dehydrate.js\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performanceNow\n * @typechecks\n */\n\n'use strict';\n\nvar performance = require('./performance');\n\nvar performanceNow;\n\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n * because of Facebook's testing infrastructure.\n */\nif (performance.now) {\n performanceNow = function () {\n return performance.now();\n };\n} else {\n performanceNow = function () {\n return Date.now();\n };\n}\n\nmodule.exports = performanceNow;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/fbjs/lib/performanceNow.js\n ** module id = 28\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performance\n * @typechecks\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n performance = window.performance || window.msPerformance || window.webkitPerformance;\n}\n\nmodule.exports = performance || {};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/fbjs/lib/performance.js\n ** module id = 29\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/fbjs/lib/ExecutionEnvironment.js\n ** module id = 30\n ** module chunks = 0\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 * @flow\n */\n'use strict';\n\nimport type {Hook} from './types';\n\n/**\n * NOTE: This file cannot `require` any other modules. We `.toString()` the\n * function in some places and inject the source into the page.\n */\nfunction installGlobalHook(window: Object) {\n if (window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n return;\n }\n function detectReactBuildType(renderer) {\n try {\n if (typeof renderer.version === 'string') {\n // React DOM Fiber (16+)\n if (renderer.bundleType > 0) {\n // This is not a production build.\n // We are currently only using 0 (PROD) and 1 (DEV)\n // but might add 2 (PROFILE) in the future.\n return 'development';\n }\n\n // React 16 uses flat bundles. If we report the bundle as production\n // version, it means we also minified and envified it ourselves.\n return 'production';\n // Note: There is still a risk that the CommonJS entry point has not\n // been envified or uglified. In this case the user would have *both*\n // development and production bundle, but only the prod one would run.\n // This would be really bad. We have a separate check for this because\n // it happens *outside* of the renderer injection. See `checkDCE` below.\n }\n var toString = Function.prototype.toString;\n if (renderer.Mount && renderer.Mount._renderNewRootComponent) {\n // React DOM Stack\n var renderRootCode = toString.call(renderer.Mount._renderNewRootComponent);\n // Filter out bad results (if that is even possible):\n if (renderRootCode.indexOf('function') !== 0) {\n // Hope for the best if we're not sure.\n return 'production';\n }\n // Check for React DOM Stack < 15.1.0 in development.\n // If it contains \"storedMeasure\" call, it's wrapped in ReactPerf (DEV only).\n // This would be true even if it's minified, as method name still matches.\n if (renderRootCode.indexOf('storedMeasure') !== -1) {\n return 'development';\n }\n // For other versions (and configurations) it's not so easy.\n // Let's quickly exclude proper production builds.\n // If it contains a warning message, it's either a DEV build,\n // or an PROD build without proper dead code elimination.\n if (renderRootCode.indexOf('should be a pure function') !== -1) {\n // Now how do we tell a DEV build from a bad PROD build?\n // If we see NODE_ENV, we're going to assume this is a dev build\n // because most likely it is referring to an empty shim.\n if (renderRootCode.indexOf('NODE_ENV') !== -1) {\n return 'development';\n }\n // If we see \"development\", we're dealing with an envified DEV build\n // (such as the official React DEV UMD).\n if (renderRootCode.indexOf('development') !== -1) {\n return 'development';\n }\n // I've seen process.env.NODE_ENV !== 'production' being smartly\n // replaced by `true` in DEV by Webpack. I don't know how that\n // works but we can safely guard against it because `true` was\n // never used in the function source since it was written.\n if (renderRootCode.indexOf('true') !== -1) {\n return 'development';\n }\n // By now either it is a production build that has not been minified,\n // or (worse) this is a minified development build using non-standard\n // environment (e.g. \"staging\"). We're going to look at whether\n // the function argument name is mangled:\n if (\n // 0.13 to 15\n renderRootCode.indexOf('nextElement') !== -1 ||\n // 0.12\n renderRootCode.indexOf('nextComponent') !== -1\n ) {\n // We can't be certain whether this is a development build or not,\n // but it is definitely unminified.\n return 'unminified';\n } else {\n // This is likely a minified development build.\n return 'development';\n }\n }\n // By now we know that it's envified and dead code elimination worked,\n // but what if it's still not minified? (Is this even possible?)\n // Let's check matches for the first argument name.\n if (\n // 0.13 to 15\n renderRootCode.indexOf('nextElement') !== -1 ||\n // 0.12\n renderRootCode.indexOf('nextComponent') !== -1\n ) {\n return 'unminified';\n }\n // Seems like we're using the production version.\n // Now let's check if we're still on 0.14 or lower:\n if (renderRootCode.indexOf('._registerComponent') !== -1) {\n // TODO: we can remove the condition above once 16\n // is older than a year. Since this branch only runs\n // for Stack, we can flip it completely when Stack\n // is old enough. The branch for Fiber is above,\n // and it can check renderer.version directly.\n return 'outdated';\n }\n // We're all good.\n return 'production';\n }\n } catch (err) {\n // Weird environments may exist.\n // This code needs a higher fault tolerance\n // because it runs even with closed DevTools.\n // TODO: should we catch errors in all injected code, and not just this part?\n }\n return 'production';\n }\n\n let hasDetectedBadDCE = false;\n\n const hook = ({\n // Shared between Stack and Fiber:\n _renderers: {},\n helpers: {},\n checkDCE: function(fn) {\n // This runs for production versions of React.\n // Needs to be super safe.\n try {\n var toString = Function.prototype.toString;\n var code = toString.call(fn);\n // This is a string embedded in the passed function under DEV-only\n // condition. However the function executes only in PROD. Therefore,\n // if we see it, dead code elimination did not work.\n if (code.indexOf('^_^') > -1) {\n // Remember to report during next injection.\n hasDetectedBadDCE = true;\n // Bonus: throw an exception hoping that it gets picked up by\n // a reporting system. Not synchronously so that it doesn't break the\n // calling code.\n setTimeout(function() {\n throw new Error(\n 'React is running in production mode, but dead code ' +\n 'elimination has not been applied. Read how to correctly ' +\n 'configure React for production: ' +\n 'https://fb.me/react-perf-use-the-production-build'\n );\n });\n }\n } catch (err) { }\n },\n inject: function(renderer) {\n var id = Math.random().toString(16).slice(2);\n hook._renderers[id] = renderer;\n var reactBuildType = hasDetectedBadDCE ?\n 'deadcode' :\n detectReactBuildType(renderer);\n hook.emit('renderer', {id, renderer, reactBuildType});\n return id;\n },\n _listeners: {},\n sub: function(evt, fn) {\n hook.on(evt, fn);\n return () => hook.off(evt, fn);\n },\n on: function(evt, fn) {\n if (!hook._listeners[evt]) {\n hook._listeners[evt] = [];\n }\n hook._listeners[evt].push(fn);\n },\n off: function(evt, fn) {\n if (!hook._listeners[evt]) {\n return;\n }\n var ix = hook._listeners[evt].indexOf(fn);\n if (ix !== -1) {\n hook._listeners[evt].splice(ix, 1);\n }\n if (!hook._listeners[evt].length) {\n hook._listeners[evt] = null;\n }\n },\n emit: function(evt, data) {\n if (hook._listeners[evt]) {\n hook._listeners[evt].map(fn => fn(data));\n }\n },\n // Fiber-only:\n supportsFiber: true,\n _fiberRoots: {},\n getFiberRoots(rendererID) {\n const roots = hook._fiberRoots;\n if (!roots[rendererID]) {\n roots[rendererID] = new Set();\n }\n return roots[rendererID];\n },\n onCommitFiberUnmount: function(rendererID, fiber) {\n // TODO: can we use hook for roots too?\n if (hook.helpers[rendererID]) {\n hook.helpers[rendererID].handleCommitFiberUnmount(fiber);\n }\n },\n onCommitFiberRoot: function(rendererID, root) {\n const mountedRoots = hook.getFiberRoots(rendererID);\n const current = root.current;\n const isKnownRoot = mountedRoots.has(root);\n const isUnmounting = current.memoizedState == null || current.memoizedState.element == null;\n // Keep track of mounted roots so we can hydrate when DevTools connect.\n if (!isKnownRoot && !isUnmounting) {\n mountedRoots.add(root);\n } else if (isKnownRoot && isUnmounting) {\n mountedRoots.delete(root);\n }\n if (hook.helpers[rendererID]) {\n hook.helpers[rendererID].handleCommitFiberRoot(root);\n }\n },\n });\n Object.defineProperty(window, '__REACT_DEVTOOLS_GLOBAL_HOOK__', {\n value: (hook : Hook),\n });\n}\n\nmodule.exports = installGlobalHook;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/installGlobalHook.js\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 * @flow\n */\n'use strict';\n\n/**\n * NOTE: This file cannot `require` any other modules. We `.toString()` the\n * function in some places and inject the source into the page.\n * Also do not declare any variables in top level scope!\n */\n\nfunction installRelayHook(window: Object) {\n var performance = window.performance;\n var performanceNow;\n if (performance && typeof performance.now === 'function') {\n performanceNow = () => performance.now();\n } else {\n performanceNow = () => Date.now();\n }\n\n const TEXT_CHUNK_LENGTH = 500;\n\n var hook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (!hook) {\n return;\n }\n\n function decorate(obj, attr, fn) {\n var old = obj[attr];\n obj[attr] = function() {\n var res = old.apply(this, arguments);\n fn.apply(this, arguments);\n return res;\n };\n }\n\n var _eventQueue = [];\n var _listener = null;\n function emit(name: string, data: mixed) {\n _eventQueue.push({name, data});\n if (_listener) {\n _listener(name, data);\n }\n }\n\n function setRequestListener(\n listener: (name: string, data: mixed) => void\n ): () => void {\n if (_listener) {\n throw new Error(\n 'Relay Devtools: Called only call setRequestListener once.'\n );\n }\n _listener = listener;\n _eventQueue.forEach(({name, data}) => {\n listener(name, data);\n });\n\n return () => {\n _listener = null;\n };\n }\n\n function recordRequest(\n type: 'mutation' | 'query',\n start: number,\n request,\n requestNumber: number,\n ) {\n var id = Math.random().toString(16).substr(2);\n request.then(\n response => {\n emit('relay:success', {\n id: id,\n end: performanceNow(),\n response: response.response,\n });\n },\n error => {\n emit('relay:failure', {\n id: id,\n end: performanceNow(),\n error: error,\n });\n },\n );\n const textChunks = [];\n let text = request.getQueryString();\n while (text.length > 0) {\n textChunks.push(text.substr(0, TEXT_CHUNK_LENGTH));\n text = text.substr(TEXT_CHUNK_LENGTH);\n }\n return {\n id: id,\n name: request.getDebugName(),\n requestNumber: requestNumber,\n start: start,\n text: textChunks,\n type: type,\n variables: request.getVariables(),\n };\n }\n\n let requestNumber = 0;\n\n function instrumentRelayRequests(relayInternals: Object) {\n var NetworkLayer = relayInternals.NetworkLayer;\n\n decorate(NetworkLayer, 'sendMutation', mutation => {\n requestNumber++;\n emit(\n 'relay:pending',\n [recordRequest('mutation', performanceNow(), mutation, requestNumber)]\n );\n });\n\n decorate(NetworkLayer, 'sendQueries', queries => {\n requestNumber++;\n const start = performanceNow();\n emit(\n 'relay:pending',\n queries.map(query => recordRequest('query', start, query, requestNumber))\n );\n });\n\n var instrumented = {};\n for (var key in relayInternals) {\n if (relayInternals.hasOwnProperty(key)) {\n instrumented[key] = relayInternals[key];\n }\n }\n instrumented.setRequestListener = setRequestListener;\n return instrumented;\n }\n\n var _relayInternals = null;\n Object.defineProperty(hook, '_relayInternals', ({\n configurable: true,\n set: function(relayInternals) {\n _relayInternals = instrumentRelayRequests(relayInternals);\n },\n get: function() {\n return _relayInternals;\n },\n }: any));\n}\n\nmodule.exports = installRelayHook;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/plugins/Relay/installRelayHook.js\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 * @flow\n */\n'use strict';\n\nimport type {Hook} from '../backend/types';\nimport type Agent from './Agent';\n\nvar setupBackend = require('../backend/backend');\n\nmodule.exports = function(hook: Hook, agent: Agent) {\n var subs = [\n hook.sub('renderer-attached', ({id, renderer, helpers}) => {\n agent.setReactInternals(id, helpers);\n helpers.walkTree(agent.onMounted.bind(agent, id), agent.addRoot.bind(agent, id));\n }),\n hook.sub('root', ({renderer, internalInstance}) => agent.addRoot(renderer, internalInstance)),\n hook.sub('mount', ({renderer, internalInstance, data}) => agent.onMounted(renderer, internalInstance, data)),\n hook.sub('update', ({renderer, internalInstance, data}) => agent.onUpdated(internalInstance, data)),\n hook.sub('unmount', ({renderer, internalInstance}) => agent.onUnmounted(internalInstance)),\n ];\n\n var success = setupBackend(hook);\n if (!success) {\n return;\n }\n\n hook.emit('react-devtools', agent);\n hook.reactDevtoolsAgent = agent;\n agent.on('shutdown', () => {\n subs.forEach(fn => fn());\n hook.reactDevtoolsAgent = null;\n });\n};\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/agent/inject.js\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 * @flow\n *\n * This is the chrome devtools\n *\n * 1. Devtools sets the __REACT_DEVTOOLS_GLOBAL_HOOK__ global.\n * 2. React (if present) calls .inject() with the internal renderer\n * 3. Devtools sees the renderer, and then adds this backend, along with the Agent\n * and whatever else is needed.\n * 4. The agent then calls `.emit('react-devtools', agent)`\n *\n * Now things are hooked up.\n *\n * When devtools closes, it calls `cleanup()` to remove the listeners\n * and any overhead caused by the backend.\n */\n'use strict';\n\nimport type {Hook} from './types';\n\nvar attachRenderer = require('./attachRenderer');\n\nmodule.exports = function setupBackend(hook: Hook): boolean {\n var oldReact = window.React && window.React.__internals;\n if (oldReact && Object.keys(hook._renderers).length === 0) {\n hook.inject(oldReact);\n }\n\n for (var rid in hook._renderers) {\n hook.helpers[rid] = attachRenderer(hook, rid, hook._renderers[rid]);\n hook.emit('renderer-attached', {id: rid, renderer: hook._renderers[rid], helpers: hook.helpers[rid]});\n }\n\n hook.on('renderer', ({id, renderer}) => {\n hook.helpers[id] = attachRenderer(hook, id, renderer);\n hook.emit('renderer-attached', {id, renderer, helpers: hook.helpers[id]});\n });\n\n var shutdown = () => {\n for (var id in hook.helpers) {\n hook.helpers[id].cleanup();\n }\n hook.off('shutdown', shutdown);\n };\n hook.on('shutdown', shutdown);\n\n return true;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/backend.js\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 * @flow\n */\n'use strict';\n\nimport type {DataType, OpaqueNodeHandle, Hook, ReactRenderer, Helpers} from './types';\nvar getData = require('./getData');\nvar getData012 = require('./getData012');\nvar attachRendererFiber = require('./attachRendererFiber');\n\ntype NodeLike = {};\n\n/**\n * This takes care of patching the renderer to emit events on the global\n * `Hook`. The returned object has a `.cleanup` method to un-patch everything.\n */\nfunction attachRenderer(hook: Hook, rid: string, renderer: ReactRenderer): Helpers {\n var rootNodeIDMap = new Map();\n var extras = {};\n // Before 0.13 there was no Reconciler, so we patch Component.Mixin\n var isPre013 = !renderer.Reconciler;\n\n // React Fiber\n if (typeof renderer.findFiberByHostInstance === 'function') {\n return attachRendererFiber(hook, rid, renderer);\n }\n\n // React Native\n if (renderer.Mount.findNodeHandle && renderer.Mount.nativeTagToRootNodeID) {\n extras.getNativeFromReactElement = function(component) {\n return renderer.Mount.findNodeHandle(component);\n };\n\n extras.getReactElementFromNative = function(nativeTag) {\n var id = renderer.Mount.nativeTagToRootNodeID(nativeTag);\n return rootNodeIDMap.get(id);\n };\n // React DOM 15+\n } else if (renderer.ComponentTree) {\n extras.getNativeFromReactElement = function(component) {\n return renderer.ComponentTree.getNodeFromInstance(component);\n };\n\n extras.getReactElementFromNative = function(node) {\n return renderer.ComponentTree.getClosestInstanceFromNode(node);\n };\n // React DOM\n } else if (renderer.Mount.getID && renderer.Mount.getNode) {\n extras.getNativeFromReactElement = function(component) {\n try {\n return renderer.Mount.getNode(component._rootNodeID);\n } catch (e) {\n return undefined;\n }\n };\n\n extras.getReactElementFromNative = function(node) {\n var id = renderer.Mount.getID(node);\n while (node && node.parentNode && !id) {\n node = node.parentNode;\n id = renderer.Mount.getID(node);\n }\n return rootNodeIDMap.get(id);\n };\n } else {\n console.warn('Unknown react version (does not have getID), probably an unshimmed React Native');\n }\n\n var oldMethods;\n var oldRenderComponent;\n var oldRenderRoot;\n\n // React DOM\n if (renderer.Mount._renderNewRootComponent) {\n oldRenderRoot = decorateResult(renderer.Mount, '_renderNewRootComponent', (internalInstance) => {\n hook.emit('root', {renderer: rid, internalInstance});\n });\n // React Native\n } else if (renderer.Mount.renderComponent) {\n oldRenderComponent = decorateResult(renderer.Mount, 'renderComponent', internalInstance => {\n hook.emit('root', {renderer: rid, internalInstance: internalInstance._reactInternalInstance});\n });\n }\n\n if (renderer.Component) {\n console.error('You are using a version of React with limited support in this version of the devtools.\\nPlease upgrade to use at least 0.13, or you can downgrade to use the old version of the devtools:\\ninstructions here https://github.com/facebook/react-devtools/tree/devtools-next#how-do-i-use-this-for-react--013');\n // 0.11 - 0.12\n // $FlowFixMe renderer.Component is not \"possibly undefined\"\n oldMethods = decorateMany(renderer.Component.Mixin, {\n mountComponent() {\n rootNodeIDMap.set(this._rootNodeID, this);\n // FIXME DOMComponent calls Component.Mixin, and sets up the\n // `children` *after* that call, meaning we don't have access to the\n // children at this point. Maybe we should find something else to shim\n // (do we have access to DOMComponent here?) so that we don't have to\n // setTimeout.\n setTimeout(() => {\n hook.emit('mount', {internalInstance: this, data: getData012(this), renderer: rid});\n }, 0);\n },\n updateComponent() {\n setTimeout(() => {\n hook.emit('update', {internalInstance: this, data: getData012(this), renderer: rid});\n }, 0);\n },\n unmountComponent() {\n hook.emit('unmount', {internalInstance: this, renderer: rid});\n rootNodeIDMap.delete(this._rootNodeID, this);\n },\n });\n } else if (renderer.Reconciler) {\n oldMethods = decorateMany(renderer.Reconciler, {\n mountComponent(internalInstance, rootID, transaction, context) {\n var data = getData(internalInstance);\n rootNodeIDMap.set(internalInstance._rootNodeID, internalInstance);\n hook.emit('mount', {internalInstance, data, renderer: rid});\n },\n performUpdateIfNecessary(internalInstance, nextChild, transaction, context) {\n hook.emit('update', {internalInstance, data: getData(internalInstance), renderer: rid});\n },\n receiveComponent(internalInstance, nextChild, transaction, context) {\n hook.emit('update', {internalInstance, data: getData(internalInstance), renderer: rid});\n },\n unmountComponent(internalInstance) {\n hook.emit('unmount', {internalInstance, renderer: rid});\n rootNodeIDMap.delete(internalInstance._rootNodeID, internalInstance);\n },\n });\n }\n\n extras.walkTree = function(visit: (component: OpaqueNodeHandle, data: DataType) => void, visitRoot: (internalInstance: OpaqueNodeHandle) => void) {\n var onMount = (component, data) => {\n rootNodeIDMap.set(component._rootNodeID, component);\n visit(component, data);\n };\n walkRoots(renderer.Mount._instancesByReactRootID || renderer.Mount._instancesByContainerID, onMount, visitRoot, isPre013);\n };\n\n extras.cleanup = function() {\n if (oldMethods) {\n if (renderer.Component) {\n restoreMany(renderer.Component.Mixin, oldMethods);\n } else {\n restoreMany(renderer.Reconciler, oldMethods);\n }\n }\n if (oldRenderRoot) {\n renderer.Mount._renderNewRootComponent = oldRenderRoot;\n }\n if (oldRenderComponent) {\n renderer.Mount.renderComponent = oldRenderComponent;\n }\n oldMethods = null;\n oldRenderRoot = null;\n oldRenderComponent = null;\n };\n\n return extras;\n}\n\nfunction walkRoots(roots, onMount, onRoot, isPre013) {\n for (var name in roots) {\n walkNode(roots[name], onMount, isPre013);\n onRoot(roots[name]);\n }\n}\n\nfunction walkNode(internalInstance, onMount, isPre013) {\n var data = isPre013 ? getData012(internalInstance) : getData(internalInstance);\n if (data.children && Array.isArray(data.children)) {\n data.children.forEach(child => walkNode(child, onMount, isPre013));\n }\n onMount(internalInstance, data);\n}\n\nfunction decorateResult(obj, attr, fn) {\n var old = obj[attr];\n obj[attr] = function(instance: NodeLike) {\n var res = old.apply(this, arguments);\n fn(res);\n return res;\n };\n return old;\n}\n\nfunction decorate(obj, attr, fn) {\n var old = obj[attr];\n obj[attr] = function(instance: NodeLike) {\n var res = old.apply(this, arguments);\n fn.apply(this, arguments);\n return res;\n };\n return old;\n}\n\nfunction decorateMany(source, fns) {\n var olds = {};\n for (var name in fns) {\n olds[name] = decorate(source, name, fns[name]);\n }\n return olds;\n}\n\nfunction restoreMany(source, olds) {\n for (var name in olds) {\n source[name] = olds[name];\n }\n}\n\nmodule.exports = attachRenderer;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/attachRenderer.js\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 * @flow\n */\n'use strict';\n\nimport type {DataType} from './types';\nvar copyWithSet = require('./copyWithSet');\nvar getDisplayName = require('./getDisplayName');\nvar traverseAllChildrenImpl = require('./traverseAllChildrenImpl');\n\n/**\n * Convert a react internal instance to a sanitized data object.\n */\nfunction getData(internalInstance: Object): DataType {\n var children = null;\n var props = null;\n var state = null;\n var context = null;\n var updater = null;\n var name = null;\n var type = null;\n var key = null;\n var ref = null;\n var source = null;\n var text = null;\n var publicInstance = null;\n var nodeType = 'Native';\n // If the parent is a native node without rendered children, but with\n // multiple string children, then the `element` that gets passed in here is\n // a plain value -- a string or number.\n if (typeof internalInstance !== 'object') {\n nodeType = 'Text';\n text = internalInstance + '';\n } else if (internalInstance._currentElement === null || internalInstance._currentElement === false) {\n nodeType = 'Empty';\n } else if (internalInstance._renderedComponent) {\n nodeType = 'NativeWrapper';\n children = [internalInstance._renderedComponent];\n props = internalInstance._instance.props;\n state = internalInstance._instance.state;\n context = internalInstance._instance.context;\n if (context && Object.keys(context).length === 0) {\n context = null;\n }\n } else if (internalInstance._renderedChildren) {\n children = childrenList(internalInstance._renderedChildren);\n } else if (internalInstance._currentElement && internalInstance._currentElement.props) {\n // This is a native node without rendered children -- meaning the children\n // prop is the unfiltered list of children.\n // This may include 'null' or even other invalid values, so we need to\n // filter it the same way that ReactDOM does.\n // Instead of pulling in the whole React library, we just copied over the\n // 'traverseAllChildrenImpl' method.\n // https://github.com/facebook/react/blob/240b84ed8e1db715d759afaae85033718a0b24e1/src/isomorphic/children/ReactChildren.js#L112-L158\n const unfilteredChildren = internalInstance._currentElement.props.children;\n var filteredChildren = [];\n traverseAllChildrenImpl(\n unfilteredChildren,\n '', // nameSoFar\n (_traverseContext, child) => {\n const childType = typeof child;\n if (childType === 'string' || childType === 'number') {\n filteredChildren.push(child);\n }\n },\n // traverseContext\n );\n if (filteredChildren.length <= 1) {\n // children must be an array of nodes or a string or undefined\n // can't be an empty array\n children = filteredChildren.length\n ? String(filteredChildren[0])\n : undefined;\n } else {\n children = filteredChildren;\n }\n }\n\n if (!props && internalInstance._currentElement && internalInstance._currentElement.props) {\n props = internalInstance._currentElement.props;\n }\n\n // != used deliberately here to catch undefined and null\n if (internalInstance._currentElement != null) {\n type = internalInstance._currentElement.type;\n if (internalInstance._currentElement.key) {\n key = String(internalInstance._currentElement.key);\n }\n source = internalInstance._currentElement._source;\n ref = internalInstance._currentElement.ref;\n if (typeof type === 'string') {\n name = type;\n if (internalInstance._nativeNode != null) {\n publicInstance = internalInstance._nativeNode;\n }\n if (internalInstance._hostNode != null) {\n publicInstance = internalInstance._hostNode;\n }\n } else if (typeof type === 'function') {\n nodeType = 'Composite';\n name = getDisplayName(type);\n // 0.14 top-level wrapper\n // TODO(jared): The backend should just act as if these don't exist.\n if (internalInstance._renderedComponent && (\n internalInstance._currentElement.props === internalInstance._renderedComponent._currentElement ||\n internalInstance._currentElement.type.isReactTopLevelWrapper\n )) {\n nodeType = 'Wrapper';\n }\n if (name === null) {\n name = 'No display name';\n }\n } else if (typeof internalInstance._stringText === 'string') {\n nodeType = 'Text';\n text = internalInstance._stringText;\n } else {\n name = getDisplayName(type);\n }\n }\n\n if (internalInstance._instance) {\n var inst = internalInstance._instance;\n\n // A forceUpdate for stateless (functional) components.\n var forceUpdate = inst.forceUpdate || (inst.updater && inst.updater.enqueueForceUpdate && function(cb) {\n inst.updater.enqueueForceUpdate(this, cb, 'forceUpdate');\n });\n updater = {\n setState: inst.setState && inst.setState.bind(inst),\n forceUpdate: forceUpdate && forceUpdate.bind(inst),\n setInProps: forceUpdate && setInProps.bind(null, internalInstance, forceUpdate),\n setInState: inst.forceUpdate && setInState.bind(null, inst),\n setInContext: forceUpdate && setInContext.bind(null, inst, forceUpdate),\n };\n if (typeof type === 'function') {\n publicInstance = inst;\n }\n\n // TODO: React ART currently falls in this bucket, but this doesn't\n // actually make sense and we should clean this up after stabilizing our\n // API for backends\n if (inst._renderedChildren) {\n children = childrenList(inst._renderedChildren);\n }\n }\n\n if (typeof internalInstance.setNativeProps === 'function') {\n // For editing styles in RN\n updater = {\n setNativeProps(nativeProps) {\n internalInstance.setNativeProps(nativeProps);\n },\n };\n }\n\n return {\n nodeType,\n type,\n key,\n ref,\n source,\n name,\n props,\n state,\n context,\n children,\n text,\n updater,\n publicInstance,\n };\n}\n\nfunction setInProps(internalInst, forceUpdate, path: Array<string | number>, value: any) {\n var element = internalInst._currentElement;\n internalInst._currentElement = {\n ...element,\n props: copyWithSet(element.props, path, value),\n };\n forceUpdate.call(internalInst._instance);\n}\n\nfunction setInState(inst, path: Array<string | number>, value: any) {\n setIn(inst.state, path, value);\n inst.forceUpdate();\n}\n\nfunction setInContext(inst, forceUpdate, path: Array<string | number>, value: any) {\n setIn(inst.context, path, value);\n forceUpdate.call(inst);\n}\n\nfunction setIn(obj: Object, path: Array<string | number>, value: any) {\n var last = path.pop();\n var parent = path.reduce((obj_, attr) => obj_ ? obj_[attr] : null, obj);\n if (parent) {\n parent[last] = value;\n }\n}\n\nfunction childrenList(children) {\n var res = [];\n for (var name in children) {\n res.push(children[name]);\n }\n return res;\n}\n\nmodule.exports = getData;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/getData.js\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 * @flow\n */\n'use strict';\n\nfunction copyWithSetImpl(obj, path, idx, value) {\n if (idx >= path.length) {\n return value;\n }\n var key = path[idx];\n var updated = Array.isArray(obj) ? obj.slice() : {...obj};\n // $FlowFixMe number or string is fine here\n updated[key] = copyWithSetImpl(obj[key], path, idx + 1, value);\n return updated;\n}\n\nfunction copyWithSet(obj: Object | Array<any>, path: Array<string | number>, value: any): Object | Array<any> {\n return copyWithSetImpl(obj, path, 0, value);\n}\n\nmodule.exports = copyWithSet;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/copyWithSet.js\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 * @flow\n */\n'use strict';\n\nconst FB_MODULE_RE = /^(.*) \\[from (.*)\\]$/;\nconst cachedDisplayNames = new WeakMap();\n\nfunction getDisplayName(type: Function): string {\n if (cachedDisplayNames.has(type)) {\n return cachedDisplayNames.get(type);\n }\n\n let displayName;\n\n // The displayName property is not guaranteed to be a string.\n // It's only safe to use for our purposes if it's a string.\n // github.com/facebook/react-devtools/issues/803\n if (typeof type.displayName === 'string') {\n displayName = type.displayName;\n }\n\n if (!displayName) {\n displayName = type.name || 'Unknown';\n }\n\n // Facebook-specific hack to turn \"Image [from Image.react]\" into just \"Image\".\n // We need displayName with module name for error reports but it clutters the DevTools.\n const match = displayName.match(FB_MODULE_RE);\n if (match) {\n const componentName = match[1];\n const moduleName = match[2];\n if (componentName && moduleName) {\n if (\n moduleName === componentName ||\n moduleName.startsWith(componentName + '.')\n ) {\n displayName = componentName;\n }\n }\n }\n\n cachedDisplayNames.set(type, displayName);\n return displayName;\n}\n\nmodule.exports = getDisplayName;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/getDisplayName.js\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 * @flow\n */\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nconst REACT_ELEMENT_TYPE =\n (\n typeof Symbol === 'function'\n && Symbol.for\n && Symbol.for('react.element')\n )\n || 0xeac7;\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\nfunction escape(key: string): string {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2',\n };\n var escapedString = ('' + key).replace(escapeRegex, function(match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (\n typeof component === 'object' &&\n component !== null &&\n component.key != null\n ) {\n // Explicit key\n return escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * We do a copied the 'traverseAllChildrenImpl' method from\n * `React.Children` so that we don't pull in the whole React library.\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(\n children: any,\n nameSoFar: string,\n callback: Function,\n traverseContext: any\n): number {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (\n children === null ||\n type === 'string' ||\n type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n (type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE)\n ) {\n callback(\n traverseContext,\n children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar,\n );\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n callback,\n traverseContext,\n );\n }\n } else {\n var iteratorFn =\n (ITERATOR_SYMBOL && children[ITERATOR_SYMBOL]) ||\n children[FAUX_ITERATOR_SYMBOL];\n if (typeof iteratorFn === 'function') {\n var iterator = iteratorFn.call(children);\n var step;\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n callback,\n traverseContext,\n );\n }\n } else if (type === 'object') {\n var addendum =\n ' If you meant to render a collection of children, use an array ' +\n 'instead.';\n var childrenString = '' + children;\n invariant(\n false,\n 'The React Devtools cannot render an object as a child. (found: %s).%s',\n childrenString === '[object Object]'\n ? 'object with keys {' + Object.keys(children).join(', ') + '}'\n : childrenString,\n addendum,\n );\n }\n }\n\n return subtreeCount;\n}\n\nmodule.exports = traverseAllChildrenImpl;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/traverseAllChildrenImpl.js\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/gaearon/p/react-devtools/~/fbjs/lib/invariant.js\n ** module id = 40\n ** module chunks = 0\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 * @flow\n */\n'use strict';\n\nimport type {DataType} from './types';\nvar copyWithSet = require('./copyWithSet');\n\nfunction getData012(internalInstance: Object): DataType {\n var children = null;\n var props = internalInstance.props;\n var state = internalInstance.state;\n var context = internalInstance.context;\n var updater = null;\n var name = null;\n var type = null;\n var key = null;\n var ref = null;\n var text = null;\n var publicInstance = null;\n var nodeType = 'Native';\n if (internalInstance._renderedComponent) {\n nodeType = 'Wrapper';\n children = [internalInstance._renderedComponent];\n if (context && Object.keys(context).length === 0) {\n context = null;\n }\n } else if (internalInstance._renderedChildren) {\n name = internalInstance.constructor.displayName;\n children = childrenList(internalInstance._renderedChildren);\n } else if (typeof props.children === 'string') {\n // string children\n name = internalInstance.constructor.displayName;\n children = props.children;\n nodeType = 'Native';\n }\n\n if (!props && internalInstance._currentElement && internalInstance._currentElement.props) {\n props = internalInstance._currentElement.props;\n }\n\n if (internalInstance._currentElement) {\n type = internalInstance._currentElement.type;\n if (internalInstance._currentElement.key) {\n key = String(internalInstance._currentElement.key);\n }\n ref = internalInstance._currentElement.ref;\n if (typeof type === 'string') {\n name = type;\n } else {\n nodeType = 'Composite';\n name = type.displayName;\n if (!name) {\n name = 'No display name';\n }\n }\n }\n\n if (!name) {\n name = internalInstance.constructor.displayName || 'No display name';\n nodeType = 'Composite';\n }\n\n if (typeof props === 'string') {\n nodeType = 'Text';\n text = props;\n props = null;\n name = null;\n }\n\n if (internalInstance.forceUpdate) {\n updater = {\n setState: internalInstance.setState.bind(internalInstance),\n forceUpdate: internalInstance.forceUpdate.bind(internalInstance),\n setInProps: internalInstance.forceUpdate && setInProps.bind(null, internalInstance),\n setInState: internalInstance.forceUpdate && setInState.bind(null, internalInstance),\n setInContext: internalInstance.forceUpdate && setInContext.bind(null, internalInstance),\n };\n publicInstance = internalInstance;\n }\n\n return {\n nodeType,\n type,\n key,\n ref,\n source: null,\n name,\n props,\n state,\n context,\n children,\n text,\n updater,\n publicInstance,\n };\n}\n\nfunction setInProps(inst, path: Array<string | number>, value: any) {\n inst.props = copyWithSet(inst.props, path, value);\n inst.forceUpdate();\n}\n\nfunction setInState(inst, path: Array<string | number>, value: any) {\n setIn(inst.state, path, value);\n inst.forceUpdate();\n}\n\nfunction setInContext(inst, path: Array<string | number>, value: any) {\n setIn(inst.context, path, value);\n inst.forceUpdate();\n}\n\nfunction setIn(obj: Object, path: Array<string | number>, value: any) {\n var last = path.pop();\n var parent = path.reduce((obj_, attr) => obj_ ? obj_[attr] : null, obj);\n if (parent) {\n parent[last] = value;\n }\n}\n\nfunction childrenList(children) {\n var res = [];\n for (var name in children) {\n res.push(children[name]);\n }\n return res;\n}\n\nmodule.exports = getData012;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/getData012.js\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 * @flow\n */\n'use strict';\n\nimport type {Hook, ReactRenderer, Helpers} from './types';\nvar getDataFiber = require('./getDataFiber');\nvar {\n ClassComponent,\n HostRoot,\n} = require('./ReactTypeOfWork');\n\n// Inlined from ReactTypeOfSideEffect\nvar PerformedWork = 1;\n\nfunction attachRendererFiber(hook: Hook, rid: string, renderer: ReactRenderer): Helpers {\n // This is a slightly annoying indirection.\n // It is currently necessary because DevTools wants\n // to use unique objects as keys for instances.\n // However fibers have two versions.\n // We use this set to remember first encountered fiber for\n // each conceptual instance.\n const opaqueNodes = new Set();\n function getOpaqueNode(fiber) {\n if (opaqueNodes.has(fiber)) {\n return fiber;\n }\n const {alternate} = fiber;\n if (alternate != null && opaqueNodes.has(alternate)) {\n return alternate;\n }\n opaqueNodes.add(fiber);\n return fiber;\n }\n\n function hasDataChanged(prevFiber, nextFiber) {\n if (prevFiber.tag === ClassComponent) {\n // Skip if the class performed no work (shouldComponentUpdate bailout).\n // eslint-disable-next-line no-bitwise\n if ((nextFiber.effectTag & PerformedWork) !== PerformedWork) {\n return false;\n }\n\n // Only classes have context.\n if (prevFiber.stateNode.context !== nextFiber.stateNode.context) {\n return true;\n }\n // Force updating won't update state or props.\n if (nextFiber.updateQueue != null && nextFiber.updateQueue.hasForceUpdate) {\n return true;\n }\n }\n // Compare the fields that would result in observable changes in DevTools.\n // We don't compare type, tag, index, and key, because these are known to match.\n return (\n prevFiber.memoizedProps !== nextFiber.memoizedProps ||\n prevFiber.memoizedState !== nextFiber.memoizedState ||\n prevFiber.ref !== nextFiber.ref ||\n prevFiber._debugSource !== nextFiber._debugSource\n );\n }\n\n let pendingEvents = [];\n\n function flushPendingEvents() {\n const events = pendingEvents;\n pendingEvents = [];\n for (let i = 0; i < events.length; i++) {\n const event = events[i];\n hook.emit(event.type, event);\n }\n }\n\n function enqueueMount(fiber) {\n pendingEvents.push({\n internalInstance: getOpaqueNode(fiber),\n data: getDataFiber(fiber, getOpaqueNode),\n renderer: rid,\n type: 'mount',\n });\n\n const isRoot = fiber.tag === HostRoot;\n if (isRoot) {\n pendingEvents.push({\n internalInstance: getOpaqueNode(fiber),\n renderer: rid,\n type: 'root',\n });\n }\n }\n\n function enqueueUpdateIfNecessary(fiber, hasChildOrderChanged) {\n if (!hasChildOrderChanged && !hasDataChanged(fiber.alternate, fiber)) {\n return;\n }\n pendingEvents.push({\n internalInstance: getOpaqueNode(fiber),\n data: getDataFiber(fiber, getOpaqueNode),\n renderer: rid,\n type: 'update',\n });\n }\n\n function enqueueUnmount(fiber) {\n const isRoot = fiber.tag === HostRoot;\n const opaqueNode = getOpaqueNode(fiber);\n const event = {\n internalInstance: opaqueNode,\n renderer: rid,\n type: 'unmount',\n };\n if (isRoot) {\n pendingEvents.push(event);\n } else {\n // Non-root fibers are deleted during the commit phase.\n // They are deleted in the child-first order. However\n // DevTools currently expects deletions to be parent-first.\n // This is why we unshift deletions rather than push them.\n pendingEvents.unshift(event);\n }\n opaqueNodes.delete(opaqueNode);\n }\n\n function mountFiber(fiber) {\n // Depth-first.\n // Logs mounting of children first, parents later.\n let node = fiber;\n outer: while (true) {\n if (node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n enqueueMount(node);\n if (node == fiber) {\n return;\n }\n if (node.sibling) {\n node.sibling.return = node.return;\n node = node.sibling;\n continue;\n }\n while (node.return) {\n node = node.return;\n enqueueMount(node);\n if (node == fiber) {\n return;\n }\n if (node.sibling) {\n node.sibling.return = node.return;\n node = node.sibling;\n continue outer;\n }\n }\n return;\n }\n }\n\n function updateFiber(nextFiber, prevFiber) {\n let hasChildOrderChanged = false;\n if (nextFiber.child !== prevFiber.child) {\n // If the first child is different, we need to traverse them.\n // Each next child will be either a new child (mount) or an alternate (update).\n let nextChild = nextFiber.child;\n let prevChildAtSameIndex = prevFiber.child;\n while (nextChild) {\n // We already know children will be referentially different because\n // they are either new mounts or alternates of previous children.\n // Schedule updates and mounts depending on whether alternates exist.\n // We don't track deletions here because they are reported separately.\n if (nextChild.alternate) {\n const prevChild = nextChild.alternate;\n updateFiber(nextChild, prevChild);\n // However we also keep track if the order of the children matches\n // the previous order. They are always different referentially, but\n // if the instances line up conceptually we'll want to know that.\n if (!hasChildOrderChanged && prevChild !== prevChildAtSameIndex) {\n hasChildOrderChanged = true;\n }\n } else {\n mountFiber(nextChild);\n if (!hasChildOrderChanged) {\n hasChildOrderChanged = true;\n }\n }\n // Try the next child.\n nextChild = nextChild.sibling;\n // Advance the pointer in the previous list so that we can\n // keep comparing if they line up.\n if (!hasChildOrderChanged && prevChildAtSameIndex != null) {\n prevChildAtSameIndex = prevChildAtSameIndex.sibling;\n }\n }\n // If we have no more children, but used to, they don't line up.\n if (!hasChildOrderChanged && prevChildAtSameIndex != null) {\n hasChildOrderChanged = true;\n }\n }\n enqueueUpdateIfNecessary(nextFiber, hasChildOrderChanged);\n }\n\n function walkTree() {\n hook.getFiberRoots(rid).forEach(root => {\n // Hydrate all the roots for the first time.\n mountFiber(root.current);\n });\n flushPendingEvents();\n }\n\n function cleanup() {\n // We don't patch any methods so there is no cleanup.\n }\n\n function handleCommitFiberUnmount(fiber) {\n // This is not recursive.\n // We can't traverse fibers after unmounting so instead\n // we rely on React telling us about each unmount.\n // It will be flushed after the root is committed.\n enqueueUnmount(fiber);\n }\n\n function handleCommitFiberRoot(root) {\n const current = root.current;\n const alternate = current.alternate;\n if (alternate) {\n // TODO: relying on this seems a bit fishy.\n const wasMounted = alternate.memoizedState != null && alternate.memoizedState.element != null;\n const isMounted = current.memoizedState != null && current.memoizedState.element != null;\n if (!wasMounted && isMounted) {\n // Mount a new root.\n mountFiber(current);\n } else if (wasMounted && isMounted) {\n // Update an existing root.\n updateFiber(current, alternate);\n } else if (wasMounted && !isMounted) {\n // Unmount an existing root.\n enqueueUnmount(current);\n }\n } else {\n // Mount a new root.\n mountFiber(current);\n }\n // We're done here.\n flushPendingEvents();\n }\n\n // The naming is confusing.\n // They deal with opaque nodes (fibers), not elements.\n function getNativeFromReactElement(fiber) {\n try {\n const opaqueNode = fiber;\n const hostInstance = renderer.findHostInstanceByFiber(opaqueNode);\n return hostInstance;\n } catch (err) {\n // The fiber might have unmounted by now.\n return null;\n }\n }\n function getReactElementFromNative(hostInstance) {\n const fiber = renderer.findFiberByHostInstance(hostInstance);\n if (fiber != null) {\n // TODO: type fibers.\n const opaqueNode = getOpaqueNode((fiber: any));\n return opaqueNode;\n }\n return null;\n }\n return {\n getNativeFromReactElement,\n getReactElementFromNative,\n handleCommitFiberRoot,\n handleCommitFiberUnmount,\n cleanup,\n walkTree,\n };\n}\n\nmodule.exports = attachRendererFiber;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/attachRendererFiber.js\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 * @flow\n */\n'use strict';\n\nimport type {DataType} from './types';\nvar copyWithSet = require('./copyWithSet');\nvar getDisplayName = require('./getDisplayName');\nvar {\n FunctionalComponent,\n ClassComponent,\n HostRoot,\n HostPortal,\n HostComponent,\n HostText,\n Fragment,\n} = require('./ReactTypeOfWork');\n\n// TODO: we might want to change the data structure\n// once we no longer suppport Stack versions of `getData`.\nfunction getDataFiber(fiber: Object, getOpaqueNode: (fiber: Object) => Object): DataType {\n var type = fiber.type;\n var key = fiber.key;\n var ref = fiber.ref;\n var source = fiber._debugSource;\n var publicInstance = null;\n var props = null;\n var state = null;\n var children = null;\n var context = null;\n var updater = null;\n var nodeType = null;\n var name = null;\n var text = null;\n\n switch (fiber.tag) {\n case FunctionalComponent:\n case ClassComponent:\n nodeType = 'Composite';\n name = getDisplayName(fiber.type);\n publicInstance = fiber.stateNode;\n props = fiber.memoizedProps;\n state = fiber.memoizedState;\n if (publicInstance != null) {\n context = publicInstance.context;\n if (context && Object.keys(context).length === 0) {\n context = null;\n }\n }\n const inst = publicInstance;\n if (inst) {\n updater = {\n setState: inst.setState && inst.setState.bind(inst),\n forceUpdate: inst.forceUpdate && inst.forceUpdate.bind(inst),\n setInProps: inst.forceUpdate && setInProps.bind(null, fiber),\n setInState: inst.forceUpdate && setInState.bind(null, inst),\n setInContext: inst.forceUpdate && setInContext.bind(null, inst),\n };\n }\n children = [];\n break;\n case HostRoot:\n nodeType = 'Wrapper';\n children = [];\n break;\n case HostPortal:\n nodeType = 'Portal';\n name = 'ReactPortal';\n props = {\n target: fiber.stateNode.containerInfo,\n };\n children = [];\n break;\n case HostComponent:\n nodeType = 'Native';\n name = fiber.type;\n\n // TODO (bvaughn) we plan to remove this prefix anyway.\n // We can cut this special case out when it's gone.\n name = name.replace('topsecret-', '');\n\n publicInstance = fiber.stateNode;\n props = fiber.memoizedProps;\n if (\n typeof props.children === 'string' ||\n typeof props.children === 'number'\n ) {\n children = props.children.toString();\n } else {\n children = [];\n }\n if (typeof fiber.stateNode.setNativeProps === 'function') {\n // For editing styles in RN\n updater = {\n setNativeProps(nativeProps) {\n fiber.stateNode.setNativeProps(nativeProps);\n },\n };\n }\n break;\n case HostText:\n nodeType = 'Text';\n text = fiber.memoizedProps;\n break;\n case Fragment:\n nodeType = 'Wrapper';\n children = [];\n break;\n default: // Coroutines and yields\n nodeType = 'Native';\n props = fiber.memoizedProps;\n name = 'TODO_NOT_IMPLEMENTED_YET';\n children = [];\n break;\n }\n\n if (Array.isArray(children)) {\n let child = fiber.child;\n while (child) {\n children.push(getOpaqueNode(child));\n child = child.sibling;\n }\n }\n\n return {\n nodeType,\n type,\n key,\n ref,\n source,\n name,\n props,\n state,\n context,\n children,\n text,\n updater,\n publicInstance,\n };\n}\n\nfunction setInProps(fiber, path: Array<string | number>, value: any) {\n const inst = fiber.stateNode;\n fiber.pendingProps = copyWithSet(inst.props, path, value);\n if (fiber.alternate) {\n // We don't know which fiber is the current one because DevTools may bail out of getDataFiber() call,\n // and so the data object may refer to another version of the fiber. Therefore we update pendingProps\n // on both. I hope that this is safe.\n fiber.alternate.pendingProps = fiber.pendingProps;\n }\n fiber.stateNode.forceUpdate();\n}\n\nfunction setInState(inst, path: Array<string | number>, value: any) {\n setIn(inst.state, path, value);\n inst.forceUpdate();\n}\n\nfunction setInContext(inst, path: Array<string | number>, value: any) {\n setIn(inst.context, path, value);\n inst.forceUpdate();\n}\n\nfunction setIn(obj: Object, path: Array<string | number>, value: any) {\n var last = path.pop();\n var parent = path.reduce((obj_, attr) => obj_ ? obj_[attr] : null, obj);\n if (parent) {\n parent[last] = value;\n }\n}\n\nmodule.exports = getDataFiber;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/getDataFiber.js\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 * @flow\n */\n'use strict';\n\n// Copied from React repo.\n\nmodule.exports = {\n IndeterminateComponent: 0, // Before we know whether it is functional or class\n FunctionalComponent: 1,\n ClassComponent: 2,\n HostRoot: 3, // Root of a host tree. Could be nested inside another node.\n HostPortal: 4, // A subtree. Could be an entry point to a different renderer.\n HostComponent: 5,\n HostText: 6,\n CoroutineComponent: 7,\n CoroutineHandlerPhase: 8,\n YieldComponent: 9,\n Fragment: 10,\n};\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/backend/ReactTypeOfWork.js\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 * @flow\n */\n'use strict';\n\nvar resolveBoxStyle = require('./resolveBoxStyle');\n\nimport type Bridge from '../../agent/Bridge';\nimport type Agent from '../../agent/Agent';\n\nvar styleOverridesByHostComponentId = {};\n\nmodule.exports = function setupRNStyle(\n bridge: Bridge,\n agent: Agent,\n resolveRNStyle: (style: number) => ?Object,\n) {\n bridge.onCall('rn-style:get', id => {\n var node = agent.elementData.get(id);\n if (!node || !node.props) {\n return null;\n }\n return resolveRNStyle(node.props.style);\n });\n\n bridge.on('rn-style:measure', id => {\n measureStyle(agent, bridge, resolveRNStyle, id);\n });\n\n bridge.on('rn-style:rename', ({id, oldName, newName, val}) => {\n renameStyle(agent, id, oldName, newName, val);\n setTimeout(() => measureStyle(agent, bridge, resolveRNStyle, id));\n });\n\n bridge.on('rn-style:set', ({id, attr, val}) => {\n setStyle(agent, id, attr, val);\n setTimeout(() => measureStyle(agent, bridge, resolveRNStyle, id));\n });\n};\n\nvar blank = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n};\n\nfunction measureStyle(agent, bridge, resolveRNStyle, id) {\n var node = agent.elementData.get(id);\n if (!node || !node.props) {\n bridge.send('rn-style:measure', {});\n return;\n }\n\n let style = resolveRNStyle(node.props.style);\n // If it's a host component we edited before, amend styles.\n if (styleOverridesByHostComponentId[id]) {\n style = Object.assign({}, style, styleOverridesByHostComponentId[id]);\n }\n\n var instance = node.publicInstance;\n if (!instance || !instance.measure) {\n bridge.send('rn-style:measure', {style});\n return;\n }\n\n instance.measure((x, y, width, height, left, top) => {\n // RN Android sometimes returns undefined here. Don't send measurements in this case.\n // https://github.com/jhen0409/react-native-debugger/issues/84#issuecomment-304611817\n if (typeof x !== 'number') {\n bridge.send('rn-style:measure', {style});\n return;\n }\n var margin = (style && resolveBoxStyle('margin', style)) || blank;\n var padding = (style && resolveBoxStyle('padding', style)) || blank;\n bridge.send('rn-style:measure', {\n style,\n measuredLayout: {\n x,\n y,\n width,\n height,\n left,\n top,\n margin,\n padding,\n },\n });\n });\n}\n\nfunction shallowClone(obj) {\n var nobj = {};\n for (var n in obj) {\n nobj[n] = obj[n];\n }\n return nobj;\n}\n\nfunction renameStyle(agent, id, oldName, newName, val) {\n var data = agent.elementData.get(id);\n var newStyle = newName\n ? {[oldName]: undefined, [newName]: val}\n : {[oldName]: undefined};\n\n if (data && data.updater && data.updater.setInProps) {\n // First attempt: use setInProps().\n // We do this for composite components, and it works relatively well.\n var style = data && data.props && data.props.style;\n var customStyle;\n if (Array.isArray(style)) {\n var lastLength = style.length - 1;\n if (typeof style[lastLength] === 'object' && !Array.isArray(style[lastLength])) {\n customStyle = shallowClone(style[lastLength]);\n delete customStyle[oldName];\n if (newName) {\n customStyle[newName] = val;\n } else {\n customStyle[oldName] = undefined;\n }\n // $FlowFixMe we know that updater is not null here\n data.updater.setInProps(['style', lastLength], customStyle);\n } else {\n style = style.concat([newStyle]);\n // $FlowFixMe we know that updater is not null here\n data.updater.setInProps(['style'], style);\n }\n } else {\n if (typeof style === 'object') {\n customStyle = shallowClone(style);\n delete customStyle[oldName];\n if (newName) {\n customStyle[newName] = val;\n } else {\n customStyle[oldName] = undefined;\n }\n // $FlowFixMe we know that updater is not null here\n data.updater.setInProps(['style'], customStyle);\n } else {\n style = [style, newStyle];\n data.updater.setInProps(['style'], style);\n }\n }\n } else if (data && data.updater && data.updater.setNativeProps) {\n // Fallback: use setNativeProps(). We're dealing with a host component.\n // Remember to \"correct\" resolved styles when we read them next time.\n if (!styleOverridesByHostComponentId[id]) {\n styleOverridesByHostComponentId[id] = newStyle;\n } else {\n Object.assign(styleOverridesByHostComponentId[id], newStyle);\n }\n data.updater.setNativeProps({ style: newStyle });\n } else {\n return;\n }\n agent.emit('hideHighlight');\n}\n\nfunction setStyle(agent, id, attr, val) {\n var data = agent.elementData.get(id);\n var newStyle = {[attr]: val};\n\n if (data && data.updater && data.updater.setInProps) {\n // First attempt: use setInProps().\n // We do this for composite components, and it works relatively well.\n var style = data.props && data.props.style;\n if (Array.isArray(style)) {\n var lastLength = style.length - 1;\n if (typeof style[lastLength] === 'object' && !Array.isArray(style[lastLength])) {\n // $FlowFixMe we know that updater is not null here\n data.updater.setInProps(['style', lastLength, attr], val);\n } else {\n style = style.concat([newStyle]);\n // $FlowFixMe we know that updater is not null here\n data.updater.setInProps(['style'], style);\n }\n } else {\n style = [style, newStyle];\n data.updater.setInProps(['style'], style);\n }\n } else if (data && data.updater && data.updater.setNativeProps) {\n // Fallback: use setNativeProps(). We're dealing with a host component.\n // Remember to \"correct\" resolved styles when we read them next time.\n if (!styleOverridesByHostComponentId[id]) {\n styleOverridesByHostComponentId[id] = newStyle;\n } else {\n Object.assign(styleOverridesByHostComponentId[id], newStyle);\n }\n data.updater.setNativeProps({ style: newStyle });\n } else {\n return;\n }\n agent.emit('hideHighlight');\n}\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/plugins/ReactNativeStyle/setupBackend.js\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 * @flow\n */\n\n/**\n * This is mirror from\n * https://github.com/facebook/react-native/blob/master/Libraries/Inspector/resolveBoxStyle.js\n *\n * Resolve a style property into it's component parts, e.g.\n *\n * resolveBoxStyle('margin', {margin: 5, marginBottom: 10})\n * ->\n * {top: 5, left: 5, right: 5, bottom: 10}\n *\n * If none are set, returns false.\n */\nfunction resolveBoxStyle(prefix: string, style: Object): ?Object {\n var res = {};\n var subs = ['top', 'left', 'bottom', 'right'];\n var set = false;\n subs.forEach(sub => {\n res[sub] = style[prefix] || 0;\n });\n if (style[prefix]) {\n set = true;\n }\n if (style[prefix + 'Vertical']) {\n res.top = res.bottom = style[prefix + 'Vertical'];\n set = true;\n }\n if (style[prefix + 'Horizontal']) {\n res.left = res.right = style[prefix + 'Horizontal'];\n set = true;\n }\n subs.forEach(sub => {\n var val = style[prefix + capFirst(sub)];\n if (val) {\n res[sub] = val;\n set = true;\n }\n });\n if (!set) {\n return null;\n }\n return res;\n}\n\nfunction capFirst(text) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\nmodule.exports = resolveBoxStyle;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/plugins/ReactNativeStyle/resolveBoxStyle.js\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 * @flow\n */\n'use strict';\n\nimport type Bridge from '../../agent/Bridge';\nimport type Agent from '../../agent/Agent';\n\nfunction decorate(obj, attr, fn) {\n var old = obj[attr];\n obj[attr] = function() {\n var res = old.apply(this, arguments);\n fn.apply(this, arguments);\n return res;\n };\n return () => {\n obj[attr] = old;\n };\n}\n\nlet subscriptionEnabled = false;\n\nmodule.exports = (bridge: Bridge, agent: Agent, hook: Object) => {\n var shouldEnable = !!hook._relayInternals;\n\n bridge.onCall('relay:check', () => shouldEnable);\n if (!shouldEnable) {\n return;\n }\n var {\n DefaultStoreData,\n setRequestListener,\n } = hook._relayInternals;\n\n function sendStoreData() {\n if (subscriptionEnabled) {\n bridge.send('relay:store', {\n id: 'relay:store',\n nodes: DefaultStoreData.getNodeData(),\n });\n }\n }\n\n bridge.onCall('relay:store:enable', () => {\n subscriptionEnabled = true;\n sendStoreData();\n });\n\n bridge.onCall('relay:store:disable', () => {\n subscriptionEnabled = false;\n });\n\n sendStoreData();\n decorate(DefaultStoreData, 'handleUpdatePayload', sendStoreData);\n decorate(DefaultStoreData, 'handleQueryPayload', sendStoreData);\n\n var removeListener = setRequestListener((event, data) => {\n bridge.send(event, data);\n });\n hook.on('shutdown', removeListener);\n};\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/plugins/Relay/backend.js\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 * @flow\n */\n'use strict';\n\nvar Highlighter = require('./Highlighter');\n\nimport type Agent from '../../agent/Agent';\n\nmodule.exports = function setup(agent: Agent) {\n var hl = new Highlighter(window, node => {\n agent.selectFromDOMNode(node);\n });\n agent.on('highlight', data => hl.highlight(data.node, data.name));\n agent.on('highlightMany', nodes => hl.highlightMany(nodes));\n agent.on('hideHighlight', () => hl.hideHighlight());\n agent.on('refreshMultiOverlay', () => hl.refreshMultiOverlay());\n agent.on('startInspecting', () => hl.startInspecting());\n agent.on('stopInspecting', () => hl.stopInspecting());\n agent.on('shutdown', () => {\n hl.remove();\n });\n};\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/frontend/Highlighter/setup.js\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 * @flow\n */\n'use strict';\n\nimport type {DOMNode, DOMEvent} from '../types';\n\nvar Overlay = require('./Overlay');\nvar MultiOverlay = require('./MultiOverlay');\n\n/**\n * Manages the highlighting of items on an html page, as well as\n * hover-to-inspect.\n */\nclass Highlighter {\n _overlay: ?Overlay;\n _multiOverlay: ?MultiOverlay;\n _win: Object;\n _onSelect: (node: DOMNode) => void;\n _inspecting: boolean;\n _subs: Array<() => void>;\n _button: DOMNode;\n\n constructor(win: Object, onSelect: (node: DOMNode) => void) {\n this._win = win;\n this._onSelect = onSelect;\n this._overlay = null;\n this._multiOverlay = null;\n this._subs = [];\n }\n\n startInspecting() {\n this._inspecting = true;\n this._subs = [\n captureSubscription(this._win, 'mouseover', this.onHover.bind(this)),\n captureSubscription(this._win, 'mousedown', this.onMouseDown.bind(this)),\n captureSubscription(this._win, 'click', this.onClick.bind(this)),\n ];\n }\n\n stopInspecting() {\n this._subs.forEach(unsub => unsub());\n this.hideHighlight();\n }\n\n remove() {\n this.stopInspecting();\n if (this._button && this._button.parentNode) {\n this._button.parentNode.removeChild(this._button);\n }\n }\n\n highlight(node: DOMNode, name?: string) {\n this.removeMultiOverlay();\n if (node.nodeType !== Node.COMMENT_NODE) {\n if (!this._overlay) {\n this._overlay = new Overlay(this._win);\n }\n this._overlay.inspect(node, name);\n }\n }\n\n highlightMany(nodes: Array<DOMNode>) {\n this.removeOverlay();\n if (!this._multiOverlay) {\n this._multiOverlay = new MultiOverlay(this._win);\n }\n this._multiOverlay.highlightMany(nodes);\n }\n\n hideHighlight() {\n this._inspecting = false;\n this.removeOverlay();\n this.removeMultiOverlay();\n }\n\n refreshMultiOverlay() {\n if (!this._multiOverlay) {\n return;\n }\n this._multiOverlay.refresh();\n }\n\n removeOverlay() {\n if (!this._overlay) {\n return;\n }\n this._overlay.remove();\n this._overlay = null;\n }\n\n removeMultiOverlay() {\n if (!this._multiOverlay) {\n return;\n }\n this._multiOverlay.remove();\n this._multiOverlay = null;\n }\n\n onMouseDown(evt: DOMEvent) {\n if (!this._inspecting) {\n return;\n }\n evt.preventDefault();\n evt.stopPropagation();\n evt.cancelBubble = true;\n this._onSelect(evt.target);\n }\n\n onClick(evt: DOMEvent) {\n if (!this._inspecting) {\n return;\n }\n this._subs.forEach(unsub => unsub());\n evt.preventDefault();\n evt.stopPropagation();\n evt.cancelBubble = true;\n this.hideHighlight();\n }\n\n onHover(evt: DOMEvent) {\n if (!this._inspecting) {\n return;\n }\n evt.preventDefault();\n evt.stopPropagation();\n evt.cancelBubble = true;\n this.highlight(evt.target);\n }\n\n injectButton() {\n this._button = makeMagnifier();\n this._button.onclick = this.startInspecting.bind(this);\n this._win.document.body.appendChild(this._button);\n }\n}\n\nfunction captureSubscription(obj, evt, cb) {\n obj.addEventListener(evt, cb, true);\n return () => obj.removeEventListener(evt, cb, true);\n}\n\nfunction makeMagnifier() {\n var button = window.document.createElement('button');\n button.innerHTML = '&#128269;';\n button.style.backgroundColor = 'transparent';\n button.style.border = 'none';\n button.style.outline = 'none';\n button.style.cursor = 'pointer';\n button.style.position = 'fixed';\n button.style.bottom = '10px';\n button.style.right = '10px';\n button.style.fontSize = '30px';\n button.style.zIndex = 10000000;\n return button;\n}\n\nmodule.exports = Highlighter;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/frontend/Highlighter/Highlighter.js\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 * @flow\n */\n'use strict';\n\nvar assign = require('object-assign');\nvar {monospace} = require('../Themes/Fonts');\n\nimport type {DOMNode, DOMRect, Window} from '../types';\n\n/**\n * Note that this component is not affected by the active Theme,\n * Because it highlights elements in the main Chrome window (outside of devtools).\n * The colors below were chosen to roughly match those used by Chrome devtools.\n */\nclass Overlay {\n win: Object;\n container: DOMNode;\n node: DOMNode;\n border: DOMNode;\n padding: DOMNode;\n content: DOMNode;\n tip: DOMNode;\n nameSpan: DOMNode;\n dimSpan: DOMNode;\n\n constructor(window: Object) {\n var doc = window.document;\n this.win = window;\n this.container = doc.createElement('div');\n this.node = doc.createElement('div');\n this.border = doc.createElement('div');\n this.padding = doc.createElement('div');\n this.content = doc.createElement('div');\n\n this.border.style.borderColor = overlayStyles.border;\n this.padding.style.borderColor = overlayStyles.padding;\n this.content.style.backgroundColor = overlayStyles.background;\n\n assign(this.node.style, {\n borderColor: overlayStyles.margin,\n pointerEvents: 'none',\n position: 'fixed',\n });\n\n this.tip = doc.createElement('div');\n assign(this.tip.style, {\n backgroundColor: '#333740',\n borderRadius: '2px',\n fontFamily: monospace.family,\n fontWeight: 'bold',\n padding: '3px 5px',\n position: 'fixed',\n fontSize: monospace.sizes.normal,\n });\n\n this.nameSpan = doc.createElement('span');\n this.tip.appendChild(this.nameSpan);\n assign(this.nameSpan.style, {\n color: '#ee78e6',\n borderRight: '1px solid #aaaaaa',\n paddingRight: '0.5rem',\n marginRight: '0.5rem',\n });\n this.dimSpan = doc.createElement('span');\n this.tip.appendChild(this.dimSpan);\n assign(this.dimSpan.style, {\n color: '#d7d7d7',\n });\n\n this.container.style.zIndex = 10000000;\n this.node.style.zIndex = 10000000;\n this.tip.style.zIndex = 10000000;\n this.container.appendChild(this.node);\n this.container.appendChild(this.tip);\n this.node.appendChild(this.border);\n this.border.appendChild(this.padding);\n this.padding.appendChild(this.content);\n doc.body.appendChild(this.container);\n }\n\n remove() {\n if (this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n }\n\n inspect(node: DOMNode, name?: ?string) {\n // We can't get the size of text nodes or comment nodes. React as of v15\n // heavily uses comment nodes to delimit text.\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n var box = getNestedBoundingClientRect(node, this.win);\n var dims = getElementDimensions(node);\n\n boxWrap(dims, 'margin', this.node);\n boxWrap(dims, 'border', this.border);\n boxWrap(dims, 'padding', this.padding);\n\n assign(this.content.style, {\n height: box.height - dims.borderTop - dims.borderBottom - dims.paddingTop - dims.paddingBottom + 'px',\n width: box.width - dims.borderLeft - dims.borderRight - dims.paddingLeft - dims.paddingRight + 'px',\n });\n\n assign(this.node.style, {\n top: box.top - dims.marginTop + 'px',\n left: box.left - dims.marginLeft + 'px',\n });\n\n this.nameSpan.textContent = (name || node.nodeName.toLowerCase());\n this.dimSpan.textContent = box.width + 'px × ' + box.height + 'px';\n\n var tipPos = findTipPos({\n top: box.top - dims.marginTop,\n left: box.left - dims.marginLeft,\n height: box.height + dims.marginTop + dims.marginBottom,\n width: box.width + dims.marginLeft + dims.marginRight,\n }, this.win);\n assign(this.tip.style, tipPos);\n }\n}\n\nfunction findTipPos(dims, win) {\n var tipHeight = 20;\n var margin = 5;\n var top;\n if (dims.top + dims.height + tipHeight <= win.innerHeight) {\n if (dims.top + dims.height < 0) {\n top = margin;\n } else {\n top = dims.top + dims.height + margin;\n }\n } else if (dims.top - tipHeight <= win.innerHeight) {\n if (dims.top - tipHeight - margin < margin) {\n top = margin;\n } else {\n top = dims.top - tipHeight - margin;\n }\n } else {\n top = win.innerHeight - tipHeight - margin;\n }\n\n top += 'px';\n\n if (dims.left < 0) {\n return {top, left: margin};\n }\n if (dims.left + 200 > win.innerWidth) {\n return {top, right: margin};\n }\n return {top, left: dims.left + margin + 'px'};\n}\n\nfunction getElementDimensions(domElement) {\n var calculatedStyle = window.getComputedStyle(domElement);\n\n return {\n borderLeft: +calculatedStyle.borderLeftWidth.match(/[0-9]*/)[0],\n borderRight: +calculatedStyle.borderRightWidth.match(/[0-9]*/)[0],\n borderTop: +calculatedStyle.borderTopWidth.match(/[0-9]*/)[0],\n borderBottom: +calculatedStyle.borderBottomWidth.match(/[0-9]*/)[0],\n marginLeft: +calculatedStyle.marginLeft.match(/[0-9]*/)[0],\n marginRight: +calculatedStyle.marginRight.match(/[0-9]*/)[0],\n marginTop: +calculatedStyle.marginTop.match(/[0-9]*/)[0],\n marginBottom: +calculatedStyle.marginBottom.match(/[0-9]*/)[0],\n paddingLeft: +calculatedStyle.paddingLeft.match(/[0-9]*/)[0],\n paddingRight: +calculatedStyle.paddingRight.match(/[0-9]*/)[0],\n paddingTop: +calculatedStyle.paddingTop.match(/[0-9]*/)[0],\n paddingBottom: +calculatedStyle.paddingBottom.match(/[0-9]*/)[0],\n };\n}\n\n// Get the window object for the document that a node belongs to,\n// or return null if it cannot be found (node not attached to DOM,\n// etc).\nfunction getOwnerWindow(node: DOMNode): Window | null {\n if (!node.ownerDocument) {\n return null;\n }\n return node.ownerDocument.defaultView;\n}\n\n// Get the iframe containing a node, or return null if it cannot\n// be found (node not within iframe, etc).\nfunction getOwnerIframe(node: DOMNode): DOMNode | null {\n var nodeWindow = getOwnerWindow(node);\n if (nodeWindow) {\n return nodeWindow.frameElement;\n }\n return null;\n}\n\n// Get a bounding client rect for a node, with an\n// offset added to compensate for its border.\nfunction getBoundingClientRectWithBorderOffset(node: DOMNode) {\n var dimensions = getElementDimensions(node);\n\n return mergeRectOffsets([\n node.getBoundingClientRect(),\n {\n top: dimensions.borderTop,\n left: dimensions.borderLeft,\n bottom: dimensions.borderBottom,\n right: dimensions.borderRight,\n // This width and height won't get used by mergeRectOffsets (since this\n // is not the first rect in the array), but we set them so that this\n // object typechecks as a DOMRect.\n width: 0,\n height: 0,\n },\n ]);\n}\n\n// Add together the top, left, bottom, and right properties of\n// each DOMRect, but keep the width and height of the first one.\nfunction mergeRectOffsets(rects: Array<DOMRect>): DOMRect {\n return rects.reduce((previousRect, rect) => {\n if (previousRect == null) {\n return rect;\n }\n\n return {\n top: previousRect.top + rect.top,\n left: previousRect.left + rect.left,\n width: previousRect.width,\n height: previousRect.height,\n bottom: previousRect.bottom + rect.bottom,\n right: previousRect.right + rect.right,\n };\n });\n}\n\n// Calculate a boundingClientRect for a node relative to boundaryWindow,\n// taking into account any offsets caused by intermediate iframes.\nfunction getNestedBoundingClientRect(node: DOMNode, boundaryWindow: Window): DOMRect {\n var ownerIframe = getOwnerIframe(node);\n if (\n ownerIframe &&\n ownerIframe !== boundaryWindow\n ) {\n var rects = [node.getBoundingClientRect()];\n var currentIframe = ownerIframe;\n var onlyOneMore = false;\n while (currentIframe) {\n var rect = getBoundingClientRectWithBorderOffset(currentIframe);\n rects.push(rect);\n currentIframe = getOwnerIframe(currentIframe);\n\n if (onlyOneMore) {\n break;\n }\n // We don't want to calculate iframe offsets upwards beyond\n // the iframe containing the boundaryWindow, but we\n // need to calculate the offset relative to the boundaryWindow.\n if (currentIframe && getOwnerWindow(currentIframe) === boundaryWindow) {\n onlyOneMore = true;\n }\n }\n\n return mergeRectOffsets(rects);\n } else {\n return node.getBoundingClientRect();\n }\n}\n\nfunction boxWrap(dims, what, node) {\n assign(node.style, {\n borderTopWidth: dims[what + 'Top'] + 'px',\n borderLeftWidth: dims[what + 'Left'] + 'px',\n borderRightWidth: dims[what + 'Right'] + 'px',\n borderBottomWidth: dims[what + 'Bottom'] + 'px',\n borderStyle: 'solid',\n });\n}\n\nvar overlayStyles = {\n background: 'rgba(120, 170, 210, 0.7)',\n padding: 'rgba(77, 200, 0, 0.3)',\n margin: 'rgba(255, 155, 0, 0.3)',\n border: 'rgba(255, 200, 50, 0.3)',\n};\n\nmodule.exports = Overlay;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/frontend/Highlighter/Overlay.js\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 * @flow\n */\n'use strict';\n\nmodule.exports = {\n monospace: {\n family: 'Menlo, Consolas, monospace',\n sizes: {\n normal: 11,\n large: 14,\n },\n },\n sansSerif: {\n family: '\"Helvetica Neue\", \"Lucida Grande\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, sans-serif',\n sizes: {\n small: 10,\n normal: 12,\n large: 14,\n },\n },\n};\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/frontend/Themes/Fonts.js\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 * @flow\n */\n'use strict';\n\nvar assign = require('object-assign');\n\nimport type {DOMNode} from '../types';\n\nclass MultiOverlay {\n win: Object;\n container: DOMNode;\n _currentNodes: ?Array<DOMNode>;\n\n constructor(window: Object) {\n this.win = window;\n var doc = window.document;\n this.container = doc.createElement('div');\n doc.body.appendChild(this.container);\n this._currentNodes = null;\n }\n\n highlightMany(nodes: Array<DOMNode>) {\n this._currentNodes = nodes;\n this.container.innerHTML = '';\n\n nodes.forEach(node => {\n var div = this.win.document.createElement('div');\n if (typeof node.getBoundingClientRect !== 'function') {\n return;\n }\n var box = node.getBoundingClientRect();\n if (box.bottom < 0 || box.top > window.innerHeight) {\n return;\n }\n assign(div.style, {\n top: box.top + 'px',\n left: box.left + 'px',\n width: box.width + 'px',\n height: box.height + 'px',\n border: '2px dotted rgba(200, 100, 100, .8)',\n boxSizing: 'border-box',\n backgroundColor: 'rgba(200, 100, 100, .2)',\n position: 'fixed',\n zIndex: 10000000,\n pointerEvents: 'none',\n });\n this.container.appendChild(div);\n });\n }\n\n refresh() {\n if (this._currentNodes) {\n this.highlightMany(this._currentNodes);\n }\n }\n\n remove() {\n if (this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n this._currentNodes = null;\n }\n }\n}\n\nmodule.exports = MultiOverlay;\n\n\n\n/** WEBPACK FOOTER **\n ** /Users/gaearon/p/react-devtools/frontend/Highlighter/MultiOverlay.js\n **/"],"sourceRoot":""}