UNPKG

react-native-thermal-pos-printer

Version:

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

83 lines (82 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrinterEventManager = void 0; var _reactNative = require("react-native"); var _native = require("../utils/native.js"); class PrinterEventManager { static eventEmitter = new _reactNative.NativeEventEmitter(_native.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); }); } } exports.PrinterEventManager = PrinterEventManager; //# sourceMappingURL=PrinterEventManager.js.map