UNPKG

@codesaursx/react-scanner

Version:

A React component to read QR and Barcodes in web-applications.

52 lines (49 loc) 1.72 kB
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