react-girocode
Version:
A react component for displaying an EPC-QR-Code
42 lines (41 loc) • 1.78 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Girocode = Girocode;
const react_1 = __importDefault(require("react"));
const ibantools_1 = require("ibantools");
const react_qr_code_1 = __importDefault(require("react-qr-code"));
const constants_1 = require("./constants");
function Girocode({ encoding = constants_1.Encoding.UTF_8, bic, recipient, iban, amount, purpose, reference, text, information, render, }) {
if (!(0, ibantools_1.isValidIBAN)((0, ibantools_1.electronicFormatIBAN)(iban))) {
throw Error(`Invalid IBAN "${iban}"`);
}
if (bic && !(0, ibantools_1.isValidBIC)(bic)) {
throw Error(`Invalid BIC "${bic}"`);
}
const epcQrCode = {
serviceTag: constants_1.ServiceTag.BCD,
version: constants_1.Version.Two,
encoding,
identification: constants_1.Identification.SCT,
bic,
recipient: (0, constants_1.StringOfLength)(recipient, { max: 70 }),
iban: (0, ibantools_1.electronicFormatIBAN)(iban),
amount,
purpose: (0, constants_1.StringOfLength)(purpose, { max: 4 }),
information: (0, constants_1.StringOfLength)(information, { max: 70 }),
};
if (reference) {
epcQrCode.reference = (0, constants_1.StringOfLength)(reference, { max: 25 });
}
if (text) {
epcQrCode.text = (0, constants_1.StringOfLength)(text, { max: 140 });
}
const codeData = (0, constants_1.epcQrCodeToString)(epcQrCode);
if (render) {
return render(codeData);
}
return react_1.default.createElement(react_qr_code_1.default, { value: codeData, level: "M" });
}