UNPKG

@tamagui/react-native-web-lite

Version:
46 lines (45 loc) 1.66 kB
import { Platform, invariant } from "@tamagui/react-native-web-internals"; import { RCTDeviceEventEmitter } from "./RCTDeviceEventEmitter.mjs"; class NativeEventEmitter { _nativeModule; constructor(nativeModule) { if (Platform.OS === "ios") { invariant(nativeModule != null, "`new NativeEventEmitter()` requires a non-null argument."); this._nativeModule = nativeModule; } } addListener(eventType, listener, context) { this._nativeModule?.addListener(eventType); let subscription = RCTDeviceEventEmitter.addListener(eventType, listener, context); return { remove: () => { if (subscription != null) { this._nativeModule?.removeListeners(1); subscription.remove(); subscription = null; } } }; } /** * @deprecated Use `remove` on the EventSubscription from `addListener`. */ removeListener(eventType, listener) { this._nativeModule?.removeListeners(1); RCTDeviceEventEmitter.removeListener(eventType, listener); } emit(eventType, ...args) { RCTDeviceEventEmitter.emit(eventType, ...args); } removeAllListeners(eventType) { invariant(eventType != null, "`NativeEventEmitter.removeAllListener()` requires a non-null argument."); this._nativeModule?.removeListeners(this.listenerCount(eventType)); RCTDeviceEventEmitter.removeAllListeners(eventType); } listenerCount(eventType) { return RCTDeviceEventEmitter.listenerCount(eventType); } } var NativeEventEmitter_default = NativeEventEmitter; export { NativeEventEmitter, NativeEventEmitter_default as default }; //# sourceMappingURL=NativeEventEmitter.mjs.map