UNPKG

vde-layout

Version:

Terminal multiplexer layout management tool for VDE (Vibe Coding Development Environment)

44 lines 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeRatio = normalizeRatio; exports.isValidRatio = isValidRatio; function normalizeRatio(ratio) { if (ratio.length === 0) { return []; } if (ratio.length === 1) { return [100]; } const sum = ratio.reduce((acc, val) => acc + val, 0); if (sum === 0) { const equalRatio = Math.floor(100 / ratio.length); const remainder = 100 % ratio.length; const result = ratio.map(() => equalRatio); for (let i = 0; i < remainder; i++) { result[result.length - 1 - i]++; } return result; } const normalized = ratio.map((val) => (val / sum) * 100); const rounded = normalized.map((val) => Math.round(val)); const roundedSum = rounded.reduce((acc, val) => acc + val, 0); const diff = 100 - roundedSum; if (diff !== 0) { const fractionalParts = normalized.map((val, index) => ({ index, fractional: val - rounded[index], })); fractionalParts.sort((a, b) => (diff > 0 ? b.fractional - a.fractional : a.fractional - b.fractional)); for (let i = 0; i < Math.abs(diff); i++) { if (i < fractionalParts.length) { const targetIndex = fractionalParts[i].index; rounded[targetIndex] += diff > 0 ? 1 : -1; } } } return rounded; } function isValidRatio(ratio) { return ratio.length > 0 && ratio.every((val) => val > 0); } //# sourceMappingURL=ratio.js.map