UNPKG

@digital-blueprint/lunchlottery-app

Version:

[GitHub Repository](https://github.com/digital-blueprint/lunchlottery-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/lunchlottery-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/lunchlottery-app/)

49 lines (46 loc) 1.38 kB
export class ScanResult { constructor() { this.data = null; this.cornerPoints = null; } } export class QrCodeScannerEngine { constructor() { this._engine = null; this._canvas = document.createElement('canvas'); this._scanner = null; } /** * Scan am image like thing for a QR code. Returns null if none is found. * The region to scan in can be restricted via "options". * * @param {*} image * @param {?object} options * @param {number} options.x * @param {number} options.y * @param {number} options.width * @param {number} options.height * @returns {?ScanResult} */ async scanImage(image, options = null) { if (this._scanner === null) { this._scanner = (await import('qr-scanner')).default; } if (this._engine === null) { this._engine = await this._scanner.createQrEngine(); } try { let tmp = await this._scanner.scanImage(image, { scanRegion: options ?? null, qrEngine: this._engine, canvas: this._canvas, }); let res = new ScanResult(); res.data = tmp.data; res.cornerPoints = tmp.cornerPoints; return res; } catch { return null; } } }