/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict-local * @format */ import type {IEventEmitter} from '../vendor/emitter/EventEmitter'; import EventEmitter from '../vendor/emitter/EventEmitter'; export type RawEventEmitterEvent = $ReadOnly<{| eventName: string, // We expect, but do not/cannot require, that nativeEvent is an object // with the properties: key, elementType (string), type (string), tag (numeric), // and a stateNode of the native element/Fiber the event was emitted to. nativeEvent: {[string]: mixed}, |}>; type RawEventDefinitions = { [eventChannel: string]: [RawEventEmitterEvent], }; const RawEventEmitter: IEventEmitter = new EventEmitter(); // See the React renderer / react repo for how this is used. // Raw events are emitted here when they are received in JS // and before any event Plugins process them or before components // have a chance to respond to them. This allows you to implement // app-specific perf monitoring, which is unimplemented by default, // making this entire RawEventEmitter do nothing by default until // *you* add listeners for your own app. // Besides perf monitoring and maybe debugging, this RawEventEmitter // should not be used. export default RawEventEmitter;