import React, { useContext } from "react"; import { Flex, Box, Text, IconButton, Close } from "theme-ui"; import SimpleBar from "simplebar-react"; import { useMedia } from "react-media"; import AddIcon from "../../icons/AddIcon"; import RemoveMapIcon from "../../icons/RemoveMapIcon"; import ResetMapIcon from "../../icons/ResetMapIcon"; import SelectMultipleIcon from "../../icons/SelectMultipleIcon"; import SelectSingleIcon from "../../icons/SelectSingleIcon"; import RadioIconButton from "./controls/RadioIconButton"; import MapTile from "./MapTile"; import Link from "../Link"; import Search from "../Search"; import DatabaseContext from "../../contexts/DatabaseContext"; function MapTiles({ maps, selectedMaps, selectedMapStates, onMapSelect, onMapsRemove, onMapsReset, onMapAdd, onMapEdit, onDone, selectMode, onSelectModeChange, search, onSearchChange, }) { const { databaseStatus } = useContext(DatabaseContext); const isSmallScreen = useMedia({ query: "(max-width: 500px)" }); let hasMapState = false; for (let state of selectedMapStates) { if ( Object.values(state.tokens).length > 0 || state.mapDrawActions.length > 0 || state.fogDrawActions.length > 0 ) { hasMapState = true; break; } } let hasSelectedDefaultMap = false; for (let map of selectedMaps) { if (map.type === "default") { hasSelectedDefaultMap = true; break; } } return ( onMapSelect()} > onSelectModeChange("single")} isSelected={selectMode === "single"} > onSelectModeChange("multiple")} isSelected={selectMode === "multiple" || selectMode === "range"} > onMapSelect()} > {maps.map((map) => { const isSelected = selectedMaps.includes(map); return ( ); })} {databaseStatus === "disabled" && ( Map saving is unavailable. See FAQ for more information. )} {selectedMaps.length > 0 && ( onMapSelect()} /> onMapsReset()} disabled={!hasMapState} > onMapsRemove()} disabled={hasSelectedDefaultMap} > )} ); } export default MapTiles;