* wip
* wip
* wip - fully working without hard marks
* fix editor crashes when inserting/deleting at the edges of marks
* fix various restore dom related crashes
* fix delete with pending changes, zero widths on android, mutation tracking
* track placeholder delete in detached strings, zero-widths
* wip mark placeholders
* get rid of mutation detection in favor of beforeinput
* fix various selection race conditions
* fix various crashes when deleting at the beginning of nodes
* wip diff transforms, selection handling fixes
* cleanup restoreDOM and fix noop restore edge-case
* fix mark placeholders
* fix toSlatePoint edge-case
* properly flush user select with pending changes
* Prevent editor crash when deleting before a non-contenteditable element
* wip markdown shortcut example
* transform pending changes and selection by remote changes, simplify pending actions, handle all input types
* improve change transform, mark(-placeholder) handling
* manually handle gboard bug, fix restoredom nested editor
* fix parent mutation condition
* cleanup, mark placeholder fixes
* mark placeholder fixes
* fix mark placeholder condition
* hide placeholder if we have pending diffs
* cleanup
* yarn install
* add workaround for swiftkey placeholder issue
* cleanup
* add changeset
* feat(slate-react): fix edge-case crash, add androidPendingDiffs, rename scheduleFlushPendingChanges
* flush pending selection on same line without pending changes/action
* keep formatting of pending diffs when adding/removing selection marks
* unref selection ref on unmatching dom state
* improve markdown shortcut example flush trigger to show how a more generic solution would work
* fix markdown shortcut example trigger logic
* fix isInsertAfterMarkPlaceholder logic
* Fix DOM selection sync when there are unexpected rerenders
* Create a useSlateSelection hook and expose it
* update docs
* add changeset
* Undo the useEffect change and add a useSlateValue method
* Use a version counter instead for SlateContext
* comment out layout effect prevention for now
* Undo useV comparison for now
* Change the changeset
* Fix lint
* Remove the useSlateValue hook
* remove some unused imports
* Add useSlateWithV to the docs
* fix changeset lint
* Change changeset to minor instead
* use focusin and focusout without capture if react >= 17
See https://github.com/facebook/react/pull/19186 for details on changes to `onFocus` and `onBlur`
* more accurate name for react version check const
* add changeset
* add comment about react >= 17 focus event listeners
* Fix NODE_TO_KEY correction for split_node and merge_node
* fix lint
* add changeset
* Add NODE_TO_KEY tests for number of mounts for split_node and merge_node
If you have a nested editor setup. For example, one editor has a void node that contains another editor. In this case, a resolution of a selection by the nested editor previously would consider that the selection is for a void node since an ancestor void node does exist. However, this selection is only a void node in the context of this editor if the ancestor void node is contained in the editor.