import { ColumnType, ITypeOptions } from '../../../types'; import isFinite from 'lodash/isFinite'; import isNumber from 'lodash/isNumber'; export const transformCurrencyToString = ( value: number | undefined | null, typeOptions: Pick< ITypeOptions, 'precision' | 'currencyFormat' > ) => { if (!isNumber(value)) return null; // if value is Infinity, -Infinity, or NaN, we should not format it if (!isFinite(value)) return `${value}`; const precision = typeOptions ? typeOptions.precision : 0; const currencyFormat = typeOptions.currencyFormat; const isNegative = value < 0; const currencyFormatted = Number( Math.abs(value).toFixed(precision) ).toLocaleString('en', { maximumFractionDigits: precision, minimumFractionDigits: precision, }); return `${isNegative ? '-' : ''}${currencyFormat}${currencyFormatted}`; };