...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
export default class MyPlugin extends LitElement {
fistUpdated() {
this.getRootNode().addEventListener('oscd-event', () => { ... });
}
} |
Find a (seperate solution) for all problems mentioned.In the code example above, the plugin listens to an OscdEvent dispatched by (for example) another plugin and is listening to this event via the common parent; Open-SCD Core.
- Body
- OpenSCD
- Menu Plugin 1
- Menu Plugin 2
- Active Editor Plugin
- OpenSCD
Due to WebApi restrictions, Events that are emitted by one of the plugins are only bubbling up directly (https://www.freecodecamp.org/news/event-bubbling-in-javascript/)
Pro's:
No new Code needs to be introduced
Con's:
This is only working for HTMLElements (Plugins).
Consequences
Implementing a central event-bus means that current OSCD plugins need some refactoring to dispatch events to the event-bus instead of dispatching events on itself.