{"version":3,"sources":["jsdelivr-header.js","/npm/@point-of-sale/webserial-receipt-printer@2.0.0/src/event-emitter.js","/npm/@point-of-sale/webserial-receipt-printer@2.0.0/src/main.js"],"names":[],"mappings":"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","file":"/npm/@point-of-sale/webserial-receipt-printer@2.0.0/dist/webserial-receipt-printer.esm.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/@point-of-sale/webserial-receipt-printer@2.0.0/dist/webserial-receipt-printer.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","class EventEmitter {\n    constructor(device) {\n        this._events = {};\n    }\n\n    on(e, f) {\n        this._events[e] = this._events[e] || [];\n        this._events[e].push(f);\n    }\n\n    emit(e, ...args) {\n        let fs = this._events[e];\n        if (fs) {\n            fs.forEach(f => {\n                setTimeout(() => f(...args), 0);\n            });\n        }\n    }        \n}\n\nexport default EventEmitter;","import EventEmitter from \"./event-emitter.js\";\n\nclass ReceiptPrinterDriver {}\n\nclass WebSerialReceiptPrinter extends ReceiptPrinterDriver {\n\n\t#emitter;\n\n\t#options = {};\n\t#port = null;\n\t#reader = null;\n\t#queue = [];\n\t#state = {\n\t\trunning:\tfalse,\n\t\tclosing:\tfalse\n\t}\n\n\tconstructor(options) {\n\t\tsuper();\n\t\t\n\t\tthis.#emitter = new EventEmitter();\n\n\t\tthis.#options =\tObject.assign({\n\t\t\tbaudRate:\t\t9600,\n\t\t\tbufferSize:\t\t255,\n\t\t\tdataBits:\t\t8,\n\t\t\tflowControl:\t'none',\n\t\t\tparity:\t\t\t'none',\n\t\t\tstopBits:\t\t1\n\t\t}, options);\n\n\t\tnavigator.serial.addEventListener('disconnect', event => {\n\t\t\tif (this.#port == event.target) {\n\t\t\t\tthis.#emitter.emit('disconnected');\n\t\t\t}\n\t\t});\n\t}\n\n\tasync connect() {\n\t\ttry {\n\t\t\tlet port = await navigator.serial.requestPort();\n\t\t\t\n\t\t\tif (port) {\n\t\t\t\tawait this.#open(port);\n\t\t\t}\n\t\t}\n\t\tcatch(error) {\n\t\t\tconsole.log('Could not connect! ' + error);\n\t\t}\n\t}\n\n\tasync reconnect(previousPort) {\n\t\tif (!previousPort.vendorId || !previousPort.productId) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet ports = await navigator.serial.getPorts();\n\n\t\tlet matches = ports.filter(port => {\n\t\t\tlet info = port.getInfo();\n\t\t\treturn info.usbVendorId == previousPort.vendorId && info.usbProductId == previousPort.productId;\n\t\t})\n\n\t\tif (matches.length == 1) {\n\t\t\tawait this.#open(matches[0]);\n\t\t}\n\t}\n\n\tasync #open(port) {\n\t\tthis.#port = port;\n\t\tthis.#state.closing = false;\n\n\t\tawait this.#port.open(this.#options);\n\n\t\tlet info = this.#port.getInfo();\n\t\t\n\t\tthis.#emitter.emit('connected', {\n\t\t\ttype:\t\t\t\t'serial',\n\t\t\tvendorId: \t\t\tinfo.usbVendorId || null,\n\t\t\tproductId: \t\t\tinfo.usbProductId || null,\n\t\t\tlanguage: \t\t\tnull,\n\t\t\tcodepageMapping:\tnull\n\t\t});\n\t}\n\n\tasync disconnect() {\n\t\tif (!this.#port) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#state.closing = true;\n\t\tthis.#reader.cancel();\n\n\t\tawait this.#reader.closed;\n\t\tawait this.#port.close();\n\n\t\tthis.#port = null;\n\n\t\tthis.#emitter.emit('disconnected');\n\t}\n\n\tasync listen() {\n\t\tthis.#read();\n\t\treturn true;\n\t}\n\n\tasync #read() {\n\t\twhile (this.#port.readable && this.#state.closing === false) {\n            this.#reader = this.#port.readable.getReader();\n\n\t\t\ttry {\n\t\t\t\twhile (true) {\n                    const { value, done } = await this.#reader.read();\n\n\t\t\t\t\tif (done) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.#emitter.emit('data', value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t} finally {\n\t\t\t\tthis.#reader.releaseLock();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tasync print(command) {\n\t\tthis.#queue.push(command);\n\t\tthis.run();\n\t};\n\n\tasync run() {\n\t\tif (this.#state.closing) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (this.#state.running) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#state.running = true;\n\n\t\tconst writer = this.#port.writable.getWriter();\n\n\t\tlet command;\n\n\t\twhile (command = this.#queue.shift()) {\n\t\t\tawait writer.write(command);\n\t\t}\n\n\t\twriter.releaseLock();\n\n\t\tthis.#state.running = false;\n\t}\n\n\taddEventListener(n, f) {\n\t\tthis.#emitter.on(n, f);\n\t}\n}\n\nexport default WebSerialReceiptPrinter;"]}