@@ -104,13 +104,16 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
104104 } as InputNodeData ;
105105 } )
106106 . concat (
107- egraph . eclasses . map ( ( eclass ) => {
108- return {
109- id : eclass . id . toString ( ) ,
110- label : eclass . id . toString ( ) ,
111- comboId : `c${ eclass . id } ` ,
112- } as InputNodeData ;
113- } ) ,
107+ egraph . eclasses
108+ // render only canonical eclasses to avoid rendering empty nodes and combos for merged ones
109+ . filter ( ( eclass ) => eclass . id === eclass . canon )
110+ . map ( ( eclass ) => {
111+ return {
112+ id : eclass . id . toString ( ) ,
113+ label : eclass . id . toString ( ) ,
114+ comboId : `c${ eclass . id } ` ,
115+ } as InputNodeData ;
116+ } ) ,
114117 ) ;
115118
116119 const allEdges = egraph . enodes
@@ -144,12 +147,15 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
144147 }
145148 let edges = [ ...uniqueEdges . values ( ) ] ;
146149
147- let combos = egraph . eclasses . map ( ( eclass ) => {
148- return {
149- id : `c${ eclass . id } ` ,
150- label : `#${ eclass . id } ` ,
151- } as InputComboData ;
152- } ) ;
150+ let combos = egraph . eclasses
151+ // render only canonical eclasses to avoid rendering empty nodes and combos for merged ones
152+ . filter ( ( eclass ) => eclass . id === eclass . canon )
153+ . map ( ( eclass ) => {
154+ return {
155+ id : `c${ eclass . id } ` ,
156+ label : `#${ eclass . id } ` ,
157+ } as InputComboData ;
158+ } ) ;
153159
154160 const nodesClone = nodes . slice ( ) ;
155161 const edgesClone = edges . slice ( ) ;
0 commit comments