const Upload = { name: 'upload', props: { accept: String, label: String, }, template: ` `, methods: { async upload(evt) { const file = evt.target.files[0] if (!file) return; const formData = new FormData(); formData.append('file', file, file.name); const res = await fetch('/upload', { method: 'post', body: formData, }) const j = await res.json() this.$emit('uploaded', j) }, } } export default { components: { Upload, }, props: { games: Array, images: Array, }, template: `

Running games

{{g.title}}

New game

or (or select from below)
Start new game

Image lib

`, data() { return { tiles: 1000, image: '', } }, methods: { mediaImgUploaded(j) { this.image = j.image }, async newGame() { const res = await fetch('/newgame', { method: 'post', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({tiles: this.tiles, image: this.image}), }) if (res.status === 200) { const game = await res.json() location.assign(game.url) } } } }