import * as React from 'react'; import { ElementsSidebar } from '../ElementsSidebar/ElementsSidebar'; import { Sidebar } from '../Sidebar/Sidebar'; import { History } from '../History/History'; import { IAvailableContainer } from '../../Interfaces/IAvailableContainer'; import { IContainerModel } from '../../Interfaces/IContainerModel'; import { IHistoryState } from '../../Interfaces/IHistoryState'; import { PhotographIcon, UploadIcon } from '@heroicons/react/outline'; import { FloatingButton } from '../FloatingButton/FloatingButton'; import { Bar } from '../Bar/Bar'; import { IAvailableSymbol } from '../../Interfaces/IAvailableSymbol'; import { Symbols } from '../Symbols/Symbols'; import { SymbolsSidebar } from '../SymbolsSidebar/SymbolsSidebar'; interface IUIProps { SelectedContainer: IContainerModel | undefined current: IHistoryState history: IHistoryState[] historyCurrentStep: number AvailableContainers: IAvailableContainer[] AvailableSymbols: IAvailableSymbol[] SelectContainer: (containerId: string) => void DeleteContainer: (containerId: string) => void OnPropertyChange: (key: string, value: string | number | boolean, isStyle?: boolean) => void OnPropertiesSubmit: (event: React.FormEvent) => void AddContainerToSelectedContainer: (type: string) => void AddContainer: (index: number, type: string, parentId: string) => void AddSymbol: (type: string) => void OnSymbolPropertyChange: (key: string, value: string | number | boolean) => void SelectSymbol: (symbolId: string) => void DeleteSymbol: (symbolId: string) => void SaveEditorAsJSON: () => void SaveEditorAsSVG: () => void LoadState: (move: number) => void } function CloseOtherSidebars( setIsSidebarOpen: React.Dispatch>, setIsSymbolsOpen: React.Dispatch> ): void { setIsSidebarOpen(false); setIsSymbolsOpen(false); } export const UI: React.FunctionComponent = (props: IUIProps) => { const [isSidebarOpen, setIsSidebarOpen] = React.useState(true); const [isSymbolsOpen, setIsSymbolsOpen] = React.useState(false); const [isHistoryOpen, setIsHistoryOpen] = React.useState(false); let buttonRightOffsetClasses = 'right-12'; if (isSidebarOpen || isHistoryOpen) { buttonRightOffsetClasses = 'right-72'; } if (isHistoryOpen && isSidebarOpen) { buttonRightOffsetClasses = 'right-[544px]'; } return ( <> { CloseOtherSidebars(setIsSidebarOpen, setIsSymbolsOpen); setIsSidebarOpen(!isSidebarOpen); }} ToggleSymbols={() => { CloseOtherSidebars(setIsSidebarOpen, setIsSymbolsOpen); setIsSymbolsOpen(!isSymbolsOpen); }} ToggleTimeline={() => setIsHistoryOpen(!isHistoryOpen)} /> ); }; export default UI;