Newer
Older
# Plugins
:warning: the API in this document refer to `siibra-explorer>=2.7.0`. For migration guide/rationale, please see [MIGRATION.md](./MIGRATION.md)
siibra-explorer provides a plugin system, which allow a third party application to interact with siibra-explorer.
## Quickstart
### manifest
The plugin need to expose a manifest json file. The manifest file needs to have the following properties:
```json
{
"iframeUrl": "<iframeUrl>",
"name": "<name>",
"siibra-explorer": "<siibra-explorer>"
}
```
| property | required | desc |
| --- | --- | --- |
| `iframeUrl` | true | points to the html where the iframe is located. If does not start with `https?://`, siibra-explorer will try to resolve it relative to the absolute path of manifest. |
| `name` | true | name of the plugin |
| `siibra-explorer` | true | the version siibra-explorer this plugin is targetting. Should be >= 2.7.0. n.b. currently this entry is partially implemented, and any truthy value is sufficient.
|
<!-- TBD -->
## Architecture
The plugin needs to provide a HTML page, served over HTTP. This will be embedded into siibra-explorer as an iframe.
All communications between siibra-explorer and plugin will occur via the [postMessage API](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage).
## Lifecycle
`handshake.init` (up to 10x attempts, 1sec debounce) -> `{broadcast|request}` -> `handshake.exit` (NYI)
Please note that the `handshake.init` needs to be responded to, *before* any other messages are sent.
## API References
The API is generated automatically with the following script:
```sh
npm run api-schema
```