UNPKG

react-girocode

Version:

A react component for displaying an EPC-QR-Code

42 lines (41 loc) 1.78 kB
"use strict"; 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" }); }