UNPKG

ng-thermal-print

Version:

An angular module to add thermal printing capabilities.

65 lines 9.02 kB
import { __awaiter } from "tslib"; import { BehaviorSubject, Observable } from 'rxjs'; import { PrintDriver } from "./PrintDriver"; export class UsbDriver extends PrintDriver { constructor(vendorId, productId) { super(); this.isConnected = new BehaviorSubject(false); this.vendorId = vendorId; this.productId = productId; } connect() { navigator.usb.getDevices().then(devices => { this.device = devices.find((device) => { return device.vendorId === this.vendorId && device.productId === this.productId; }); console.log(this.device); return this.device.open(); }) .then(() => { let result = this.device.selectConfiguration(1); return result; }) .then(() => { let result = this.device.claimInterface(0); return result; }).then(result => { const endPoints = this.device.configuration.interfaces[0].alternate.endpoints; this.endPoint = endPoints.find((endPoint) => endPoint.direction === 'out'); this.isConnected.next(true); this.listenForUsbConnections(); }).catch(result => { this.isConnected.next(false); }); } /** * Request a USB device through the browser * return Observable<USBDevice> */ requestUsb() { return new Observable(observer => { navigator.usb.requestDevice({ filters: [] }) .then((result) => { this.vendorId = result.vendorId; this.productId = result.productId; return observer.next(result); }).catch(error => { return observer.error(error); }); }); } write(data) { return __awaiter(this, void 0, void 0, function* () { this.device.transferOut(this.endPoint.endpointNumber, data); }); } listenForUsbConnections() { navigator.usb.addEventListener('disconnect', () => { this.isConnected.next(false); }); navigator.usb.addEventListener('connect', () => { this.isConnected.next(true); }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNiRHJpdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGhlcm1hbC1wcmludC9zcmMvbGliL2RyaXZlcnMvVXNiRHJpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVDLE1BQU0sT0FBTyxTQUFVLFNBQVEsV0FBVztJQU90QyxZQUFZLFFBQWlCLEVBQUUsU0FBa0I7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFITCxnQkFBVyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUkvRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRU0sT0FBTztRQUNWLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQWlCLEVBQUUsRUFBRTtnQkFDN0MsT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BGLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQzthQUNHLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDYixNQUFNLFNBQVMsR0FBa0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7WUFDN0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUdEOzs7T0FHRztJQUNJLFVBQVU7UUFDYixPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdCLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUN2QyxJQUFJLENBQUMsQ0FBQyxNQUFpQixFQUFFLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNsQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNiLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVZLEtBQUssQ0FBQyxJQUFnQjs7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsQ0FBQztLQUFBO0lBRU8sdUJBQXVCO1FBQzNCLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJpbnREcml2ZXIgfSBmcm9tIFwiLi9QcmludERyaXZlclwiO1xuZGVjbGFyZSB2YXIgbmF2aWdhdG9yOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBVc2JEcml2ZXIgZXh0ZW5kcyBQcmludERyaXZlciB7XG4gICAgcHJpdmF0ZSBkZXZpY2U6IFVTQkRldmljZTtcbiAgICBwcml2YXRlIGVuZFBvaW50OiBVU0JFbmRwb2ludDtcbiAgICBwcml2YXRlIHZlbmRvcklkOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBwcm9kdWN0SWQ6IG51bWJlcjtcbiAgICBwdWJsaWMgaXNDb25uZWN0ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgY29uc3RydWN0b3IodmVuZG9ySWQ/OiBudW1iZXIsIHByb2R1Y3RJZD86IG51bWJlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZlbmRvcklkID0gdmVuZG9ySWQ7XG4gICAgICAgIHRoaXMucHJvZHVjdElkID0gcHJvZHVjdElkO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25uZWN0KCkge1xuICAgICAgICBuYXZpZ2F0b3IudXNiLmdldERldmljZXMoKS50aGVuKGRldmljZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXZpY2UgPSBkZXZpY2VzLmZpbmQoKGRldmljZTogVVNCRGV2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZS52ZW5kb3JJZCA9PT0gdGhpcy52ZW5kb3JJZCAmJiBkZXZpY2UucHJvZHVjdElkID09PSB0aGlzLnByb2R1Y3RJZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5kZXZpY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlLm9wZW4oKTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5kZXZpY2Uuc2VsZWN0Q29uZmlndXJhdGlvbigxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5kZXZpY2UuY2xhaW1JbnRlcmZhY2UoMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludHM6IFVTQkVuZHBvaW50W10gPSB0aGlzLmRldmljZS5jb25maWd1cmF0aW9uLmludGVyZmFjZXNbMF0uYWx0ZXJuYXRlLmVuZHBvaW50cztcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFBvaW50ID0gZW5kUG9pbnRzLmZpbmQoKGVuZFBvaW50OiBhbnkpID0+IGVuZFBvaW50LmRpcmVjdGlvbiA9PT0gJ291dCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb25uZWN0ZWQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbkZvclVzYkNvbm5lY3Rpb25zKCk7XG4gICAgICAgICAgICB9KS5jYXRjaChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb25uZWN0ZWQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgYSBVU0IgZGV2aWNlIHRocm91Z2ggdGhlIGJyb3dzZXJcbiAgICAgKiByZXR1cm4gT2JzZXJ2YWJsZTxVU0JEZXZpY2U+XG4gICAgICovXG4gICAgcHVibGljIHJlcXVlc3RVc2IoKTogT2JzZXJ2YWJsZTxVU0JEZXZpY2U+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgICAgICAgIG5hdmlnYXRvci51c2IucmVxdWVzdERldmljZSh7IGZpbHRlcnM6IFtdIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3VsdDogVVNCRGV2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVuZG9ySWQgPSByZXN1bHQudmVuZG9ySWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdElkID0gcmVzdWx0LnByb2R1Y3RJZDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB3cml0ZShkYXRhOiBVaW50OEFycmF5KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZGV2aWNlLnRyYW5zZmVyT3V0KHRoaXMuZW5kUG9pbnQuZW5kcG9pbnROdW1iZXIsIGRhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGlzdGVuRm9yVXNiQ29ubmVjdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIG5hdmlnYXRvci51c2IuYWRkRXZlbnRMaXN0ZW5lcignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNDb25uZWN0ZWQubmV4dChmYWxzZSlcbiAgICAgICAgfSk7XG4gICAgICAgIG5hdmlnYXRvci51c2IuYWRkRXZlbnRMaXN0ZW5lcignY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNDb25uZWN0ZWQubmV4dCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==