in fuse-ui-fabric/splittable/splittable.tsx [18:32]
export function layoutStack(max: number, parts: number[], index: number, delta: number): number[] {
const total = parts.reduce((s, c) => s + c, 0);
const unassignedCount = parts.reduce((s, c) => c ? s : s + 1, 0);
const unassignedAmount = Math.round(max - total) / unassignedCount;
const cur = parts.map(x => x || unassignedAmount);
if (delta) {
const prev = cur[index];
const next = cur[index + 1];
const effectiveDelta = delta > 0 ? Math.min(next, delta) : Math.max(-prev, delta);
cur.splice(index, 2, prev + effectiveDelta, next - effectiveDelta);
}
return cur;
}