UNPKG

react-native-thermal-pos-printer

Version:

React Native thermal printer package for POS systems supporting Xprinter and other popular brands

78 lines (77 loc) 2.51 kB
"use strict"; import { NativeEventEmitter } from 'react-native'; import { PosPrinter } from "../utils/native.js"; export class PrinterEventManager { static eventEmitter = new NativeEventEmitter(PosPrinter); static listeners = new Map(); static addListener(event, callback) { const eventName = event.toString(); if (!this.listeners.has(eventName)) { this.listeners.set(eventName, []); } this.listeners.get(eventName).push(callback); const subscription = this.eventEmitter.addListener(eventName, callback); return () => { subscription.remove(); const callbacks = this.listeners.get(eventName); if (callbacks) { const index = callbacks.indexOf(callback); if (index > -1) { callbacks.splice(index, 1); } } }; } static removeAllListeners(event) { if (event) { const eventName = event.toString(); this.eventEmitter.removeAllListeners(eventName); this.listeners.delete(eventName); } else { Array.from(this.listeners.keys()).forEach(eventName => { this.eventEmitter.removeAllListeners(eventName); }); this.listeners.clear(); } } static emit(event, data) { const eventName = event.toString(); const callbacks = this.listeners.get(eventName); if (callbacks) { callbacks.forEach(callback => callback(data)); } } static getListenerCount(event) { if (event) { const eventName = event.toString(); return this.listeners.get(eventName)?.length || 0; } return Array.from(this.listeners.values()).reduce((total, callbacks) => total + callbacks.length, 0); } static hasListeners(event) { const eventName = event.toString(); return this.listeners.has(eventName) && this.listeners.get(eventName).length > 0; } static getActiveEvents() { return Array.from(this.listeners.keys()).filter(eventName => this.listeners.get(eventName).length > 0); } static removeListener(event, callback) { const eventName = event.toString(); const callbacks = this.listeners.get(eventName); if (callbacks) { const index = callbacks.indexOf(callback); if (index > -1) { callbacks.splice(index, 1); return true; } } return false; } static destroy() { this.removeAllListeners(); Array.from(this.listeners.keys()).forEach(eventName => { this.eventEmitter.removeAllListeners(eventName); }); } } //# sourceMappingURL=PrinterEventManager.js.map