• Robert Knight's avatar
    Handle start or end element with no text in `TextRange.toRange` · 3d36ecee
    Robert Knight authored
    When resolving a `TextRange` to a DOM `Range` there is an edge case
    where the `start` or `end` position have an `offset` of `0` and the
    element contains no text nodes.
    
    Before this commit `toRange` would throw an `Offset exceeds text length`
    error. A more useful behavior though is:
    
     - For the `start` position, to resolve it to the start of the next text node after
       `this.start.element`
    
     - For the `end` position, to resolve it to the end of the previous text
       node before `this.end.element`
    
    This commit implements this behavior by first adding a `dir` option to
    `TextPosition.resolve` to control what happens when the position's
    offset is 0 and the element has no text and then specifying this option
    when calling `this.{start, end}.resolve` in `TextRange.toRange`.
    3d36ecee
text-range-test.js 14.4 KB