@tamagui/react-native-web-lite
Version:
React Native for Web
45 lines (44 loc) • 1.62 kB
JavaScript
import { Platform, invariant } from "@tamagui/react-native-web-internals";
import { RCTDeviceEventEmitter } from "./RCTDeviceEventEmitter";
class NativeEventEmitter {
_nativeModule;
constructor(nativeModule) {
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: () => {
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.js.map