import * as React from 'react'; import { UncontrolledReactSVGPanZoom } from 'react-svg-pan-zoom'; import { Container } from './Elements/Container'; import { ContainerModel } from '../../Interfaces/ContainerModel'; import { Selector } from './Elements/Selector'; import { BAR_WIDTH } from '../Bar/Bar'; interface ISVGProps { width: number height: number children: ContainerModel | ContainerModel[] | null selected: ContainerModel | null } interface Viewer { viewerWidth: number viewerHeight: number } export const ID = 'svg'; function resizeViewBox( setViewer: React.Dispatch> ): void { setViewer({ viewerWidth: window.innerWidth - BAR_WIDTH, viewerHeight: window.innerHeight }); } export const SVG: React.FC = (props: ISVGProps) => { const [viewer, setViewer] = React.useState({ viewerWidth: window.innerWidth, viewerHeight: window.innerHeight }); React.useEffect(() => { window.addEventListener('resize', () => resizeViewBox(setViewer)); return () => { window.addEventListener('resize', () => resizeViewBox(setViewer)); }; }); const xmlns = ''; const properties = { width: props.width, height: props.height, xmlns }; let children: React.ReactNode | React.ReactNode[] = []; if (Array.isArray(props.children)) { children = props.children.map(child => ); } else if (props.children !== null) { children = ; } return (
{ children }
); };