{"version":3,"file":"Money-D1JjsZNA.js","sources":["../../../app/javascript/src/components/Money.vue"],"sourcesContent":["<template>\n  <div :class=\"{ 'money__inline': inline }\">{{ formatted }}</div>\n</template>\n\n<script setup>\nimport { computed } from \"vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport CURRENCIES from \"@/dataset/currencies.json\";\n\nconst props = defineProps({\n  currency: String,\n  value: Number,\n  inline: {type: Boolean, default: false},\n  subunitsValue: {type: Boolean, default: true},\n  options: {type: Object, default: () => ({currencyDisplay: \"code\"})}\n});\n\nconst {locale} = useShared();\n\nconst hideSubunits = computed(() => props.value.toFixed().slice(-2) === '00' || Number(props.value) === 0);\n\nconst formatted = computed(() => {\n  let value = props.value;\n  if (Number.isFinite(value)) {\n    try {\n      let formatOptions = {style: 'currency', currency: props.currency}\n      let numFormat = new Intl.NumberFormat(locale, formatOptions);\n      let {minimumFractionDigits} = numFormat.resolvedOptions();\n      if (props.subunitsValue) {\n        const { exponent } = CURRENCIES[props.currency];\n        value = value / 10 ** (exponent === undefined ? minimumFractionDigits : exponent);\n      }\n      if (hideSubunits.value) {\n        formatOptions = {style: 'currency', currency: props.currency, minimumFractionDigits: 0, maximumFractionDigits: 0};\n      }\n      formatOptions = {\n        ...formatOptions,\n        ...props.options\n      }\n      numFormat = new Intl.NumberFormat(locale, formatOptions);\n      return numFormat.format(value);\n    } catch (err) {\n      return err.message;\n    }\n  } else {\n    return '#NaN!';\n  }\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.money__inline {\n  display: inline-block;\n}\n</style>\n"],"names":["props","__props","locale","useShared","hideSubunits","computed","formatted","value","formatOptions","numFormat","minimumFractionDigits","exponent","CURRENCIES","err"],"mappings":"obASA,MAAMA,EAAQC,EAQR,CAAC,OAAAC,CAAM,EAAIC,EAAW,EAEtBC,EAAeC,EAAS,IAAML,EAAM,MAAM,QAAO,EAAG,MAAM,EAAE,IAAM,MAAQ,OAAOA,EAAM,KAAK,IAAM,CAAC,EAEnGM,EAAYD,EAAS,IAAM,CAC/B,IAAIE,EAAQP,EAAM,MAClB,GAAI,OAAO,SAASO,CAAK,EACvB,GAAI,CACF,IAAIC,EAAgB,CAAC,MAAO,WAAY,SAAUR,EAAM,QAAQ,EAC5DS,EAAY,IAAI,KAAK,aAAaP,EAAQM,CAAa,EACvD,CAAC,sBAAAE,CAAqB,EAAID,EAAU,gBAAiB,EACzD,GAAIT,EAAM,cAAe,CACvB,KAAM,CAAE,SAAAW,CAAU,EAAGC,EAAWZ,EAAM,QAAQ,EAC9CO,EAAQA,EAAQ,KAAOI,IAAa,OAAYD,EAAwBC,EAChF,CACM,OAAIP,EAAa,QACfI,EAAgB,CAAC,MAAO,WAAY,SAAUR,EAAM,SAAU,sBAAuB,EAAG,sBAAuB,CAAC,GAElHQ,EAAgB,CACd,GAAGA,EACH,GAAGR,EAAM,OACjB,EACMS,EAAY,IAAI,KAAK,aAAaP,EAAQM,CAAa,EAChDC,EAAU,OAAOF,CAAK,CAC9B,OAAQM,EAAK,CACZ,OAAOA,EAAI,OACjB,KAEI,OAAO,OAEX,CAAC"}