@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
77 lines • 12.8 kB
JavaScript
import { Component, EventEmitter, Output, Input, Inject, } from '@angular/core';
import { TAP_BLE_SCANNER } from '../../../injection-types';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "@ionic/angular";
export class TapScannerWebBluetoothComponent {
constructor(scanner) {
this.scanner = scanner;
this.onProtocolSelected = new EventEmitter();
this.showScanButton = true;
this.isScanning = false;
this.isLoadingDevice = false;
}
async ngOnInit() {
// if (!await this.platform.isBluetoothAvailable()) {
// this.errorBleUnavailable = new Error("Bluetooth is not available with your browser");
// }
this.deviceSubscription = this.scanner.results.subscribe({
next: async (bluetoothDevices) => {
const bluetoothDevice = bluetoothDevices[0];
this.onProtocolSelected.emit({
meta: {
type: 'ble',
info: {
webBluetooth: bluetoothDevice,
id: bluetoothDevice.id,
name: bluetoothDevice.name,
},
},
});
this.isScanning = false;
},
error: (error) => {
this.onError(error);
},
complete: () => {
this.isScanning = false;
},
});
// this.errorSubscription = this.scanner.errors$().subscribe({
// next: (err) => {
// this.onError(err);
// }
// });
}
ngOnDestroy() {
this.deviceSubscription?.unsubscribe();
this.errorSubscription?.unsubscribe();
}
async startScan() {
this.isScanning = true;
this.error = undefined;
await this.scanner.start();
// .catch((err) => {
// this.onError(err);
// });
}
onError(error) {
this.isScanning = false;
console.warn(error);
this.error = error;
}
}
/** @nocollapse */ TapScannerWebBluetoothComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapScannerWebBluetoothComponent, deps: [{ token: TAP_BLE_SCANNER }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ TapScannerWebBluetoothComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TapScannerWebBluetoothComponent, selector: "tap-scanner-web-bluetooth", inputs: { showScanButton: "showScanButton" }, outputs: { onProtocolSelected: "onProtocolSelected" }, ngImport: i0, template: "<ion-progress-bar\n type=\"indeterminate\"\n [hidden]=\"!isScanning && !isLoadingDevice\"\n></ion-progress-bar>\n<ion-grid class=\"center-form\" *ngIf=\"showScanButton\">\n <ion-row>\n <ion-col>\n <form>\n <ion-button\n (click)=\"startScan()\"\n [disabled]=\"isScanning\"\n color=\"primary\"\n expand=\"block\"\n size=\"large\"\n >\n <ion-icon name=\"bluetooth\"></ion-icon>\n Scan\n </ion-button>\n <!--<ion-button (click)=\"stopScan()\" *ngIf=\"isScanning\" color=\"danger\" expand=\"block\" size=\"large\">Stop</ion-button>-->\n </form>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapScannerWebBluetoothComponent, decorators: [{
type: Component,
args: [{ selector: 'tap-scanner-web-bluetooth', template: "<ion-progress-bar\n type=\"indeterminate\"\n [hidden]=\"!isScanning && !isLoadingDevice\"\n></ion-progress-bar>\n<ion-grid class=\"center-form\" *ngIf=\"showScanButton\">\n <ion-row>\n <ion-col>\n <form>\n <ion-button\n (click)=\"startScan()\"\n [disabled]=\"isScanning\"\n color=\"primary\"\n expand=\"block\"\n size=\"large\"\n >\n <ion-icon name=\"bluetooth\"></ion-icon>\n Scan\n </ion-button>\n <!--<ion-button (click)=\"stopScan()\" *ngIf=\"isScanning\" color=\"danger\" expand=\"block\" size=\"large\">Stop</ion-button>-->\n </form>\n </ion-col>\n </ion-row>\n</ion-grid>\n" }]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [TAP_BLE_SCANNER]
}] }]; }, propDecorators: { onProtocolSelected: [{
type: Output
}], showScanButton: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXNjYW5uZXItd2ViLWJsdWV0b290aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi90YXAtc2Nhbm5lci90YXAtc2Nhbm5lci13ZWItYmx1ZXRvb3RoL3RhcC1zY2FubmVyLXdlYi1ibHVldG9vdGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL3NyYy9saWIvdGFwLXNjYW5uZXIvdGFwLXNjYW5uZXItd2ViLWJsdWV0b290aC90YXAtc2Nhbm5lci13ZWItYmx1ZXRvb3RoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVEzRCxNQUFNLE9BQU8sK0JBQStCO0lBWTFDLFlBQTRDLE9BQTJCO1FBQTNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBWDdELHVCQUFrQixHQUMxQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRVosbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFFL0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixvQkFBZSxHQUFHLEtBQUssQ0FBQztJQUtrRCxDQUFDO0lBRTNFLEtBQUssQ0FBQyxRQUFRO1FBQ1oscURBQXFEO1FBQ3JELDBGQUEwRjtRQUMxRixJQUFJO1FBQ0osSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUN2RCxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUF1QixFQUFFLEVBQUU7Z0JBQ3RDLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO29CQUMzQixJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLEtBQUs7d0JBQ1gsSUFBSSxFQUFFOzRCQUNKLFlBQVksRUFBRSxlQUFlOzRCQUM3QixFQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUU7NEJBQ3RCLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSTt5QkFDM0I7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCw4REFBOEQ7UUFDOUQscUJBQXFCO1FBQ3JCLHlCQUF5QjtRQUN6QixNQUFNO1FBQ04sTUFBTTtJQUNSLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0Isb0JBQW9CO1FBQ3BCLHVCQUF1QjtRQUN2QixNQUFNO0lBQ1IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7Z0pBbEVVLCtCQUErQixrQkFZdEIsZUFBZTtvSUFaeEIsK0JBQStCLHNLQ25CNUMscXJCQXVCQTs0RkRKYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsMkJBQTJCOzswQkFnQnhCLE1BQU07MkJBQUMsZUFBZTs0Q0FYekIsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdFLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIElucHV0LFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb3RvY29sU2VsZWN0ZWRFdmVudCB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBUQVBfQkxFX1NDQU5ORVIgfSBmcm9tICcuLi8uLi8uLi9pbmplY3Rpb24tdHlwZXMnO1xuaW1wb3J0IHsgRGV2aWNlU2Nhbm5lciB9IGZyb20gJ0Bpb3RpemUvdGFwL3NjYW5uZXIvYXBpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFwLXNjYW5uZXItd2ViLWJsdWV0b290aCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXAtc2Nhbm5lci13ZWItYmx1ZXRvb3RoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFwLXNjYW5uZXItd2ViLWJsdWV0b290aC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYXBTY2FubmVyV2ViQmx1ZXRvb3RoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAT3V0cHV0KCkgb25Qcm90b2NvbFNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8UHJvdG9jb2xTZWxlY3RlZEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHNob3dTY2FuQnV0dG9uID0gdHJ1ZTtcblxuICBpc1NjYW5uaW5nID0gZmFsc2U7XG4gIGlzTG9hZGluZ0RldmljZSA9IGZhbHNlO1xuICBlcnJvcj86IEVycm9yO1xuICBkZXZpY2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIGVycm9yU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoVEFQX0JMRV9TQ0FOTkVSKSBwdWJsaWMgc2Nhbm5lcjogRGV2aWNlU2Nhbm5lcjxhbnk+KSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIC8vIGlmICghYXdhaXQgdGhpcy5wbGF0Zm9ybS5pc0JsdWV0b290aEF2YWlsYWJsZSgpKSB7XG4gICAgLy8gICB0aGlzLmVycm9yQmxlVW5hdmFpbGFibGUgPSBuZXcgRXJyb3IoXCJCbHVldG9vdGggaXMgbm90IGF2YWlsYWJsZSB3aXRoIHlvdXIgYnJvd3NlclwiKTtcbiAgICAvLyB9XG4gICAgdGhpcy5kZXZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLnNjYW5uZXIucmVzdWx0cy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogYXN5bmMgKGJsdWV0b290aERldmljZXM6IGFueVtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGJsdWV0b290aERldmljZSA9IGJsdWV0b290aERldmljZXNbMF07XG4gICAgICAgIHRoaXMub25Qcm90b2NvbFNlbGVjdGVkLmVtaXQoe1xuICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHR5cGU6ICdibGUnLFxuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICB3ZWJCbHVldG9vdGg6IGJsdWV0b290aERldmljZSxcbiAgICAgICAgICAgICAgaWQ6IGJsdWV0b290aERldmljZS5pZCxcbiAgICAgICAgICAgICAgbmFtZTogYmx1ZXRvb3RoRGV2aWNlLm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmlzU2Nhbm5pbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvcik7XG4gICAgICB9LFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pc1NjYW5uaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gdGhpcy5lcnJvclN1YnNjcmlwdGlvbiA9IHRoaXMuc2Nhbm5lci5lcnJvcnMkKCkuc3Vic2NyaWJlKHtcbiAgICAvLyAgIG5leHQ6IChlcnIpID0+IHtcbiAgICAvLyAgICAgdGhpcy5vbkVycm9yKGVycik7XG4gICAgLy8gICB9XG4gICAgLy8gfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRldmljZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmVycm9yU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRTY2FuKCkge1xuICAgIHRoaXMuaXNTY2FubmluZyA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCB0aGlzLnNjYW5uZXIuc3RhcnQoKTtcbiAgICAvLyAuY2F0Y2goKGVycikgPT4ge1xuICAgIC8vICAgdGhpcy5vbkVycm9yKGVycik7XG4gICAgLy8gfSk7XG4gIH1cblxuICBvbkVycm9yKGVycm9yOiBFcnJvcikge1xuICAgIHRoaXMuaXNTY2FubmluZyA9IGZhbHNlO1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICB9XG59XG4iLCI8aW9uLXByb2dyZXNzLWJhclxuICB0eXBlPVwiaW5kZXRlcm1pbmF0ZVwiXG4gIFtoaWRkZW5dPVwiIWlzU2Nhbm5pbmcgJiYgIWlzTG9hZGluZ0RldmljZVwiXG4+PC9pb24tcHJvZ3Jlc3MtYmFyPlxuPGlvbi1ncmlkIGNsYXNzPVwiY2VudGVyLWZvcm1cIiAqbmdJZj1cInNob3dTY2FuQnV0dG9uXCI+XG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sPlxuICAgICAgPGZvcm0+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInN0YXJ0U2NhbigpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNTY2FubmluZ1wiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYmx1ZXRvb3RoXCI+PC9pb24taWNvbj5cbiAgICAgICAgICBTY2FuXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPCEtLTxpb24tYnV0dG9uIChjbGljayk9XCJzdG9wU2NhbigpXCIgKm5nSWY9XCJpc1NjYW5uaW5nXCIgY29sb3I9XCJkYW5nZXJcIiBleHBhbmQ9XCJibG9ja1wiIHNpemU9XCJsYXJnZVwiPlN0b3A8L2lvbi1idXR0b24+LS0+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG48L2lvbi1ncmlkPlxuIl19