@@ -104,13 +104,16 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
104
104
} as InputNodeData ;
105
105
} )
106
106
. 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
+ } ) ,
114
117
) ;
115
118
116
119
const allEdges = egraph . enodes
@@ -144,12 +147,15 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
144
147
}
145
148
let edges = [ ...uniqueEdges . values ( ) ] ;
146
149
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
+ } ) ;
153
159
154
160
const nodesClone = nodes . slice ( ) ;
155
161
const edgesClone = edges . slice ( ) ;
0 commit comments