lib/assets/scripts/vendor/codemirror/codemirror.js
function intoCoordSystem(cm, lineObj, rect, context) {
    if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) {
      var size = lineObj.widgets[i].node.offsetHeight;
      rect.top += size; rect.bottom += size;
    }
    if (context == "line") return rect;
    if (!context) context = "local";
    var yOff = heightAtLine(cm, lineObj);
    if (context != "local") yOff -= cm.display.viewOffset;
    if (context == "page") {
      var lOff = cm.display.lineSpace.getBoundingClientRect();
      yOff += lOff.top + (window.pageYOffset || (document.documentElement || document.body).scrollTop);
      var xOff = lOff.left + (window.pageXOffset || (document.documentElement || document.body).scrollLeft);
      rect.left += xOff; rect.right += xOff;
    }
    rect.top += yOff; rect.bottom += yOff;
    return rect;
  }
function intoCoordSystem(cm, lineObj, rect, context) {
    if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) {
      var size = lineObj.widgets[i].node.offsetHeight;
      rect.top += size; rect.bottom += size;
    }
    if (context == "line") return rect;
    if (!context) context = "local";
    var yOff = heightAtLine(cm, lineObj);
    if (context != "local") yOff -= cm.display.viewOffset;
    if (context == "page") {
      var lOff = cm.display.lineSpace.getBoundingClientRect();
      yOff += lOff.top + (window.pageYOffset || (document.documentElement || document.body).scrollTop);
      var xOff = lOff.left + (window.pageXOffset || (document.documentElement || document.body).scrollLeft);
      rect.left += xOff; rect.right += xOff;
    }
    rect.top += yOff; rect.bottom += yOff;
    return rect;
  }
function intoCoordSystem ( cm , lineObj , rect , context ) { if ( lineObj . widgets ) for ( var i = 0 ; i < lineObj . widgets . length ; ++ i ) if ( lineObj . widgets [ i ] . above ) { var size = lineObj . widgets [ i ] . node . offsetHeight ; rect . top += size ; rect . bottom += size ; } if ( context == "line" ) return rect ; if ( ! context ) context = "local" ; var yOff = heightAtLine ( cm , lineObj ) ; if ( context != "local" ) yOff -= cm . display . viewOffset ; if ( context == "page" ) { var lOff = cm . display . lineSpace . getBoundingClientRect ( ) ; yOff += lOff . top + ( window . pageYOffset || ( document . documentElement || document . body ) . scrollTop ) ; var xOff = lOff . left + ( window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft ) ; rect . left += xOff ; rect . right += xOff ; } rect . top += yOff ; rect . bottom += yOff ; return rect ; }
Context is one of "line", "div" (display.lineDiv), "local"/null (editor), or "page"
Context is one of line div ( display . lineDiv ) local / null ( editor ) or page