@tag42git it’s totally feasible, and it’s why I love webcomponent, although I don’t like the way they normally share data, with data-binding or other redux tools.
I prefer that they are totally autonomous, so that they talk to each other through the evejs agent system . (@dprat0821)
Each component has a ''named agent" that send data to the agent of another component.
When this agent receive data, he updates the components.
So an app can be build out independent reusable autonomous components as easily as every htmlTag.
Then it would also be easy to replace for example a component by another. If I want my graph to be made with d3js instead of visjs, just import the equivalent component, and use it’s tag & name of communicating agent…
I’d not really know what could be in a piechart component 
, but I will give you a proto of your desired app, with components that exchange those data to each other
Or you can give a try by copying this folder https://github.com/scenaristeur/solidash/tree/master/compagent-spoggy.
It’s all you need to start that type of app ( just duplicate the component/modele-component.js and name it graph-editor ( carefully, dash is necessary) .
In this file change the name at the three place you find model-component or ModelComponent .
Then you can import it in component/component-app.js and use it as a new htmlTag …
Can’t be more simple and it works in the browser, don’t need webpack or other preparation… So could be directly installed on a Pod … 
Edit :
using this components :
<displayer-chooser name="Chooser"></displayer-chooser>
<displayer-parser name="Parser"></displayer-parser>
<displayer-graph name="D3Force" type="d3"></displayer-graph>
<displayer-graph name="BarChart" type="bar"></displayer-graph>
<displayer-graph name="PieChart" type="pie"></displayer-graph>
<editor-component name="Editor" type="simple"></editor-component>
<editor-component name="Editor" type="fancy"></editor-component>
on this page is an example https://scenaristeur.github.io/solidash/compagent-displayer/
and in the <displayer-chooser>
i reuse the <browser-component>
, the <tripledoc-profile>
& the <explorer-component>
that i used in my demo app…