Files
grungnet/src/components/Tokens.js

60 lines
1.4 KiB
JavaScript
Raw Normal View History

2020-04-07 11:47:06 +10:00
import React, { useState } from "react";
import { Flex, Box } from "theme-ui";
import shortid from "shortid";
2020-03-19 21:40:29 +11:00
import * as tokens from "../tokens";
import Token from "./Token";
import ProxyToken from "./ProxyToken";
2020-04-07 11:47:06 +10:00
import SizeInput from "./SizeInput";
2020-03-20 13:33:12 +11:00
const listTokenClassName = "list-token";
2020-03-20 13:33:12 +11:00
function Tokens({ onCreateMapToken }) {
2020-04-07 11:47:06 +10:00
const [tokenSize, setTokenSize] = useState(1);
function handleProxyDragEnd(isOnMap, token) {
if (isOnMap && onCreateMapToken) {
// Give the token an id
2020-04-07 11:47:06 +10:00
onCreateMapToken({ ...token, id: shortid.generate(), size: tokenSize });
}
}
2020-03-19 21:40:29 +11:00
return (
<>
2020-04-07 11:47:06 +10:00
<Flex sx={{ flexDirection: "column" }}>
<Flex
bg="background"
sx={{
width: "80px",
minWidth: "80px",
flexDirection: "column",
overflowY: "auto",
}}
px={2}
>
{Object.entries(tokens).map(([id, image]) => (
<Box key={id} m={2} sx={{ width: "48px", height: "48px" }}>
<Token image={image} className={listTokenClassName} />
</Box>
))}
</Flex>
<Box
pt={1}
sx={{
backgroundColor: "muted",
}}
>
<SizeInput value={tokenSize} onChange={setTokenSize} />
</Box>
</Flex>
<ProxyToken
2020-03-20 13:33:12 +11:00
tokenClassName={listTokenClassName}
onProxyDragEnd={handleProxyDragEnd}
/>
</>
2020-03-19 21:40:29 +11:00
);
}
export default Tokens;