import {useState} from 'react'; import {useMutation, useQuery} from '@tanstack/react-query'; import {makeApiUrl, MapInfo} from './serverCalls'; import Dialog from './components/Dialog.tsx'; import PixelGridCanvas from './components/PixelGridCanvas.tsx'; import Column from './components/Column.tsx'; import Button from './components/Button.tsx'; import Row from './components/Row.tsx'; import './MapChooser.css'; function base64ToArrayBuffer(base64: string) { const binaryString = atob(base64); const bytes = new Uint8ClampedArray(binaryString.length); for (let i = 0; i < binaryString.length; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes; } function MapPreview({mapName, highlight, onClick}: { readonly mapName: string, readonly highlight: boolean, readonly onClick: () => void }) { const query = useQuery({ queryKey: ['get-map', mapName], queryFn: async () => { const url = makeApiUrl(`/map/${mapName}`); const response = await fetch(url, {method: 'GET'}); if (!response.ok) throw new Error(`response failed with code ${response.status} (${response.status})${await response.text()}`); return await response.json() as MapInfo; } }); if (query.isError) return
{query.error.message}
; else if (query.isPending) returnloading...
; const {name, preview} = query.data; return{name}