UNPKG

ivt

Version:

Ivt Components Library

1 lines 4.31 kB
{"version":3,"file":"format-numbers-LmnBEQr0.mjs","sources":["../../src/utils/format-numbers.ts"],"sourcesContent":["export function formatNumberWithComma({\n\tvalue,\n\tminimumFractionDigits = 0,\n\tmaximumFractionDigits = 12,\n\tcurrency,\n}: {\n\tvalue: number;\n\tminimumFractionDigits?: number;\n\tmaximumFractionDigits?: number;\n\tcurrency?: string | null;\n}) {\n\tconst options: Intl.NumberFormatOptions = {\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t};\n\n\tif (currency) {\n\t\toptions.style = \"currency\";\n\t\toptions.currency = currency;\n\t}\n\n\tconst formatter = new Intl.NumberFormat(\"pt-BR\", options);\n\n\treturn formatter.format(value);\n}\n\nexport function numberFormatter(value: unknown) {\n\tif (value == null || value === \"\") return \"\";\n\treturn formatNumberWithComma({ value: Number(value) });\n}\n\n/**\n * Formata um número no padrão pt-BR (ex.: 1234.56 -> \"1.234,56\").\n * @param value Número a ser formatado\n * @param minimumFractionDigits Dígitos decimais mínimos\n * @param maximumFractionDigits Dígitos decimais máximos\n * @returns String formatada (ex.: \"1.234,56\")\n */\nexport function formatNumberPtBr(\n\tvalue: number,\n\tminimumFractionDigits?: number,\n\tmaximumFractionDigits?: number,\n): string {\n\treturn new Intl.NumberFormat(\"pt-BR\", {\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t}).format(value);\n}\n\n/**\n * Formata um número como string monetária no padrão pt-BR.\n * Usa o símbolo da API, se fornecido, ou tenta formatar com Intl.NumberFormat.\n * @param value Valor numérico a ser formatado\n * @param currency Código da moeda (ex.: \"BRL\", \"USD-PTAX\")\n * @param symbol Símbolo da moeda (ex.: \"R$\", \"$\")\n * @param minimumFractionDigits Dígitos decimais mínimos (padrão: 2)\n * @param maximumFractionDigits Dígitos decimais máximos (padrão: 2)\n * @returns String formatada (ex.: \"R$ 1.234,56\")\n */\nexport function formatMoney({\n\tvalue,\n\tcurrency = \"BRL\",\n\tsymbol,\n\tminimumFractionDigits = 2,\n\tmaximumFractionDigits = 2,\n}: {\n\tvalue: number;\n\tcurrency?: string | null;\n\tsymbol?: string;\n\tminimumFractionDigits?: number;\n\tmaximumFractionDigits?: number;\n}): string {\n\tconst isValidIntlCurrency = currency && /^[A-Z]{3}$/.test(currency);\n\n\tif (isValidIntlCurrency) {\n\t\tconst formatter = new Intl.NumberFormat(\"pt-BR\", {\n\t\t\tstyle: \"currency\",\n\t\t\tcurrency,\n\t\t\tminimumFractionDigits,\n\t\t\tmaximumFractionDigits,\n\t\t});\n\t\treturn formatter.format(value);\n\t}\n\n\tconst formattedValue = formatNumberPtBr(value, minimumFractionDigits, maximumFractionDigits);\n\n\tconst finalSymbol = symbol || \"$\";\n\treturn `${finalSymbol} ${formattedValue}`;\n}\n"],"names":["formatNumberWithComma","value","minimumFractionDigits","maximumFractionDigits","currency","options","style","formatter","Intl","NumberFormat","format","formatNumberPtBr","formatMoney","symbol","isValidIntlCurrency","test","formattedValue","finalSymbol"],"mappings":"AAAO,SAASA,qBAAAA,CAAsB,EACrCC,KAAK,EACLC,qBAAAA,GAAwB,CAAC,EACzBC,qBAAAA,GAAwB,EAAE,EAC1BC,QAAQ,EAMR,EAAA;AACA,IAAA,MAAMC,OAAAA,GAAoC;AACzCH,QAAAA,qBAAAA;AACAC,QAAAA;AACD,KAAA;AAEA,IAAA,IAAIC,QAAAA,EAAU;AACbC,QAAAA,OAAAA,CAAQC,KAAK,GAAG,UAAA;AAChBD,QAAAA,OAAAA,CAAQD,QAAQ,GAAGA,QAAAA;AACpB,IAAA;AAEA,IAAA,MAAMG,SAAAA,GAAY,IAAIC,IAAAA,CAAKC,YAAY,CAAC,OAAA,EAASJ,OAAAA,CAAAA;IAEjD,OAAOE,SAAAA,CAAUG,MAAM,CAACT,KAAAA,CAAAA;AACzB;AAOA;;;;;;AAMC,IACM,SAASU,gBAAAA,CACfV,KAAa,EACbC,qBAA8B,EAC9BC,qBAA8B,EAAA;AAE9B,IAAA,OAAO,IAAIK,IAAAA,CAAKC,YAAY,CAAC,OAAA,EAAS;AACrCP,QAAAA,qBAAAA;AACAC,QAAAA;AACD,KAAA,CAAA,CAAGO,MAAM,CAACT,KAAAA,CAAAA;AACX;AAEA;;;;;;;;;AASC,IACM,SAASW,WAAAA,CAAY,EAC3BX,KAAK,EACLG,QAAAA,GAAW,KAAK,EAChBS,MAAM,EACNX,qBAAAA,GAAwB,CAAC,EACzBC,qBAAAA,GAAwB,CAAC,EAOzB,EAAA;AACA,IAAA,MAAMW,mBAAAA,GAAsBV,QAAAA,IAAY,YAAA,CAAaW,IAAI,CAACX,QAAAA,CAAAA;AAE1D,IAAA,IAAIU,mBAAAA,EAAqB;AACxB,QAAA,MAAMP,SAAAA,GAAY,IAAIC,IAAAA,CAAKC,YAAY,CAAC,OAAA,EAAS;YAChDH,KAAAA,EAAO,UAAA;AACPF,YAAAA,QAAAA;AACAF,YAAAA,qBAAAA;AACAC,YAAAA;AACD,SAAA,CAAA;QACA,OAAOI,SAAAA,CAAUG,MAAM,CAACT,KAAAA,CAAAA;AACzB,IAAA;IAEA,MAAMe,cAAAA,GAAiBL,gBAAAA,CAAiBV,KAAAA,EAAOC,qBAAAA,EAAuBC,qBAAAA,CAAAA;AAEtE,IAAA,MAAMc,cAAcJ,MAAAA,IAAU,GAAA;AAC9B,IAAA,OAAO,CAAA,EAAGI,WAAAA,CAAY,CAAC,EAAED,cAAAA,CAAAA,CAAgB;AAC1C;;;;"}