chrome-devtools-frontend
Version:
Chrome DevTools UI
83 lines (72 loc) • 2.05 kB
text/typescript
// Copyright 2024 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {defineFormatter} from './NumberFormatter.js';
const narrowBytes = defineFormatter({
style: 'unit',
unit: 'byte',
unitDisplay: 'narrow',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
const narrowKilobytesDecimal = defineFormatter({
style: 'unit',
unit: 'kilobyte',
unitDisplay: 'narrow',
minimumFractionDigits: 1,
maximumFractionDigits: 1,
});
const narrowKilobytesInteger = defineFormatter({
style: 'unit',
unit: 'kilobyte',
unitDisplay: 'narrow',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
const narrowMegabytesDecimal = defineFormatter({
style: 'unit',
unit: 'megabyte',
unitDisplay: 'narrow',
minimumFractionDigits: 1,
maximumFractionDigits: 1,
});
const narrowMegabytesInteger = defineFormatter({
style: 'unit',
unit: 'megabyte',
unitDisplay: 'narrow',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
/**
* Returns string for bytes with legible units.
* If necessary, can convert bytes to Kb or MB.
*/
export const bytesToString = (bytes: number): string => {
if (bytes < 1000) {
return narrowBytes.format(bytes);
}
const kilobytes = bytes / 1000;
if (kilobytes < 100) {
return narrowKilobytesDecimal.format(kilobytes);
}
if (kilobytes < 1000) {
return narrowKilobytesInteger.format(kilobytes);
}
const megabytes = kilobytes / 1000;
if (megabytes < 100) {
return narrowMegabytesDecimal.format(megabytes);
}
return narrowMegabytesInteger.format(megabytes);
};
/**
* Returns a string for bytes converted to Kb.
* This is currently used on tables/rows to maintain consistency
* and avoid varying units.
*/
export const formatBytesToKb = (bytes: number): string => {
const kilobytes = bytes / 1000;
if (kilobytes < 100) {
return narrowKilobytesDecimal.format(kilobytes);
}
return narrowKilobytesInteger.format(kilobytes);
};