UNPKG

@ledgerhq/live-common

Version:
69 lines 3.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatAmountForInput = formatAmountForInput; exports.formatFiatForInput = formatFiatForInput; exports.processRawInput = processRawInput; exports.processFiatInput = processFiatInput; exports.calculateFiatEquivalent = calculateFiatEquivalent; exports.shouldSyncInput = shouldSyncInput; const bignumber_js_1 = require("bignumber.js"); const formatCurrencyUnit_1 = require("@ledgerhq/coin-framework/currencies/formatCurrencyUnit"); const sanitizeValueString_1 = require("@ledgerhq/ledger-wallet-framework/currencies/sanitizeValueString"); const decimals_1 = require("./decimals"); const formatUnitForInput = (unit, amount, locale) => (0, formatCurrencyUnit_1.formatCurrencyUnit)(unit, amount, { showCode: false, disableRounding: true, useGrouping: false, locale, }); function formatAmountForInput(unit, amount, locale) { if (amount.isZero()) return ""; return formatUnitForInput(unit, amount, locale); } function formatFiatForInput(unit, amount, locale) { if (amount.isZero()) return ""; const formatted = formatUnitForInput(unit, amount, locale); return (0, decimals_1.trimTrailingZeros)((0, decimals_1.clampDecimals)(formatted)); } function processRawInput(rawValue, unit, locale) { const sanitized = (0, sanitizeValueString_1.sanitizeValueString)(unit, rawValue, locale); const value = sanitized.value ? new bignumber_js_1.BigNumber(sanitized.value) : new bignumber_js_1.BigNumber(0); return { display: sanitized.display, value: value.isFinite() && !value.isNaN() ? value : new bignumber_js_1.BigNumber(0), }; } function processFiatInput(rawValue, fiatUnit, locale) { const sanitized = (0, sanitizeValueString_1.sanitizeValueString)(fiatUnit, rawValue, locale); const clampedDisplay = (0, decimals_1.clampDecimals)(sanitized.display); const nextSanitized = (0, sanitizeValueString_1.sanitizeValueString)(fiatUnit, clampedDisplay, locale); const value = nextSanitized.value ? new bignumber_js_1.BigNumber(nextSanitized.value) : new bignumber_js_1.BigNumber(0); // Keep the same behavior as the hook did previously: // - we clamp what is displayed, // - and we avoid pushing transaction updates while the user is typing > 2 decimals. const isOverLimit = (0, decimals_1.isOverDecimalLimit)(sanitized.display); return { display: sanitized.display, clampedDisplay, value, isOverLimit, }; } function calculateFiatEquivalent(params) { const directFiat = params.calculateFiatFromCrypto(params.amount); const ratioFiat = params.lastTransactionAmount && !params.lastTransactionAmount.isZero() && params.lastFiatAmount && !params.lastFiatAmount.isZero() ? params.lastFiatAmount.multipliedBy(params.amount).dividedBy(params.lastTransactionAmount) : null; return directFiat ?? ratioFiat; } function shouldSyncInput(params) { return (params.isQuickAction || params.useAllAmountChanged || !(params.isActiveInput && params.hasInputValue)); } //# sourceMappingURL=amountInput.js.map