import * as React from 'react'; import { FixedSizeList as List } from 'react-window'; import { ISymbolModel } from '../../Interfaces/ISymbolModel'; import { SymbolProperties } from '../SymbolProperties/SymbolProperties'; interface ISymbolsSidebarProps { selectedSymbolId: string symbols: Map isOpen: boolean isHistoryOpen: boolean onPropertyChange: (key: string, value: string | number | boolean) => void selectSymbol: (symbolId: string) => void } export function SymbolsSidebar(props: ISymbolsSidebarProps): JSX.Element { // Render let isOpenClasses = '-right-64'; if (props.isOpen) { isOpenClasses = props.isHistoryOpen ? 'right-64' : 'right-0'; } const containers = [...props.symbols.values()]; function Row({ index, style }: { index: number, style: React.CSSProperties }): JSX.Element { const container = containers[index]; const key = container.id.toString(); const text = key; const selectedClass: string = props.selectedSymbolId !== '' && props.selectedSymbolId === container.id ? 'border-l-4 bg-slate-400/60 hover:bg-slate-400' : 'bg-slate-300/60 hover:bg-slate-300'; return ( ); } return (
Elements
{Row}
); }