import React, { useContext } from "react"; import { Flex, Box, Text, IconButton, Close, Label } from "theme-ui"; import SimpleBar from "simplebar-react"; import Case from "case"; import RemoveMapIcon from "../../icons/RemoveMapIcon"; import ResetMapIcon from "../../icons/ResetMapIcon"; import GroupIcon from "../../icons/GroupIcon"; import MapTile from "./MapTile"; import Link from "../Link"; import FilterBar from "../FilterBar"; import DatabaseContext from "../../contexts/DatabaseContext"; import useResponsiveLayout from "../../helpers/useResponsiveLayout"; function MapTiles({ maps, groups, selectedMaps, selectedMapStates, onMapSelect, onMapsRemove, onMapsReset, onMapAdd, onMapEdit, onDone, selectMode, onSelectModeChange, search, onSearchChange, onMapsGroup, }) { const { databaseStatus } = useContext(DatabaseContext); const layout = useResponsiveLayout(); let hasMapState = false; for (let state of selectedMapStates) { if ( Object.values(state.tokens).length > 0 || state.mapDrawActions.length > 0 || state.fogDrawActions.length > 0 || Object.values(state.notes).length > 0 ) { hasMapState = true; break; } } let hasSelectedDefaultMap = selectedMaps.some( (map) => map.type === "default" ); function mapToTile(map) { const isSelected = selectedMaps.includes(map); return ( ); } const multipleSelected = selectedMaps.length > 1; return ( onMapSelect()} search={search} onSearchChange={onSearchChange} selectMode={selectMode} onSelectModeChange={onSelectModeChange} onAdd={onMapAdd} addTitle="Add Map" /> onMapSelect()} > {groups.map((group) => ( {maps[group].map(mapToTile)} ))} {databaseStatus === "disabled" && ( Map saving is unavailable. See FAQ for more information. )} {selectedMaps.length > 0 && ( onMapSelect()} /> onMapsGroup()} disabled={hasSelectedDefaultMap} > onMapsReset()} disabled={!hasMapState} > onMapsRemove()} disabled={hasSelectedDefaultMap} > )} ); } export default MapTiles;