Skip to content
Snippets Groups Projects
Commit 006776d3 authored by Reiter, Christoph's avatar Reiter, Christoph :snake:
Browse files

Instead fo scrolling emit an event after the image is drawn

This lets the user decide what to do (like scrolling)
parent 628c5025
No related branches found
No related tags found
No related merge requests found
...@@ -32,6 +32,7 @@ after loaded. This attribute is also used to stop the QR code reader or if you d ...@@ -32,6 +32,7 @@ after loaded. This attribute is also used to stop the QR code reader or if you d
## Events ## 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`. - `'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 ## Local development
......
...@@ -198,8 +198,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { ...@@ -198,8 +198,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
this.stopScan = false; this.stopScan = false;
let canvasElement = this._("#canvas"); let canvasElement = this._("#canvas");
let qrContainer = this._("#qr"); let firstDrawDone = false;
let scroll = false;
this._askPermission = true; this._askPermission = true;
this._loadingMessage = i18n.t('no-camera-access'); this._loadingMessage = i18n.t('no-camera-access');
...@@ -232,6 +231,10 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { ...@@ -232,6 +231,10 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
canvasElement.width = video.videoWidth; canvasElement.width = video.videoWidth;
let canvas = canvasElement.getContext("2d"); let canvas = canvasElement.getContext("2d");
canvas.drawImage(video, 0, 0, canvasElement.width, canvasElement.height); 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 maskWidth = canvasElement.width;
let maskHeight = canvasElement.height; let maskHeight = canvasElement.height;
...@@ -303,10 +306,6 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { ...@@ -303,10 +306,6 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
lastSentData = null; lastSentData = null;
} }
} }
if (video.readyState === video.HAVE_ENOUGH_DATA && !scroll) {
qrContainer.scrollIntoView({ behavior: 'smooth', block: 'start' });
scroll = true;
}
console.assert(that._requestID === null); console.assert(that._requestID === null);
that._requestID = requestAnimationFrame(tick); that._requestID = requestAnimationFrame(tick);
} }
...@@ -446,7 +445,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { ...@@ -446,7 +445,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
return html` return html`
<div class="columns"> <div class="columns">
<div class="column" id="qr"> <div class="column">
<div class="${classMap({hidden: !hasDevices})}"> <div class="${classMap({hidden: !hasDevices})}">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment