{"version":3,"sources":["node_modules\\react-dom\\lib\\ReactEventListener.js"],"names":["_assign","require","EventListener","ExecutionEnvironment","PooledClass","ReactDOMComponentTree","ReactUpdates","getEventTarget","getUnboundedScrollPosition","findParent","inst","_hostParent","rootNode","getNodeFromInstance","container","parentNode","getClosestInstanceFromNode","TopLevelCallbackBookKeeping","topLevelType","nativeEvent","ancestors","prototype","destructor","length","addPoolingTo","twoArgumentPooler","handleTopLevelImpl","bookKeeping","nativeEventTarget","targetInst","ancestor","push","i","ReactEventListener","_handleTopLevel","scrollValueMonitor","cb","scrollPosition","window","_enabled","WINDOW_HANDLE","canUseDOM","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","trapBubbledEvent","handlerBaseName","element","listen","dispatchEvent","bind","trapCapturedEvent","capture","monitorScrollValue","refresh","callback","getPooled","batchedUpdates","release","module","exports"],"mappings":"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","file":"ReactEventListener.js","sourceRoot":"D:/Work/Office/react-native-on-web/cli/tmpl/project","sourcesContent":["/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n  // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n  // traversal, but caching is difficult to do correctly without using a\n  // mutation observer to listen for all DOM changes.\n  while (inst._hostParent) {\n    inst = inst._hostParent;\n  }\n  var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n  var container = rootNode.parentNode;\n  return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n  this.topLevelType = topLevelType;\n  this.nativeEvent = nativeEvent;\n  this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n  destructor: function () {\n    this.topLevelType = null;\n    this.nativeEvent = null;\n    this.ancestors.length = 0;\n  }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n  var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n  var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n  // Loop through the hierarchy, in case there's any nested components.\n  // It's important that we build the array of ancestors before calling any\n  // event handlers, because event handlers can modify the DOM, leading to\n  // inconsistencies with ReactMount's node cache. See #1105.\n  var ancestor = targetInst;\n  do {\n    bookKeeping.ancestors.push(ancestor);\n    ancestor = ancestor && findParent(ancestor);\n  } while (ancestor);\n\n  for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n    targetInst = bookKeeping.ancestors[i];\n    ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n  }\n}\n\nfunction scrollValueMonitor(cb) {\n  var scrollPosition = getUnboundedScrollPosition(window);\n  cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n  _enabled: true,\n  _handleTopLevel: null,\n\n  WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n  setHandleTopLevel: function (handleTopLevel) {\n    ReactEventListener._handleTopLevel = handleTopLevel;\n  },\n\n  setEnabled: function (enabled) {\n    ReactEventListener._enabled = !!enabled;\n  },\n\n  isEnabled: function () {\n    return ReactEventListener._enabled;\n  },\n\n  /**\n   * Traps top-level events by using event bubbling.\n   *\n   * @param {string} topLevelType Record from `EventConstants`.\n   * @param {string} handlerBaseName Event name (e.g. \"click\").\n   * @param {object} element Element on which to attach listener.\n   * @return {?object} An object with a remove function which will forcefully\n   *                  remove the listener.\n   * @internal\n   */\n  trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n    if (!element) {\n      return null;\n    }\n    return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n  },\n\n  /**\n   * Traps a top-level event by using event capturing.\n   *\n   * @param {string} topLevelType Record from `EventConstants`.\n   * @param {string} handlerBaseName Event name (e.g. \"click\").\n   * @param {object} element Element on which to attach listener.\n   * @return {?object} An object with a remove function which will forcefully\n   *                  remove the listener.\n   * @internal\n   */\n  trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n    if (!element) {\n      return null;\n    }\n    return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n  },\n\n  monitorScrollValue: function (refresh) {\n    var callback = scrollValueMonitor.bind(null, refresh);\n    EventListener.listen(window, 'scroll', callback);\n  },\n\n  dispatchEvent: function (topLevelType, nativeEvent) {\n    if (!ReactEventListener._enabled) {\n      return;\n    }\n\n    var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n    try {\n      // Event queue being processed in the same cycle allows\n      // `preventDefault`.\n      ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n    } finally {\n      TopLevelCallbackBookKeeping.release(bookKeeping);\n    }\n  }\n};\n\nmodule.exports = ReactEventListener;"]}