qrcodedetector.js 1.42 KB
import ARCS from '../build/arcs.js';

let QRCodeDetector;
QRCodeDetector = ARCS.Component.create(
    function() {
        let busy = false;
        let dataCache = null;

        //let jsqrUrl = new URL('../deps/jsqr/jsQR.js');

        const code = `
            //import jsQR from '../deps/jsQR.js';
            //importScripts('sources/arcs.js/deps/jsqr/jsQR.js');
            let jsQR = await import('../deps/jsQR.js');

            self.addEventListener("message", e => {
            const obj = e.data;
            const qrData = jsQR(obj.data, obj.width, obj.height);
            self.postMessage(qrData);
        });
        `;

        //const blob = new Blob([code], {type: 'application/javascript'});

        //const worker = new Worker(URL.createObjectURL(blob),{type: "module"});
        //
        const worker = new Worker('../../deps/jsqr/worker.js');
        worker.addEventListener("message", ((data) => {
            busy = false;
            dataCache = data.data;
        }));
        
        this.detect= function(imageData) {
            if (!busy) {
                busy = true;
                worker.postMessage(imageData);
            } 
            if (dataCache !== null) {
                console.log("qrdata", dataCache);
                this.emit('onQRCode', dataCache);
            }            
        };        
    },
    ['detect'],
    ['onQRCode']    
);



export default {QRCodeDetector: QRCodeDetector};