import ReactJson from 'react-json-view' import { CollapsiblePanel, CollapsiblePanelProps } from './CollapsiblePanel' import { useMemo } from 'react' import { ProgramMemory, Path, ExtrudeSurface } from '../lang/wasm' import { Themes } from '../lib/theme' import { useKclContext } from 'lang/KclSingleton' interface MemoryPanelProps extends CollapsiblePanelProps { theme?: Exclude } export const MemoryPanel = ({ theme = Themes.Light, ...props }: MemoryPanelProps) => { const { programMemory } = useKclContext() const ProcessedMemory = useMemo( () => processMemory(programMemory), [programMemory] ) return (
{/* 36px is the height of PanelHeader */}
) } export const processMemory = (programMemory: ProgramMemory) => { const processedMemory: any = {} Object.keys(programMemory?.root || {}).forEach((key) => { const val = programMemory.root[key] if (typeof val.value !== 'function') { if (val.type === 'SketchGroup') { processedMemory[key] = val.value.map(({ __geoMeta, ...rest }: Path) => { return rest }) } else if (val.type === 'ExtrudeGroup') { processedMemory[key] = val.value.map(({ ...rest }: ExtrudeSurface) => { return rest }) } else { processedMemory[key] = val.value } } else if (key !== 'log') { processedMemory[key] = '__function__' } }) return processedMemory }