You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import useKeyboardEvents from 'hooks/useKeyboardEvents'
  2. import useLoadOnMount from 'hooks/useLoadOnMount'
  3. import Canvas from './canvas/canvas'
  4. import StatusBar from './status-bar'
  5. import CodePanel from './code-panel/code-panel'
  6. import ControlsPanel from './controls-panel/controls-panel'
  7. import ToolsPanel from './tools-panel/tools-panel'
  8. import StylePanel from './style-panel/style-panel'
  9. import { useSelector } from 'state'
  10. import styled from 'styles'
  11. import PagePanel from './page-panel/page-panel'
  12. import ContextMenu from './canvas/context-menu/context-menu'
  13. export default function Editor() {
  14. useKeyboardEvents()
  15. useLoadOnMount()
  16. const hasControls = useSelector(
  17. (s) => Object.keys(s.data.codeControls).length > 0
  18. )
  19. return (
  20. <Layout>
  21. <CodePanel />
  22. <PagePanel />
  23. <Spacer />
  24. <StylePanel />
  25. <Canvas />
  26. <ToolsPanel />
  27. <StatusBar />
  28. </Layout>
  29. )
  30. }
  31. const Spacer = styled('div', {
  32. flexGrow: 2,
  33. })
  34. const Layout = styled('main', {
  35. position: 'fixed',
  36. top: 0,
  37. left: 0,
  38. bottom: 0,
  39. right: 0,
  40. height: '100%',
  41. width: '100%',
  42. padding: '8px 8px 0 8px',
  43. zIndex: 200,
  44. display: 'flex',
  45. alignItems: 'flex-start',
  46. justifyContent: 'flex-start',
  47. pointerEvents: 'none',
  48. '& > *': {
  49. PointerEvent: 'all',
  50. },
  51. })