Recompute selected component when removing selector Previously, once a component was selected, removing a selector would not change the resolution result, potentially keeping a selection that no longer applied. Now upon removal of a selector, the selected component may be updated.
In order to prevent infinite loops in some cases, the recompute on removal only happens once per SelectorState instance.
Map 'belongsTo()' for published platforms to platform dependency rule belongsTo for publish platforms did not work properly for all cases as virtual edges do not carry the requested attribute 'category=platform'. With this commit, the 'belongsTo' functionality is now only used for virtual platforms, where the platform itself does not exist as a real node in the graph.
For published platforms, we map the 'belongsTo' call to a rule that adds a normal platform dependency to the component. This will then be resolved as any other platform dependency. An advantage is also that the resolution result will contain all the added edges. Before, the combination of an existing platform with virtual edges (not shown in the result) was confusing.