import { r as registerInstance } from './index-fd4790f6.js';

const scFormatBytesCss = ":host{display:inline-block}";

const ScFormatBytes = class {
  constructor(hostRef) {
    registerInstance(this, hostRef);
    /** The number to format in bytes. */
    this.value = 0;
    /** The unit to display. */
    this.unit = 'byte';
    /** Determines how to display the result, e.g. "100 bytes", "100 b", or "100b". */
    this.display = 'short';
  }
  render() {
    if (isNaN(this.value)) {
      return '';
    }
    const bitPrefixes = ['', 'kilo', 'mega', 'giga', 'tera']; // petabit isn't a supported unit
    const bytePrefixes = ['', 'kilo', 'mega', 'giga', 'tera', 'peta'];
    const prefix = this.unit === 'bit' ? bitPrefixes : bytePrefixes;
    const index = Math.max(0, Math.min(Math.floor(Math.log10(this.value) / 3), prefix.length - 1));
    const unit = prefix[index] + this.unit;
    const valueToFormat = parseFloat((this.value / Math.pow(1000, index)).toPrecision(3));
    return new Intl.NumberFormat(this.locale, { style: 'unit', unit, unitDisplay: this.display }).format(valueToFormat);
  }
};
ScFormatBytes.style = scFormatBytesCss;

export { ScFormatBytes as sc_format_bytes };
