const preact = require('preact'); const { connect } = require('preact-redux'); const range = require('lodash/range'); const actions = require('./../actions'); const { COLOURS } = require('./../utils'); const { stringSort, ConstructAvatar } = require('./../utils'); const SpawnButton = require('./spawn.button'); const idSort = stringSort('id'); const addState = connect( function receiveState(state) { const { ws, constructs, team, account } = state; function sendConstructSpawn(name) { return ws.sendConstructSpawn(name); } return { account, constructs, team, sendConstructSpawn, }; }, function receiveDispatch(dispatch) { function setTeam(constructIds) { dispatch(actions.setTeam(constructIds)); } function navToList() { dispatch(actions.setGame(null)); dispatch(actions.setInstance(null)); return dispatch(actions.setNav('list')); } return { setTeam, navToList, }; } ); function Team(args) { const { account, constructs, team, setTeam, sendConstructSpawn, navToList, } = args; if (!constructs) return
; // redux limitation + suggested workaround // so much for dumb components function selectConstruct(id) { // remove const i = team.findIndex(sid => sid === id); if (i > -1) { team[i] = null; return setTeam(team); } // window insert const insert = team.findIndex(j => j === null); if (insert === -1) return setTeam([id, null, null]); team[insert] = id; return setTeam(team); } const constructPanels = constructs.sort(idSort).map(construct => { const colour = team.indexOf(construct.id); const selected = colour > -1; const borderColour = selected ? COLOURS[colour] : '#000000'; return (