This way we don't re-render the entire cell every time a variable changes. Better performance and handles modals correctly.
OutputCell is still a pretty messy component, which we'll have to address at some point, but the complexity is still manageable for now.