@liveblocks/react-ui
Version:
A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.
1 lines • 2.55 kB
Source Map (JSON)
{"version":3,"file":"format-file-size.cjs","sources":["../../src/utils/format-file-size.ts"],"sourcesContent":["import { numberFormat } from \"./intl\";\n\nconst BASE = 1000;\nconst UNITS = [\"B\", \"KB\", \"MB\", \"GB\"] as const;\n\nexport function formatFileSize(bytes: number, locale?: string) {\n if (bytes === 0) {\n return `0 ${UNITS[1]}`;\n }\n\n let unit: number;\n\n if (bytes === 0) {\n unit = 1;\n } else {\n unit = Math.max(\n 1,\n Math.min(\n Math.floor(Math.log(Math.abs(bytes)) / Math.log(BASE)),\n UNITS.length - 1\n )\n );\n }\n\n let value = bytes / BASE ** unit;\n let maximumDecimals = 1;\n\n if (unit === 1) {\n // Hide decimals for KB values above 10\n if (value >= 10) {\n maximumDecimals = 0;\n }\n\n // Allow 2 decimals instead of 1 for KB values below 0.1\n if (value < 0.1 && value > 0) {\n maximumDecimals = 2;\n }\n\n // Display tiny KB values as 0.01 KB instead of 0 KB\n if (value < 0.01) {\n value = 0.01;\n }\n }\n\n const formattedUnit = UNITS[unit];\n const formattedValue = numberFormat(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: maximumDecimals,\n }).format(value);\n\n return `${formattedValue} ${formattedUnit}`;\n}\n"],"names":["numberFormat"],"mappings":";;;;AAEA,MAAM,IAAO,GAAA,GAAA,CAAA;AACb,MAAM,KAAQ,GAAA,CAAC,GAAK,EAAA,IAAA,EAAM,MAAM,IAAI,CAAA,CAAA;AAEpB,SAAA,cAAA,CAAe,OAAe,MAAiB,EAAA;AAC7D,EAAA,IAAI,UAAU,CAAG,EAAA;AACf,IAAA,OAAO,KAAK,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GACpB;AAEA,EAAI,IAAA,IAAA,CAAA;AAEJ,EAAA,IAAI,UAAU,CAAG,EAAA;AACf,IAAO,IAAA,GAAA,CAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,IAAA,GAAO,IAAK,CAAA,GAAA;AAAA,MACV,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,IAAK,CAAA,GAAA,CAAI,KAAK,CAAC,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,IAAI,CAAC,CAAA;AAAA,QACrD,MAAM,MAAS,GAAA,CAAA;AAAA,OACjB;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAI,IAAA,KAAA,GAAQ,QAAQ,IAAQ,IAAA,IAAA,CAAA;AAC5B,EAAA,IAAI,eAAkB,GAAA,CAAA,CAAA;AAEtB,EAAA,IAAI,SAAS,CAAG,EAAA;AAEd,IAAA,IAAI,SAAS,EAAI,EAAA;AACf,MAAkB,eAAA,GAAA,CAAA,CAAA;AAAA,KACpB;AAGA,IAAI,IAAA,KAAA,GAAQ,GAAO,IAAA,KAAA,GAAQ,CAAG,EAAA;AAC5B,MAAkB,eAAA,GAAA,CAAA,CAAA;AAAA,KACpB;AAGA,IAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,MAAQ,KAAA,GAAA,IAAA,CAAA;AAAA,KACV;AAAA,GACF;AAEA,EAAA,MAAM,gBAAgB,KAAM,CAAA,IAAA,CAAA,CAAA;AAC5B,EAAM,MAAA,cAAA,GAAiBA,kBAAa,MAAQ,EAAA;AAAA,IAC1C,qBAAuB,EAAA,CAAA;AAAA,IACvB,qBAAuB,EAAA,eAAA;AAAA,GACxB,CAAE,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAEf,EAAA,OAAO,GAAG,cAAkB,CAAA,CAAA,EAAA,aAAA,CAAA,CAAA,CAAA;AAC9B;;;;"}