guardian / scribe

DEPRECATED: A rich text editor framework for the web platform

Home Page:http://guardian.github.io/scribe/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

new Selection() appears to not be atomic

nedrocks opened this issue · comments

If using logging or debugging within a keydown event while using scribe, the selection object does not appear to maintain its state correctly. This is not a major issue, but confusing none the less.

To reproduce the issue, add an event listener for the scribe event in a plugin (e.g.):

scribe.el.addEventListener('keydown', function(evt) {
  var lastSelection = new scribe.api.Selection();
  console.log(lastSelection.range.collapsed);
  console.log(lastSelection.range);
});

Now, select a block of text within the same span (1 or more characters) and type any key that modifies the state (i.e. forces an input event to fire.) Note that the output should looks something like:

false <---- this is lastSelection.range.collapsed, which is correct

{
  collapsed: true                        <----- Wait what???
  commonAncestorContainer: text
  endContainer: text
  endOffset: 6
  startContainer: text
  startOffset: 6
  ...
}   

I think the API just wraps document.createRange so this might be true depending on how that operation works.