@domore-hr/react-barcode-scanner
Version:
A barcode scanner base on Barcode Detector
52 lines (51 loc) • 2.02 kB
JavaScript
;
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];
}