vde-layout
Version:
Terminal multiplexer layout management tool for VDE (Vibe Coding Development Environment)
44 lines • 1.57 kB
JavaScript
;
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