Files

39 lines
1.3 KiB
JavaScript

import { QrCode, QrSegment } from "../libs/qrcodegen";
import { ERROR_LEVEL_MAP, getImageSettings, getMarginSize } from "../utils";
import { useMemo } from 'react';
export function useQRCode(_ref) {
var value = _ref.value,
level = _ref.level,
minVersion = _ref.minVersion,
includeMargin = _ref.includeMargin,
marginSize = _ref.marginSize,
imageSettings = _ref.imageSettings,
size = _ref.size;
var qrcode = useMemo(function () {
var segments = QrSegment.makeSegments(value);
return QrCode.encodeSegments(segments, ERROR_LEVEL_MAP[level], minVersion);
}, [value, level, minVersion]);
var _useMemo = useMemo(function () {
var cs = qrcode.getModules();
var mg = getMarginSize(includeMargin, marginSize);
var ncs = cs.length + mg * 2;
var cis = getImageSettings(cs, size, mg, imageSettings);
return {
cells: cs,
margin: mg,
numCells: ncs,
calculatedImageSettings: cis
};
}, [qrcode, size, imageSettings, includeMargin, marginSize]),
cells = _useMemo.cells,
margin = _useMemo.margin,
numCells = _useMemo.numCells,
calculatedImageSettings = _useMemo.calculatedImageSettings;
return {
qrcode: qrcode,
margin: margin,
cells: cells,
numCells: numCells,
calculatedImageSettings: calculatedImageSettings
};
}