Right now if you copy "This thing" from Slate and paste
into a plain text app you will get "T his thing" because
Slate is making the first character a data holding span.
This diff makes the data containing span empty to eliminate
this extra space.
Closes#562
* update large example
* pass block down to <Text> for performance, closes#700
* add get-ranges benchmark
* optimize getRanges(), closes#699
* add serialization benchmarks
* optimize Raw.deserializeRanges() by computing marks once, closes#701
* change .merge calls to .set for performance
* change updateDescendant() to use getAncestors() for memoization
* change getPath() to use getAncestors() for memoization
* switch getTexts() and friends to use arrays while iterating
* rename split-block benchmark
* update benchmark compare script
one of these, focus moves from the `Content` DOM element to the new active
element but editor doesn't really lose focus and selection must not be blurred.
* Refactored out `getPoint` from components/content to utils so as to make it more reusable.
* Fixed autocorrect causing dupe text. (#540)
During autocorrection (in iOS’s Safari), `onSelect` event is triggered after `onBeforeInput` event.
The plugins/core updates the state during `onBeforeInput` event, thus causing selection triggered by autocorrect to be lost/overridden.
This behaviour caused dupe text bug during autocorrection.
To overcome this issue, we try to query the selection and conditionally fix out of sync cases with an additional transform before inserting the text.
* Removes Content#getPoint and use the new utility function instead.
* Renames local variable nextTransform to transform.
* Describe the solution to the autocorrect issue in a more descriptive manner.
* first stab
* refactor to nanobench
* refactor to matcha
* use hand-rolled comparison logic, ugh
* update threshold
* remove unused dependencies
* remove benchmarks from travis ci