UNPKG

@domore-hr/react-barcode-scanner

Version:

A barcode scanner base on Barcode Detector

52 lines (51 loc) 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTorch = useTorch; var tslib_1 = require("tslib"); var react_1 = require("react"); var use_stream_state_1 = require("./use-stream-state"); function useTorch(open) { var _this = this; if (open === void 0) { open = false; } var _a = (0, react_1.useState)(open), isOpen = _a[0], setOpen = _a[1]; var _b = (0, react_1.useState)(false), isSupportTorch = _b[0], setSupport = _b[1]; var stream = (0, use_stream_state_1.useStreamState)()[0]; var track = (0, react_1.useMemo)(function () { return stream === null || stream === void 0 ? void 0 : stream.getVideoTracks()[0]; }, [stream]); (0, react_1.useEffect)(function () { if (track == null) return; var capabilities = track.getCapabilities(); if (capabilities.torch !== undefined) { setSupport(true); } }, [track]); var switchTorch = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { var e_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); if (!isSupportTorch) { throw new Error("[react-barcode-scanner]: \n device does not support torch capability\n "); } return [4, track.applyConstraints({ advanced: [{ torch: !isOpen }] })]; case 1: _a.sent(); setOpen(!isOpen); return [3, 3]; case 2: e_1 = _a.sent(); console.warn(e_1); return [3, 3]; case 3: return [2]; } }); }); }; return [isSupportTorch, isOpen, switchTorch]; }