* Replace cheerio with parse5
* Convert to dependency injection for HTML parser
* Add options.domParser to HTML serializer
* Fallback to native DOMParser if present and no option provided
* Error if no DOM parser is available (option or native)
* Update tests to pass parse5 as config option
* Update test so it passes.
Cheerio interprets `<p><hr /></p>` as one `p` node with a child `hr`
node, but both parse5 and native DOMParser interpret it as 3 nodes: a
blank `p` node, `hr` node, and second blank `p` node. Update test
expectation to match new API.
* Remove cheerio-esque compatibility conversion.
* Use `application/xml` in native DOMParser
Using `text/html` causes it to wrap the fragment in html, body, etc
* Change error message to single line.
Was inserting an undesired newline char
* Add documentation for new `domParser` option to html serializer
Also boyscout missing documentation for `defaultBlockType` option
* Rename `domParser` option to `parseHtml`
Rename the option to make it clearer what it does, since it accepts a
function and not a `DOMParser` analogue object.
* Fix Edge doctype warning
* Remove getData() calls in onDragOver
Access to data within ondragover is prohibited
* Handle Edge errors accessing `dataTransfer.dropEffect`
* Work around Edge not supporting custom data in drag events
If unable to use `setData()` with custom type, then uses JSON obj to store data in 'text/plain'
* Fix more Edge errors
Edge sometimes throws 'NotSupportedError' whena accessing `items` property on `dataTransfer`
* Fix linting errors
* Fix formatting
* Add property isEmpty to State
* Update hovering menu example
* Document isEmpty
* Improve perf of isEmpty with @Soreine 's suggestion
* Fix return of isEmpty
* 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 getFragmentAtRange to not return early when selection is in void node or collapsed
* Detecting when cut or copy is made in a void node, and not returning early
* Checking if text exists before using it for cut/copy
* Moving inVoidNode check to onCutOrCopy
as per @ianstormtaylor note.
* If/else for dom operations when copying text vs void node
* Adding fragment span to the contents
* more work on copy-pasting void nodes
* feat: Add ES6 polyfill to examples page
* Fixes issue with IE11 simply not displaying anything on load due to missing `Symbol` shim
* Move script to the bottom before build.prod.js file
* 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
* refactor Selection, deprecating old methods
* fix a few more things
* introduce an alternative for moveToOffsets
* add edge methods for move{start/end}OffsetTo
* fix selection return value
* fix deprecation warnings
* refactor transforms to make auto-generating easier
* refactor and deprecate selection transforms
* remove deprecation warnings from tests
* fix deprecation warnings in examples
As void-nodes now can be deleted, use a schema rule to normalize the document, and insert a paragraph when empty. Delete old "onDocumentChange" handler.
* Fix typo
just a minor typo in the docs!
* Fix typo in API docs
* Update focus-blur example readme to reflect the correct example
* Remove extra newline
* Correct Readme on the plugins example as well
* Correct readme for RTL example
* Fix own typo.
* Adding a Readme for the tables example
* Updated examples/dev.html so that the script would reload on a page refresh
* Made watch:examples verbose so we know when watchify has finished its work.