39 строки
1.4 KiB
JavaScript
39 строки
1.4 KiB
JavaScript
/**
|
|
* 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 EventEmitter from '../vendor/emitter/EventEmitter';
|
|
import type {IEventEmitter} 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<RawEventDefinitions> =
|
|
new EventEmitter<RawEventDefinitions>();
|
|
|
|
// 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;
|