Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Context


Decission


# OpenSCD Core should support Addons

Date: 2023-06-05

## Status

Open

## Context
If we want OpenSCD to be extendable, we should allow OpenSCD to support `addons`.  An addon is like a plugin, but without the requirement of needing to extend from `HTMLElement`. An `addon` is a default exported function from a file.
an `addon` function gets the `OpenSCD` class as a parameter. from here, it can fetch the document if needed. it can also subscribe to events dispatched to `open-scd`.
By implementing addons, we can minimize the risk of people forking OpenSCD and adding new functionality. If people want extra functionality on OpenSCD, they can create an addon for it.```


Code Block
export default function xsdValidate(openSCD: OpenSCD) {

...


    openSCD.addEventListener('validate', (evt: ValidationEvent) => {

...


        const { doc } = openSCD;

...


        // Do actual validation to the doc.

...


    });

...


}

...


Another option is to support a new kind of plugin, `background` plugins. These plugins are rendered upon document load, like the `menu` plugins. Except these plugins are not shown in the UI. These plugins use the dom for dependency injection.

...