UNPKG

@sb1/ffe-account-selector-react

Version:

Selector for bank accounts with autocomplete.

55 lines (54 loc) 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatIncompleteAccountNumber = exports.currencyAffixNOK = void 0; exports.isValidNorwegianAccountNumber = isValidNorwegianAccountNumber; exports.accountFormatter = accountFormatter; exports.balanceWithCurrency = balanceWithCurrency; var ffe_formatters_1 = require("@sb1/ffe-formatters"); exports.currencyAffixNOK = { nb: 'kr', nn: 'kr', en: 'NOK', }; var getWeightedSumOfDigits = function (accountNumber) { var weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2, 1]; var accountNumbersWeighted = weights.map(function (value, index) { return parseInt(accountNumber.charAt(index), 10) * value; }); return accountNumbersWeighted.reduce(function (previousValue, currentValue) { return previousValue + currentValue; }); }; function isValidNorwegianAccountNumber(accountNumber) { if (accountNumber.length !== 11) { return false; } var sum = getWeightedSumOfDigits(accountNumber); return sum % 11 === 0; } function accountFormatter(accountNumber) { if (accountNumber && isValidNorwegianAccountNumber(accountNumber)) { return accountNumber.replace(/(\d{4})(\d{2})(\d{5})/g, '$1 $2 $3'); } return accountNumber; } function balanceWithCurrency(balance, locale, currencyCode) { if (balance === void 0) { balance = ''; } var amount = (0, ffe_formatters_1.formatNumber)(balance, { decimals: 2, locale: locale }); var currencyAffix = currencyCode && currencyCode !== 'NOK' ? currencyCode : exports.currencyAffixNOK[locale]; return locale === 'en' ? "".concat(currencyAffix, " ").concat(amount) : "".concat(amount, " ").concat(currencyAffix); } var formatIncompleteAccountNumber = function (accountNumber) { var matchDigits = /^\d+$/; if (!accountNumber) { return accountNumber; } var accountNumberWithoutSpaces = accountNumber.replace(/\s/g, ''); // remove spaces if (matchDigits.test(accountNumberWithoutSpaces)) { return accountNumberWithoutSpaces .replace(/(\d{4})(\d{1})/, '$1 $2') .replace(/ (\d{2})(\d{1})/, ' $1 $2'); } return accountNumber || ''; }; exports.formatIncompleteAccountNumber = formatIncompleteAccountNumber;