export function buildMatches(pool) { const matches=[]; for(let index=0;indexi===index?{...item,winner}:item); let next={...state,matches,eliminated:[loser,...state.eliminated],decisions:[...state.decisions,{round:state.round,left_id:match.left.id,right_id:match.right.id,winner_id:winner.id}]}; if(matches.every(item=>item.winner)){const pool=matches.map(item=>item.winner);if(pool.length===1)return{state:{...next,pool},finished:true};next={...next,round:state.round+1,pool,matches:buildMatches(pool),offset:0};}return{state:next,finished:false}; } export function firstOpenMatch(state) { return state.matches.findIndex(match=>match.right&&!match.winner); }