BoardView.jsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React from "react";
  2. import { Board, useWire } from "react-sync-board";
  3. import { SHOW_WELCOME } from "../../utils/settings";
  4. import WelcomeModal from "./WelcomeModal";
  5. import NavBar from "./NavBar";
  6. import BoardForm from "./BoardForm";
  7. import SelectedItemPane from "./SelectedItemsPane";
  8. import { ItemForm, itemTemplates } from "../../gameComponents";
  9. import ActionBar from "./ActionBar";
  10. import { MediaLibraryProvider, ImageDropNPaste } from "../../mediaLibrary";
  11. const style = {
  12. background:
  13. "radial-gradient(circle, hsla(218, 30%, 40%, 0.7), hsla(218, 40%, 40%, 0.05) 100%), url(/board.png)",
  14. border: "1px solid transparent",
  15. borderRadius: "2px",
  16. boxShadow: "0px 3px 6px #00000029",
  17. };
  18. export const BoardView = ({ mediaLibraries, edit, itemLibraries }) => {
  19. const { isMaster } = useWire("board");
  20. const [showWelcomeModal, setShowWelcomeModal] = React.useState(
  21. SHOW_WELCOME && !edit && isMaster
  22. );
  23. const [moveFirst, setMoveFirst] = React.useState(false);
  24. const [hideMenu, setHideMenu] = React.useState(false);
  25. return (
  26. <MediaLibraryProvider libraries={mediaLibraries}>
  27. <ImageDropNPaste>
  28. <Board
  29. moveFirst={moveFirst}
  30. style={style}
  31. itemTemplates={itemTemplates}
  32. />
  33. <NavBar editMode={edit} />
  34. <ActionBar
  35. editMode={edit}
  36. BoardFormComponent={BoardForm}
  37. itemLibraries={itemLibraries}
  38. moveFirst={moveFirst}
  39. setMoveFirst={setMoveFirst}
  40. hideMenu={hideMenu}
  41. setHideMenu={setHideMenu}
  42. />
  43. <WelcomeModal show={showWelcomeModal} setShow={setShowWelcomeModal} />
  44. </ImageDropNPaste>
  45. <SelectedItemPane ItemFormComponent={ItemForm} hideMenu={hideMenu} />
  46. </MediaLibraryProvider>
  47. );
  48. };
  49. export default BoardView;