From 1419ff777036c2f72941ab331a86588aecfeb730 Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Thu, 19 Nov 2020 11:25:54 +0100 Subject: [PATCH] qr-code-scanner: load the qr-scanner library only when needed. --- packages/qr-code-scanner/src/qr-code-scanner.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/qr-code-scanner/src/qr-code-scanner.js b/packages/qr-code-scanner/src/qr-code-scanner.js index b8b64d87..f4f135a0 100644 --- a/packages/qr-code-scanner/src/qr-code-scanner.js +++ b/packages/qr-code-scanner/src/qr-code-scanner.js @@ -8,7 +8,6 @@ import {classMap} from 'lit-html/directives/class-map.js'; import * as commonUtils from '@dbp-toolkit/common/utils'; import {getIconSVGURL} from '@dbp-toolkit/common'; import {Mutex} from 'async-mutex'; -import QrScanner from 'qr-scanner'; import {name as pkgName} from './../package.json'; @@ -111,17 +110,21 @@ async function createVideoElement(deviceId) { class QRScanner { constructor() { - QrScanner.WORKER_PATH = commonUtils.getAssetURL(pkgName, 'qr-scanner-worker.min.js'); this._engine = null; this._canvas = document.createElement("canvas"); + this._scanner = null; } async scan(canvas, x, y, width, height) { + if (this._scanner === null) { + this._scanner = (await import('qr-scanner')).default; + this._scanner.WORKER_PATH = commonUtils.getAssetURL(pkgName, 'qr-scanner-worker.min.js'); + } if (this._engine === null) { - this._engine = await QrScanner.createQrEngine(QrScanner.WORKER_PATH); + this._engine = await this._scanner.createQrEngine(this._scanner.WORKER_PATH); } try { - return {data: await QrScanner.scanImage(canvas, {x: x, y: y, width: width, height: height}, this._engine, this._canvas)}; + return {data: await this._scanner.scanImage(canvas, {x: x, y: y, width: width, height: height}, this._engine, this._canvas)}; } catch (e) { return null; } -- GitLab