UNPKG

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
"use strict"; 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;