# Sprotty

This is the client part of _Sprotty_, a next-generation, open-source diagramming framework built with web technologies.

<img src="https://raw.githubusercontent.com/wiki/eclipse/sprotty/images/screenshot0.png" width="23%" align="left">
<img src="https://raw.githubusercontent.com/wiki/eclipse/sprotty/images/screenshot1.png" width="23%" align="left">
<img src="https://raw.githubusercontent.com/wiki/eclipse/sprotty/images/screenshot2.png" width="23%" align="left">
<img src="https://raw.githubusercontent.com/wiki/eclipse/sprotty/images/screenshot3.png" width="23%">


Some selected features:

* Fast, scalable SVG rendering that is compatible with all modern browsers and stylable with CSS
* Animations built into the core
* Support for a distributed runtime with client and server
* Fast, reactive client architecture implemented in TypeScript
* Java or Node.js based server architecture
* Configuration via dependency injection
* Integrations with Xtext, Langium, the Language Server Protocol, VS Code and Theia
* Can be run as rich-client as well as in the browser

## Docs

For further information please consult the [documentation on the website](https://sprotty.org/docs/).

The version history is documented in the [CHANGELOG](https://github.com/eclipse-sprotty/sprotty/blob/master/packages/sprotty/CHANGELOG.md).

## References

- [Example: view filtering](https://github.com/TypeFox/sprotty-view-filtering) &ndash; using filtering to efficiently navigate a large dataset of publications and citations
- [Example: nested graphs](https://github.com/TypeFox/sprotty-nested-demo) &ndash; expanding nested subgraphs in-place to efficiently navigate a large project with TypeScript modules
- [Yangster](https://github.com/TypeFox/yang-vscode) &ndash; a VS Code extension for the YANG language
