* Add `data` field to editor `State`.
Plugins can use it to store their own internal state.
* Remove `serialize` and `deserialize` plugin methods.
* Add operation to set `data` on a state.
* Add `setDataOperation` tests.
* Remove the possibility to use keys different from strings.
Add `preserveData` option to `raw.serialize`.
Rewrite `set-data` test exploiting the new option.
* Add property isEmpty to State
* Update hovering menu example
* Document isEmpty
* Improve perf of isEmpty with @Soreine 's suggestion
* Fix return of isEmpty
I tried using the exact code from the example to be met by errors.
The order of arguments in the function example is wrong, it should be use the API described in the [docs](https://docs.slatejs.org/reference/plugins/plugin.html#onbeforeinput).
```
Function onBeforeInput(event: Event, data: Object, state: State, editor: Editor) => State || Void
```
* Add failing test for wrapInline
* Adapt tests for wrap-twice and whole-block
* Adapt transform to move selection correctly
* Fix lint errors
* Use keys in yaml
The native selection will be updated after componentDidMount or componentDidUpdate.
Use setTimeout to queue scrolling to the last when the native selection has been updated to the correct value.
* Update url when testing locally
When attempting to mess around locally I could never get anything to update. Sure enough I was looking in the wrong place and had missed the `/dev.html` on the end of my url.
Here's to hoping no one else struggles with this again.
* Update Readme.md
* Fix `moveNode` operation.
When `parent` is an ancestor of `target` and the index of `node` is
less than the index of the ancestor of `target` with the same depth
of `node`, removing `node` changes the path to `target`.
As consequence of that, `newPath` needs to be adjusted.
* Add test.
* Improve code.