nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
61 lines (60 loc) • 1.59 kB
JavaScript
var _a;
import { $BaseConverter } from './base.js';
import { UNITS } from './constants.js';
export class $Length extends $BaseConverter {
static #factors = {
millimeter: 0.001,
centimeter: 0.01,
meter: 1,
kilometer: 1000,
millimetre: 0.001,
centimetre: 0.01,
metre: 1,
kilometre: 1000,
inch: 0.0254,
foot: 0.3048,
yard: 0.9144,
mile: 1609.344,
'nautical-mile': 1852,
'light-year': 9.4607_3047_25808e15,
};
constructor(value, unit) {
super(value, unit);
}
#toMeters() {
return this.value * _a.#factors[this.unit];
}
to(target) {
const inMeters = this.#toMeters();
return inMeters / _a.#factors[target];
}
toAll() {
const inMeters = this.#toMeters();
const result = {};
for (const unit of UNITS.length) {
result[unit] = inMeters / _a.#factors[unit];
}
return result;
}
formatTo(target, options) {
const value = this.to(target);
const shortLabels = {
millimeter: 'mm',
centimeter: 'cm',
meter: 'm',
kilometer: 'km',
millimetre: 'mm',
centimetre: 'cm',
metre: 'm',
kilometre: 'km',
inch: 'in',
foot: 'ft',
yard: 'yd',
mile: 'mi',
'nautical-mile': 'nmi',
'light-year': 'ly',
};
return this.$formatTo(value, target, shortLabels, options);
}
}
_a = $Length;