{"version":3,"file":"numberUtils-DHzMIu8X.js","sources":["../../../app/javascript/src/utils/numberUtils.js"],"sourcesContent":["import CURRENCIES from \"@/dataset/currencies.json\";\n\nexport function convertToBytes(input) {\n const units = {\n kb: 1000,\n mb: 1000 ** 2,\n gb: 1000 ** 3,\n tb: 1000 ** 4,\n }\n\n const result = input.trim().toLowerCase().match(/^(\\d+)\\s*([a-z]+)$/);\n if (!result) {\n throw new Error(\"Invalid format\");\n }\n\n const value = parseInt(result[1], 10); // the numeric part\n const unit = result[2]; // the unit part\n\n if (units[unit]) {\n return value * units[unit];\n } else {\n throw new Error(\"Unsupported unit\");\n }\n}\n\nexport function formatBytes(bytes, decimals = 1) {\n if (bytes === 0) return '0 B';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}\n\nexport function nullableInt(input, fallback = null) {\n const n = parseInt(input);\n return Number.isFinite(n) ? n : fallback;\n}\n\nexport function extractNumber(input) {\n // Remove any character that is not a digit or a period\n const cleanedString = input.replace(/[^0-9.]/g, '');\n // Parse the cleaned string into a floating-point number\n return parseFloat(cleanedString);\n}\n\nexport function currencyFormat(input, currency = null, useExponent = false) {\n let n = Number(input);\n if (useExponent) {\n const { exponent } = CURRENCIES[currency];\n n = n / 10 ** exponent;\n }\n const decimal = Number.isInteger(n) ? 0 : 2;\n let config = { minimumFractionDigits: decimal, maximumFractionDigits: decimal };\n if (currency) {\n config = { ...config, currency, style: 'currency', currencyDisplay: 'code' };\n }\n let formatter = new Intl.NumberFormat('en-US', config);\n return formatter.format(n);\n}\n\nexport function findIndexOfMax(arr) {\n if (arr.length === 0) return -1;\n\n let maxIndex = 0;\n for (let i = 1; i < arr.length; i++) {\n if (arr[i] > arr[maxIndex]) {\n maxIndex = i;\n }\n }\n\n return maxIndex;\n}\n\nexport function divide(a, b, fallback = null) {\n if (b === 0) return fallback;\n if (isNaN(a) || isNaN(b)) return fallback;\n return a / b;\n}\n\nexport function randomIntBetween(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}"],"names":["convertToBytes","input","units","result","value","unit","formatBytes","bytes","decimals","k","dm","sizes","nullableInt","fallback","n","extractNumber","cleanedString","currencyFormat","currency","useExponent","exponent","CURRENCIES","decimal","config","findIndexOfMax","arr","maxIndex","i","divide","a","b","randomIntBetween","min","max"],"mappings":"6CAEO,SAASA,EAAeC,EAAO,CACpC,MAAMC,EAAQ,CACZ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACL,EAEKC,EAASF,EAAM,KAAI,EAAG,cAAc,MAAM,oBAAoB,EACpE,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,gBAAgB,EAGlC,MAAMC,EAAQ,SAASD,EAAO,CAAC,EAAG,EAAE,EAC9BE,EAAOF,EAAO,CAAC,EAErB,GAAID,EAAMG,CAAI,EACZ,OAAOD,EAAQF,EAAMG,CAAI,EAEzB,MAAM,IAAI,MAAM,kBAAkB,CAEtC,CAEO,SAASC,EAAYC,EAAOC,EAAW,EAAG,CAC/C,GAAID,IAAU,EAAG,MAAO,MAExB,MAAME,EAAI,IACJC,EAAKF,EAAW,EAAI,EAAIA,EACxBG,EAAQ,CAAC,IAAK,KAAM,KAAM,KAAM,IAAI,EACpC,EAAI,KAAK,MAAM,KAAK,IAAIJ,CAAK,EAAI,KAAK,IAAIE,CAAC,CAAC,EAElD,OAAO,YAAYF,EAAQ,KAAK,IAAIE,EAAG,CAAC,GAAG,QAAQC,CAAE,CAAC,EAAI,IAAMC,EAAM,CAAC,CACzE,CAEO,SAASC,EAAYX,EAAOY,EAAW,KAAM,CAClD,MAAMC,EAAI,SAASb,CAAK,EACxB,OAAO,OAAO,SAASa,CAAC,EAAIA,EAAID,CAClC,CAEO,SAASE,EAAcd,EAAO,CAEnC,MAAMe,EAAgBf,EAAM,QAAQ,WAAY,EAAE,EAElD,OAAO,WAAWe,CAAa,CACjC,CAEO,SAASC,EAAehB,EAAOiB,EAAW,KAAMC,EAAc,GAAO,CAC1E,IAAIL,EAAI,OAAOb,CAAK,EACpB,GAAIkB,EAAa,CACf,KAAM,CAAE,SAAAC,CAAQ,EAAKC,EAAWH,CAAQ,EACxCJ,EAAIA,EAAI,IAAMM,CACf,CACD,MAAME,EAAU,OAAO,UAAUR,CAAC,EAAI,EAAI,EAC1C,IAAIS,EAAS,CAAE,sBAAuBD,EAAS,sBAAuBA,CAAO,EAC7E,OAAIJ,IACFK,EAAS,CAAE,GAAGA,EAAQ,SAAAL,EAAU,MAAO,WAAY,gBAAiB,SAEtD,IAAI,KAAK,aAAa,QAASK,CAAM,EACpC,OAAOT,CAAC,CAC3B,CAEO,SAASU,EAAeC,EAAK,CAClC,GAAIA,EAAI,SAAW,EAAG,MAAO,GAE7B,IAAIC,EAAW,EACf,QAASC,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC1BF,EAAIE,CAAC,EAAIF,EAAIC,CAAQ,IACvBA,EAAWC,GAIf,OAAOD,CACT,CAEO,SAASE,EAAOC,EAAGC,EAAGjB,EAAW,KAAM,CAE5C,OADIiB,IAAM,GACN,MAAMD,CAAC,GAAK,MAAMC,CAAC,EAAUjB,EAC1BgB,EAAIC,CACb,CAEO,SAASC,EAAiBC,EAAKC,EAAK,CACzC,OAAO,KAAK,MAAM,KAAK,OAAM,GAAMA,EAAMD,EAAM,EAAE,EAAIA,CACvD"}