/** * Every edit the editor can make, as pure text-in / text-out. * * Nothing here touches the DOM, so the whole formatting grammar — * what Ctrl+B does to a selection that already has asterisks * outside it, what Enter does at the end of an empty list item, * how an ordered list renumbers when you promote three paragraphs * — is a Node test rather than a browser one. That split is not * tidiness: the browser suite is where the expensive tests live, * and this is the half with all the edge cases. * * ### Everything is `{ selectionEnd, selectionStart, text }` * * The same three fields a `