Files
musicland/src/utils/generateQrMatrix.js
T
2025-10-03 13:36:18 +02:00

38 lines
907 B
JavaScript

import QRCode from "qrcode-terminal/vendor/QRCode";
import QRErrorCorrectLevel from "qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel";
const getErrorLevel = (level) => {
if (typeof level === "number") {
return level;
}
const normalized = String(level || "M").toUpperCase();
return QRErrorCorrectLevel?.[normalized] ?? QRErrorCorrectLevel.M;
};
export const generateQrMatrix = ({
value,
errorCorrectionLevel = "M",
}) => {
if (!value) {
throw new Error("generateQrMatrix requires a value");
}
const qr = new QRCode(-1, getErrorLevel(errorCorrectionLevel));
qr.addData(value);
qr.make();
const size = qr.getModuleCount();
const matrix = new Array(size);
for (let row = 0; row < size; row += 1) {
matrix[row] = new Array(size);
for (let col = 0; col < size; col += 1) {
matrix[row][col] = qr.isDark(row, col);
}
}
return { matrix, size };
};