Slate.js is a rich text editor library similar to Draft.js
The most important feature of slate.js is strong customizability.
Slate.js itself provides very rich functionalities and we can add our plugin to slate.js very easily.
Disadvantage of this library is steep learning curve.
More details can be found here: https://docs.slatejs.org/