@sb1/ffe-account-selector-react
Version:
Selector for bank accounts with autocomplete.
55 lines (54 loc) • 2.27 kB
JavaScript
;
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;