Best JavaScript code snippet using playwright-internal
ReactEventEmitter.js
Source:ReactEventEmitter.js  
...77 * @param {string} handlerBaseName Event name (e.g. "click").78 * @param {DOMEventTarget} element Element on which to attach listener.79 * @internal80 */81function trapBubbledEvent(topLevelType, handlerBaseName, element) {82  EventListener.listen(83    element,84    handlerBaseName,85    ReactEventEmitter.TopLevelCallbackCreator.createTopLevelCallback(86      topLevelType87    )88  );89}90/**91 * Traps a top-level event by using event capturing.92 *93 * @param {string} topLevelType Record from `EventConstants`.94 * @param {string} handlerBaseName Event name (e.g. "click").95 * @param {DOMEventTarget} element Element on which to attach listener.96 * @internal97 */98function trapCapturedEvent(topLevelType, handlerBaseName, element) {99  EventListener.capture(100    element,101    handlerBaseName,102    ReactEventEmitter.TopLevelCallbackCreator.createTopLevelCallback(103      topLevelType104    )105  );106}107/**108 * Listens to window scroll and resize events. We cache scroll values so that109 * application code can access them without triggering reflows.110 *111 * NOTE: Scroll events do not bubble.112 *113 * @private114 * @see http://www.quirksmode.org/dom/events/scroll.html115 */116function registerScrollValueMonitoring() {117  var refresh = ViewportMetrics.refreshScrollValues;118  EventListener.listen(window, 'scroll', refresh);119  EventListener.listen(window, 'resize', refresh);120}121/**122 * `ReactEventEmitter` is used to attach top-level event listeners. For example:123 *124 *   ReactEventEmitter.putListener('myID', 'onClick', myFunction);125 *126 * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'.127 *128 * @internal129 */130var ReactEventEmitter = merge(ReactEventEmitterMixin, {131  /**132   * React references `ReactEventTopLevelCallback` using this property in order133   * to allow dependency injection.134   */135  TopLevelCallbackCreator: null,136  /**137   * Ensures that top-level event delegation listeners are installed.138   *139   * There are issues with listening to both touch events and mouse events on140   * the top-level, so we make the caller choose which one to listen to. (If141   * there's a touch top-level listeners, anchors don't receive clicks for some142   * reason, and only in some cases).143   *144   * @param {boolean} touchNotMouse Listen to touch events instead of mouse.145   * @param {DOMDocument} contentDocument DOM document to listen on146   */147  ensureListening: function(touchNotMouse, contentDocument) {148    invariant(149      ExecutionEnvironment.canUseDOM,150      'ensureListening(...): Cannot toggle event listening in a Worker ' +151      'thread. This is likely a bug in the framework. Please report ' +152      'immediately.'153    );154    invariant(155      ReactEventEmitter.TopLevelCallbackCreator,156      'ensureListening(...): Cannot be called without a top level callback ' +157      'creator being injected.'158    );159    // Call out to base implementation.160    ReactEventEmitterMixin.ensureListening.call(161      ReactEventEmitter,162      {163        touchNotMouse: touchNotMouse,164        contentDocument: contentDocument165      }166    );167  },168  /**169   * Sets whether or not any created callbacks should be enabled.170   *171   * @param {boolean} enabled True if callbacks should be enabled.172   */173  setEnabled: function(enabled) {174    invariant(175      ExecutionEnvironment.canUseDOM,176      'setEnabled(...): Cannot toggle event listening in a Worker thread. ' +177      'This is likely a bug in the framework. Please report immediately.'178    );179    if (ReactEventEmitter.TopLevelCallbackCreator) {180      ReactEventEmitter.TopLevelCallbackCreator.setEnabled(enabled);181    }182  },183  /**184   * @return {boolean} True if callbacks are enabled.185   */186  isEnabled: function() {187    return !!(188      ReactEventEmitter.TopLevelCallbackCreator &&189      ReactEventEmitter.TopLevelCallbackCreator.isEnabled()190    );191  },192  /**193   * We listen for bubbled touch events on the document object.194   *195   * Firefox v8.01 (and possibly others) exhibited strange behavior when196   * mounting `onmousemove` events at some node that was not the document197   * element. The symptoms were that if your mouse is not moving over something198   * contained within that mount point (for example on the background) the199   * top-level listeners for `onmousemove` won't be called. However, if you200   * register the `mousemove` on the document object, then it will of course201   * catch all `mousemove`s. This along with iOS quirks, justifies restricting202   * top-level listeners to the document object only, at least for these203   * movement types of events and possibly all events.204   *205   * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html206   *207   * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but208   * they bubble to document.209   *210   * @param {boolean} touchNotMouse Listen to touch events instead of mouse.211   * @param {DOMDocument} contentDocument Document which owns the container212   * @private213   * @see http://www.quirksmode.org/dom/events/keys.html.214   */215  listenAtTopLevel: function(touchNotMouse, contentDocument) {216    invariant(217      !contentDocument._isListening,218      'listenAtTopLevel(...): Cannot setup top-level listener more than once.'219    );220    var topLevelTypes = EventConstants.topLevelTypes;221    var mountAt = contentDocument;222    registerScrollValueMonitoring();223    trapBubbledEvent(topLevelTypes.topMouseOver, 'mouseover', mountAt);224    trapBubbledEvent(topLevelTypes.topMouseDown, 'mousedown', mountAt);225    trapBubbledEvent(topLevelTypes.topMouseUp, 'mouseup', mountAt);226    trapBubbledEvent(topLevelTypes.topMouseMove, 'mousemove', mountAt);227    trapBubbledEvent(topLevelTypes.topMouseOut, 'mouseout', mountAt);228    trapBubbledEvent(topLevelTypes.topClick, 'click', mountAt);229    trapBubbledEvent(topLevelTypes.topDoubleClick, 'dblclick', mountAt);230    trapBubbledEvent(topLevelTypes.topContextMenu, 'contextmenu', mountAt);231    if (touchNotMouse) {232      trapBubbledEvent(topLevelTypes.topTouchStart, 'touchstart', mountAt);233      trapBubbledEvent(topLevelTypes.topTouchEnd, 'touchend', mountAt);234      trapBubbledEvent(topLevelTypes.topTouchMove, 'touchmove', mountAt);235      trapBubbledEvent(topLevelTypes.topTouchCancel, 'touchcancel', mountAt);236    }237    trapBubbledEvent(topLevelTypes.topKeyUp, 'keyup', mountAt);238    trapBubbledEvent(topLevelTypes.topKeyPress, 'keypress', mountAt);239    trapBubbledEvent(topLevelTypes.topKeyDown, 'keydown', mountAt);240    trapBubbledEvent(topLevelTypes.topInput, 'input', mountAt);241    trapBubbledEvent(topLevelTypes.topChange, 'change', mountAt);242    trapBubbledEvent(243      topLevelTypes.topSelectionChange,244      'selectionchange',245      mountAt246    );247    trapBubbledEvent(248      topLevelTypes.topCompositionEnd,249      'compositionend',250      mountAt251    );252    trapBubbledEvent(253      topLevelTypes.topCompositionStart,254      'compositionstart',255      mountAt256    );257    trapBubbledEvent(258      topLevelTypes.topCompositionUpdate,259      'compositionupdate',260      mountAt261    );262    if (isEventSupported('drag')) {263      trapBubbledEvent(topLevelTypes.topDrag, 'drag', mountAt);264      trapBubbledEvent(topLevelTypes.topDragEnd, 'dragend', mountAt);265      trapBubbledEvent(topLevelTypes.topDragEnter, 'dragenter', mountAt);266      trapBubbledEvent(topLevelTypes.topDragExit, 'dragexit', mountAt);267      trapBubbledEvent(topLevelTypes.topDragLeave, 'dragleave', mountAt);268      trapBubbledEvent(topLevelTypes.topDragOver, 'dragover', mountAt);269      trapBubbledEvent(topLevelTypes.topDragStart, 'dragstart', mountAt);270      trapBubbledEvent(topLevelTypes.topDrop, 'drop', mountAt);271    }272    if (isEventSupported('wheel')) {273      trapBubbledEvent(topLevelTypes.topWheel, 'wheel', mountAt);274    } else if (isEventSupported('mousewheel')) {275      trapBubbledEvent(topLevelTypes.topWheel, 'mousewheel', mountAt);276    } else {277      // Firefox needs to capture a different mouse scroll event.278      // @see http://www.quirksmode.org/dom/events/tests/scroll.html279      trapBubbledEvent(topLevelTypes.topWheel, 'DOMMouseScroll', mountAt);280    }281    // IE<9 does not support capturing so just trap the bubbled event there.282    if (isEventSupported('scroll', true)) {283      trapCapturedEvent(topLevelTypes.topScroll, 'scroll', mountAt);284    } else {285      trapBubbledEvent(topLevelTypes.topScroll, 'scroll', window);286    }287    if (isEventSupported('focus', true)) {288      trapCapturedEvent(topLevelTypes.topFocus, 'focus', mountAt);289      trapCapturedEvent(topLevelTypes.topBlur, 'blur', mountAt);290    } else if (isEventSupported('focusin')) {291      // IE has `focusin` and `focusout` events which bubble.292      // @see293      // http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html294      trapBubbledEvent(topLevelTypes.topFocus, 'focusin', mountAt);295      trapBubbledEvent(topLevelTypes.topBlur, 'focusout', mountAt);296    }297    if (isEventSupported('copy')) {298      trapBubbledEvent(topLevelTypes.topCopy, 'copy', mountAt);299      trapBubbledEvent(topLevelTypes.topCut, 'cut', mountAt);300      trapBubbledEvent(topLevelTypes.topPaste, 'paste', mountAt);301    }302  },303  registrationNames: EventPluginHub.registrationNames,304  putListener: EventPluginHub.putListener,305  getListener: EventPluginHub.getListener,306  deleteListener: EventPluginHub.deleteListener,307  deleteAllListeners: EventPluginHub.deleteAllListeners,308  trapBubbledEvent: trapBubbledEvent,309  trapCapturedEvent: trapCapturedEvent310});...ReactEvent.mjs
Source:ReactEvent.mjs  
...91 * Traps top-level events that bubble. Delegates to the main dispatcher92 * `handleTopLevel` after performing some basic normalization via93 * `TopLevelCallbackCreator.createTopLevelCallback`.94 */95function trapBubbledEvent(topLevelType, handlerBaseName, onWhat) {96  listen(97    onWhat,98    handlerBaseName,99    ReactEvent.TopLevelCallbackCreator.createTopLevelCallback(topLevelType)100  );101}102/**103 * Traps a top-level event by using event capturing.104 */105function trapCapturedEvent(topLevelType, handlerBaseName, onWhat) {106  capture(107    onWhat,108    handlerBaseName,109    ReactEvent.TopLevelCallbackCreator.createTopLevelCallback(topLevelType)110  );111}112/**113 * Listens to document scroll and window resize events that may change the114 * document scroll values. We store those results so as to discourage115 * application code from asking the DOM itself which could trigger additional116 * reflows.117 */118function registerDocumentScrollListener() {119  listen(window, 'scroll', function (nativeEvent) {120    if (nativeEvent.target === window) {121      BrowserEnv.refreshAuthoritativeScrollValues();122    }123  });124}125function registerDocumentResizeListener() {126  listen(window, 'resize', function (nativeEvent) {127    if (nativeEvent.target === window) {128      BrowserEnv.refreshAuthoritativeScrollValues();129    }130  });131}132/**133 * Summary of `ReactEvent` event handling:134 *135 *  - We trap low level 'top-level' events.136 *137 *  - We dedupe cross-browser event names into these 'top-level types' so that138 *    `DOMMouseScroll` or `mouseWheel` both become `topMouseWheel`.139 *140 *  - At this point we have native browser events with the top-level type that141 *    was used to catch it at the top-level.142 *143 *  - We continuously stream these native events (and their respective top-level144 *    types) to the event plugin system `EventPluginHub` and ask the plugin145 *    system if it was able to extract `AbstractEvent` objects. `AbstractEvent`146 *    objects are the events that applications actually deal with - they are not147 *    native browser events but cross-browser wrappers.148 *149 *  - When returning the `AbstractEvent` objects, `EventPluginHub` will make150 *    sure each abstract event is annotated with "dispatches", which are the151 *    sequence of listeners (and IDs) that care about the event.152 *153 *  - These `AbstractEvent` objects are fed back into the event plugin system,154 *    which in turn executes these dispatches.155 *156 * @private157 */158function listenAtTopLevel(touchNotMouse) {159  invariant(160    !_isListening,161    'listenAtTopLevel(...): Cannot setup top-level listener more than once.'162  );163  var mountAt = document;164  registerDocumentScrollListener();165  registerDocumentResizeListener();166  trapBubbledEvent(topLevelTypes.topMouseOver, 'mouseover', mountAt);167  trapBubbledEvent(topLevelTypes.topMouseDown, 'mousedown', mountAt);168  trapBubbledEvent(topLevelTypes.topMouseUp, 'mouseup', mountAt);169  trapBubbledEvent(topLevelTypes.topMouseMove, 'mousemove', mountAt);170  trapBubbledEvent(topLevelTypes.topMouseOut, 'mouseout', mountAt);171  trapBubbledEvent(topLevelTypes.topClick, 'click', mountAt);172  trapBubbledEvent(topLevelTypes.topDoubleClick, 'dblclick', mountAt);173  trapBubbledEvent(topLevelTypes.topMouseWheel, 'mousewheel', mountAt);174  if (touchNotMouse) {175    trapBubbledEvent(topLevelTypes.topTouchStart, 'touchstart', mountAt);176    trapBubbledEvent(topLevelTypes.topTouchEnd, 'touchend', mountAt);177    trapBubbledEvent(topLevelTypes.topTouchMove, 'touchmove', mountAt);178    trapBubbledEvent(topLevelTypes.topTouchCancel, 'touchcancel', mountAt);179  }180  trapBubbledEvent(topLevelTypes.topKeyUp, 'keyup', mountAt);181  trapBubbledEvent(topLevelTypes.topKeyPress, 'keypress', mountAt);182  trapBubbledEvent(topLevelTypes.topKeyDown, 'keydown', mountAt);183  trapBubbledEvent(topLevelTypes.topChange, 'change', mountAt);184  trapBubbledEvent(185    topLevelTypes.topDOMCharacterDataModified,186    'DOMCharacterDataModified',187    mountAt188  );189  // Firefox needs to capture a different mouse scroll event.190  // @see http://www.quirksmode.org/dom/events/tests/scroll.html191  trapBubbledEvent(topLevelTypes.topMouseWheel, 'DOMMouseScroll', mountAt);192  // IE < 9 doesn't support capturing so just trap the bubbled event there.193  if (isEventSupported('scroll', true)) {194    trapCapturedEvent(topLevelTypes.topScroll, 'scroll', mountAt);195  } else {196    trapBubbledEvent(topLevelTypes.topScroll, 'scroll', window);197  }198  if (isEventSupported('focus', true)) {199    trapCapturedEvent(topLevelTypes.topFocus, 'focus', mountAt);200    trapCapturedEvent(topLevelTypes.topBlur, 'blur', mountAt);201  } else if (isEventSupported('focusin')) {202    // IE has `focusin` and `focusout` events which bubble.203    // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html204    trapBubbledEvent(topLevelTypes.topFocus, 'focusin', mountAt);205    trapBubbledEvent(topLevelTypes.topBlur, 'focusout', mountAt);206  }207}208/**209 * This is the heart of `ReactEvent`. It simply streams the top-level native210 * events to `EventPluginHub`.211 *212 * @param {object} topLevelType Record from `EventConstants`.213 * @param {Event} nativeEvent A Standard Event with fixed `target` property.214 * @param {DOMElement} renderedTarget Element of interest to the framework.215 * @param {string} renderedTargetID string ID of `renderedTarget`.216 * @internal217 */218function handleTopLevel(219  topLevelType,...ReactEvent.js
Source:ReactEvent.js  
...91 * Traps top-level events that bubble. Delegates to the main dispatcher92 * `handleTopLevel` after performing some basic normalization via93 * `TopLevelCallbackCreator.createTopLevelCallback`.94 */95function trapBubbledEvent(topLevelType, handlerBaseName, onWhat) {96  listen(97    onWhat,98    handlerBaseName,99    ReactEvent.TopLevelCallbackCreator.createTopLevelCallback(topLevelType)100  );101}102/**103 * Traps a top-level event by using event capturing.104 */105function trapCapturedEvent(topLevelType, handlerBaseName, onWhat) {106  capture(107    onWhat,108    handlerBaseName,109    ReactEvent.TopLevelCallbackCreator.createTopLevelCallback(topLevelType)110  );111}112/**113 * Listens to document scroll and window resize events that may change the114 * document scroll values. We store those results so as to discourage115 * application code from asking the DOM itself which could trigger additional116 * reflows.117 */118function registerDocumentScrollListener() {119  listen(window, 'scroll', function(nativeEvent) {120    if (nativeEvent.target === window) {121      BrowserEnv.refreshAuthoritativeScrollValues();122    }123  });124}125function registerDocumentResizeListener() {126  listen(window, 'resize', function(nativeEvent) {127    if (nativeEvent.target === window) {128      BrowserEnv.refreshAuthoritativeScrollValues();129    }130  });131}132/**133 * Summary of `ReactEvent` event handling:134 *135 *  - We trap low level 'top-level' events.136 *137 *  - We dedupe cross-browser event names into these 'top-level types' so that138 *    `DOMMouseScroll` or `mouseWheel` both become `topMouseWheel`.139 *140 *  - At this point we have native browser events with the top-level type that141 *    was used to catch it at the top-level.142 *143 *  - We continuously stream these native events (and their respective top-level144 *    types) to the event plugin system `EventPluginHub` and ask the plugin145 *    system if it was able to extract `AbstractEvent` objects. `AbstractEvent`146 *    objects are the events that applications actually deal with - they are not147 *    native browser events but cross-browser wrappers.148 *149 *  - When returning the `AbstractEvent` objects, `EventPluginHub` will make150 *    sure each abstract event is annotated with "dispatches", which are the151 *    sequence of listeners (and IDs) that care about the event.152 *153 *  - These `AbstractEvent` objects are fed back into the event plugin system,154 *    which in turn executes these dispatches.155 *156 * @private157 */158function listenAtTopLevel(touchNotMouse) {159  invariant(160    !_isListening,161    'listenAtTopLevel(...): Cannot setup top-level listener more than once.'162  );163  var mountAt = document;164  registerDocumentScrollListener();165  registerDocumentResizeListener();166  trapBubbledEvent(topLevelTypes.topMouseOver, 'mouseover', mountAt);167  trapBubbledEvent(topLevelTypes.topMouseDown, 'mousedown', mountAt);168  trapBubbledEvent(topLevelTypes.topMouseUp, 'mouseup', mountAt);169  trapBubbledEvent(topLevelTypes.topMouseMove, 'mousemove', mountAt);170  trapBubbledEvent(topLevelTypes.topMouseOut, 'mouseout', mountAt);171  trapBubbledEvent(topLevelTypes.topClick, 'click', mountAt);172  trapBubbledEvent(topLevelTypes.topDoubleClick, 'dblclick', mountAt);173  trapBubbledEvent(topLevelTypes.topMouseWheel, 'mousewheel', mountAt);174  if (touchNotMouse) {175    trapBubbledEvent(topLevelTypes.topTouchStart, 'touchstart', mountAt);176    trapBubbledEvent(topLevelTypes.topTouchEnd, 'touchend', mountAt);177    trapBubbledEvent(topLevelTypes.topTouchMove, 'touchmove', mountAt);178    trapBubbledEvent(topLevelTypes.topTouchCancel, 'touchcancel', mountAt);179  }180  trapBubbledEvent(topLevelTypes.topKeyUp, 'keyup', mountAt);181  trapBubbledEvent(topLevelTypes.topKeyPress, 'keypress', mountAt);182  trapBubbledEvent(topLevelTypes.topKeyDown, 'keydown', mountAt);183  trapBubbledEvent(topLevelTypes.topChange, 'change', mountAt);184  trapBubbledEvent(185    topLevelTypes.topDOMCharacterDataModified,186    'DOMCharacterDataModified',187    mountAt188  );189  // Firefox needs to capture a different mouse scroll event.190  // @see http://www.quirksmode.org/dom/events/tests/scroll.html191  trapBubbledEvent(topLevelTypes.topMouseWheel, 'DOMMouseScroll', mountAt);192  // IE < 9 doesn't support capturing so just trap the bubbled event there.193  if (isEventSupported('scroll', true)) {194    trapCapturedEvent(topLevelTypes.topScroll, 'scroll', mountAt);195  } else {196    trapBubbledEvent(topLevelTypes.topScroll, 'scroll', window);197  }198  if (isEventSupported('focus', true)) {199    trapCapturedEvent(topLevelTypes.topFocus, 'focus', mountAt);200    trapCapturedEvent(topLevelTypes.topBlur, 'blur', mountAt);201  } else if (isEventSupported('focusin')) {202    // IE has `focusin` and `focusout` events which bubble.203    // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html204    trapBubbledEvent(topLevelTypes.topFocus, 'focusin', mountAt);205    trapBubbledEvent(topLevelTypes.topBlur, 'focusout', mountAt);206  }207}208/**209 * This is the heart of `ReactEvent`. It simply streams the top-level native210 * events to `EventPluginHub`.211 *212 * @param {object} topLevelType Record from `EventConstants`.213 * @param {Event} nativeEvent A Standard Event with fixed `target` property.214 * @param {DOMElement} renderedTarget Element of interest to the framework.215 * @param {string} renderedTargetID string ID of `renderedTarget`.216 * @internal217 */218function handleTopLevel(219    topLevelType,...module$ReactEventEmitter.js
Source:module$ReactEventEmitter.js  
1goog.provide("module$ReactEventEmitter");2var module$ReactEventEmitter = {};3goog.require("module$merge");4goog.require("module$isEventSupported");5goog.require("module$invariant");6goog.require("module$ViewportMetrics");7goog.require("module$ReactEventEmitterMixin");8goog.require("module$ExecutionEnvironment");9goog.require("module$EventPluginHub");10goog.require("module$EventListener");11goog.require("module$EventConstants");12var EventConstants$$module$ReactEventEmitter = module$EventConstants;13var EventListener$$module$ReactEventEmitter = module$EventListener;14var EventPluginHub$$module$ReactEventEmitter = module$EventPluginHub;15var ExecutionEnvironment$$module$ReactEventEmitter = module$ExecutionEnvironment;16var ReactEventEmitterMixin$$module$ReactEventEmitter = module$ReactEventEmitterMixin;17var ViewportMetrics$$module$ReactEventEmitter = module$ViewportMetrics;18var invariant$$module$ReactEventEmitter = module$invariant;19var isEventSupported$$module$ReactEventEmitter = module$isEventSupported;20var merge$$module$ReactEventEmitter = module$merge;21function trapBubbledEvent$$module$ReactEventEmitter(topLevelType, handlerBaseName, element) {22  EventListener$$module$ReactEventEmitter.listen(element, handlerBaseName, ReactEventEmitter$$module$ReactEventEmitter.TopLevelCallbackCreator.createTopLevelCallback(topLevelType))23}24function trapCapturedEvent$$module$ReactEventEmitter(topLevelType, handlerBaseName, element) {25  EventListener$$module$ReactEventEmitter.capture(element, handlerBaseName, ReactEventEmitter$$module$ReactEventEmitter.TopLevelCallbackCreator.createTopLevelCallback(topLevelType))26}27function registerScrollValueMonitoring$$module$ReactEventEmitter() {28  var refresh = ViewportMetrics$$module$ReactEventEmitter.refreshScrollValues;29  EventListener$$module$ReactEventEmitter.listen(window, "scroll", refresh);30  EventListener$$module$ReactEventEmitter.listen(window, "resize", refresh)31}32var ReactEventEmitter$$module$ReactEventEmitter = merge$$module$ReactEventEmitter(ReactEventEmitterMixin$$module$ReactEventEmitter, {TopLevelCallbackCreator:null, ensureListening:function(touchNotMouse, contentDocument) {33  invariant$$module$ReactEventEmitter(ExecutionEnvironment$$module$ReactEventEmitter.canUseDOM);34  invariant$$module$ReactEventEmitter(ReactEventEmitter$$module$ReactEventEmitter.TopLevelCallbackCreator);35  ReactEventEmitterMixin$$module$ReactEventEmitter.ensureListening.call(ReactEventEmitter$$module$ReactEventEmitter, {touchNotMouse:touchNotMouse, contentDocument:contentDocument})36}, setEnabled:function(enabled) {37  invariant$$module$ReactEventEmitter(ExecutionEnvironment$$module$ReactEventEmitter.canUseDOM);38  if(ReactEventEmitter$$module$ReactEventEmitter.TopLevelCallbackCreator) {39    ReactEventEmitter$$module$ReactEventEmitter.TopLevelCallbackCreator.setEnabled(enabled)40  }41}, isEnabled:function() {42  return!!(ReactEventEmitter$$module$ReactEventEmitter.TopLevelCallbackCreator && ReactEventEmitter$$module$ReactEventEmitter.TopLevelCallbackCreator.isEnabled())43}, listenAtTopLevel:function(touchNotMouse, contentDocument) {44  invariant$$module$ReactEventEmitter(!contentDocument._isListening);45  var topLevelTypes = EventConstants$$module$ReactEventEmitter.topLevelTypes;46  var mountAt = contentDocument;47  registerScrollValueMonitoring$$module$ReactEventEmitter();48  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topMouseOver, "mouseover", mountAt);49  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topMouseDown, "mousedown", mountAt);50  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topMouseUp, "mouseup", mountAt);51  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topMouseMove, "mousemove", mountAt);52  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topMouseOut, "mouseout", mountAt);53  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topClick, "click", mountAt);54  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDoubleClick, "dblclick", mountAt);55  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topContextMenu, "contextmenu", mountAt);56  if(touchNotMouse) {57    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topTouchStart, "touchstart", mountAt);58    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topTouchEnd, "touchend", mountAt);59    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topTouchMove, "touchmove", mountAt);60    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topTouchCancel, "touchcancel", mountAt)61  }62  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topKeyUp, "keyup", mountAt);63  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topKeyPress, "keypress", mountAt);64  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topKeyDown, "keydown", mountAt);65  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topInput, "input", mountAt);66  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topChange, "change", mountAt);67  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topSelectionChange, "selectionchange", mountAt);68  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topCompositionEnd, "compositionend", mountAt);69  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topCompositionStart, "compositionstart", mountAt);70  trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topCompositionUpdate, "compositionupdate", mountAt);71  if(isEventSupported$$module$ReactEventEmitter("drag")) {72    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDrag, "drag", mountAt);73    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDragEnd, "dragend", mountAt);74    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDragEnter, "dragenter", mountAt);75    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDragExit, "dragexit", mountAt);76    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDragLeave, "dragleave", mountAt);77    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDragOver, "dragover", mountAt);78    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDragStart, "dragstart", mountAt);79    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topDrop, "drop", mountAt)80  }81  if(isEventSupported$$module$ReactEventEmitter("wheel")) {82    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topWheel, "wheel", mountAt)83  }else {84    if(isEventSupported$$module$ReactEventEmitter("mousewheel")) {85      trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topWheel, "mousewheel", mountAt)86    }else {87      trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topWheel, "DOMMouseScroll", mountAt)88    }89  }90  if(isEventSupported$$module$ReactEventEmitter("scroll", true)) {91    trapCapturedEvent$$module$ReactEventEmitter(topLevelTypes.topScroll, "scroll", mountAt)92  }else {93    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topScroll, "scroll", window)94  }95  if(isEventSupported$$module$ReactEventEmitter("focus", true)) {96    trapCapturedEvent$$module$ReactEventEmitter(topLevelTypes.topFocus, "focus", mountAt);97    trapCapturedEvent$$module$ReactEventEmitter(topLevelTypes.topBlur, "blur", mountAt)98  }else {99    if(isEventSupported$$module$ReactEventEmitter("focusin")) {100      trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topFocus, "focusin", mountAt);101      trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topBlur, "focusout", mountAt)102    }103  }104  if(isEventSupported$$module$ReactEventEmitter("copy")) {105    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topCopy, "copy", mountAt);106    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topCut, "cut", mountAt);107    trapBubbledEvent$$module$ReactEventEmitter(topLevelTypes.topPaste, "paste", mountAt)108  }109}, registrationNames:EventPluginHub$$module$ReactEventEmitter.registrationNames, putListener:EventPluginHub$$module$ReactEventEmitter.putListener, getListener:EventPluginHub$$module$ReactEventEmitter.getListener, deleteListener:EventPluginHub$$module$ReactEventEmitter.deleteListener, deleteAllListeners:EventPluginHub$$module$ReactEventEmitter.deleteAllListeners, trapBubbledEvent:trapBubbledEvent$$module$ReactEventEmitter, trapCapturedEvent:trapCapturedEvent$$module$ReactEventEmitter});110module$ReactEventEmitter.module$exports = ReactEventEmitter$$module$ReactEventEmitter;111if(module$ReactEventEmitter.module$exports) {112  module$ReactEventEmitter = module$ReactEventEmitter.module$exports113}...ReactBrowserEventEmitter.js
Source:ReactBrowserEventEmitter.js  
...65            var d = a[l];66            if (!(i.hasOwnProperty(d) && i[d])) {67                if (d === u.topWheel) {68                    if (c("wheel")) {69                        g.ReactEventListener.trapBubbledEvent(u.topWheel, "wheel", n);70                    } else {71                        if (c("mousewheel")) {72                            g.ReactEventListener.trapBubbledEvent(u.topWheel, "mousewheel", n);73                        } else {74                            g.ReactEventListener.trapBubbledEvent(u.topWheel, "DOMMouseScroll", n);75                        }76                    }77                } else {78                    if (d === u.topScroll) {79                        if (c("scroll", true)) {80                            g.ReactEventListener.trapCapturedEvent(u.topScroll, "scroll", n);81                        } else {82                            g.ReactEventListener.trapBubbledEvent(u.topScroll, "scroll", g.ReactEventListener.WINDOW_HANDLE);83                        }84                    } else {85                        if (d === u.topFocus || d === u.topBlur) {86                            if (c("focus", true)) {87                                g.ReactEventListener.trapCapturedEvent(u.topFocus, "focus", n);88                                g.ReactEventListener.trapCapturedEvent(u.topBlur, "blur", n);89                            } else {90                                if (c("focusin")) {91                                    g.ReactEventListener.trapBubbledEvent(u.topFocus, "focusin", n);92                                    g.ReactEventListener.trapBubbledEvent(u.topBlur, "focusout", n);93                                };94                            }95                            i[u.topBlur] = true;96                            i[u.topFocus] = true;97                        } else {98                            if (f.hasOwnProperty(d)) {99                                g.ReactEventListener.trapBubbledEvent(d, f[d], n)100                            };101                        }102                    }103                }104                i[d] = true;105            };106        }107    },108    trapBubbledEvent: function(e, t, n) {109        return g.ReactEventListener.trapBubbledEvent(e, t, n);110    },111    trapCapturedEvent: function(e, t, n) {112        return g.ReactEventListener.trapCapturedEvent(e, t, n);113    },114    ensureScrollValueMonitoring: function() {115        if (!d) {116            var e = u.refreshScrollValues;117            g.ReactEventListener.monitorScrollValue(e);118            d = true;119        }120    },121    eventNameDispatchConfigs: i.eventNameDispatchConfigs,122    registrationNameModules: i.registrationNameModules,123    putListener: i.putListener,...Using AI Code Generation
1const playwright = require('playwright');2const { trapBubbledEvent } = playwright._internal;3async function main() {4  const browser = await playwright.chromium.launch();5  const page = await browser.newPage();6  const [popup] = await Promise.all([7    page.waitForEvent('popup'),8    page.click('text=Get started')9  ]);10  await trapBubbledEvent(popup, 'console');11  await popup.click('text=Run in Playwright');12  await popup.waitForLoadState();13  await browser.close();14}15main();Using AI Code Generation
1const { trapBubbledEvent } = require('playwright/lib/client/elementHandler');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch({5  });6  const page = await browser.newPage();7  const elementHandle = await page.$('input[title="Search"]');8  const eventPromise = new Promise((resolve) => {9    trapBubbledEvent(elementHandle, 'input', resolve);10  });11  await page.fill('input[title="Search"]', 'Playwright');12  await eventPromise;13  await browser.close();14})();15import { trapBubbledEvent } from 'playwright/lib/client/elementHandler';16import { chromium } from 'playwright';17(async () => {18  const browser = await chromium.launch({19  });20  const page = await browser.newPage();21  const elementHandle = await page.$('input[title="Search"]');22  const eventPromise = new Promise((resolve) => {23    trapBubbledEvent(elementHandle, 'input', resolve);24  });25  await page.fill('input[title="Search"]', 'Playwright');26  await eventPromise;27  await browser.close();28})();29from playwright import sync_playwright30with sync_playwright() as p:31    browser = p.chromium.launch()32    page = browser.new_page()33    elementHandle = page.query_selector('input[title="Search"]')34    eventPromise = new Promise((resolve) => {35        trapBubbledEvent(elementHandle, 'input', resolve);36    });37    page.fill('input[title="Search"]', 'Playwright')38    browser.close()39import com.microsoft.playwright.*;40import static com.microsoft.playwright.Page.trapBubbledEvent;41public class Example {42  public static void main(String[] args) {43    try (Playwright playwright = Playwright.create()) {Using AI Code Generation
1const {trapBubbledEvent} = require('playwright/lib/internal/elementHandleDispatcher');2const {ElementHandle} = require('playwright/lib/cjs/puppeteer/common/JSHandle');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const elementHandle = await page.$('input[name="q"]');8  const [event] = await Promise.all([9    trapBubbledEvent(elementHandle, 'keyup'),10    page.keyboard.press('a'),11  ]);12  console.log(event);13  await browser.close();14})();15{ type: 'keyup',16  srcElement: { type: 'text' },17  target: { type: 'text' },18  currentTarget: { type: 'text' },19  path: [ { type: 'text' } ],20  which: 65 }Using AI Code Generation
1const {trapBubbledEvent} = require('@playwright/test/lib/server/events');2const {test} = require('@playwright/test');3test('test', async ({page}) => {4  await page.evaluate(() => {5    trapBubbledEvent(document, 'click', (event) => {6      console.log(event);7    });8  });9  await page.click('text=Google Search');10});Using AI Code Generation
1const {trapBubbledEvent} = require('@playwright/test/lib/utils/events');2const {EventEmitter} = require('events');3const emitter = new EventEmitter();4const listener = trapBubbledEvent(emitter, 'event', (event) => {5  console.log(event);6});7emitter.emit('event', 'hello');8listener.dispose();9emitter.emit('event', 'world');Using AI Code Generation
1const playwright = require('playwright');2const internal = require('playwright/lib/internal');3const {trapBubbledEvent} = internal.helper;4async function test() {5  const browser = await playwright.chromium.launch();6  const context = await browser.newContext();7  const page = await context.newPage();8  await page.evaluate(() => {9    document.addEventListener('click', event => {10      console.log('click event fired');11    });12  });13  await trapBubbledEvent(page, 'click', e => {14    console.log('click event was bubbled');15    return true;16  });17  await page.click('text=Get started');18  await browser.close();19}20test();21const playwright = require('playwright');22const internal = require('playwright/lib/internal');23const {trapBubbledEvent} = internal.helper;24async function test() {25  const browser = await playwright.chromium.launch();26  const context = await browser.newContext();27  const page = await context.newPage();28  await page.evaluate(() => {29    document.addEventListener('click', event => {30      console.log('click event fired');31    });32  });33  await trapBubbledEvent(page, 'click', e => {34    console.log('click event was bubbled');35    return true;36  });37  await page.click('text=Get started');38  await browser.close();39}40test();41const playwright = require('playwright');42const internal = require('playwright/lib/internal');43const {trapBubbledEvent} = internal.helper;44async function test() {45  const browser = await playwright.chromium.launch();46  const context = await browser.newContext();47  const page = await context.newPage();48  await page.evaluate(() => {Using AI Code Generation
1const {trapBubbledEvent} = require('@playwright/test/lib/utils/events');2const {Page} = require('@playwright/test');3async function main() {4  const page = await browser.newPage();5  const eventPromise = trapBubbledEvent(page, 'request');6  const request = await eventPromise;7  console.log(request.url());8}9main();Using AI Code Generation
1const { trapBubbledEvent } = require('playwright/lib/internal/frames');2(async () => {3const browser = await chromium.launch();4const context = await browser.newContext();5const page = await context.newPage();6await trapBubbledEvent(page, 'load', (event) => {7console.log("Page loaded");8});9await browser.close();10})();LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
