From 006776d3992e6887c7e5894d545accad33cb856f Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Thu, 22 Oct 2020 12:11:26 +0200 Subject: [PATCH] Instead fo scrolling emit an event after the image is drawn This lets the user decide what to do (like scrolling) --- packages/qr-code-scanner/README.md | 1 + packages/qr-code-scanner/src/qr-code-scanner.js | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/qr-code-scanner/README.md b/packages/qr-code-scanner/README.md index 343d7c05..15a06955 100644 --- a/packages/qr-code-scanner/README.md +++ b/packages/qr-code-scanner/README.md @@ -32,6 +32,7 @@ after loaded. This attribute is also used to stop the QR code reader or if you d ## Events - `'code-detected'`: Outgoing Event which is fired if a QR code is detected. The data of the detected QR code is in `event.detail`. +- `'scan-started`: Fired after the first image is drawn. Can be used to scrolling or other layout dependent tasks. ## Local development diff --git a/packages/qr-code-scanner/src/qr-code-scanner.js b/packages/qr-code-scanner/src/qr-code-scanner.js index 2ace1598..87aa3bfa 100644 --- a/packages/qr-code-scanner/src/qr-code-scanner.js +++ b/packages/qr-code-scanner/src/qr-code-scanner.js @@ -198,8 +198,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { this.stopScan = false; let canvasElement = this._("#canvas"); - let qrContainer = this._("#qr"); - let scroll = false; + let firstDrawDone = false; this._askPermission = true; this._loadingMessage = i18n.t('no-camera-access'); @@ -232,6 +231,10 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { canvasElement.width = video.videoWidth; let canvas = canvasElement.getContext("2d"); canvas.drawImage(video, 0, 0, canvasElement.width, canvasElement.height); + if (!firstDrawDone) { + that.dispatchEvent(new CustomEvent("scan-started", {bubbles: true, composed: true})); + firstDrawDone = true; + } let maskWidth = canvasElement.width; let maskHeight = canvasElement.height; @@ -303,10 +306,6 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { lastSentData = null; } } - if (video.readyState === video.HAVE_ENOUGH_DATA && !scroll) { - qrContainer.scrollIntoView({ behavior: 'smooth', block: 'start' }); - scroll = true; - } console.assert(that._requestID === null); that._requestID = requestAnimationFrame(tick); } @@ -446,7 +445,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { return html` <div class="columns"> - <div class="column" id="qr"> + <div class="column"> <div class="${classMap({hidden: !hasDevices})}"> -- GitLab