static/ext/src/ux/aceeditor/ace-0.2.0/src/ace-uncompressed.js
function(container, theme) {
    var _self = this;

    this.container = container;

    // TODO: this breaks rendering in Cloud9 with multiple ace instances
//    // Imports CSS once per DOM document ('ace_editor' serves as an identifier).
//    dom.importCssString(editorCss, "ace_editor", container.ownerDocument);
    
    // in IE <= 9 the native cursor always shines through
    this.$keepTextAreaAtCursor = !useragent.isIE;

    dom.addCssClass(container, "ace_editor");

    this.setTheme(theme);

    this.$gutter = dom.createElement("div");
    this.$gutter.className = "ace_gutter";
    this.container.appendChild(this.$gutter);

    this.scroller = dom.createElement("div");
    this.scroller.className = "ace_scroller";
    this.container.appendChild(this.scroller);

    this.content = dom.createElement("div");
    this.content.className = "ace_content";
    this.scroller.appendChild(this.content);

    this.setHighlightGutterLine(true);
    this.$gutterLayer = new GutterLayer(this.$gutter);
    this.$gutterLayer.on("changeGutterWidth", this.onResize.bind(this, true));
    this.setFadeFoldWidgets(true);

    this.$markerBack = new MarkerLayer(this.content);

    var textLayer = this.$textLayer = new TextLayer(this.content);
    this.canvas = textLayer.element;

    this.$markerFront = new MarkerLayer(this.content);

    this.characterWidth = textLayer.getCharacterWidth();
    this.lineHeight = textLayer.getLineHeight();

    this.$cursorLayer = new CursorLayer(this.content);
    this.$cursorPadding = 8;

    // Indicates whether the horizontal scrollbar is visible
    this.$horizScroll = false;
    this.$horizScrollAlwaysVisible = false;

    this.$animatedScroll = false;

    this.scrollBar = new ScrollBar(container);
    this.scrollBar.addEventListener("scroll", function(e) {
        if (!_self.$inScrollAnimation)
            _self.session.setScrollTop(e.data);
    });

    this.scrollTop = 0;
    this.scrollLeft = 0;

    event.addListener(this.scroller, "scroll", function() {
        var scrollLeft = _self.scroller.scrollLeft;
        _self.scrollLeft = scrollLeft;
        _self.session.setScrollLeft(scrollLeft);

        _self.scroller.className = scrollLeft == 0
            ? "ace_scroller"
            : "ace_scroller horscroll";
    });

    this.cursorPos = {
        row : 0,
        column : 0
    };

    this.$textLayer.addEventListener("changeCharacterSize", function() {
        _self.characterWidth = textLayer.getCharacterWidth();
        _self.lineHeight = textLayer.getLineHeight();
        _self.$updatePrintMargin();
        _self.onResize(true);

        _self.$loop.schedule(_self.CHANGE_FULL);
    });

    this.$size = {
        width: 0,
        height: 0,
        scrollerHeight: 0,
        scrollerWidth: 0
    };

    this.layerConfig = {
        width : 1,
        padding : 0,
        firstRow : 0,
        firstRowScreen: 0,
        lastRow : 0,
        lineHeight : 1,
        characterWidth : 1,
        minHeight : 1,
        maxHeight : 1,
        offset : 0,
        height : 1
    };

    this.$loop = new RenderLoop(
        this.$renderChanges.bind(this),
        this.container.ownerDocument.defaultView
    );
    this.$loop.schedule(this.CHANGE_FULL);

    this.setPadding(4);
    this.$updatePrintMargin();
}
function(container, theme) {
    var _self = this;

    this.container = container;

    // TODO: this breaks rendering in Cloud9 with multiple ace instances
//    // Imports CSS once per DOM document ('ace_editor' serves as an identifier).
//    dom.importCssString(editorCss, "ace_editor", container.ownerDocument);
    
    // in IE <= 9 the native cursor always shines through
    this.$keepTextAreaAtCursor = !useragent.isIE;

    dom.addCssClass(container, "ace_editor");

    this.setTheme(theme);

    this.$gutter = dom.createElement("div");
    this.$gutter.className = "ace_gutter";
    this.container.appendChild(this.$gutter);

    this.scroller = dom.createElement("div");
    this.scroller.className = "ace_scroller";
    this.container.appendChild(this.scroller);

    this.content = dom.createElement("div");
    this.content.className = "ace_content";
    this.scroller.appendChild(this.content);

    this.setHighlightGutterLine(true);
    this.$gutterLayer = new GutterLayer(this.$gutter);
    this.$gutterLayer.on("changeGutterWidth", this.onResize.bind(this, true));
    this.setFadeFoldWidgets(true);

    this.$markerBack = new MarkerLayer(this.content);

    var textLayer = this.$textLayer = new TextLayer(this.content);
    this.canvas = textLayer.element;

    this.$markerFront = new MarkerLayer(this.content);

    this.characterWidth = textLayer.getCharacterWidth();
    this.lineHeight = textLayer.getLineHeight();

    this.$cursorLayer = new CursorLayer(this.content);
    this.$cursorPadding = 8;

    // Indicates whether the horizontal scrollbar is visible
    this.$horizScroll = false;
    this.$horizScrollAlwaysVisible = false;

    this.$animatedScroll = false;

    this.scrollBar = new ScrollBar(container);
    this.scrollBar.addEventListener("scroll", function(e) {
        if (!_self.$inScrollAnimation)
            _self.session.setScrollTop(e.data);
    });

    this.scrollTop = 0;
    this.scrollLeft = 0;

    event.addListener(this.scroller, "scroll", function() {
        var scrollLeft = _self.scroller.scrollLeft;
        _self.scrollLeft = scrollLeft;
        _self.session.setScrollLeft(scrollLeft);

        _self.scroller.className = scrollLeft == 0
            ? "ace_scroller"
            : "ace_scroller horscroll";
    });

    this.cursorPos = {
        row : 0,
        column : 0
    };

    this.$textLayer.addEventListener("changeCharacterSize", function() {
        _self.characterWidth = textLayer.getCharacterWidth();
        _self.lineHeight = textLayer.getLineHeight();
        _self.$updatePrintMargin();
        _self.onResize(true);

        _self.$loop.schedule(_self.CHANGE_FULL);
    });

    this.$size = {
        width: 0,
        height: 0,
        scrollerHeight: 0,
        scrollerWidth: 0
    };

    this.layerConfig = {
        width : 1,
        padding : 0,
        firstRow : 0,
        firstRowScreen: 0,
        lastRow : 0,
        lineHeight : 1,
        characterWidth : 1,
        minHeight : 1,
        maxHeight : 1,
        offset : 0,
        height : 1
    };

    this.$loop = new RenderLoop(
        this.$renderChanges.bind(this),
        this.container.ownerDocument.defaultView
    );
    this.$loop.schedule(this.CHANGE_FULL);

    this.setPadding(4);
    this.$updatePrintMargin();
}
function ( container , theme ) { var _self = this ; this . container = container ; // TODO: this breaks rendering in Cloud9 with multiple ace instances //    // Imports CSS once per DOM document ('ace_editor' serves as an identifier). //    dom.importCssString(editorCss, "ace_editor", container.ownerDocument); // in IE <= 9 the native cursor always shines through this . $keepTextAreaAtCursor = ! useragent . isIE ; dom . addCssClass ( container , "ace_editor" ) ; this . setTheme ( theme ) ; this . $gutter = dom . createElement ( "div" ) ; this . $gutter . className = "ace_gutter" ; this . container . appendChild ( this . $gutter ) ; this . scroller = dom . createElement ( "div" ) ; this . scroller . className = "ace_scroller" ; this . container . appendChild ( this . scroller ) ; this . content = dom . createElement ( "div" ) ; this . content . className = "ace_content" ; this . scroller . appendChild ( this . content ) ; this . setHighlightGutterLine ( true ) ; this . $gutterLayer = new GutterLayer ( this . $gutter ) ; this . $gutterLayer . on ( "changeGutterWidth" , this . onResize . bind ( this , true ) ) ; this . setFadeFoldWidgets ( true ) ; this . $markerBack = new MarkerLayer ( this . content ) ; var textLayer = this . $textLayer = new TextLayer ( this . content ) ; this . canvas = textLayer . element ; this . $markerFront = new MarkerLayer ( this . content ) ; this . characterWidth = textLayer . getCharacterWidth ( ) ; this . lineHeight = textLayer . getLineHeight ( ) ; this . $cursorLayer = new CursorLayer ( this . content ) ; this . $cursorPadding = 8 ; // Indicates whether the horizontal scrollbar is visible this . $horizScroll = false ; this . $horizScrollAlwaysVisible = false ; this . $animatedScroll = false ; this . scrollBar = new ScrollBar ( container ) ; this . scrollBar . addEventListener ( "scroll" , function ( e ) { if ( ! _self . $inScrollAnimation ) _self . session . setScrollTop ( e . data ) ; } ) ; this . scrollTop = 0 ; this . scrollLeft = 0 ; event . addListener ( this . scroller , "scroll" , function ( ) { var scrollLeft = _self . scroller . scrollLeft ; _self . scrollLeft = scrollLeft ; _self . session . setScrollLeft ( scrollLeft ) ; _self . scroller . className = scrollLeft == 0 ? "ace_scroller" : "ace_scroller horscroll" ; } ) ; this . cursorPos = { row : 0 , column : 0 } ; this . $textLayer . addEventListener ( "changeCharacterSize" , function ( ) { _self . characterWidth = textLayer . getCharacterWidth ( ) ; _self . lineHeight = textLayer . getLineHeight ( ) ; _self . $updatePrintMargin ( ) ; _self . onResize ( true ) ; _self . $loop . schedule ( _self . CHANGE_FULL ) ; } ) ; this . $size = { width : 0 , height : 0 , scrollerHeight : 0 , scrollerWidth : 0 } ; this . layerConfig = { width : 1 , padding : 0 , firstRow : 0 , firstRowScreen : 0 , lastRow : 0 , lineHeight : 1 , characterWidth : 1 , minHeight : 1 , maxHeight : 1 , offset : 0 , height : 1 } ; this . $loop = new RenderLoop ( this . $renderChanges . bind ( this ) , this . container . ownerDocument . defaultView ) ; this . $loop . schedule ( this . CHANGE_FULL ) ; this . setPadding ( 4 ) ; this . $updatePrintMargin ( ) ; }
class VirtualRenderer

The class that is responsible for drawing everything you see on the screen!

 
new VirtualRenderer(container, theme)
- container (DOMElement): The root element of the editor
- theme (String): The starting theme

Constructs a new `VirtualRenderer` within the `container` specified, applying the given `theme`.
class VirtualRenderer