@codesaursx/react-scanner
Version:
A React component to read QR and Barcodes in web-applications.
52 lines (49 loc) • 1.72 kB
JavaScript
import React, { useRef, useCallback, useEffect } from 'react';
import Webcam from 'react-webcam';
import { BrowserMultiFormatReader } from '@zxing/browser';
var Scanner = function Scanner(_ref) {
var onUpdate = _ref.onUpdate,
onError = _ref.onError,
_ref$width = _ref.width,
width = _ref$width === void 0 ? '100%' : _ref$width,
_ref$height = _ref.height,
height = _ref$height === void 0 ? '100%' : _ref$height,
_ref$facingMode = _ref.facingMode,
facingMode = _ref$facingMode === void 0 ? 'environment' : _ref$facingMode,
_ref$delay = _ref.delay,
delay = _ref$delay === void 0 ? 500 : _ref$delay,
videoConstraints = _ref.videoConstraints;
var webcamRef = useRef(null);
var handleCapture = useCallback(function () {
var _webcamRef$current;
var reader = new BrowserMultiFormatReader();
// @ts-ignore
var imageSrc = webcamRef == null ? void 0 : (_webcamRef$current = webcamRef.current) == null ? void 0 : _webcamRef$current.getScreenshot();
if (imageSrc) {
reader.decodeFromImageUrl(imageSrc).then(function (res) {
onUpdate(null, res);
})["catch"](function (e) {
onUpdate(e);
});
}
}, [onUpdate]);
useEffect(function () {
var interval = setInterval(handleCapture, delay);
return function () {
clearInterval(interval);
};
}, []);
return React.createElement(Webcam, {
width: width,
height: height,
ref: webcamRef,
screenshotFormat: "image/jpeg",
videoConstraints: videoConstraints != null ? videoConstraints : {
facingMode: facingMode
},
audio: false,
onUserMediaError: onError
});
};
export { Scanner };
//# sourceMappingURL=react-scanner.esm.js.map