nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
65 lines (64 loc) • 1.94 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.$Area = void 0;
const base_1 = require("./base");
const constants_1 = require("./constants");
class $Area extends base_1.$BaseConverter {
static #factors = {
'square-millimeter': 1e-6,
'square-centimeter': 1e-4,
'square-meter': 1,
'square-kilometer': 1e6,
'square-millimetre': 1e-6,
'square-centimetre': 1e-4,
'square-metre': 1,
'square-kilometre': 1e6,
'square-inch': 0.00064516,
'square-foot': 0.09290304,
'square-yard': 0.83612736,
'square-mile': 2_589_988.110336,
hectare: 1e4,
acre: 4_046.8564224,
};
constructor(value, unit) {
super(value, unit);
}
#toSquareMeters() {
return this.value * _a.#factors[this.unit];
}
to(target) {
const base = this.#toSquareMeters();
return base / _a.#factors[target];
}
toAll() {
const base = this.#toSquareMeters();
const result = {};
for (const unit of constants_1.UNITS.area) {
result[unit] = base / _a.#factors[unit];
}
return result;
}
formatTo(target, options) {
const value = this.to(target);
const shortLabels = {
'square-millimeter': 'mm²',
'square-centimeter': 'cm²',
'square-meter': 'm²',
'square-kilometer': 'km²',
'square-millimetre': 'mm²',
'square-centimetre': 'cm²',
'square-metre': 'm²',
'square-kilometre': 'km²',
'square-inch': 'in²',
'square-foot': 'ft²',
'square-yard': 'yd²',
'square-mile': 'mi²',
hectare: 'ha',
acre: 'ac',
};
return this.$formatTo(value, target, shortLabels, options);
}
}
exports.$Area = $Area;
_a = $Area;