From bdcd4911aa44df5fe94e57ab563ac261437c4f1b Mon Sep 17 00:00:00 2001 From: mkslanc Date: Wed, 17 Aug 2022 16:02:04 +0400 Subject: [PATCH 1/2] change API link to lead to new API Reference document --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 43210603934..62a7af745fa 100644 --- a/index.html +++ b/index.html @@ -48,7 +48,7 @@

The high performance code ed
                             <a href=Syntax Highlighters
  • - API Reference + API Reference
  • Real World Users From ab4851f88e5913da83d7bf4772847614863c0a78 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 23 Aug 2022 16:25:32 +0400 Subject: [PATCH 2/2] use submodule for api-docs --- .github/workflows/publish.yml | 1 + api/ace.html | 149 - api/anchor.html | 272 - api/background_tokenizer.html | 320 -- api/command_manager.html | 55 - api/document.html | 927 ---- api/edit_session.html | 3235 ------------ api/editor.html | 4689 ----------------- api/index.html | 12 - api/placeholder.html | 293 - api/range.html | 968 ---- api/renderloop.html | 55 - api/resources/csses/ace_api.css | 912 ---- api/resources/font/fontawesome-webfont.eot | Bin 38708 -> 0 bytes api/resources/font/fontawesome-webfont.svg | 255 - api/resources/font/fontawesome-webfont.ttf | Bin 68476 -> 0 bytes api/resources/font/fontawesome-webfont.woff | Bin 41752 -> 0 bytes api/resources/images/Ace_ERD.png | Bin 59424 -> 0 bytes api/resources/images/ace_logo.png | Bin 42538 -> 0 bytes api/resources/images/ace_logo_menu.png | Bin 3252 -> 0 bytes api/resources/images/c9-log-footer.png | Bin 6859 -> 0 bytes api/resources/images/c9-sponsor.png | Bin 12244 -> 0 bytes api/resources/images/cloud9-logo.png | Bin 14564 -> 0 bytes api/resources/images/content-top.png | Bin 3172 -> 0 bytes api/resources/images/content_bg.png | Bin 4177 -> 0 bytes api/resources/images/content_top_bg.png | Bin 629 -> 0 bytes api/resources/images/dashed_back.png | Bin 3445 -> 0 bytes api/resources/images/footer-bg.png | Bin 1090 -> 0 bytes api/resources/images/main_bg.png | Bin 9630 -> 0 bytes api/resources/images/member-sprites.png | Bin 3505 -> 0 bytes api/resources/images/menu_disc.png | Bin 556 -> 0 bytes api/resources/images/method_bg.png | Bin 8001 -> 0 bytes .../images/scrolled-heading-shadow.png | Bin 3903 -> 0 bytes api/resources/images/sidebar-top-bg.png | Bin 2693 -> 0 bytes api/resources/images/sidebar_border.png | Bin 2967 -> 0 bytes api/resources/images/swirl_divider.png | Bin 1043 -> 0 bytes api/resources/javascripts/bbq.js | 18 - api/resources/javascripts/bootstrap.js | 389 -- api/resources/javascripts/clicker.js | 69 - api/resources/javascripts/disqus-ext.js | 17 - api/resources/javascripts/jquery-scrollspy.js | 98 - api/resources/javascripts/jquery.collapse.js | 151 - api/resources/javascripts/jquery.cookie.js | 96 - api/resources/javascripts/plugins.js | 13 - .../javascripts/prettify-extension.js | 24 - api/resources/javascripts/prettify.js | 28 - api/resources/javascripts/ux.js | 135 - api/scrollbar.html | 261 - api/search.html | 295 -- api/selection.html | 1781 ------- api/split.html | 640 --- api/token_iterator.html | 248 - api/tokenizer.html | 122 - api/undomanager.html | 271 - api/virtual_renderer.html | 2190 -------- doc/site/js/main.js | 4 + doc/site/style.css | 4 + index.html | 4 +- src/multi_select.js | 4 +- tool/release-api-docs.sh | 68 + tool/release.sh | 11 +- 61 files changed, 89 insertions(+), 18995 deletions(-) delete mode 100644 api/ace.html delete mode 100644 api/anchor.html delete mode 100644 api/background_tokenizer.html delete mode 100644 api/command_manager.html delete mode 100644 api/document.html delete mode 100644 api/edit_session.html delete mode 100644 api/editor.html delete mode 100644 api/index.html delete mode 100644 api/placeholder.html delete mode 100644 api/range.html delete mode 100644 api/renderloop.html delete mode 100644 api/resources/csses/ace_api.css delete mode 100644 api/resources/font/fontawesome-webfont.eot delete mode 100644 api/resources/font/fontawesome-webfont.svg delete mode 100644 api/resources/font/fontawesome-webfont.ttf delete mode 100644 api/resources/font/fontawesome-webfont.woff delete mode 100644 api/resources/images/Ace_ERD.png delete mode 100644 api/resources/images/ace_logo.png delete mode 100644 api/resources/images/ace_logo_menu.png delete mode 100644 api/resources/images/c9-log-footer.png delete mode 100644 api/resources/images/c9-sponsor.png delete mode 100644 api/resources/images/cloud9-logo.png delete mode 100644 api/resources/images/content-top.png delete mode 100644 api/resources/images/content_bg.png delete mode 100644 api/resources/images/content_top_bg.png delete mode 100644 api/resources/images/dashed_back.png delete mode 100644 api/resources/images/footer-bg.png delete mode 100644 api/resources/images/main_bg.png delete mode 100644 api/resources/images/member-sprites.png delete mode 100644 api/resources/images/menu_disc.png delete mode 100644 api/resources/images/method_bg.png delete mode 100644 api/resources/images/scrolled-heading-shadow.png delete mode 100644 api/resources/images/sidebar-top-bg.png delete mode 100644 api/resources/images/sidebar_border.png delete mode 100644 api/resources/images/swirl_divider.png delete mode 100644 api/resources/javascripts/bbq.js delete mode 100644 api/resources/javascripts/bootstrap.js delete mode 100644 api/resources/javascripts/clicker.js delete mode 100644 api/resources/javascripts/disqus-ext.js delete mode 100644 api/resources/javascripts/jquery-scrollspy.js delete mode 100644 api/resources/javascripts/jquery.collapse.js delete mode 100644 api/resources/javascripts/jquery.cookie.js delete mode 100644 api/resources/javascripts/plugins.js delete mode 100644 api/resources/javascripts/prettify-extension.js delete mode 100644 api/resources/javascripts/prettify.js delete mode 100644 api/resources/javascripts/ux.js delete mode 100644 api/scrollbar.html delete mode 100644 api/search.html delete mode 100644 api/selection.html delete mode 100644 api/split.html delete mode 100644 api/token_iterator.html delete mode 100644 api/tokenizer.html delete mode 100644 api/undomanager.html delete mode 100644 api/virtual_renderer.html create mode 100644 tool/release-api-docs.sh diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b579e3f5553..591ca0360fc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -6,6 +6,7 @@ on: push: tags: - v* + workflow_dispatch: jobs: build: runs-on: ubuntu-latest diff --git a/api/ace.html b/api/ace.html deleted file mode 100644 index e242d60c08a..00000000000 --- a/api/ace.html +++ /dev/null @@ -1,149 +0,0 @@ - -
    -
    -
    -
    -
    -

    Ace -

    - -
    -
    -
    -
    -

    The main class required to set up an Ace instance in the browser.

    - -
    -
    -
    -

    Methods

    -
    -
    -
    -
    - -
    -
    -

    Creates a new EditSession, and returns the associated Document.

    - -
    -

    Creates a new EditSession, and returns the associated Document.

    - -

    Arguments

    textDocument | String

    Required. If text is a Document, it associates the EditSession with it. Otherwise, a new Document is created, with the initial text

    -
    modeTextMode

    Required. The initial language mode to use for the document

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Embeds the Ace editor into the DOM, at the element provided by el.

    - -
    -

    Embeds the Ace editor into the DOM, at the element provided by el.

    - -

    Arguments

    elString | DOMElement

    Required. Either the id of an element, or the element itself

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Provides access to require in packed noconflict mode

    - -
    -

    Provides access to require in packed noconflict mode

    - -

    Arguments

    moduleNameString

    Required.

    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/anchor.html b/api/anchor.html deleted file mode 100644 index 727c1cb8ba4..00000000000 --- a/api/anchor.html +++ /dev/null @@ -1,272 +0,0 @@ - -
    -
    -
    -
    -
    -

    Anchor -

    - -
    -
    -
    -
    -

    Defines the floating pointer in the document. Whenever text is inserted or deleted before the cursor, the position of the cursor is updated.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Creates a new Anchor and associates it with a document.

    - -
    -

    Creates a new Anchor and associates it with a document.

    - -

    Arguments

    docDocument

    Required. The document to associate with the anchor

    -
    rowNumber

    Required. The starting row position

    -
    columnNumber

    Required. The starting column position

    -
    -
    -
    -
    -
    -
    -

    Events

    -
    -
    -
    -
    -
      -
    • -
        -
      • Anchor.on("change", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Fires whenever the anchor position changes.

    - -
    -

    Fires whenever the anchor position changes.

    -

    Both of these objects have a row and column property corresponding to the position.

    -

    Events that can trigger this function include setPosition().

    - -

    Arguments

    eObject

    Required. An object containing information about the anchor position. It has two properties:

    -
      -
    • old: An object describing the old Anchor position
    • -
    • value: An object describing the new Anchor position
    • -
    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • Anchor.detach()
      • -
      -
        -
      -
    • -
    -
    -
    -

    When called, the 'change' event listener is removed.

    - -
    -

    When called, the 'change' event listener is removed.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Anchor.getDocument() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current document.

    - -
    -

    Returns the current document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Anchor.getPosition() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an object identifying the row and column position of the current anchor.

    - -
    -

    Returns an object identifying the row and column position of the current anchor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Anchor.onChange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Sets the anchor position to the specified row and column. If noClip is true, the position is not clipped.

    - -
    -

    Sets the anchor position to the specified row and column. If noClip is true, the position is not clipped.

    - -

    Arguments

    rowNumber

    Required. The row index to move the anchor to

    -
    columnNumber

    Required. The column index to move the anchor to

    -
    noClipBoolean

    Required. Identifies if you want the position to be clipped

    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/background_tokenizer.html b/api/background_tokenizer.html deleted file mode 100644 index c17a2a17bcc..00000000000 --- a/api/background_tokenizer.html +++ /dev/null @@ -1,320 +0,0 @@ - -
    -
    -
    -
    -
    -

    BackgroundTokenizer -

    - -
    -
    -
    -
    -

    Tokenizes the current Document in the background, and caches the tokenized rows for future use.

    -

    If a certain row is changed, everything below that row is re-tokenized.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Creates a new BackgroundTokenizer object.

    - -
    -

    Creates a new BackgroundTokenizer object.

    - -

    Arguments

    tokenizerTokenizer

    Required. The tokenizer to use

    -
    editorEditor

    Required. The editor to associate with

    -
    -
    -
    -
    -
    -
    -

    Events

    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.on("update", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Fires whenever the background tokeniziers between a range of rows are going to be updated.

    - -
    -

    Fires whenever the background tokeniziers between a range of rows are going to be updated.

    - -

    Arguments

    eObject

    Required. An object containing two properties, first and last, which indicate the rows of the region being updated.

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.fireUpdateEvent(Number firstRow, Number lastRow)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emits the 'update' event. firstRow and lastRow are used to define the boundaries of the region to be updated.

    - -
    -

    Emits the 'update' event. firstRow and lastRow are used to define the boundaries of the region to be updated.

    - -

    Arguments

    firstRowNumber

    Required. The starting row region

    -
    lastRowNumber

    Required. The final row region

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.getState(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the state of tokenization at the end of a row.

    - -
    -

    Returns the state of tokenization at the end of a row.

    - -

    Arguments

    rowNumber

    Required. The row to get state at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.getTokens(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Gives list of tokens of the row. (tokens are cached)

    - -
    -

    Gives list of tokens of the row. (tokens are cached)

    - -

    Arguments

    rowNumber

    Required. The row to get tokens at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.setDocument(Document doc)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets a new document to associate with this object.

    - -
    -

    Sets a new document to associate with this object.

    - -

    Arguments

    docDocument

    Required. The new document to associate with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.setTokenizer(Tokenizer tokenizer)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets a new tokenizer for this object.

    - -
    -

    Sets a new tokenizer for this object.

    - -

    Arguments

    tokenizerTokenizer

    Required. The new tokenizer to use

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.start(Number startRow)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Starts tokenizing at the row indicated.

    - -
    -

    Starts tokenizing at the row indicated.

    - -

    Arguments

    startRowNumber

    Required. The row to start at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • BackgroundTokenizer.stop()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Stops tokenizing.

    - -
    -

    Stops tokenizing.

    - -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/command_manager.html b/api/command_manager.html deleted file mode 100644 index 142ca7411ca..00000000000 --- a/api/command_manager.html +++ /dev/null @@ -1,55 +0,0 @@ - -
    -
    -
    -
    -
    -

    CommandManager -

    - -
    -
    -
    -
    -

    new CommandManager(platform, commands)

    - -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/document.html b/api/document.html deleted file mode 100644 index f1fc2ff5540..00000000000 --- a/api/document.html +++ /dev/null @@ -1,927 +0,0 @@ - -
    -
    -
    -
    - -
    -
    -
    -

    Contains the text of the document. Document can be attached to several EditSessions.

    -

    At its core, Documents are just an array of strings, with each row in the document matching up to the array index.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Creates a new Document. If text is included, the Document contains those strings; otherwise, it's empty.

    - -
    -

    Creates a new Document. If text is included, the Document contains those strings; otherwise, it's empty.

    - -

    Arguments

    textString | Array

    Required. The starting text

    -
    -
    -
    -
    -
    -
    -

    Events

    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.on("change", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Fires whenever the document changes.

    - -
    -

    Fires whenever the document changes.

    -

    Several methods trigger different "change" events. Below is a list of each action type, followed by each property that's also available:

    - - -

    Arguments

    eObject

    Required. Contains at least one property called "action". "action" indicates the action that triggered the change. Each action also has a set of additional properties.

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.applyDeltas(Object deltas)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Applies all the changes previously accumulated. These can be either 'includeText', 'insertLines', 'removeText', and 'removeLines'.

    - -
    -

    Applies all the changes previously accumulated. These can be either 'includeText', 'insertLines', 'removeText', and 'removeLines'.

    - -

    Arguments

    deltasObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Creates a new Anchor to define a floating point in the document.

    - -
    -

    Creates a new Anchor to define a floating point in the document.

    - -

    Arguments

    rowNumber

    Required. The row number to use

    -
    columnNumber

    Required. The column number to use

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.getAllLines()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns all lines in the document as string array.

    - -
    -

    Returns all lines in the document as string array. Warning: The caller should not modify this array!

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.getLength()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the number of rows in the document.

    - -
    -

    Returns the number of rows in the document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.getLine(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns a verbatim copy of the given line as it is in the document

    - -
    -

    Returns a verbatim copy of the given line as it is in the document

    - -

    Arguments

    rowNumber

    Required. The row index to retrieve

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns an array of strings of the rows between firstRow and lastRow. This function is inclusive of lastRow.

    - -
    -

    Returns an array of strings of the rows between firstRow and lastRow. This function is inclusive of lastRow.

    - -

    Arguments

    firstRowNumber

    Required. The first row index to retrieve

    -
    lastRowNumber

    Required. The final row index to retrieve

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.getNewLineCharacter() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the newline character that's being used, depending on the value of newLineMode.

    - -
    -

    Returns the newline character that's being used, depending on the value of newLineMode.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.getNewLineMode() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the type of newlines being used; either windows, unix, or auto

    - -
    -

    Returns the type of newlines being used; either windows, unix, or auto

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.getTextRange(Range range)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Given a range within the document, this function returns all the text within that range as a single string.

    - -
    -

    Given a range within the document, this function returns all the text within that range as a single string.

    - -

    Arguments

    rangeRange

    Required. The range to work with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.getValue()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns all the lines in the document as a single string, split by the new line character.

    - -
    -

    Returns all the lines in the document as a single string, split by the new line character.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Converts an index position in a document to a {row, column} object.

    - -
    -

    Converts an index position in a document to a {row, column} object.

    -

    Index refers to the "absolute position" of a character in the document. For example:

    -
    var x = 0; // 10 characters, plus one for newline
    -var y = -1;
    -

    Here, y is an index 15: 11 characters for the first row, and 5 characters until y in the second.

    - -

    Arguments

    indexNumber

    Required. An index to convert

    -
    startRowNumber

    Required. =0 The row from which to start the conversion

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Inserts a block of text and the indicated position.

    - -
    -

    Inserts a block of text and the indicated position.

    - -

    Arguments

    positionObject

    Required. The position to start inserting at

    -
    textString

    Required. A chunk of text to insert

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Inserts text into the position at the current row. This method also triggers the 'change' event.

    - -
    -

    Inserts text into the position at the current row. This method also triggers the 'change' event.

    - -

    Arguments

    positionObject

    Required. The position to insert at

    -
    textString

    Required. A chunk of text

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Inserts the elements in lines into the document, starting at the row index given by row. This method also triggers the 'change' event.

    - -
    -

    Inserts the elements in lines into the document, starting at the row index given by row. This method also triggers the 'change' event.

    - -

    Arguments

    rowNumber

    Required. The index of the row to insert at

    -
    linesArray

    Required. An array of strings

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.insertNewLine(Object position) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Inserts a new line into the document at the current row's position. This method also triggers the 'change' event.

    - -
    -

    Inserts a new line into the document at the current row's position. This method also triggers the 'change' event.

    - -

    Arguments

    positionObject

    Required. The position to insert at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.isNewLine(String text)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if text is a newline character (either \r\n, \r, or \n).

    - -
    -

    Returns true if text is a newline character (either \r\n, \r, or \n).

    - -

    Arguments

    textString

    Required. The text to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Converts the {row, column} position in a document to the character's index.

    - -
    -

    Converts the {row, column} position in a document to the character's index.

    -

    Index refers to the "absolute position" of a character in the document. For example:

    -
    var x = 0; // 10 characters, plus one for newline
    -var y = -1;
    -

    Here, y is an index 15: 11 characters for the first row, and 5 characters until y in the second.

    - -

    Arguments

    posObject

    Required. The {row, column} to convert

    -
    startRowNumber

    Required. =0 The row from which to start the conversion

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Removes the range from the document.

    - -
    -

    Removes the range from the document.

    - -

    Arguments

    rangeRange

    Required. A specified Range to remove

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Removes the specified columns from the row. This method also triggers the 'change' event.

    - -
    -

    Removes the specified columns from the row. This method also triggers the 'change' event.

    - -

    Arguments

    rowNumber

    Required. The row to remove from

    -
    startColumnNumber

    Required. The column to start removing at

    -
    endColumnNumber

    Required. The column to stop removing at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Removes a range of full lines. This method also triggers the 'change' event.

    - -
    -

    Removes a range of full lines. This method also triggers the 'change' event.

    - -

    Arguments

    firstRowNumber

    Required. The first row to be removed

    -
    lastRowNumber

    Required. The last row to be removed

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.removeNewLine(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes the new line between row and the row immediately following it. This method also triggers the 'change' event.

    - -
    -

    Removes the new line between row and the row immediately following it. This method also triggers the 'change' event.

    - -

    Arguments

    rowNumber

    Required. The row to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Replaces a range in the document with the new text.

    - -
    -

    Replaces a range in the document with the new text.

    - -

    Arguments

    rangeRange

    Required. A specified Range to replace

    -
    textString

    Required. The new text to use as a replacement

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.revertDeltas(Object deltas)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Reverts any changes previously applied. These can be either 'includeText', 'insertLines', 'removeText', and 'removeLines'.

    - -
    -

    Reverts any changes previously applied. These can be either 'includeText', 'insertLines', 'removeText', and 'removeLines'.

    - -

    Arguments

    deltasObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.setNewLineMode(String newLineMode)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the new line mode.

    - -
    -

    Sets the new line mode.

    - -

    Arguments

    newLineModeString

    Required. The newline mode to use; can be either windows, unix, or auto

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Document.setValue(String text)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Replaces all the lines in the current Document with the value of text.

    - -
    -

    Replaces all the lines in the current Document with the value of text.

    - -

    Arguments

    textString

    Required. The text to use

    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/edit_session.html b/api/edit_session.html deleted file mode 100644 index 6df86cc0817..00000000000 --- a/api/edit_session.html +++ /dev/null @@ -1,3235 +0,0 @@ - -
    -
    -
    -
    -
    -

    EditSession -

    - -
    -
    -
    -
    -

    Stores all the data about Editor state providing easy way to change editors state.

    -

    EditSession can be attached to only one Document. Same Document can be attached to several EditSessions.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Sets up a new EditSession and associates it with the given Document and TextMode.

    - -
    -

    Sets up a new EditSession and associates it with the given Document and TextMode.

    - -

    Arguments

    textDocument | String

    Required. If text is a Document, it associates the EditSession with it. Otherwise, a new Document is created, with the initial text

    -
    modeTextMode

    Required. The initial language mode to use for the document

    -
    -
    -
    -
    -
    -
    -

    Events

    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("change", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the document changes.

    - -
    -

    Emitted when the document changes.

    - -

    Arguments

    eObject

    Required. An object containing a delta of information about the change.

    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeBackMarker", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when a back marker changes.

    - -
    -

    Emitted when a back marker changes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeBreakpoint", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the gutter changes, either by setting or removing breakpoints, or when the gutter decorations change.

    - -
    -

    Emitted when the gutter changes, either by setting or removing breakpoints, or when the gutter decorations change.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeFold", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when a code fold is added or removed.

    - -
    -

    Emitted when a code fold is added or removed.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeFrontMarker", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when a front marker changes.

    - -
    -

    Emitted when a front marker changes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeMode", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the current mode changes.

    - -
    -

    Emitted when the current mode changes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeOverwrite", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the ability to overwrite text changes, via EditSession.setOverwrite().

    - -
    -

    Emitted when the ability to overwrite text changes, via EditSession.setOverwrite().

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeScrollLeft", function(Number scrollLeft))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the scroll left changes.

    - -
    -

    Emitted when the scroll left changes.

    - -

    Arguments

    scrollLeftNumber

    Required. The new scroll left value

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeScrollTop", function(Number scrollTop))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the scroll top changes.

    - -
    -

    Emitted when the scroll top changes.

    - -

    Arguments

    scrollTopNumber

    Required. The new scroll top value

    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeWrapLimit", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the wrapping limit changes.

    - -
    -

    Emitted when the wrapping limit changes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("changeWrapMode", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the wrap mode changes.

    - -
    -

    Emitted when the wrap mode changes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.on("tokenizerUpdate", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when a background tokenizer asynchronously processes new rows.

    - -
    -

    Emitted when a background tokenizer asynchronously processes new rows.

    - -

    Arguments

    eObject

    Required. An object containing one property, "data", that contains information about the changing rows

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Adds a dynamic marker to the session.

    - -
    -

    Adds a dynamic marker to the session.

    - -

    Arguments

    markerObject

    Required. Object with update method

    -
    inFrontBoolean

    Required. Set to true to establish a front marker

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.addGutterDecoration(Number row, String className)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Adds className to the row, to be used for CSS stylings and whatnot.

    - -
    -

    Adds className to the row, to be used for CSS stylings and whatnot.

    - -

    Arguments

    rowNumber

    Required. The row number

    -
    classNameString

    Required. The class to add

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Adds a new marker to the given Range. If inFront is true, a front marker is defined, and the 'changeFrontMarker' event fires; otherwise, the 'changeBackMarker' event fires.

    - -
    -

    Adds a new marker to the given Range. If inFront is true, a front marker is defined, and the 'changeFrontMarker' event fires; otherwise, the 'changeBackMarker' event fires.

    - -

    Arguments

    rangeRange

    Required. Define the range of the marker

    -
    clazzString

    Required. Set the CSS class for the marker

    -
    typeFunction | String

    Required. Identify the type of the marker

    -
    inFrontBoolean

    Required. Set to true to establish a front marker

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.clearAnnotations()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Clears all the annotations for this session. This function also triggers the 'changeAnnotation' event.

    - -
    -

    Clears all the annotations for this session. This function also triggers the 'changeAnnotation' event.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.clearBreakpoint(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes a breakpoint on the row number given by rows. This function also emits the 'changeBreakpoint' event.

    - -
    -

    Removes a breakpoint on the row number given by rows. This function also emits the 'changeBreakpoint' event.

    - -

    Arguments

    rowNumber

    Required. A row index

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.clearBreakpoints()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes all breakpoints on the rows. This function also emites the 'changeBreakpoint' event.

    - -
    -

    Removes all breakpoints on the rows. This function also emites the 'changeBreakpoint' event.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    For the given document row and column, returns the screen column.

    - -
    -

    For the given document row and column, returns the screen column.

    - -

    Arguments

    rowNumber

    Required.

    -
    docColumnNumber

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.documentToScreenPosition(Number docRow, Number docColumn) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Converts document coordinates to screen coordinates. This takes into account code folding, word wrap, tab size, and any other visual modifications.

    - -
    -

    Converts document coordinates to screen coordinates. This takes into account code folding, word wrap, tab size, and any other visual modifications.

    - -

    Arguments

    docRowNumber

    Required. The document row to check

    -
    docColumnNumber

    Required. The document column to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.documentToScreenRow(Number docRow, Number docColumn)
      • -
      -
        -
      -
    • -
    -
    -
    -

    For the given document row and column, returns the screen row.

    - -
    -

    For the given document row and column, returns the screen row.

    - -

    Arguments

    docRowNumber

    Required.

    -
    docColumnNumber

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Duplicates all the text between firstRow and lastRow.

    - -
    -

    Duplicates all the text between firstRow and lastRow.

    - -

    Arguments

    firstRowNumber

    Required. The starting row to duplicate

    -
    lastRowNumber

    Required. The final row to duplicate

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getAnnotations() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the annotations for the EditSession.

    - -
    -

    Returns the annotations for the EditSession.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Gets the range of a word, including its right whitespace.

    - -
    -

    Gets the range of a word, including its right whitespace.

    - -

    Arguments

    rowNumber

    Required. The row number to start from

    -
    columnNumber

    Required. The column number to start from

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getBreakpoints() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an array of numbers, indicating which rows have breakpoints.

    - -
    -

    Returns an array of numbers, indicating which rows have breakpoints.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getDocument() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the Document associated with this session.

    - -
    -

    Returns the Document associated with this session.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getDocumentLastRowColumn(Number docRow, Number docColumn)
      • -
      -
        -
      -
    • -
    -
    -
    -

    For the given document row and column, this returns the column position of the last screen row.

    - -
    -

    For the given document row and column, this returns the column position of the last screen row.

    - -

    Arguments

    docRowNumber

    Required.

    -
    docColumnNumber

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getDocumentLastRowColumnPosition(Number docRow, Number docColumn)
      • -
      -
        -
      -
    • -
    -
    -
    -

    For the given document row and column, this returns the document position of the last row.

    - -
    -

    For the given document row and column, this returns the document position of the last row.

    - -

    Arguments

    docRowNumber

    Required.

    -
    docColumnNumber

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getLength() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the number of rows in the document.

    - -
    -

    Returns the number of rows in the document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns a verbatim copy of the given line as it is in the document

    - -
    -

    Returns a verbatim copy of the given line as it is in the document

    - -

    Arguments

    rowNumber

    Required. The row to retrieve from

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Returns an array of strings of the rows between firstRow and lastRow. This function is inclusive of lastRow.

    - -
    -

    Returns an array of strings of the rows between firstRow and lastRow. This function is inclusive of lastRow.

    - -

    Arguments

    firstRowNumber

    Required. The first row index to retrieve

    -
    lastRowNumber

    Required. The final row index to retrieve

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getMarkers(Boolean inFront) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an array containing the IDs of all the markers, either front or back.

    - -
    -

    Returns an array containing the IDs of all the markers, either front or back.

    - -

    Arguments

    inFrontBoolean

    Required. If true, indicates you only want front markers; false indicates only back markers

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getMode() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current text mode.

    - -
    -

    Returns the current text mode.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getNewLineMode() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current new line mode.

    - -
    -

    Returns the current new line mode.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getOverwrite()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if overwrites are enabled; false otherwise.

    - -
    -

    Returns true if overwrites are enabled; false otherwise.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns number of screenrows in a wrapped line.

    - -
    -

    Returns number of screenrows in a wrapped line.

    - -

    Arguments

    rowNumber

    Required. The row number to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getRowSplitData(Object row) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    For the given row, this returns the split data.

    - -
    -

    For the given row, this returns the split data.

    - -

    Arguments

    rowObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getScreenLastRowColumn(Number screenRow) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the position (on screen) for the last character in the provided screen row.

    - -
    -

    Returns the position (on screen) for the last character in the provided screen row.

    - -

    Arguments

    screenRowNumber

    Required. The screen row to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getScreenLength() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the length of the screen.

    - -
    -

    Returns the length of the screen.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getScreenTabSize(Number screenColumn) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    The distance to the next tab stop at the specified screen column.

    - -
    -

    The distance to the next tab stop at the specified screen column.

    - -

    Arguments

    screenColumnNumber

    Required. The screen column to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getScreenWidth() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the width of the screen.

    - -
    -

    Returns the width of the screen.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getScrollLeft() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the value of the distance between the left of the editor and the leftmost part of the visible content.

    - -
    -

    Returns the value of the distance between the left of the editor and the leftmost part of the visible content.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getScrollTop() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the value of the distance between the top of the editor and the topmost part of the visible content.

    - -
    -

    Returns the value of the distance between the top of the editor and the topmost part of the visible content.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getSelection()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns selection object.

    - -
    -

    Returns selection object.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getState(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the state of tokenization at the end of a row.

    - -
    -

    Returns the state of tokenization at the end of a row.

    - -

    Arguments

    rowNumber

    Required. The row to start at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getTabSize()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current tab size.

    - -
    -

    Returns the current tab size.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getTabString()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current value for tabs. If the user is using soft tabs, this will be a series of spaces (defined by getTabSize()); otherwise it's simply '\t'.

    - -
    -

    Returns the current value for tabs. If the user is using soft tabs, this will be a series of spaces (defined by getTabSize()); otherwise it's simply '\t'.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getTextRange(Range range) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Given a range within the document, this function returns all the text within that range as a single string.

    - -
    -

    Given a range within the document, this function returns all the text within that range as a single string.

    - -

    Arguments

    rangeRange

    Required. The range to work with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns an object indicating the token at the current row. The object has two properties: index and start.

    - -
    -

    Returns an object indicating the token at the current row. The object has two properties: index and start.

    - -

    Arguments

    rowNumber

    Required. The row number to retrieve from

    -
    columnNumber

    Required. The column number to retrieve from

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getTokens(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Starts tokenizing at the row indicated. Returns a list of objects of the tokenized rows.

    - -
    -

    Starts tokenizing at the row indicated. Returns a list of objects of the tokenized rows.

    - -

    Arguments

    rowNumber

    Required. The row to start at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getUndoManager()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current undo manager.

    - -
    -

    Returns the current undo manager.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getUseSoftTabs() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if soft tabs are being used, false otherwise.

    - -
    -

    Returns true if soft tabs are being used, false otherwise.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getUseWorker()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if workers are being used.

    - -
    -

    Returns true if workers are being used.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getUseWrapMode() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if wrap mode is being used; false otherwise.

    - -
    -

    Returns true if wrap mode is being used; false otherwise.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getValue() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current Document as a string.

    - -
    -

    Returns the current Document as a string.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Given a starting row and column, this method returns the Range of the first word boundary it finds.

    - -
    -

    Given a starting row and column, this method returns the Range of the first word boundary it finds.

    - -

    Arguments

    rowNumber

    Required. The row to start at

    -
    columnNumber

    Required. The column to start at

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getWrapLimit() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the value of wrap limit.

    - -
    -

    Returns the value of wrap limit.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.getWrapLimitRange() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an object that defines the minimum and maximum of the wrap limit; it looks something like this:

    - -
    -

    Returns an object that defines the minimum and maximum of the wrap limit; it looks something like this:

    -

    { min: wrapLimitRange_min, max: wrapLimitRange_max }

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.highlight()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.highlightLines()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Indents all the rows, from startRow to endRow (inclusive), by prefixing each row with the token in indentString.

    - -
    -

    Indents all the rows, from startRow to endRow (inclusive), by prefixing each row with the token in indentString.

    -

    If indentString contains the '\t' character, it's replaced by whatever is defined by getTabString().

    - -

    Arguments

    startRowNumber

    Required. Starting row

    -
    endRowNumber

    Required. Ending row

    -
    indentStringString

    Required. The indent token

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Inserts a block of text and the indicated position.

    - -
    -

    Inserts a block of text and the indicated position.

    - -

    Arguments

    positionObject

    Required. The position {row, column} to start inserting at

    -
    textString

    Required. A chunk of text to insert

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.isTabStop(Object position)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the character at the position is a soft tab.

    - -
    -

    Returns true if the character at the position is a soft tab.

    - -

    Arguments

    positionObject

    Required. The position to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Shifts all the lines in the document down one, starting from firstRow and ending at lastRow.

    - -
    -

    Shifts all the lines in the document down one, starting from firstRow and ending at lastRow.

    - -

    Arguments

    firstRowNumber

    Required. The starting row to move down

    -
    lastRowNumber

    Required. The final row to move down

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Shifts all the lines in the document up one, starting from firstRow and ending at lastRow.

    - -
    -

    Shifts all the lines in the document up one, starting from firstRow and ending at lastRow.

    - -

    Arguments

    firstRowNumber

    Required. The starting row to move up

    -
    lastRowNumber

    Required. The final row to move up

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Moves a range of text from the given range to the given position. toPosition is an object that looks like this:

    -
       { row: newRowLocation, column: newColumnLocation }
    - -
    -

    Moves a range of text from the given range to the given position. toPosition is an object that looks like this:

    -
       { row: newRowLocation, column: newColumnLocation }
    - -

    Arguments

    fromRangeRange

    Required. The range of text you want moved within the document

    -
    toPositionObject

    Required. The location (row and column) where you want to move the text to

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.onChange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.onChangeFold()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.onReloadTokenizer(Object e)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Reloads all the tokens on the current session. This function calls BackgroundTokenizer.start () to all the rows; it also emits the 'tokenizerUpdate' event.

    - -
    -

    Reloads all the tokens on the current session. This function calls BackgroundTokenizer.start () to all the rows; it also emits the 'tokenizerUpdate' event.

    - -

    Arguments

    eObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.outdentRows(Range range)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Outdents all the rows defined by the start and end properties of range.

    - -
    -

    Outdents all the rows defined by the start and end properties of range.

    - -

    Arguments

    rangeRange

    Required. A range of rows

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.redo()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Re-implements a previously undone change to your document.

    - -
    -

    Re-implements a previously undone change to your document.

    - -

    Arguments

    deltasArray

    Required. An array of previous changes

    -
    dontSelectBoolean

    Required. If true, doesn't select the range of where the change occurred

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Removes the range from the document.

    - -
    -

    Removes the range from the document.

    - -

    Arguments

    rangeRange

    Required. A specified Range to remove

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.removeGutterDecoration(Number row, String className)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes className from the row.

    - -
    -

    Removes className from the row.

    - -

    Arguments

    rowNumber

    Required. The row number

    -
    classNameString

    Required. The class to add

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.removeMarker(Number markerId)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes the marker with the specified ID. If this marker was in front, the 'changeFrontMarker' event is emitted. If the marker was in the back, the 'changeBackMarker' event is emitted.

    - -
    -

    Removes the marker with the specified ID. If this marker was in front, the 'changeFrontMarker' event is emitted. If the marker was in the back, the 'changeBackMarker' event is emitted.

    - -

    Arguments

    markerIdNumber

    Required. A number representing a marker

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Replaces a range in the document with the new text.

    - -
    -

    Replaces a range in the document with the new text.

    - -

    Arguments

    rangeRange

    Required. A specified Range to replace

    -
    textString

    Required. The new text to use as a replacement

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.reset()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.resetCaches()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.screenToDocumentColumn()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.screenToDocumentPosition(Number screenRow, Number screenColumn) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Converts characters coordinates on the screen to characters coordinates within the document. This takes into account code folding, word wrap, tab size, and any other visual modifications.

    - -
    -

    Converts characters coordinates on the screen to characters coordinates within the document. This takes into account code folding, word wrap, tab size, and any other visual modifications.

    - -

    Arguments

    screenRowNumber

    Required. The screen row to check

    -
    screenColumnNumber

    Required. The screen column to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.screenToDocumentRow()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setAnnotations(Array annotations)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets annotations for the EditSession. This functions emits the 'changeAnnotation' event.

    - -
    -

    Sets annotations for the EditSession. This functions emits the 'changeAnnotation' event.

    - -

    Arguments

    annotationsArray

    Required. A list of annotations

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setBreakpoint(Number row, String className)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets a breakpoint on the row number given by rows. This function also emites the 'changeBreakpoint' event.

    - -
    -

    Sets a breakpoint on the row number given by rows. This function also emites the 'changeBreakpoint' event.

    - -

    Arguments

    rowNumber

    Required. A row index

    -
    classNameString

    Required. Class of the breakpoint

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setBreakpoints(Array rows)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets a breakpoint on every row number given by rows. This function also emites the 'changeBreakpoint' event.

    - -
    -

    Sets a breakpoint on every row number given by rows. This function also emites the 'changeBreakpoint' event.

    - -

    Arguments

    rowsArray

    Required. An array of row indices

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setDocument(Document doc)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the EditSession to point to a new Document. If a BackgroundTokenizer exists, it also points to doc.

    - -
    -

    Sets the EditSession to point to a new Document. If a BackgroundTokenizer exists, it also points to doc.

    - -

    Arguments

    docDocument

    Required. The new Document to use

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setMode()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setNewLineMode(String newLineMode)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the new line mode.

    - -
    -

    Sets the new line mode.

    - -

    Arguments

    newLineModeString

    Required. The newline mode to use; can be either windows, unix, or auto

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setOverwrite(Boolean overwrite)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Pass in true to enable overwrites in your session, or false to disable.

    - -
    -

    Pass in true to enable overwrites in your session, or false to disable.

    -

    If overwrites is enabled, any text you enter will type over any text after it. If the value of overwrite changes, this function also emits the changeOverwrite event.

    - -

    Arguments

    overwriteBoolean

    Required. Defines wheter or not to set overwrites

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setScrollLeft(Object scrollLeft)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the value of the distance between the left of the editor and the leftmost part of the visible content.

    - -
    -

    Sets the value of the distance between the left of the editor and the leftmost part of the visible content.

    - -

    Arguments

    scrollLeftObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setScrollTop(Number scrollTop)
      • -
      -
        -
      -
    • -
    -
    -
    -

    This function sets the scroll top value. It also emits the 'changeScrollTop' event.

    - -
    -

    This function sets the scroll top value. It also emits the 'changeScrollTop' event.

    - -

    Arguments

    scrollTopNumber

    Required. The new scroll top value

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setTabSize(Number tabSize)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Set the number of spaces that define a soft tab; for example, passing in 4 transforms the soft tabs to be equivalent to four spaces. This function also emits the changeTabSize event.

    - -
    -

    Set the number of spaces that define a soft tab; for example, passing in 4 transforms the soft tabs to be equivalent to four spaces. This function also emits the changeTabSize event.

    - -

    Arguments

    tabSizeNumber

    Required. The new tab size

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setUndoManager(UndoManager undoManager)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the undo manager.

    - -
    -

    Sets the undo manager.

    - -

    Arguments

    undoManagerUndoManager

    Required. The new undo manager

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setUndoSelect(Boolean enable)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Enables or disables highlighting of the range where an undo occured.

    - -
    -

    Enables or disables highlighting of the range where an undo occured.

    - -

    Arguments

    enableBoolean

    Required. If true, selects the range of the reinserted change

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setUseSoftTabs(Boolean useSoftTabs)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Pass true to enable the use of soft tabs. Soft tabs means you're using spaces instead of the tab character ('\t').

    - -
    -

    Pass true to enable the use of soft tabs. Soft tabs means you're using spaces instead of the tab character ('\t').

    - -

    Arguments

    useSoftTabsBoolean

    Required. Value indicating whether or not to use soft tabs

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setUseWorker(Boolean useWorker)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Identifies if you want to use a worker for the EditSession.

    - -
    -

    Identifies if you want to use a worker for the EditSession.

    - -

    Arguments

    useWorkerBoolean

    Required. Set to true to use a worker

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setUseWrapMode(Boolean useWrapMode)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets whether or not line wrapping is enabled. If useWrapMode is different than the current value, the 'changeWrapMode' event is emitted.

    - -
    -

    Sets whether or not line wrapping is enabled. If useWrapMode is different than the current value, the 'changeWrapMode' event is emitted.

    - -

    Arguments

    useWrapModeBoolean

    Required. Enable (or disable) wrap mode

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.setValue(String text)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the session text.

    - -
    -

    Sets the session text.

    - -

    Arguments

    textString

    Required. The new text to place

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Sets the boundaries of wrap. Either value can be null to have an unconstrained wrap, or, they can be the same number to pin the limit. If the wrap limits for min or max are different, this method also emits the 'changeWrapMode' event.

    - -
    -

    Sets the boundaries of wrap. Either value can be null to have an unconstrained wrap, or, they can be the same number to pin the limit. If the wrap limits for min or max are different, this method also emits the 'changeWrapMode' event.

    - -

    Arguments

    minNumber

    Required. The minimum wrap value (the left side wrap)

    -
    maxNumber

    Required. The maximum wrap value (the right side wrap)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.toggleOverwrite()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the value of overwrite to the opposite of whatever it currently is.

    - -
    -

    Sets the value of overwrite to the opposite of whatever it currently is.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.toString() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current Document as a string.

    - -
    -

    Returns the current Document as a string.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • EditSession.undo()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Reverts previous changes to your document.

    - -
    -

    Reverts previous changes to your document.

    - -

    Arguments

    deltasArray

    Required. An array of previous changes

    -
    dontSelectBoolean

    Required. If true, doesn't select the range of where the change occurred

    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/editor.html b/api/editor.html deleted file mode 100644 index 46216eb60f0..00000000000 --- a/api/editor.html +++ /dev/null @@ -1,4689 +0,0 @@ - -
    -
    -
    -
    -
    -

    Editor -

    - -
    -
    -
    -
    -

    The main entry point into the Ace functionality.

    -

    The Editor manages the EditSession (which manages Documents), as well as the VirtualRenderer, which draws everything to the screen.

    -

    Event sessions dealing with the mouse and keyboard are bubbled up from Document to the Editor, which decides what to do with them.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Creates a new Editor object.

    - -
    -

    Creates a new Editor object.

    - -

    Arguments

    rendererVirtualRenderer

    Required. Associated VirtualRenderer that draws everything

    -
    sessionEditSession

    Required. The EditSession to refer to

    -
    -
    -
    -
    -
    -
    -

    Events

    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.on("blur", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted once the editor has been blurred.

    - -
    -

    Emitted once the editor has been blurred.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.on("change", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted whenever the document is changed.

    - -
    -

    Emitted whenever the document is changed.

    - -

    Arguments

    eObject

    Required. Contains a single property, data, which has the delta of changes

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.on("changeSelectionStyle", function(Object data))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the selection style changes, via Editor.setSelectionStyle().

    - -
    -

    Emitted when the selection style changes, via Editor.setSelectionStyle().

    - -

    Arguments

    dataObject

    Required. Contains one property, data, which indicates the new selection style

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.on("changeSession", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted whenever the EditSession changes.

    - -
    -

    Emitted whenever the EditSession changes.

    - -

    Arguments

    eObject

    Required. An object with two properties, oldSession and session, that represent the old and new EditSessions.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.on("copy", function(String text))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when text is copied.

    - -
    -

    Emitted when text is copied.

    - -

    Arguments

    textString

    Required. The copied text

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.on("focus", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted once the editor comes into focus.

    - -
    -

    Emitted once the editor comes into focus.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.on("paste", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when text is pasted.

    - -
    -

    Emitted when text is pasted.

    - -

    Arguments

    eObject

    Required. An object which contains one property, text, that represents the text to be pasted. Editing this property will alter the text that is pasted.

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.addSelectionMarker(Range orientedRange) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Adds the selection and cursor.

    - -
    -

    Adds the selection and cursor.

    - -

    Arguments

    orientedRangeRange

    Required. A range containing a cursor

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.alignCursors()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Aligns the cursors or selected text.

    - -
    -

    Aligns the cursors or selected text.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.blockOutdent()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Outdents the current line.

    - -
    -

    Outdents the current line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.blur()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Blurs the current textInput.

    - -
    -

    Blurs the current textInput.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.centerSelection()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Attempts to center the current selection on the screen.

    - -
    -

    Attempts to center the current selection on the screen.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.clearSelection()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Empties the selection (by de-selecting it). This function also emits the 'changeSelection' event.

    - -
    -

    Empties the selection (by de-selecting it). This function also emits the 'changeSelection' event.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.copyLinesDown() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Copies all the selected lines down one row.

    - -
    -

    Copies all the selected lines down one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.copyLinesUp() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Copies all the selected lines up one row.

    - -
    -

    Copies all the selected lines up one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.destroy()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Cleans up the entire editor.

    - -
    -

    Cleans up the entire editor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.duplicateSelection()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.execCommand()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.exitMultiSelectMode()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes all the selections except the last added one.

    - -
    -

    Removes all the selections except the last added one.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Attempts to find needle within the document. For more information on options, see Search.

    - -
    -

    Attempts to find needle within the document. For more information on options, see Search.

    - -

    Arguments

    needleString

    Required. The text to search for (optional)

    -
    optionsObject

    Required. An object defining various search properties

    -
    animateBoolean

    Required. If true animate scrolling

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Finds and selects all the occurrences of needle.

    - -
    -

    Finds and selects all the occurrences of needle.

    - -

    Arguments

    TheString

    Required. Text to find

    -
    TheObject

    Required. Search options

    -
    keepsBoolean

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Performs another search for needle in the document. For more information on options, see Search.

    - -
    -

    Performs another search for needle in the document. For more information on options, see Search.

    - -

    Arguments

    optionsObject

    Required. Search options

    -
    animateBoolean

    Required. If true animate scrolling

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Performs a search for needle backwards. For more information on options, see Search.

    - -
    -

    Performs a search for needle backwards. For more information on options, see Search.

    - -

    Arguments

    optionsObject

    Required. Search options

    -
    animateBoolean

    Required. If true animate scrolling

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.focus()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Brings the current textInput into focus.

    - -
    -

    Brings the current textInput into focus.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Executes a command for each selection range.

    - -
    -

    Executes a command for each selection range.

    - -

    Arguments

    cmdString

    Required. The command to execute

    -
    argsString

    Required. Any arguments for the command

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getAnimatedScroll()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getBehavioursEnabled() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the behaviors are currently enabled. "Behaviors" in this case is the auto-pairing of special characters, like quotation marks, parenthesis, or brackets.

    - -
    -

    Returns true if the behaviors are currently enabled. "Behaviors" in this case is the auto-pairing of special characters, like quotation marks, parenthesis, or brackets.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getCopyText() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the string of text currently highlighted.

    - -
    -

    Returns the string of text currently highlighted.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getCursorPosition() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Gets the current position of the cursor.

    - -
    -

    Gets the current position of the cursor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getCursorPositionScreen() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the screen position of the cursor.

    - -
    -

    Returns the screen position of the cursor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getDisplayIndentGuides()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getDragDelay() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current mouse drag delay.

    - -
    -

    Returns the current mouse drag delay.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getFadeFoldWidgets()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getFirstVisibleRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the index of the first visible row.

    - -
    -

    Returns the index of the first visible row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getHighlightActiveLine() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if current lines are always highlighted.

    - -
    -

    Returns true if current lines are always highlighted.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getHighlightGutterLine()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getHighlightSelectedWord() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if currently highlighted words are to be highlighted.

    - -
    -

    Returns true if currently highlighted words are to be highlighted.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getKeyboardHandler() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the keyboard handler, such as "vim" or "windows".

    - -
    -

    Returns the keyboard handler, such as "vim" or "windows".

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getLastSearchOptions() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an object containing all the search options. For more information on options, see Search.

    - -
    -

    Returns an object containing all the search options. For more information on options, see Search.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getLastVisibleRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the index of the last visible row.

    - -
    -

    Returns the index of the last visible row.

    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getOverwrite() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if overwrites are enabled; false otherwise.

    - -
    -

    Returns true if overwrites are enabled; false otherwise.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getPrintMarginColumn() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the column number of where the print margin is.

    - -
    -

    Returns the column number of where the print margin is.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getReadOnly() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the editor is set to read-only mode.

    - -
    -

    Returns true if the editor is set to read-only mode.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getScrollSpeed() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the value indicating how fast the mouse scroll speed is (in milliseconds).

    - -
    -

    Returns the value indicating how fast the mouse scroll speed is (in milliseconds).

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getSelection() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns selection object.

    - -
    -

    Returns selection object.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getSelectionRange() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the Range for the selected text.

    - -
    -

    Returns the Range for the selected text.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getSelectionStyle() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current selection style.

    - -
    -

    Returns the current selection style.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns the current session being used.

    - -
    -

    Returns the current session being used.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getShowFoldWidgets() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the fold widgets are shown.

    - -
    -

    Returns true if the fold widgets are shown.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getShowInvisibles() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if invisible characters are being shown.

    - -
    -

    Returns true if invisible characters are being shown.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getShowPrintMargin() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the print margin is being shown.

    - -
    -

    Returns true if the print margin is being shown.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getTheme() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the path of the current theme.

    - -
    -

    Returns the path of the current theme.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getValue() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current session's content.

    - -
    -

    Returns the current session's content.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.getWrapBehavioursEnabled()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the wrapping behaviors are currently enabled.

    - -
    -

    Returns true if the wrapping behaviors are currently enabled.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Moves the cursor to the specified line number, and also into the indicated column.

    - -
    -

    Moves the cursor to the specified line number, and also into the indicated column.

    - -

    Arguments

    lineNumberNumber

    Required. The line number to go to

    -
    columnNumber

    Required. A column number to go to

    -
    animateBoolean

    Required. If true animates scrolling

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.gotoPageDown()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Shifts the document to wherever "page down" is, as well as moving the cursor position.

    - -
    -

    Shifts the document to wherever "page down" is, as well as moving the cursor position.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.gotoPageUp()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Shifts the document to wherever "page up" is, as well as moving the cursor position.

    - -
    -

    Shifts the document to wherever "page up" is, as well as moving the cursor position.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.indent()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Indents the current line.

    - -
    -

    Indents the current line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.insert(String text)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Inserts text into wherever the cursor is pointing.

    - -
    -

    Inserts text into wherever the cursor is pointing.

    - -

    Arguments

    textString

    Required. The new text to add

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.isFocused() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the current textInput is in focus.

    - -
    -

    Returns true if the current textInput is in focus.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Indicates if the entire row is currently visible on the screen.

    - -
    -

    Indicates if the entire row is currently visible on the screen.

    - -

    Arguments

    rowNumber

    Required. The row to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Indicates if the row is currently visible on the screen.

    - -
    -

    Indicates if the row is currently visible on the screen.

    - -

    Arguments

    rowNumber

    Required. The row to check

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.jumpToMatching(Object select)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor's row and column to the next matching bracket.

    - -
    -

    Moves the cursor's row and column to the next matching bracket.

    - -

    Arguments

    selectObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.modifyNumber(Number amount)
      • -
      -
        -
      -
    • -
    -
    -
    -

    If the character before the cursor is a number, this functions changes its value by amount.

    - -
    -

    If the character before the cursor is a number, this functions changes its value by amount.

    - -

    Arguments

    amountNumber

    Required. The value to change the numeral by (can be negative to decrease value)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the specified row and column. Note that this does not de-select the current selection.

    - -
    -

    Moves the cursor to the specified row and column. Note that this does not de-select the current selection.

    - -

    Arguments

    rowNumber

    Required. The new row number

    -
    columnNumber

    Required. The new column number

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.moveCursorToPosition(Object pos)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the position indicated by pos.row and pos.column.

    - -
    -

    Moves the cursor to the position indicated by pos.row and pos.column.

    - -

    Arguments

    posObject

    Required. An object with two properties, row and column

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.moveLinesDown() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Shifts all the selected lines down one row.

    - -
    -

    Shifts all the selected lines down one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.moveLinesUp() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Shifts all the selected lines up one row.

    - -
    -

    Shifts all the selected lines up one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.moveText()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateDown(Number times)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor down in the document the specified number of times. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor down in the document the specified number of times. Note that this does de-select the current selection.

    - -

    Arguments

    timesNumber

    Required. The number of times to change navigation

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateFileEnd()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the end of the current file. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor to the end of the current file. Note that this does de-select the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateFileStart()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the start of the current file. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor to the start of the current file. Note that this does de-select the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateLeft(Number times)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor left in the document the specified number of times. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor left in the document the specified number of times. Note that this does de-select the current selection.

    - -

    Arguments

    timesNumber

    Required. The number of times to change navigation

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateLineEnd()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the end of the current line. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor to the end of the current line. Note that this does de-select the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateLineStart()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the start of the current line. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor to the start of the current line. Note that this does de-select the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateRight(Number times)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor right in the document the specified number of times. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor right in the document the specified number of times. Note that this does de-select the current selection.

    - -

    Arguments

    timesNumber

    Required. The number of times to change navigation

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the specified row and column. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor to the specified row and column. Note that this does de-select the current selection.

    - -

    Arguments

    rowNumber

    Required. The new row number

    -
    columnNumber

    Required. The new column number

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateUp(Number times)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor up in the document the specified number of times. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor up in the document the specified number of times. Note that this does de-select the current selection.

    - -

    Arguments

    timesNumber

    Required. The number of times to change navigation

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateWordLeft()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the word immediately to the left of the current position. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor to the word immediately to the left of the current position. Note that this does de-select the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.navigateWordRight()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the word immediately to the right of the current position. Note that this does de-select the current selection.

    - -
    -

    Moves the cursor to the word immediately to the right of the current position. Note that this does de-select the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onBlur()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeAnnotation()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeBackMarker()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeBreakpoint()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeFold()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeFrontMarker()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeMode()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeWrapLimit()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onChangeWrapMode()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onCommandKey()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onCompositionEnd()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onCompositionStart()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onCompositionUpdate()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onCopy()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Called whenever a text "copy" happens.

    - -
    -

    Called whenever a text "copy" happens.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onCursorChange()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the selection changes.

    - -
    -

    Emitted when the selection changes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onCut()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Called whenever a text "cut" happens.

    - -
    -

    Called whenever a text "cut" happens.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onDocumentChange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onFocus()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onPaste(String text)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Called whenever a text "paste" happens.

    - -
    -

    Called whenever a text "paste" happens.

    - -

    Arguments

    textString

    Required. The pasted text

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onScrollLeftChange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onScrollTopChange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onSelectionChange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onTextInput()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.onTokenizerUpdate()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.redo()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Perform a redo operation on the document, reimplementing the last change.

    - -
    -

    Perform a redo operation on the document, reimplementing the last change.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.remove(String dir)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes words of text from the editor. A "word" is defined as a string of characters bookended by whitespace.

    - -
    -

    Removes words of text from the editor. A "word" is defined as a string of characters bookended by whitespace.

    - -

    Arguments

    dirString

    Required. The direction of the deletion to occur, either "left" or "right"

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.removeLines()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes all the lines in the current selection

    - -
    -

    Removes all the lines in the current selection

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.removeSelectionMarker(Range The)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes the selection marker.

    - -
    -

    Removes the selection marker.

    - -

    Arguments

    TheRange

    Required. selection range added with addSelectionMarker().

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.removeToLineEnd()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes all the words to the right of the current selection, until the end of the line.

    - -
    -

    Removes all the words to the right of the current selection, until the end of the line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.removeToLineStart()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes all the words to the left of the current selection, until the start of the line.

    - -
    -

    Removes all the words to the left of the current selection, until the start of the line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.removeWordLeft()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes the word directly to the left of the current selection.

    - -
    -

    Removes the word directly to the left of the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.removeWordRight()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes the word directly to the right of the current selection.

    - -
    -

    Removes the word directly to the right of the current selection.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Replaces the first occurrence of options.needle with the value in replacement.

    - -
    -

    Replaces the first occurrence of options.needle with the value in replacement.

    - -

    Arguments

    replacementString

    Required. The text to replace with

    -
    optionsObject

    Required. The Search options to use

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Replaces all occurrences of options.needle with the value in replacement.

    - -
    -

    Replaces all occurrences of options.needle with the value in replacement.

    - -

    Arguments

    replacementString

    Required. The text to replace with

    -
    optionsObject

    Required. The Search options to use

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Triggers a resize of the editor.

    - -
    -

    Triggers a resize of the editor.

    - -

    Arguments

    forceBoolean

    Required. If true, recomputes the size, even if the height and width haven't changed

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.revealRange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.scrollPageDown()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Scrolls the document to wherever "page down" is, without changing the cursor position.

    - -
    -

    Scrolls the document to wherever "page down" is, without changing the cursor position.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.scrollPageUp()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Scrolls the document to wherever "page up" is, without changing the cursor position.

    - -
    -

    Scrolls the document to wherever "page up" is, without changing the cursor position.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Scrolls to a line. If center is true, it puts the line in middle of screen (or attempts to).

    - -
    -

    Scrolls to a line. If center is true, it puts the line in middle of screen (or attempts to).

    - -

    Arguments

    lineNumber

    Required. The line to scroll to

    -
    centerBoolean

    Required. If true

    -
    animateBoolean

    Required. If true animates scrolling

    -
    callbackFunction

    Required. Function to be called when the animation has finished

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.scrollToRow(Object row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the editor to the specified row.

    - -
    -

    Moves the editor to the specified row.

    - -

    Arguments

    rowObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.selectAll()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Selects all the text in editor.

    - -
    -

    Selects all the text in editor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Finds the next occurrence of text in an active selection and adds it to the selections.

    - -
    -

    Finds the next occurrence of text in an active selection and adds it to the selections.

    - -

    Arguments

    dirNumber

    Required. The direction of lines to select: -1 for up, 1 for down

    -
    skipBoolean

    Required. If true, removes the active selection range

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Adds a cursor above or below the active cursor.

    - -
    -

    Adds a cursor above or below the active cursor.

    - -

    Arguments

    dirNumber

    Required. The direction of lines to select: -1 for up, 1 for down

    -
    skipBoolean

    Required. If true, removes the active selection range

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.selectPageDown()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Selects the text from the current position of the document until where a "page down" finishes.

    - -
    -

    Selects the text from the current position of the document until where a "page down" finishes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.selectPageUp()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Selects the text from the current position of the document until where a "page up" finishes.

    - -
    -

    Selects the text from the current position of the document until where a "page up" finishes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setAnimatedScroll()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setBehavioursEnabled(Boolean enabled)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Specifies whether to use behaviors or not. "Behaviors" in this case is the auto-pairing of special characters, like quotation marks, parenthesis, or brackets.

    - -
    -

    Specifies whether to use behaviors or not. "Behaviors" in this case is the auto-pairing of special characters, like quotation marks, parenthesis, or brackets.

    - -

    Arguments

    enabledBoolean

    Required. Enables or disables behaviors

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setDisplayIndentGuides()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setDragDelay(Number dragDelay)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the delay (in milliseconds) of the mouse drag.

    - -
    -

    Sets the delay (in milliseconds) of the mouse drag.

    - -

    Arguments

    dragDelayNumber

    Required. A value indicating the new delay

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setFadeFoldWidgets()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setFontSize(Number size)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Set a new font size (in pixels) for the editor text.

    - -
    -

    Set a new font size (in pixels) for the editor text.

    - -

    Arguments

    sizeNumber

    Required. A font size

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setHighlightActiveLine(Boolean shouldHighlight)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Determines whether or not the current line should be highlighted.

    - -
    -

    Determines whether or not the current line should be highlighted.

    - -

    Arguments

    shouldHighlightBoolean

    Required. Set to true to highlight the current line

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setHighlightGutterLine()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setHighlightSelectedWord(Boolean shouldHighlight)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Determines if the currently selected word should be highlighted.

    - -
    -

    Determines if the currently selected word should be highlighted.

    - -

    Arguments

    shouldHighlightBoolean

    Required. Set to true to highlight the currently selected word

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setKeyboardHandler(String keyboardHandler)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets a new key handler, such as "vim" or "windows".

    - -
    -

    Sets a new key handler, such as "vim" or "windows".

    - -

    Arguments

    keyboardHandlerString

    Required. The new key handler

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setOverwrite(Boolean overwrite)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Pass in true to enable overwrites in your session, or false to disable. If overwrites is enabled, any text you enter will type over any text after it. If the value of overwrite changes, this function also emits the changeOverwrite event.

    - -
    -

    Pass in true to enable overwrites in your session, or false to disable. If overwrites is enabled, any text you enter will type over any text after it. If the value of overwrite changes, this function also emits the changeOverwrite event.

    - -

    Arguments

    overwriteBoolean

    Required. Defines whether or not to set overwrites

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setPrintMarginColumn(Number showPrintMargin)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the column defining where the print margin should be.

    - -
    -

    Sets the column defining where the print margin should be.

    - -

    Arguments

    showPrintMarginNumber

    Required. Specifies the new print margin

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setReadOnly(Boolean readOnly)
      • -
      -
        -
      -
    • -
    -
    -
    -

    If readOnly is true, then the editor is set to read-only mode, and none of the content can change.

    - -
    -

    If readOnly is true, then the editor is set to read-only mode, and none of the content can change.

    - -

    Arguments

    readOnlyBoolean

    Required. Specifies whether the editor can be modified or not

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setScrollSpeed(Number speed)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets how fast the mouse scrolling should do.

    - -
    -

    Sets how fast the mouse scrolling should do.

    - -

    Arguments

    speedNumber

    Required. A value indicating the new speed (in milliseconds)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setSelectionStyle(String style)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Indicates how selections should occur.

    - -
    -

    Indicates how selections should occur.

    -

    By default, selections are set to "line". There are no other styles at the moment, -although this code change in the future.

    -

    This function also emits the 'changeSelectionStyle' event.

    - -

    Arguments

    styleString

    Required. The new selection style

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Sets a new editsession to use. This method also emits the 'changeSession' event.

    - -
    -

    Sets a new editsession to use. This method also emits the 'changeSession' event.

    - -

    Arguments

    sessionEditSession

    Required. The new session to use

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setShowFoldWidgets(Boolean show)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Indicates whether the fold widgets are shown or not.

    - -
    -

    Indicates whether the fold widgets are shown or not.

    - -

    Arguments

    showBoolean

    Required. Specifies whether the fold widgets are shown

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setShowInvisibles(Boolean showInvisibles)
      • -
      -
        -
      -
    • -
    -
    -
    -

    If showInvisibles is set to true, invisible characters—like spaces or new lines—are show in the editor.

    - -
    -

    If showInvisibles is set to true, invisible characters—like spaces or new lines—are show in the editor.

    - -

    Arguments

    showInvisiblesBoolean

    Required. Specifies whether or not to show invisible characters

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setShowPrintMargin(Boolean showPrintMargin)
      • -
      -
        -
      -
    • -
    -
    -
    -

    If showPrintMargin is set to true, the print margin is shown in the editor.

    - -
    -

    If showPrintMargin is set to true, the print margin is shown in the editor.

    - -

    Arguments

    showPrintMarginBoolean

    Required. Specifies whether or not to show the print margin

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setStyle(String style)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Adds a new class, style, to the editor.

    - -
    -

    Adds a new class, style, to the editor.

    - -

    Arguments

    styleString

    Required. A class name

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setTheme(String theme)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets a new theme for the editor. theme should exist, and be a directory path, like ace/theme/textmate.

    - -
    -

    Sets a new theme for the editor. theme should exist, and be a directory path, like ace/theme/textmate.

    - -

    Arguments

    themeString

    Required. The path to a theme

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Sets the current document to val.

    - -
    -

    Sets the current document to val.

    - -

    Arguments

    valString

    Required. The new value to set for the document

    -
    cursorPosNumber

    Required. Where to set the new value. undefined or 0 is selectAll, -1 is at the document start, and 1 is at the end

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.setWrapBehavioursEnabled(Boolean enabled)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Specifies whether to use wrapping behaviors or not, i.e. automatically wrapping the selection with characters such as brackets -when such a character is typed in.

    - -
    -

    Specifies whether to use wrapping behaviors or not, i.e. automatically wrapping the selection with characters such as brackets -when such a character is typed in.

    - -

    Arguments

    enabledBoolean

    Required. Enables or disables wrapping behaviors

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.sortLines()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.splitLine()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Splits the line at the current selection (by inserting an '\n').

    - -
    -

    Splits the line at the current selection (by inserting an '\n').

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.toggleCommentLines()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Given the currently selected range, this function either comments all the lines, or uncomments all of them.

    - -
    -

    Given the currently selected range, this function either comments all the lines, or uncomments all of them.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.toggleOverwrite()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the value of overwrite to the opposite of whatever it currently is.

    - -
    -

    Sets the value of overwrite to the opposite of whatever it currently is.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.toLowerCase()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Converts the current selection entirely into lowercase.

    - -
    -

    Converts the current selection entirely into lowercase.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.toUpperCase()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Converts the current selection entirely into uppercase.

    - -
    -

    Converts the current selection entirely into uppercase.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.transposeLetters()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Transposes current line.

    - -
    -

    Transposes current line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.transposeSelections(Number dir)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Transposes the selected ranges.

    - -
    -

    Transposes the selected ranges.

    - -

    Arguments

    dirNumber

    Required. The direction to rotate selections

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.undo()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Perform an undo operation on the document, reverting the last change.

    - -
    -

    Perform an undo operation on the document, reverting the last change.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.unsetStyle(Object style)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes the class style from the editor.

    - -
    -

    Removes the class style from the editor.

    - -

    Arguments

    styleObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Editor.updateSelectionMarkers()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Updates the cursor and marker layers.

    - -
    -

    Updates the cursor and marker layers.

    - -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/index.html b/api/index.html deleted file mode 100644 index 7d3a386ede6..00000000000 --- a/api/index.html +++ /dev/null @@ -1,12 +0,0 @@ - -

    Ace API Reference

    -

    Welcome to the Ace API Reference Guide. Ace is a standalone code editor written in JavaScript that you can embed onto any website. We're used in a bunch of places already, like GitHub, Google, and Facebook.

    -

    On the left, you'll find a list of all of our currently documented classes. There are plenty more to do, but these represent the "core" set. For more information on how to work with Ace, check out the main Ace website.

    - - - - - - -
    -
    \ No newline at end of file diff --git a/api/placeholder.html b/api/placeholder.html deleted file mode 100644 index fa12a958cbe..00000000000 --- a/api/placeholder.html +++ /dev/null @@ -1,293 +0,0 @@ - -
    -
    -
    -
    -
    -

    PlaceHolder -

    - -
    -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    -
      -
    • -
        -
      • new PlaceHolder()
      • -
      -
        -
      -
    • -
    -
    -
    -
      -
    • session (Document): The document to associate with the anchor
    • -
    • length (Number): The starting row position
    • -
    • pos (Number): The starting column position
    • -
    • others (String):
    • -
    • mainClass (String):
    • -
    • othersClass (String):
    • -
    - -
    -
      -
    • session (Document): The document to associate with the anchor
    • -
    • length (Number): The starting row position
    • -
    • pos (Number): The starting column position
    • -
    • others (String):
    • -
    • mainClass (String):
    • -
    • othersClass (String):
    • -
    - -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • PlaceHolder.cancel()
      • -
      -
        -
      -
    • -
    -
    -
    -

    PlaceHolder.cancel()

    - -
    -

    PlaceHolder.cancel()

    -

    TODO

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • PlaceHolder.detach()
      • -
      -
        -
      -
    • -
    -
    -
    -

    PlaceHolder.detach()

    - -
    -

    PlaceHolder.detach()

    -

    TODO

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • PlaceHolder.hideOtherMarkers()
      • -
      -
        -
      -
    • -
    -
    -
    -

    PlaceHolder.hideOtherMarkers()

    - -
    -

    PlaceHolder.hideOtherMarkers()

    -

    Hides all over markers in the EditSession that are not the currently selected one.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • PlaceHolder.onCursorChange(Object event)
      • -
      -
        -
      -
    • -
    -
    -
    -

    PlaceHolder@onCursorChange(e)

    - -
    -

    PlaceHolder@onCursorChange(e)

    -

    Emitted when the cursor changes.

    - -

    Arguments

    eventObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • PlaceHolder.onUpdate(Object event)
      • -
      -
        -
      -
    • -
    -
    -
    -

    PlaceHolder@onUpdate(e)

    - -
    -

    PlaceHolder@onUpdate(e)

    -

    Emitted when the place holder updates.

    - -

    Arguments

    eventObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • PlaceHolder.setup()
      • -
      -
        -
      -
    • -
    -
    -
    -

    PlaceHolder.setup()

    - -
    -

    PlaceHolder.setup()

    -

    TODO

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • PlaceHolder.showOtherMarkers()
      • -
      -
        -
      -
    • -
    -
    -
    -

    PlaceHolder.showOtherMarkers()

    - -
    -

    PlaceHolder.showOtherMarkers()

    -

    TODO

    - -
    -
    -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/range.html b/api/range.html deleted file mode 100644 index 3416aeade81..00000000000 --- a/api/range.html +++ /dev/null @@ -1,968 +0,0 @@ - -
    -
    -
    -
    -
    -

    Range -

    - -
    -
    -
    -
    -

    This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogous to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Creates a new Range object with the given starting and ending row and column points.

    - -
    -

    Creates a new Range object with the given starting and ending row and column points.

    - -

    Arguments

    startRowNumber

    Required. The starting row

    -
    startColumnNumber

    Required. The starting column

    -
    endRowNumber

    Required. The ending row

    -
    endColumnNumber

    Required. The ending column

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    - -
    -
    -

    Returns the part of the current Range that occurs within the boundaries of firstRow and lastRow as a new Range object.

    - -
    -

    Returns the part of the current Range that occurs within the boundaries of firstRow and lastRow as a new Range object.

    - -

    Arguments

    firstRowNumber

    Required. The starting row

    -
    lastRowNumber

    Required. The ending row

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Range.clone() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns a duplicate of the calling range.

    - -
    -

    Returns a duplicate of the calling range.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Range.collapseRows() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns a range containing the starting and ending rows of the original range, but with a column value of 0.

    - -
    -

    Returns a range containing the starting and ending rows of the original range, but with a column value of 0.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Checks the row and column points of p with the row and column points of the calling range.

    - -
    -

    Checks the row and column points of p with the row and column points of the calling range.

    - -

    Arguments

    pRange

    Required. A point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Compares this range (A) with another range (B).

    - -
    -

    Compares this range (A) with another range (B).

    - -

    Arguments

    rangeRange

    Required. A range to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -
    -

    Checks the row and column points with the row and column points of the calling range.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Returns true if the row and column provided are within the given range. This can better be expressed as returning true if:

    -
       this.start.row <= row <= this.end.row &&
    -   this.start.column <= column <= this.end.column
    - -
    -

    Returns true if the row and column provided are within the given range. This can better be expressed as returning true if:

    -
       this.start.row <= row <= this.end.row &&
    -   this.start.column <= column <= this.end.column
    - -

    Arguments

    rowNumber

    Required. A row to check for

    -
    columnNumber

    Required. A column to check for

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Checks the start and end points of range and compares them to the calling range. Returns true if the range is contained within the caller's range.

    - -
    -

    Checks the start and end points of range and compares them to the calling range. Returns true if the range is contained within the caller's range.

    - -

    Arguments

    rangeRange

    Required. A range to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Changes the row and column points for the calling range for both the starting and ending points.

    - -
    -

    Changes the row and column points for the calling range for both the starting and ending points.

    - -

    Arguments

    rowNumber

    Required. A new row to extend to

    -
    columnNumber

    Required. A new column to extend to

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Creates and returns a new Range based on the row and column of the given parameters.

    - -
    -

    Creates and returns a new Range based on the row and column of the given parameters.

    - -

    Arguments

    startRange

    Required. A starting point to use

    -
    endRange

    Required. An ending point to use

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Returns true if the row and column are within the given range.

    - -
    -

    Returns true if the row and column are within the given range.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Returns true if the row and column are within the given range's ending points.

    - -
    -

    Returns true if the row and column are within the given range's ending points.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Returns true if the row and column are within the given range's starting points.

    - -
    -

    Returns true if the row and column are within the given range's starting points.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns true if passed in range intersects with the one calling this method.

    - -
    -

    Returns true if passed in range intersects with the one calling this method.

    - -

    Arguments

    rangeRange

    Required. A range to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Range.isEmpty()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Returns true if the caller's ending row point is the same as row, and if the caller's ending column is the same as column.

    - -
    -

    Returns true if the caller's ending row point is the same as row, and if the caller's ending column is the same as column.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns true if and only if the starting row and column, and ending row and column, are equivalent to those given by range.

    - -
    -

    Returns true if and only if the starting row and column, and ending row and column, are equivalent to those given by range.

    - -

    Arguments

    rangeRange

    Required. A range to check against

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Range.isMultiLine() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the range spans across multiple lines.

    - -
    -

    Returns true if the range spans across multiple lines.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Returns true if the caller's starting row point is the same as row, and if the caller's starting column is the same as column.

    - -
    -

    Returns true if the caller's starting row point is the same as row, and if the caller's starting column is the same as column.

    - -

    Arguments

    rowNumber

    Required. A row point to compare with

    -
    columnNumber

    Required. A column point to compare with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Sets the starting row and column for the range.

    - -
    -

    Sets the starting row and column for the range.

    - -

    Arguments

    rowNumber

    Required. A row point to set

    -
    columnNumber

    Required. A column point to set

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Sets the starting row and column for the range.

    - -
    -

    Sets the starting row and column for the range.

    - -

    Arguments

    rowNumber

    Required. A row point to set

    -
    columnNumber

    Required. A column point to set

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Given the current Range, this function converts those starting and ending points into screen positions, and then returns a new Range object.

    - -
    -

    Given the current Range, this function converts those starting and ending points into screen positions, and then returns a new Range object.

    - -

    Arguments

    sessionEditSession

    Required. The EditSession to retrieve coordinates from

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Range.toString() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns a string containing the range's row and column information, given like this:

    -
       [start.row/start.column] -> [end.row/end.column]
    - -
    -

    Returns a string containing the range's row and column information, given like this:

    -
       [start.row/start.column] -> [end.row/end.column]
    - -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/renderloop.html b/api/renderloop.html deleted file mode 100644 index 59c98a0c5e9..00000000000 --- a/api/renderloop.html +++ /dev/null @@ -1,55 +0,0 @@ - -
    -
    -
    -
    -
    -

    RenderLoop -

    - -
    -
    -
    -
    -

    Batches changes (that force something to be redrawn) in the background.

    - -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/resources/csses/ace_api.css b/api/resources/csses/ace_api.css deleted file mode 100644 index 3ef8b391618..00000000000 --- a/api/resources/csses/ace_api.css +++ /dev/null @@ -1,912 +0,0 @@ -/* - Generic "affects everything" stuff -*/ - -#wrapper .content .column2 { - float: none; -} - -#documentation ul { - font-size: 13px; -} - -#documentation li { - color: black; -} - -pre { - background-color: #FFFFFF; -} - -code { - font-size: 12px; - line-height: 16px; - font-family: 'Ubuntu Mono',Monaco,Consolas,monospace !important; - background-color: #F9F9F9; - border-radius: 3px 3px 3px 3px; - display: inline-block; - padding: 0 4px; - margin: 2px 1px; - color: inherit; -} - -#documentation pre { - margin-top: 10px; - border-radius: none; - box-shadow: none; - background : white; - /*background : #f5f5f5; - border: 0;*/ - - -webkit-border-radius: 6px 6px 0 0; - -moz-border-radius: 6px 6px 0 0; - border-radius: 6px 6px 0 0; - - padding: 5px; -} - -.method pre, .event pre, .property pre { - background : white; -} - -#documentation pre code { - background-color: transparent; - border-radius: none; - box-shadow: none; -} - -#documentation a code { - color: #00438a; -} - -#documentation h2 { - font-size: 26px; -} -#documentation p { - font-size: 13px; -} -#documentation li p:last-child { - margin-bottom : 5px; -} - -#documentation blockquote p{ - font-size: 14px; - font-weight: 500; - line-height: 23px; - font-style: italic; -} - -.alert-message{ - margin-bottom : 13px; -} -/* - Header and shoulders -*/ - -.navbar .nav > li { - float:none; - display:inline-block; - *display:inline; /* ie7 fix */ - zoom:1; /* hasLayout ie7 trigger */ -} - -.navbar .nav > li > a { - padding: 10px 15px 11px; -} - -.navbar { - text-align:center; -} - -#topSection { - width: 1000px; -} -.small_win #topSection { - width: 100%; -} -.small_win #topSection .dropdown { - margin-right: 40%; -} -.navbar .brand { - margin-left: 0px; -} -.brand { - background: transparent url(../images/ace_logo_menu.png) no-repeat 33px 5px; - width: 80px; - outline: none; - height: 40px; - padding: 0 10px !important; - border: none; -} -.brand.dropdown-toggle:after { - content: none; - display: block; - height: 40px; - border: none; -} - -.ace_logo { - position: absolute; - top: 45px; - z-index: 20000; - left: 210px; -} - -.headerTitle { - position: relative; - top: 100px; - left: 250px; -} - -/* - Menu venue -*/ - - -h3.api_title { - padding-top: 10px; -} - -ul.menu { - margin-left: 2px; -} - -.menu li { - list-style-image: url(../images/menu_disc.png); - margin-bottom: 4px; - font-weight: 700; - padding-left: 10px; - margin-left: 0; -} - -.menu li .menu-item a.menuLink, .menu li .menu-item span.menuLink { - color: #3E7096; - font-weight: 100; -} -.menuTwo { - margin-bottom: 5px; - margin-top: 2px; -} -.menuTwo li .menu-item a.menuLink { - color: #3E7096; - font-weight: 100; -} - -/* need specificity to "beat" the above colors */ -.menu li .menu-item a.currentItem, .menuTwo li .menu-item { - color: #0072bc; -} - -/* - Members and the tabs that represent them -*/ - -.srolled .members { - width: 100%; -/* -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.35); - -moz-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.35); - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.35); */ - padding-bottom: 15px; -/* height: 31px;*/ - position: fixed; -} -.shadow.members{ - background: #edf8fd; - box-shadow: 0 0.1em 1em rgba(0,0,0, 0.3); - -moz-box-shadow: 0 0.1em 1em rgba(0,0,0, 0.3); - -o-box-shadow: 0 0.1em 1em rgba(0,0,0, 0.3); - -webkit-box-shadow: 0 0.1em 1em rgba(0,0,0, 0.3); -} - -.membersContent { - -/* border-bottom: 0.1em solid #FFF;*/ - height: 3em; - padding-top: 4px; -/* line-height: 4;*/ -/* margin-top: -0.1em;*/ - position: relative; -/* transition-property: border-color, line-height; - transition-duration: 125ms, 250ms; - transition-timing-function: ease-out, ease-out; - -moz-transition-property: border-color, line-height; - -moz-transition-duration: 125ms, 250ms; - -moz-transition-timing-function: ease-out, ease-out; - -o-transition-property: border-color, line-height; - -o-transition-duration: 125ms, 250ms; - -o-transition-timing-function: ease-out, ease-out; - -webkit-transition-property: border-color, line-height; - -webkit-transition-duration: 125ms, 250ms; - -webkit-transition-timing-function: ease-out, ease-out;*/ - - /*transition-duration: 125ms; - transition-property: top; - transition-timing-function: ease-out; - - top : 11px;*/ - z-index: 103; - padding-right: 10px; - margin-right: -5px; - /*width: 700px;*/ -} -.srolledHeader .membersContent { - line-height: 3; -} -.srolled .membersContent { - /*top : 0;*/ - width: 625px; - padding-left: 327px; - margin : 0 auto 0 auto; -} - -.srolled ul.nav { - padding-right: 10px; -} - -.membersBackground { -/* background-color: white; - position: fixed; - z-index: 2; - top: 40px; - left: 0px; - right: 0px; - width: 100%; - height: 55px; - opacity: 0; - display: none; - box-shadow: rgba(0, 0, 0, 0.398438) 1px 4px 6px;*/ - - background-color: transparent; - height: 47px; - /*width: 700px;*/ - position: absolute; -} -.srolled .membersBackground { - position: relative; -} -.srolledHeader .membersBackground { -/* display: block;*/ -} -.memberHeader { - float: left; - padding-right: 10px; - margin-bottom: 5px; - position: absolute; - padding-top: 4px; - -} - -ul.tabs li:first-child ul{ - left: -63px; -} - -.tabs a.menu:after, .tabs .dropdown-toggle:after { - margin-top: 22px; -} - -.nav .dropdown-toggle .caret { - margin-top: 12px; - border-top-color: #6D8CA0; - border-bottom-color: #6D8CA0; -} - -li.dropdown { - color: #2D2D2D; - font-weight: bold; -} - -.editInC9 { - font-size: 11px; - color: #657383; -} - -.editInC9 a { - color: #657383; - font-weight: normal; - position : relative; - top : -2px; -} - -.tabs { - padding-top: 14px; - /*border-bottom: 1px solid #848484;*/ - min-height : 27px; - padding-bottom : 5px; -} -.tabsSansBorder { - border: 0; -} -.tabs, .pills { - margin-bottom: 0; -} -.srolledHeader .members .tabs { - background-color: white; -} - -li.dropdown { - color: #2D2D2D; - font-weight: bold; -} - -.members .tabs .dropdown a, -.members .tabs a.menu:after, -.members .tabs .dropdown-toggle:after { - margin-right: 0; - margin-left: 6px; -} - -.memberLink a { - margin-left: 0 !important; -} -.menu-dropdown { - min-width : 105px; - max-height: 350px; - overflow: auto; - border-color : rgba(0, 0, 0, 0.1); -} -.topbar div > ul .menu-dropdown li a:hover, -.nav .menu-dropdown li a:hover, -.topbar div > ul .dropdown-menu li a:hover, -.nav .dropdown-menu li a:hover { - background-color: #ffffff; - color: #000000; -} - -.tabs a.menu:after, .tabs .dropdown-toggle:after { - margin-top: 13px; - line-height: 28px; -} -.open .menu, .dropdown.open .menu, .open .dropdown-toggle, .dropdown.open .dropdown-toggle { - background: transparent; - color: black; -/* font-weight: bold;*/ -} -#topSection .open .menu, #topSection .dropdown.open .menu, #topSection .open .dropdown-toggle, -#topSection .dropdown.open .dropdown-toggle { - color: #bfbfbf; -} - -.tabs > li { - font-weight: bold; -} - -.tabs > li > a { - border: none; - outline: none; - line-height: 28px; - font-size: 11px; - padding: 0 5px; -} -.tabs > li > a:hover { - color: #000000; - text-decoration: none; - background-color: transparent; - border: none; -} -.tabs > li, .pills > li { - float: right; -} -.topbar .dropdown-menu a, .dropdown-menu a { - font-size: 11px; -/* padding: 2px 12px;*/ - line-height: 14px; -} -.tabs .active > a, .tabs .active > a:hover { - color: #000000; - border: none; - cursor: default; -} -.tabs .menu-dropdown, .tabs .dropdown-menu { - border-radius: 0 0 6px 6px; - left: 10px; - width: 160px; -} -.srolled .tabs .menu-dropdown, .srolled .tabs .dropdown-menu { - top: 32px; -} -.dropdown-toggle { - color: #6D8CA0; -} - -ul.tabs .double ul, ul.tabs .triple ul, ul.tabs .quad ul{ - width:760px; - margin-bottom:20px; - overflow:hidden; - border-top:1px solid #ccc; -} -/*ul.tabs .double li, ul.tabs .triple li, ul.tabs .quad li{ - line-height:1.5em; - border-bottom:1px solid #ccc; - float:left; - display:inline; -}*/ - -/* - Center content (the "real stuff") -*/ - -#nonFooter { - padding-top: 40px; -} -#wrapper { - height: 100%; -} - -.content { - height: 100%; -} - -header.filler { - position: relative; - height: 40px; - width: 100%; -} - -/* -.container-fluid .row-fluid { - width: 1000px; - margin-left: auto; - margin-right: auto; -}*/ - -.divider { - height: 3px; - background-color: #BEDAEA; - margin-bottom: 3px; -} - -#sidebar h3 a, -#sidebar h3 a:hover { - color: #404040; -} - -#sidebarContainer { - padding-top: 20px; -} - -#mainContent { - margin-left: 30px; -} - -#documentation { - padding-top: 35px; - padding-bottom: 10px; -} - -#documentation article.article { - border-top: 1px solid #e9e9e9; - padding: 16px 10px 2px; - -webkit-transition: padding 0.2s; - -moz-transition: padding 0.2s; - -o-transition: padding 0.2s; -} - -#documentation h3.sectionHeader + article.article { - border-top: none; -} - -div#documentation article:last-child { - border-bottom: 1px solid #e9e9e9; - padding-bottom: 40px; -} -#documentation article.article.methodToggleOpen { - background: rgba(255, 255, 255, 0.5); - font-size: 13px; - line-height: 24px; - margin: 0 0 10px 0; -} - -#documentation article:first-child { - border:none; -} - -.site_logo { - display: block; - margin-left: auto; - margin-right: auto; -} -/* - Edit in Cloud9, sucka -*/ - -.snippet pre { - margin-bottom: 0; -} - -.snippet .toolbar { - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - - text-align: right; - padding: 3px 10px; - margin-top : -1px; -} - -.snippet .filename, .snippet .toolbar { - font-family: Ubuntu, sans-serif; - font-size: 12px; - color: #EEE; -} - -.snippet .filename { - padding: 0 5px 2px 5px; - font-size: 10px; - background: rgba(230,230,230,0.5); - padding: 0 5px 2px 5px; - border-radius: 0 6px 0 6px; - margin : 1px; - position : absolute; - right : 0; - top : 0; -} - -.snippet .filename span{ - color : #666; -} - -.snippet .toolbar { - background-color: rgba(30,30,30,0.5); -} - -div.snippet { - margin-bottom: 18px; - position : relative; -} - -div.snippet a, div.toolbar a { - color: #FFF; -} - -/* - All about signatures -*/ - -.signatures { -/* width: 800px;*/ - margin-left: 20px; - margin-bottom: 5px; -} -.sideToggler { - padding-left: 20px; -} -ul.signatures ul { - list-style: none; - display: inline; -} - -li.signature { - list-style: none; -} - -.signature ul { - padding: 0; - margin: 0; -} - -.signature li { - display: inline; -} - -.signature ul.argument-types::before { - content: '→'; - margin: 0 5px; -} - -.signature li.argument-type::after { - content: '|'; - padding: 0 5px 0 5px; -} - -.signature li.argument-type:last-child:after { - content: ''; - padding: 0 5px 0 5px; -} - -.member-name { - color: #4397cd; - font-weight: bold; - text-decoration: none; - cursor: pointer; - padding-right: 3px; -} - -.signature-call { - cursor: pointer; -} - -#documentation .signature-call a { - color: #8e487e; -} - -.sigClassName { - display: none; -} - -.eventObjName { - font-style: italic; -} -.eventListenerStart, .eventListenerClose, .eventFunctionOpen, .eventFunctionClose { - color: #999999; -} -.eventMember { - padding-right: 0px; -} - -.metaInfo { - float: right; - z-index: 1; - position: relative; -} - -.chainable { - background-color: #0072bc; - color: #ffffff; -} - -.deprecated { - background-color: #f7941d; - color: #ffffff; -} - -.alias { - background-color: #6c951e; - color: #ffffff; -} - -.related-to { - background-color: #89289a; - color: #ffffff; - font-size: 10px; - padding: 2px 5px 3px; - text-transform: capitalize; -} - -.undocumented { - background-color: #B94A48; - color: #ffffff; -} - -#documentation .alias a, #documentation .related-to a { - color: #ffffff; - /* text-decoration: underline; */ -} -#documentation .alias a:hover, #documentation .related-to a:hover { - text-decoration: none; -} -.#documentation .alias:hover, #documentation .related-to:hover { - opacity: 0.8; - cursor: pointer; -} -.memberContent .title { - -} -.memberContent .description { - position:relative; - /*top: -13px;*/ - display: none; -} -.snip-container .actions .toggle-plaintext label { - margin-top: 1px; - padding-top: 0; - text-align: left; -} -.snip-container .actions .toggle-plaintext input { - margin-top: 4px !important; -} -.snip-container label { - color: #ffffff; -} -.description h4 { - padding-top: 10px; - font-size: 18px; - line-height : 18px; -} - -.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { - background-color: #F9F9F9; -} -.table-striped tbody tr:nth-child(even) td, .table-striped tbody tr:nth-child(even) th { - background-color: #fbfbfb; -} - -.argument-list { - margin-bottom : 13px; -} -.argName { - font-style: italic; -} - - -/* - Everyday I'm togglin' -*/ - -#documentation i.methodToggle { - cursor: pointer; - color: #9f9f9f; - padding-top: 2px; - float: left; -} -#documentation i.methodToggle.methodToggleHover { - text-shadow: 0 0 10px #4699d5; - color: #4699d5; -} -#documentation i.methodToggle.active { - text-shadow: 0 0 10px #4699d5; - color: #4699d5; - /* Safari */ - -webkit-transform: rotate(45deg); - - /* Firefox */ - -moz-transform: rotate(45deg); - - /* IE */ - -ms-transform: rotate(45deg); - - /* Opera */ - -o-transform: rotate(45deg); - padding-top: 9px; -} - -#documentation h3.sectionHeader { - line-height : 24px; -} - -div.method { - position: relative; -} - -.methodToggle a { - color: #fff; - border-bottom: 0px; - text-decoration: none; -} - -h3.methodToggle { - height : 13px; - width : 8px; - background-position : 0px 0px; - position: absolute; - top: -20px; - background-image : url(../images/member-sprites.png); - background-color : transparent; - background-repeat : no-repeat; - overflow: hidden; - left: 0px; -} - -h3.methodToggleHover { - /* background-position : 0px -28px; */ -} - -h3.methodToggle.inactive { - top: 4px; -} - -h3.methodToggle.active { - top: 6px; - height : 13px; - width : 8px; - background-position : 0px -59px; -} - -.hidden { - display: none; - visibility: hidden; -} - -.hiddenSpan { - display: none; -} - -.ellipsis_description, .short_description { -/* width: 800px;*/ -} -.methodToggleOpen .ellipsis_description { - display: none; -} -.sideToggler .short_description, -.sideToggler .description{ - display: none; -} -.methodToggleOpen .short_description, -.methodToggleOpen .description { - display: block; -} -.description td p { - margin: 0; -} -/* - Footer? I hardly know her -*/ - -#footer { - width:100%; - background: #101010 url(../images/dashed_back.png) repeat 0 0; - font-size: 12px; - color: white; - height: 40px; -} -#footer .footerInner { - padding-left: 300px; - margin-left: auto; - margin-right: auto; - min-height: 40px; -} -#footer .footer-text { - display: block; - font-size: 12px; - float: right; -} -#footer div.footerInner div.footer-text p { - font-size: 12px; - font-family: Arial; - line-height: 18px; - margin: 10px 15px 0px 1px; -} - -#footer a, #footer a:hover { - color: #8DD0FF; -} - -.logoText, .logoImg { - /*position: absolute;*/ - margin-bottom: 5px; -} - -.logoImg { - top: 40px; -} -.topbar div > ul .menu-dropdown li a:hover, -.nav .menu-dropdown li a:hover, -.topbar div > ul .dropdown-menu li a:hover, -.nav .dropdown-menu li a:hover { - background-color: #191919; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919)); - background-image: -moz-linear-gradient(top, #292929, #191919); - background-image: -ms-linear-gradient(top, #292929, #191919); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919)); - background-image: -webkit-linear-gradient(top, #292929, #191919); - background-image: -o-linear-gradient(top, #292929, #191919); - background-image: linear-gradient(top, #292929, #191919); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0); - color: #ffffff; -} - -.alert-message.block-message { - background: #fefaca; - border-color : #fefaca; - padding : 8px 14px 8px 14px; -} - -body .dsq-reply{ - margin-top : 10px; -} - -#disqus_thread{ - border-top : 1px solid #ddd; - margin-top : 30px; -} - -#disqus_thread h3, body #dsq-content h3 { - font-size : 12px; - margin : 0 0 20px 0; - line-height : 12px; -} -body #dsq-reply h3{ - font-size : 18px; - line-height : 18px; - margin : 15px 0 20px 0; -} - -#disqus_thread select{ - font-size : 11px; - height : 20px; - color : #444; -} - -#dsq-global-toolbar, #dsq-pagination, .dsq-trackback-url{ - display : none; -} diff --git a/api/resources/font/fontawesome-webfont.eot b/api/resources/font/fontawesome-webfont.eot deleted file mode 100644 index 89070c1e63c2703b2334023922ecc1664f759b55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38708 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api/resources/font/fontawesome-webfont.ttf b/api/resources/font/fontawesome-webfont.ttf deleted file mode 100644 index c17e9f8d100d01a002029b5b93cc081062618bf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68476 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 diff --git a/api/resources/images/Ace_ERD.png b/api/resources/images/Ace_ERD.png deleted file mode 100644 index 78fb8dab6a25315303e12b6653b480886ad85578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59424 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 E1vXzqcmMzZ diff --git a/api/resources/images/ace_logo.png b/api/resources/images/ace_logo.png deleted file mode 100644 index 4dab4f66ebffb0816dc8968ea52f64773970bedb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42538 zcmV)nK%KvdP)KLZ*U+R`sCEkzKl)gj5&q@hY_5?)@_euSf22N!q0z{yc?Q2YY_Kym8e z5Fvwu2%hQO!{u_psMvL#(bD64NQRTZj^-}DnS22ry9f-;mW=gZvQj}U-ZdMsK&I8^7~DvX`q=iU&faLuwO*JkBHtSA`IY+h%Ac8lRh}dS+E-ankdVr8(soy zZTxQlOhnpRtNrgRh^PbLZ!+_b`%L~h0RP%&;bybfb~EpNqieX?d*!9hnlG0MPUB_# zwf-V)l%+4{BEHxceEsuZ=I>L!#QjbH-z6d%z%$m`Pm9RN2jNC#E``rAWYmlO_XgM4 z0vKg~UjlI4S}P)=iD(-U{UU&ph~5j}*8w~OU~nzo`-L8Nsn7PMtaM&Z?UsHyztAf= zd0*~T!UkVG0QZQkW^ zn*hvOYmX4olRo2>7Yfb`1R$-?IwB(Z-$Ti~K8T4(E))psA15M>?~iu?xPgeqMD!4V z|KLmJuZb-6a(j)J!bbA%=_`Ga*BXHNTKGUW6Rewf9|eGaBqHA+A_D-&MdXV`6M`OoqOrLnBf82P_5^F+XJ@H+|sg@~L1a8g9(iRcg!{VWlk0Pv## zPQ6^S)XVk$yHp(I-@9Uz_+q`~*J{~uEqbntyblKOJplf`wf2aJJO*IJXE>b)==vbN zz~9OLPXBlJO>1n(nqqw*18~_^Kp+ALumZ{gRES87G2!(~j$v&O=*s_D_C0S~L>7qX zeMIz!0Ddy>i!T-=FPG2$#dr-D3c$?-=7oMnzuYt3%b`rU1|RrA06!-p##;Lcc(j#> zc!Nwz>u%_fRYMjfh?Vfi80!KMtU#=+kRrt_AO^7mr9>>m3W-?2G%&_8xhHS|%tXWl zVq&H8a$0=mr!3P-RyMOgU`7C50B}r1?q=ru0sI7jKZHlHUy2}E-?F@1F_G40%e<8R{Sjl#SD5)91Nf^%^!ET9dnrD@^+43u>b-oi46I*@ zoBwK_>vDg`g-+S8!fE>|0RPI5M?L~KGu8garwqsmH#=tm%psH7W^4>t+iG@JTJu}D zJwLB|+qS6oY>%s{9v9s<>y~1z!Ae6cKonu9P~EyeVj&Pf05LVJ8H*YBM`pabX8Mb( zc6es7UORKv4$hw8!I?AK_6MX27FO(H7a}6U%o3iMne*yEh^TOdfc-FlL(KeZMD#NN ze(P%Qo0mEOzgqXsMGvL-yyrdt|Hl6sUvB_^Pek5jt$ogqKuT*Zt?x-C^_XOgAp*#X zC5VM-44R@hO>+mYE9Um?)!l8gx;5KXRl8tSftUfYAZ8E^-rEq1WT+y%tC+=voJG> zhz%Jy`|QLAa!o|jM06Oy86x@{09O9rSg~ERo9pEiurJlcdl4^m2f!~|Yb(!48h8T4 zdW4s(wd5*Hf>=YwG_XQSNR?)4&u%q;=wNGZ{|?=m@2R5Aq!fq+1rPV8o(sEb6hra9pFV4H_dbjd4M4EQ}e!3|B_=%CXbq zvrj#Pb6#VMAL0IqV_L>TE;|YUlu{xhqLi}Ps4HY%@#Kxy5YaCH_$A-lf6cc{FV$;PH{X2o zi}pfZ%ngexA&p;bKz%9V`bB1}?-Y@r5Ru2MwaWno4kd5Ms6J?wF%8@C$kuvlR<_=D zN9($KU(?%j*9}E?wq&KystU}^bTK#6#{6^#?Un))AV~eEl@y#10WrCr)V)wxYh2d# zj|u%Me9LT&3CR$E2aViQ!5D$~bD+?SUb{fMQmD!TV1_XOsgkPMy<7B_L)SN|JzbC1 z#uzTG5QM}Ns9r1=E1d;jis$}f1^y)i_DbK( zMn88gPob;b1i93BV3VcL_ld|4S!*Bmtfj&SXt-HJ`AgPXWtuTHjiF}l#+%xQzV1!E zJ$K*On%U7|rO|3tn4j%pezuFLUWGzwfPkj45I<6N2(Lu2h=?I@nbR8UGA96Q6EYm% zhi@w#BZ2`^E@Z{Jaji&vJjjDlAP5LbDO3fc+b+>*x4??g7y+x6s^<1=)w9>{Z*+Uw zteiLlGiv+`2}n4J2$-4DZ}Gdp{#EKrsuW~RH?GFze3u0TE;3Q0R4xXUDGbaAhECXO_t4 zd-1=}2d%6lgPa0zGZEbi;3GJH8|kV)^NR)NwG>{sR>|nHGVH~68ea}v%dbW+bAciJ zH;c#*0eBQ{qlJ-H-8j#xwyCMHD4Ln;4|Z>Q=e^w>x9rhnn{`oOs@ukvEnRe4ZiZ@% z8?gukBJ4pU2PTQJAW{$lL|o92EHpap0)=KY#&y7DcT2a}a{cvV=*lb~KSOpn2AJXJwVq%xLAHS79v>#6 z+W~y|t9f5tO~Sg;z39s=ttSHZQm50)rSbkM0}pSo*8Z4?JmNQNV)+*VC2Lu%Rn2%{ zYf>HB^M=>X-1rUmR8w2qN|)$#I+&YjW4hOJ+1vN0@FlLJ?z0Of5`=MWC}9IL!iq^f zXy{Xk^4ij8T89FI3B<|;p64vP>LCx**cwML%X$>q#V`S2|2;ujYIG_MVuiW^K#E)Q z2X@%@)*YjjQ%f{Fw**!y`^+MTIUI0s$`&^g(L8|9zFfeiYgO4@=^Eh`_po0hf%H;* zK>I}GUt4P*_2?#NB`|xSiH&KvsfW@OGh2%5zy3`#*S+qrF59HF#`H`NbF*y}+LfDP z(^!Rk?-=_@kKKj<6|p|A`f^#sC9uF?qR@Z3bSYLmh)fA!g7v}f%4L_pC60lJReTLX zA?x~g&*Xb&WQT}DwOf@!S!h@&SR*KU3q6|JwP!e79@5&$vj91M^SV7U(L_@Vv8Kta^8O>0NFJS*canMel^P93w*UjsElUF)>`++7}Yd2 zH&c7}cMpH_eN($`+o_8ZWmRBywu`Aw>A|86*W`S9bA2Ucw7)v3$4&QycA|SvlB4mtZYZ_%tLv?TO{+V09^}hDp-YI5*#0Rj?oa{o(Ron^fMGO%5V7C5y1TZGZ5UH+p-?7%jUZW(RsXep3&8*Pvbuc?sfuLeJI?*%w8$L3T*rT)_a0(z#h&&Mi!I!|+m9Zjra-RyzS`$a>bwGGKdvd3+lXFTe|#py(n|oD-GmJA<|cSI$q%k zdb_puyREfH)*-<$SevG1GaicFa??#Sx4i3(t*I>)F=2Y9hv})x#S4Yeivw%G9sw4Y zWN9Ms0wBb0z8bS8`%*NrBs}2c%UQSE>Uv>gV$6op+Ha-9n#O(4zb*+cB2paPzq#1= zJ!d>%$Okbc;uPHP4Rc`kUfl?&sx+F~!U|B$?%!Io?lotgegV=LaYsj36o`#B5v_{I zer7HJeDP`m^}n}u(aS1{uVtBeC4qOfr{fi@O0`7fC#|*Th^P+Z8{e?QO&8p3 z3H(wrr1FP~$lo)@>;`bkZ{6g<%ElOFnlYQ+-hDH-e(Sxhscmf{!qjvZ-F6GshVpST zLxmF5DYj(gB^(9OWx5O@_5lD&pp%5%SqWg0&yEP}r_d@(41Vips&T#>`(wnhPwJJC zO5a$*yZJ97Q3LV4gl~&b9QlM^S23YbjK*i}a%Ru=v2j7mj$16gB&IN{^+c4jMD#60 z^t+)n{%Ud4zgi{mOET8E)~Ddr@I0>qTE9U=eo#c7f)gL3Fk`jWvawc~dQ43@HP^fK z-EVEr?(8vZOwDxBDwXg1vS1}U!B7f8<`=_Zn#TXP=lf=TX_&2s%$vBsIpr|)lHy5E zp(S(~m;9b=D6t(qk$mZ!Z~6p8*{0WGjgL`Ez?b-mF|o_`pqObzC{_pIFi?u1wR^0! zgkomb_F;c%EKAQHCAT{`@sazWwIZU3Xb%zn`HO`LzZk*(VjU1MV6Ww7%}e>_Hk+j{ zl-V!vds#$&&RYA7|8LH=ZrJgHYh}Rg>V|K8wh=Shofg`y!UI8q_;EG%m0bBrN+D1RBX3wjMs&{yE1qP3|54uwje5?y7OE5OUIWmII~Es0-HjJ+-%n` z42+oh5D`59VDV}zzbo27y@vPm)s8J=z`hjTC0DbBaiyTbMvvLV@B7Qv+MNJK`L>O< zmYb$g)-+7cXz4{<&jaI9TPP+{8?g6C9J~9Lxv!e|LAjmyTVkzu*zJ0G~ zGUS(2nQOCMR_lT^?!?CVYS`G}Y-~dwloEKswV0uCo)?ercO?Za;_tArFAn8;0=N7a z$g5ezwi)6SF%+R`8mO{YP#y#84avmxcTOpL-)N>S6wcv z65USab$!{#j4w$gUG#to2Rb2fmPN&*tubpR6qw=z$?v)PKG#^!Ar1j0h@)GvDXZHA zV8PE_Q(TLm4X1!kWjFg^m25rFPV}xWb7t%-|HRfBS3>)PCUT@fQ2zT(W1%~9?MA3Q zKK1wu1Z#4&NB4Vf~|Uh_Gxe;@hCH-KN^CB}ov z+E`&Q>lo;o9XQt1HFS4jcCdDKAS)-%P=*%!KjAkF0KAfjKDd51yHRF+Ie|>q@^$c) z{=$n0U%zCT^h!(Vi+n8@V-6Eh|2&Y%7-j033>BT~z?)vxo;xrN2&z`)!4!%}DG~d1 zHkW~nF$uvn7RK0ET{?Q7b!;P>*hV7axW?jUs-~%7je9<8ByQQnpOL_5vawta&ly!F zd?t_o2Ka1k{hdItwn=Mv;`&_2a7xsu@R|d0!Wsi>8~2{AK>Q5YMpA`eR*2WZiN>{B z1$3dHix$lsy7x{~&1|uzao5@yl^>WQ(zn*`6p9Ob3k*$wX)X0SPQY_1=a2}w#BK@84cnyRe8ic$5pwc6Le z`L4P#g)v51YsnZB-3{Qx0iF|)AK&P{&9{%fmb2)E?#)=Gyp(U^t68F4!g3J+rj0S* zY^^;BKn01Hm|>eS+oC(&z3z>-tD+(zpbChvF9WR)I&116spJC2QxC;@%qA4T6o4oj z0U~P!rl|q)+Du&d1gX;F0zEKXQ%XzdZf~`Taxq{X50L&`slDRH2 z@}7hIjGO1W)j&tMK$by~R{jFvA~Xo`V6d=4C`yg8EJ2FV+i}}&EZlU^j0ZMfRSXib ze#|2P4qU9l3*UPw62wdOJ3{R6%PIT4RENh#u)2s`Cn7CZ$+_Fq7~>TqtTM(Zwe{wM zoh=9Em=(&h1bdxd@!2qfK2R>`JSY=yAU|Ji{Ecm`2Yi@8O2^(X%t39_#6H$qNy`8s zgW8nQZ0tcpY3rZAsa+sRAo+7#ln($@cx(X1!s7#&C177Y_-rZeF*(>2(cny`#s#oD zw5&)R|JbGhL|{wO)P@W&Vf zV+`uLp7{P|@9itS|2H#Iy4vT+LMSI+n0$gN9PM>Vw7@|9bqMDwzHEjmuQNFSL32 z%mE|{eXxz-PY6(V2-uhbT^2SlCY0Ok%WGfWvMb+%!i3nQgc114p#%nO%;4v1o2KeR ztbzFPaL|f!Aekd{6k35<(4Idqr?%dFsHq3=r7;Joov?5rBDGR#ftjJT3wCA(vs0D~ z-*YOHSEnp-wfFs{JbE|#{Fhx4U(T%cN8B|}8!MWhRFvR-^)}DQ+Z3N^vr@VZ0o?6x0HcU4&61W z{I$*{AO>C2#L}4*BW=`3oa-V3v@&`JoFA43gd>|NqQ(9|@)lY?>t_A0*vUgMO?Lsf zlH2;%mZQx<{X!{+p6jZ^-FE zjrZ&22EwHte=$V)YJzVw&wIJgp_IaBKJyt^Yu^LlC=sb3O^P5(Iv!C|&CPYU-@I38 zjiM+~6s1RKt?%hvwhUc{F==EIC0OF}c%~~HM-T+t7>I2k#>5iSv5o?t*pc*uIGR|3 zm%a0;xk9j|}U`f(i$KTW)B;%3WI#gZBJ&v&EL{_cq2TV;U98;vm2-B34AY#u#1K zHOAxd#2;hKMW-5H%U}A%q-kAJY@50$S?#mwg6*wEjCI53L z0j$C)Ml=9yQ4|c|J`p)$t<^cuWUVDr52W04&%vU%(1w@%Oy!`f_lVeg*La-AZ@rK& zX*nzaL|T&%M6sT;%L&~L3K5b>`|ykHj-g~>EMOWNdtJv~ax5aPmE$`Yz@rq~@q;tGDH6|~ZT z5L!E5dEM&iC!Vp*VA(27?4&8Irz;2C>^UNzg_qoq~Zv72%%PqIyjyvwaXf)bz zs_{~{Ue{74M!%RZ@)}*7QbcwT(Ln&O0B}2i?IN-Zz!ZQrKS-~=xo}Q}eNp|SP2!Fb$&6`|eInCX_7?w07a3m9Xu)Nio3GQ`?o z3~Pa^biq5hl@ksJ3kSR=;s&vbRKv`X#~nzZIH!dl(FDLLympE6TV$PVkWqEN+cY+A z8->av_RaoBSSgS(=xx7o%i<&L?HDbuu`U8l(Z{V=V@x?UHMM8!)~%mAbt;*@&&|zY zetv$vmFLTrG;z74ApKIm$W4-;=Y6of7QpoYc35j$aO+mfB63-VyT9<|uV4L(>h(MOJ zQB=0f-qeXL1)5|Ud4MbJ-Fjk%HLh0?MvcIz2Ixj9Jxq&tO2|ez+V@U zDW3|4etG<}BC;9)2mf#EgYUfFM9w3zPrfB0ItSp4O%nN)U&>Z)jAK}AL&MRi+uDEI z-p<@E7TbV}GHu6%W$(ZV_I+FMOSR$yf*DCnA#sewnpAGW?~t0P-v9s@*ACge^QHy7 z^Htk$!`2pB+KrH!rbb;`^v5n(I+`#ut8l}74{tdkoUorLodZ9Fi>09uy17-v?7- z^4Q=g=QzXln9$xb-`#feHc|`-dz3QONQR}oc zAOHsaG0KYZ{oim1_uVuFG$RZ~YZ&w`(k^^@Z?z@J$bbnb3&y)%IfG8?I{f?}Jc;pW z4A-ht1j`b8BHJngp{d7Ut>flTC@sSy9QDx#K?`3-hsvJ)p+)i9B>g9(@|+2<#`o9R zLWHLXlP|No^Lw@J?l@ouFPt+<3lS-1w$@r=W*U#jeE9I;spaKm96NRluY29=(ChU! z1f8xF)O;xx<}c@W@U?hjSMa3(TnFHHMdS~BpnTd|`>2Q<@xe*}iVV5U#|9)hNj33) zbA)%|d+Yx@H>$GMhV{9K5;yg@KzqwVZ`*Z+)I)eye?nOOxJG>W8U?#^#5OK~XQP(T z`%S1!q&X^xF&x&I>S_Glcio6@yrqjle+{d{290&uDa;(h=t2eWSg$5AZh$k3Yq;-* zF5dZ??J$k;zOPB+DU{_C%p*^52rMLH9q-xAYjf>lBqa=MVkz&mqB5e0wSLUhq}4xi z#0km*IE=suVP{smOb?6M>t3^~F{a3f6X5`7W6WZ!)w)4z%>dADx34HzUyOVG#md(F z5@&w~a2J68CL-^()~;A<|5QX?5Rn>bU4(LSL+DS}4bM5_`36*1S!38VH5=2gHHO4m zvc}|(Q`TCY&G*{YJZ4tdF2AO z&6hA424jtz-P(+>;eS1dwV#bT9wm_nox-@s`kAlqg&if)1tcpCMC1+;d0a%^?|;8ucX5I%;d$k%e~bs1tcWoLSRsM6VnnPZkS0s4n(>fL zJyyQH5+*iUE5po2=|X&}APZt=18KNvn!;MEnx%z6Y6=vI%_^vJ5D?LGezf*fQRv26p{6mq8P|m=IwA6!Gyv{O_ zGgpB1sCy!YIEv%Gh0?Q}@_A$c%(N$L)BqRmz=>n1AQ@wktV1OBpNZQnATh{ZMS4w= zgwT@?6kNu(b#%~+JHAnZ#+Swd>g~E^Ver^9g(}KAn~__OZ=5}F;J|k`O*7pz%?NI9 zc932CWuE{#+4o-IMfKiBM8;QlwO6-z8o;juco4wq%MC%+R}!d~F=KrLfS)wRoQBhv zT}4vOj{zC(>dgAWWmm`cAuGZnP)7H9GQDRH_qJ`<-7Qql*4JzdzBzN~zJCrMT3?C!}J%wD&Ol8c_TfP~E+ zcWuO42mu^aGDO_(B6bgrV;+jgIkQH4eqV2?Zh9@Ti@uey#uy^^V$5hXdJMoQ9R69& zo!?`je1o43h`-NDPr|AE=x`4+{{(;*Ir)oU0`RN;-hEL(rx!I~H~Atofd5NG?y}ZC zx_>9fL!0%h_ztLy0UtD3bXt7s_8v@+Ed%NbJ?v}6~szAfWqHciTv&J zgHjQh4WFX}R|>a5BEnXrG>s|kmVKS+-M7s{G8RzKfBnP+tsnAc0s~nJx!8? zsHglz;zJMuw`QW5%~kfphPxoF+X=v~-?dGRx8J!RTe=D>gK;pPxu_xW`tMJCMnveA z3XA<3pL*;plwu_6LnwpEQy&>X?GH$Rl=9`NXGBS++mx9;Z+N2ufNdtf=a*lZ9q&4h zd)XOPQp9OIN zK#NEP;9W%YcZujIfS&~LNncKXRX`_w1*C>cj%fh=lC^dK;Ijcl^1UbW-ZY4tc@jCn zjIFUkwwm1{z1@4&-1Ym~vwL@|s#`F5bX2*ZEVPC$w3p8;d|=q5_TcXx=dLDEXBU|@ zg}_n#8o!#=GzP8CzH)B&joX@f1Tl>d{P4MEHvy5)7M?dtGBN&$qT7*F5Weqdi9%jU zQ4IS1G4}23;&q2+(fEuLMm!fHuy3TU5Wh!+Ub{fQKgPd(-(z_8=n6W$E+%!M0*L0c zmnhDLeTG%R?h={sngfN%i?@YdJ@KY7Az|Z!)sJt2n}MeyMk0r4(mh51`KcU-r3w+K zs#g?KJEqL=7?dt!NzBaTM?8VH7<@n02X2r}%}0INFnYqT79wJNsXPR*C?by#(G~#z zjG0>i{u6-T^;FldUP*inIKOWYk$+*WeHM7Dan1`~mqP?ROgLZhlQ2m+;bW^WO0UKL68QS&!$j=+N{Dgh{gzglQFZt$`z zjS)0Tqiz6!^82H{%r!NH*x#p=`Q?N_V~EW)hB=ml$Zt%qCv1&lJKcT5Jho1iSQ*x- zZ(Y}?UI;hH=gmxvsjkMk)iM6{?>vgXc;pPa(;Y|oBZjrE+-7h25qQUv2flJ~n7GBc z1&6!l6f}{e$azq4G#PLd04c-~5J-it-n(VeMDROqvr6s*#z2=XDyFve%<6N>SVL@B zF|!yG-MOr_Hu&>+%x!`UF#%#`1RCUloEHgMFb8Xva{xYWjOh^3cM{QGC!#+B@GAhG z_*z7X|GJ2LueJ6Oe=3!E>6_{L0!cxiZ9OtgYkn(jKYX~gaQOOiYWplH1!h876etRf zveeK8N3Lz4#Tjd}Yb+Bg`a;Nh&P=#0W8#FKOJdpPMk87*%60)k32T9IV^G%(n#S$6 zI_|8Aih%B1@W`m7*LU3-Pg~$L&M9UZdCSON?VzU(Cd`=!c(X5 z3xD`!Jn{Shz1behvdDUCj&d^yB5dRi#wb&o35&-PIDZe}fbupZE|WHq01~#7BLB&H zrN^M`m>&WNluYqO$~r!_80fN%qPwNLIvQ8HvSZ6u`(O>&UBgT^N57HFK$5ou#Du6@ z2v*5JJU4>yeJ*7vxvvx}B5DA9%39kaqSq7An~CVl0Djy%@4b8jHoIy5nYH%S03L?Z z@+~u93E3$HV+=!tjHzL`)w0{}x~0AA6}J`Lg`O@d5DBWPZ~|Rgr&dXjjThL173nhp zg5{z~`rD*DQ9Ut@(hWw@SjxqZ_rS41gUJ=vOhCJ2R7Hix2u9-ub>oy2C=w1rKbZP3 zcjNk5B?!d+2DBbE^;xHB3=Z#`#f>|sFl;Q8;tlt9*OhbUW#5)(GX3gDpTci_^cnPr zz|`y%l=kM$2)nxex_HG1=3snfd;q8RGyr1Zkcm3Pp^C|o-;h<2aDy-obI;+fv(nDJ zoshP6m~*OT_CCWpp{}6YQ)O+MR#}f5A}DK(Es7Gx7#cTr)6TDgf>j~Jnu)B~ z#=tgXvh|237*Uzlmqj@z9bUABkLoUVqrX! zjH)cOBIve8T`P?126gQ%FeEH>OPtvVnp7sUP8%vV=@AEoh*w-Ujdn+4d3iLEUGo6V zPx~A#E(?XSP?rD-WoJMF&PgXpKjJ-GM>Ax* z(WvPjx96s5es8au+1Z=!ZJR3E(@f07tSGG}D1fZ%Zl!@VwT%0V^?3Ev(%RzDg%Us}f!E;H})38?f5>Tv)aX8txJ`ZfT66~KurF?D+} zGb{o4mm+dlL>}{RfY$Y_kpgI}VKW|DQ}kxA?bcg5yYITAY|oUe6m+4`s!CK<;gH14 zW+JV2aaM|QETtS^A9gL>zX4<%!-c1Y;2TE($_X zXpF}Oa9@u;Mr}N^1WUNkFW^bJ+NLU4N=FL|r0w)Q6U-}j2v?9Qq)x4UpaR`}h3 zo0oGuY@=m}6|!OoQUXvYJF|+mA8Lunc0f>%`WP*p7_6Oq;;dOdaf(nBvY%- z2vc9W~$j^3}*~#K$Kx6>>+)@TdUUXv|&pBvA zv#KCsF<3f|)#HzyG|NYh$l0f!X<=}zYWHf^h4QV4_}yIO0h}GAhM6@Hy_$$V0pS0G zv<7d#|l2ZWa&b;zYjH&>L+&$A4tiD^JR zqlyA&#>W12z@eN~=>)%qW1t?@5#0>9O6>oTY&X`{2DtUmJihfcJ24zKNvHb)tflox zaaC!2@!=(W>cNwk+0sMVYWrPxUx|>-6fVf=G-ZqPL!Talp-i<&}tV@s`P=%aSJG& zwF&|itPFgX=Tvc7ssJHqwTGS3xb;DaBJDg-)mP!+fu)%QQg>hrby(JjMsk z#CjWZ=J!JGW{7?2#F#BIZrppJIY*TcZ_&2{58E3ys9K zG8Sm+20!@D8*tabS)X0$g8k}7%qADGj6eMRF&sTpLl-Lc+7XP4m4ZijvvQWgL6_P0 z1aOF$z2B8d*A6xdGCRSS3hRCoC_H5g?Ac57RI#Vln$T_)s0szGl-H9Y zudSTz9EXW+M(hA=I-;$l&ooe1{Q8~vgFT}BL{Q4ftyZOWJZv)t02EbEwPyFsw0GTc z{o=~#)(*3w zazufB8LUiQQw`OkJ#V;Y>cBm(P`ad|EYWVa(5lKLD&|GGVo91gl81Hia3eV0ZVEyt z$w`y5Zj!VlosknJW}%SmasH;sHdBcG$OGx;lYS9rAW1g5@#R^Nf6>~N$R@bL*;LN< z*T#6$ojdV8Z`$juF05Q~b#DFN-RK8+?`K}X;+lyX$rRl4f)9Y7iE`BE<+#5ZsufoS zc7b#n(!;-z8aBMTeh$y(oW@tE~W|Sa5C0IE=cDVM1R_L@!RAqrlf|sO~ zyLh;S%x@=Jn^@VzDhcUx6XWxuYiZ(m*6UoQ{bhhj&}z4!wet2T7OH6R)XrPC*zS(& zRu)f?440P~c1)~P&gAnWp%}z|1a#DA+UMaFGOjvcFA}T_;Q#RC=rfp9Yv3@lar>w> z)s{-$`}%u&`(AUaQU!FO(e1XOH7CXq=XVKZoZpOj8_O?=w8I1{B@LjkP#u)z14@b9roLCrT#Bt3eZIC&k*N!r&yvVjgHim;5+ZS5+hwna& z>5j%|+-#_baUoPV1g&Pm>afQ9K64bKn%ulPmWhd2;z;%ZCAJfkz*M47?9zMiPfd_f zkeN6m2kIGbcVlMy`=bJR+MZi_k=Spp-&c6;MjM-nVJcn%!Quciypg&|qPB_W31kM=M}f z`Q{lX9(c&S@Zt>LO+-hoG-x+#H~CE>@-`89Hs7`hY7Ie|-I$t=L=OQtez^h57hBcxUt2}w?^tV}_VcFoYjEUx)|#8zD7*Fc+k5+8f4lPJ{B~Qr zkw{q03PW_i$SnvSEaL4AO(wdHs3DXxCMP05P$~!?bj*TYSJwj?;^(@~$0?0Ef=YfY zk;4t*vw+P`U$BajoWasDSyv!2u7ar)I}l81jaF4a2>80!?!%jI*^1$Cd_lctKHnd8 zGO*zefwOBh#x~AyU=FoQ{qaP9n zfDkd`kzbI2b zxxj>4!3Uq6bU}!s=ef;^B*#BV7MsLCt18i*>Y^wMz>F}x>z3&)cYWWR`n`j%8>}u@ z5yNr+OY1ny48VAm&VK`^qkVM&yAF*c5&1XP+OPPTQw}nbandVfjG=lwf=ur_(7W!9 zcPU*EE9H@31&|J`C$B-9;0bMRBaJ^yRGU3eX5RD1;8Y)^@2BbDR1Y`t~z?BH^&)wk4`}0sHJ?iL-@L4to zvBCjny|`QqGOq?1Kqo}mWfjr#&=;45Lc3LZyOZEI8@i2P;UN>%kF_cDI$}#0NhKpP zij|x4mLu6cAtn>blW3I^Gi!!yhY@3R`17A>nAiUXsn|&e%BlKVydN38@pj<-K>>F zIPuRe*At_PnAu$p_I)HpKqZYiT-HyE0DgoMGQ84p9F&0boU@(Ug*1y5BoChiAhJh< zS?NeKY_%Pu&FMyE9ysK7gNX@(Ny%Dk>a5rF4YvyKkt0jWX1mDIuQ#?iJaI_6Vj(yV znz(}-KX=na)EaSLcT!@f)hbbzjxJkPEo{5}od$vNCPzaga8mY>E=Dv-Uf< zPXPGo%V8YyMS!MCM1I6tdnN>S)>KmxFRN8UMYnbEzI)24ZBy<;X`v{TFKLijBj#Dq zId$8ni9Rx6d=j%}HV%+%4j4_OV!1qV&%{wnD2V`*y%5B{ChV$Oi#Q@mihm~les}0A z1gV$cHYW&536vbp$=^ucq-r><@hz|2g;yV%!D!q77w|H@*i!l=UD5r%b8F+&(?<^; z8^zBi{9~g^hDT}z(dQ;1>Fa-&@-xu{=7q6OuDVF15_L4wCk{8ZQiU6t5KtA4p_SyI z!;WpR?4ZoIHlO{n|IC6?qtkqrxb8<$=uN~#<-|}$I346N&PlF4?X6 ziOY{%^nkutNt}KCu(kGF*y{HyN9>)kL!GY7cnEBJ!zl7} zz+iG51h><_*{IAA%U!W?Yt4ysH@;vJ*a&e;AX-S=kAX&V|GL95r1*WbOa-5&C z5qRKunXE6P5oe9T?$KN2cL0 zoc=EfCB+TWiJ27?BYa@Fmn_jXBhddOj?E|nHwl~*-vUU6kSCRwg)z2ijV2yA-q&~7HD18J`2Cjh}XE2EoQ@ox0~@C*kHQ5NuF4s7EDfubJ~ zWiyF%z(;%ni0>)VGvma7yqh3HE60UbiUFyy?UrxY%lq$r%j)XNRG6SNO~au~&h@cH z8feX7(SL-gD>8AfPA;RE2gH7GYb4 z(mX7btPxpd0!%VSN_)`R-ezd}#Z2yHW|PBgGsxYP9?4C8FHI~>hrLhda_*5oe~3g8 zZ00QJRh(;D|2-$RofVD7&o@2$W;h(9+hY9XH|$2MU<`*%B8hCUiL+h;X8mX<&S05Q zHwLGdhQ8;NXg^7DgyLtbeyo)f_Fdp<$DIbp*P9S;@nb2DtwxyRS}Pch8dw1|17*oz zvam#G8jGfJ8%{-`Q559K2u>Y@6~}%tsWZaM(wIq)qOgAI`%%}EJ3T5=-jk;>7>%09 zh*HXV@ETLY7$;Ov6v`<@dL@mpkl^kmlNJ#C_d~lTK`Mt#HUUT*zVSNwDT5`qhFP^r zjK?*a@dyit-?IB;z4rS4vA_6OyW1N9fbl|9K4`-Vp7P3#|G@9np4^C%c&UJWv!A&x zd1M&gbB2O4zNtsl=-yO!{~PZtJ98zmpeR*54Wn%_F<=cWIIVbjey|JRYBmr!gAU=ao5%<2k=+dYS+z6yaRI#@Xeu7Z*%ay};rLySYSq-4+qY zt4-ds6;Xx5BrptV;lUYJ3F^8*x1({(jdQr|z$~uY*1=4>K&2gfYi(?Bd~t}!kFMas zC(q&d=^@HWp;aibU(82_`Z|Q)Wj?nsVB!oL{+@|mxlZWES(F$9YYeu|Rk-7h?Krq& z8r!BzlmM|nPQRMbSYTyPdNyms zT%%7(1mBvdc|=M(s~2lM^x=83Vc#_>9|T@%nl_ge(M*_odI&9 zM2Y~cDS~2gCP^Ae&NLKvh!nZuu)!S%=kU#UZilH|M#{rbDaJ~_!O^p8xM}YUg3`&R zmYs>PI%quqm^~6~V_)iiQ;>Ygi5J-tdJJCi%lamk!tnqhi@J7Y@9cDmyYASEcig!h zhj#RQ9~{h`gTNZ$w!J-k-EG^jI&AR%2TtH)51qo|szFtH6k2&(PHzC6*jF~Pq(a8e z&u9_CVCc4)uHQ9ud7yREfvLh@7voGpUuTdmd2c!Z{$+1fk! zw!5qDT%{DFEDJw)k83A!wiQYTiX?u-ozNiri3xR&NmdQQ5_PV3>&uj|cpfqbhm12p z`>`2|hqC~nctTFd&&YZt7>VRTLEtT@?5kwU$c(zS=(T_!`KCjdZfn#{(i9HAx2h_< z|I^O`#5lNfD(VGa>`!?8y3lyx>;ND7!bu2eFegREC`l6-NZI0eIJ6^M3|W;SIYA%3 zq;F6bg8S~=fxq+4gZTPaY{QnWa#A_Qxdj;O0?SxOv2?Z`2BiY-*guO`UO$5;PpsnP z*#WfTj78*;>`bpX>TqT6)#)MwYik2++tS8+-mnip__phD)1DcWY*9DH|4#Q>^4DOD zLAO%4W#2sRJhXt5OCvmYe976GtUJ(?=m2H6U22IU@D|82(Gw_5EOIpt_M2W!Ge*&x zBDCkXEWhx`SuLYwV$Io>4=69qfE6No6Mzp8k=e`~wi1ya7Ln&eb`2XizF}6jY1mpR zc>du2*6glnu@*(4K_sxYi2##$o5GlJV?y%-?<_dQTOA6LmXP?2W&P5+L@80pR3Ru^ z=duY1u?EJ?!ZJ3LjpT~RY@*364@q+zpLsk;Lx_M_+z9fTQC7^vLiTu6`Ycn|PhzQseaEDn9e&Q`on)JAqDbZtY62Hf+$C?4GOequ+E0 z+vY2b#>Nwgyflm$e|_Pd04afjetcpqu(CS9D{oxD|MHh^!?)bM8=3{f;RtnOFNvs* zjm2;{#Lk%t|KQ!X;`T!e=nraN^?CF+kVt~rv^B7%@%N9N*yPH+Ze;>HG5-Dt_nB)C zwbn3oAJaPzcdGrbyK^*ddZwwlX-pW2hVf{qVn^26f{5e31Ab%*f;}p5Pr5|7cP26>;S2WOyCCSVZSvjD!7r)>got@e&u$2-R%pg z$MuAlYPhkP72f~ZV^|qlY@MklI)#mb_Wb!QVP#lH#Cbx3g?U1U$*st7wkMk#HV4}c zM1W6(F&Y`X_Vxw*#CP6=S09{3U60*H(RtlAE?UM5fYGSNwrP#;zi&Sj15IN*(yB6m z&6mRD=CwhXpf=9H>s#Nj5C7m@hp}s}#ArB-bL{o#>4tm)|M~{Q5n2WC*WY?QW~Vgj zTH<)hMskEWzO}y&u7Xl=ni1?plgCi5)``^jN}5?0rGhR>*t(B}8{V|Do;q-Q-PDD( z(IY6x{08J$i^y}<+W!Gwar9yVO91|Xh#VCWmGd71vEP{yS*^C-bg=3zw3!)2QTWnV zk~mlB=K_)z^?HI5Uef;wGtI>QF{x}0BzC3JjbL+AVaf1cj$0g2Dulw?T^MI1+MCnM zWsuVG-$*G$*Yg;}CL+t3v=4&72K&Ca-ydW5)(*b&^}C@tdC24=o2pVcc5W3P{M<1t z%y!Xf6|u?)u?Bzj z>ks0u-FrQHCETKfm%YtRzt)e)Hfkr7QW%dL?B70x*WJ1uP2I!;nX=X`9Nw;*P|?sV zw+gj+pi*FjC7Y3;3ucpO2<8)KU>O)&OSfn1U8)hYnT0DRL$1J+0P zmJlZ)vj+7DhY%Y!(CyBSTMmft7sG;i5b$=E5R_O+)TPum@YG%MHsl?F0S;e{ljQPK~i|`xF!>u5M1CSWl+Ntu_H*ZDitZYMxc2lqXXZ zs*A`CB?LW6-1w|)EHE04@lCJai66LcA1Zd^o1El-F)ifvBdN*7IH1skI}S{zQJbAK zL5rzY}{!$y`&Eb6n9u2F6ew>`T}vap8!Jzi%epPt+jm- z`Ob}a5}cJbZxN9b-cJPC`dqe@-q29>_E%HeyAT8IQizJu7wcF} z;%^@74WhDLhD4SKo-CP4KYX8T{O^lo?a0=VsLU7sZf)awlBP))n|MMd6dn-_d|X7e z#f%H79W*vkPi?#})1hZ=hPxPN+~r6+X-Pm3?i)WI3gUE;G1Y*`&83xg?6>)Y zuix31_5o9mAPy(WeTg%5NqbsE-nIUK$}{Y{y-aB?O*-MdT8~G%v-7qCp%-&EgUz-e zY{F%u5wL6Mok_4~1BLAzgbk6#_pcP`W1&Bd>JCDHD6i}nK4kwm5s06O8WRkb6N5^k zD;j6LtC>_S2w5zcGyA^O+B%igplmki{(CrTaB%MwzVFTZ0SFo+8))&kO!7PTAHizh zpwq3eWvYw;bct=L^FZ^#7#Zl1IKnPVrNE|a${qEjqN1UzLWTo_`|jL^zwy@n5V5GO zY?whW1%_QL`vJgATcf4@=VOEQri$4WT%fLjcf58tzV+@sFiitvFN0r=jSs(dM&Kw* zjqS57)Z=k#f1*FHzn8*{UnsR@TzG0?lPwV^r4*ZO0j2iM5ilSCD>rT{S~F_uhPU0; z@Atc=X}D>c5VV9zLpXT$6X(}51Z>Azdm70MXu?1_r0@P%woUK8bww_9zlR@u+deQ^G>x4YL9Oo-*Jn7+ zMr0Rz-2glNaR}cyn>iwtE6< zJhImI;0(|ww{=A1^#JBXqS$%PY;sRl52@OD%YNOODqTgBvSB3Ci}7V+a%U6kOMciR%&tW+{Ro;bybOMCOni8#P&mL!v7BfqRae#^1#%l`1|{l2X3JHvT;%CY1Po zDiP*sl9b^OqCtO*x8J=DckG)%UDp#LUpb?xHWt6}iRU0(fSA#$G^X1nE@%O_L0RW$ zi9W*)8@I5cwL850cqWR=g-x2!s|R%q4jW61x)yBPQsGCx`FiwP%88<1VAU`DUHf@^ zS*Q!T!fm{Dl+;4f3LPSPKOBv*b6(*`-f__Nm+Ll~HbSCHt>PS5s|&9vZuGrYsXS6m zQAQ`o{QwDf3C<2KQ#M|CGZRn9`|zkCmZ@0S$*F?U8n6accb3|_Za**_40@p?&cLVq zr4}M`c%yBd8$_h^;~dI%VO=?F3=M{ZPH)Fe3#>aCP+~n7w8?H}isO&45fer)d1+!A zla+E}!ivl65N+t_TnNkIb$g+qW0x&z#!+Kl2CO4|eX0Xbd21a$}b$6k|iv2c( zF9(Dne$^-}`c7D8kYD=F)dOt0!P1hjulK_oG#moawlI`kgn*@P@sXh(H$#XP4LT{!bqR zR2Kq;(WpUH5GqX*ht$Q;PRZC-V=EXn$=}A6YHFRPz0>MWJwJWsLvxHy*~XzW*!ukALtu`n7=yn@a0u%^L-Af7GBq9D~Uwq!@y= zwIN=2>m2U7e%?(5E&?zS5z4Z_<44ZnCx7h$96LS2Uwr8#-uLNeU_o*J`ciVCgP}<_ zE+*|}x(Y5;Ha4>jNe4zQEC)Xt^Z(`#M{BJUYL~DO?`>P)^tY^O&|TQCd1}{=(P&uN zgcAjQwD5wBh};NZSKh-e0Ju2>tUpbHyagL$*fe7*W_QmO?YWlN#vxvDyTbT#)<%P; z-2KcN$7+$_6=j=<09&tm7n=OQ-?TQdPuw!N$`mNVCXY>$C5ofdSyDEjxE2;cm`KCp zB>x$l(}Mh_R}~D4)Zx}OjX~2i7z{=j4afNQH}1l9TYE6g#we!pyyV~g%rP80GeFfU z{A<&g=~d{IY64B()R=+@quOBH2v~F6c%qoq+!8_(LL;xf;LCHRF&Y_6cNM_VvlbBTk4nK2mE_?h=TjOD&yVf!4q(>*+PWEsPenefuRFi<5}?2jjQdgDSs zAfvEOnqSgPh|q;)dx@@m?%&wASgB~tmQQk96oUVZ7}b^=_S&L7W8B`X%7Qi5Jnma- z_vAh7ZV{OYn*&6|A!tM3*5grGOl_YjT3t`&3Zw`8(r$pO8#1*b67m`^r z#>Mrx2E}o(p6FgCo`gY7z=}loxp)CH$dHXKK#Hb=%R}JQh{Kmtxy&m?JPC|oASRW zz=SY1gvI3=d4TENNQCRsVT_hK4@Z+Y!@?A_Aw#CN)=o)l|^2cJHN4}Jb5 zW*6q6%QmW3<@(rl?|mck0yCpAf=8cUfwdgHi<-tljKSOQ+JT*Oo!GZt41iNg;ggS? zz*9$7(Vgx9tf92V*rZ^;71ig(ToO|-FrvR6f;}vW~_2C!#r?BWEsG>ibz{Tz#`J~TRUN-6QwPTF)Y^7 z*w_xYW_zs5w4vZLspQ_PL8Hm~^1xb8Mvz2N^wh=R*=qf4GZ$X-wv_II1v6zo-pLN2 zL`O{0V6hw#-=}!5B41Xga$Kx+q;&%{#-gqp)Qv+*ttXU=*qH4_fZ?#l-knqU;kO?| zsdInY$rD{MV_X~j%158Y*~Ky1y%tDmcY_#%nQr0Mw2a;KxFUQuy-MMm?%9b$`=?Nk z&4k5CRNRkpC}~-owZ?E{asA#NzTp)Msj}H%NqUm@0KES%j=>0_Y-t#4(Q60bX%mtr zOgOtT#)D6SVo>)@sb79V=>1V|NNRRB=1LMXM0==Mb= zLKWfE(f}vVuDOH5tDsnaSQulX_Luv;lqDZ`ml>0dZpdLDHlw=+kSQ!gG^X*p!WMO1 z!#18vFBZCLgL>O{SwUs3Q6jQYmNg=>4M0gm;M`t52b^NGn}$et+PXE{jv6-^hmta( z=X3%!QBK3LoW!f;sZ2$ZvQtV@KN;m)(sTR0jaafqBpKFI40DTyP|ngiRFWcD!WeOZ zS~~)|`+U^IPHbA}2?q;M6dK=q?>=msuFwR~Y@?ow8J~aZ96s^D33R5qS=Muo?=u}e zc?~Yqv##sotQAz6@E!N;!oU10hw*K1+K%zacu(7~rQ}&VUWkl5dBSD12KU`IhncpH zrTm2$N)8oPIDT$`ho4d{lMVrlX*{muHqd%IZr*C4Dq~`x299xvNA_8E zCX~blfI2|RnPnsyW5^lGt(x?2;k%)>)428`F^1llYpjJ*PC@dD>7kh z6jc=c(tBhjWx`xUX_l6N4~}vkV5bt{Oph#@#<){5(;iA2-dIe z0^W4fmZ%xDq4$X*3`Y%q`~D*!-9}lJNt4JLC`Fj*l;^J!USbrH5Kb2~Ee-tTdv@Zr zx6WcP7$>u^%!Ddt2{4*kuw#20uRb_40m@&9ydS7_pL=o=lp;^+$A|EXiB+C|(Js%wiavjyIA^IUQc*aUIp%SV^7)^DH-x1D5+yT@)nFbkc% zo{h#+?3q>fKYYUNTQjGTt4}ro$8fl$+Y`3N!dT<}G$xJ)ofMJFvet_LP>@WeaL@;p zlUykUaUa{7F?w6CYmY6@TGOaZ=Q~ms{et_dh}btYg$ImB#iqp0jwMSDgC zNAW-l49mmDOp1#|xslj=CvtbVTO4wmtT@6fGzx-cCz@E32~ihGbtYRmBcDO74dt{y z_38#qzY4@~3x@7lK9L_s1Mdb}FL=5gaIE5WEtu#`* z2zx1%m=8R?4AKRZDqLx;2-j_IPxw1;1T+5AmBHd%@X1Dm}4uFCdhf(W%r0wVO7ZX~WmTbcKc4 z3NM_h-Hpg9ErNSmSJPN@I~w=iJQpL1FX0Z(iqRjAapd$Ex^Tn{TU&HH3ODYY%1TFx z=&U=i9Bp-VP~+de_se+V`95amr+k$mXlg;Pr||YyZSyoqy5#$1X4G|qqh|&nRlrza zd3hDr?djp~e)El&{9M@UVEx|xPhv2%=uIn_#%6{f6pgtgcoKUpFDG1=$TERU;eI4J zMTpmFW>$XvPLhcij5imfs9gr(D6CLS@0_)#PVsuiQ^1vc+uCJjViB40KS_C69EP{1 zF$!E&x@g7hV%O;hODt6_oVUpa8z+#oQR4$S@=4?OWP;ZjWnH2{7AA(*p*OGs*P~hS zp0UA{*w2Ag=9ot5vqno($#XTz zO8XI(%7nXts#NH;^ktR77w-@)6iwP>I>kbciif6YaCmPQH*D`-^gXP9=I76hu-tFr zay%=bZUm3LumZqkbgkKWw<360jDTVm4 zOK`=jYbPj&NPh7DZY6@5L7^nQR!Y{Kk{`rLuGNi$!v3|NUf2emh5b{Fu|-fM4RIJY z=KK$g0I&wo&C!Dpu*R6+%b|$#tz8Q^^{JiC^4eWQB+6-Tt*fHV(ng|-!gJwnCIDoqS2KVV0C2;Z+PW4 zeCw;XpQqh>9;=BNUwG;qKJnmbRP8pDE_}6NC!}XumEJI5FIEy>>~XaL24m|tckBkl zG55Y-eQ+w8ylwXD$k`!=V?b9LtTb3G#*M-+{_zn!adZ`Lymy$8*bi;?K2e=Q^XT4 zv@Ai)xc`x(`1$vK39JefRpF-+x$~g|!5Y&*5pdIWTd>+6!g`&xmKr0V z#(2_xmj0vqe#%x+{}s8Mi{H2LO@9!xa_Fx1lBO;jxn*e^EgZ&U$98JB73QW}n44}n z!T|^?gBqvKjd1qd0LIoR3l*hNB+6+b%Ao|_ag>w^ok*~^u;P7M7y^S~-(cVF9)93$ z*P&31rfDt=H2GQMZ{L3eYXia5TmiSrD-#0h!$AWQpk2_02)39t$#IUgFbV}U5w~O4NZ!=%dof*MOQt&4xlvRm(41Dmjr}3fBokF|i`ttEu zFc`X)som{idaClkibGL}fO_0udaA&UJA0S)I*c*czqNyZ^qyNIH`)4;+yzHC?C!xw zpF4}6`kjX`YJjQf(o6jKptD}?)CCMXtYP0)%^l?7Ur0*T;`y)ASq zJ%JE!CbOG=6;bbNOyrXCyY*;!!6OqHZ|HZiXR1jo;fL0ou2 zaNohPMNw5KstUF-sK*UP;~Kgw(5+lXV_n4Y8>=Epu-3I;-~JwEyG7Rf$px3=*MBb< zTU~S%1~?`j2p|8_3;6fH`w$ja1yeKAuo4LTHnNupg;xw2Vc)J9{LODXjKYtszVl57 z(XKRp_P4(X<(=QHG-+{xDRJsOODfEClfa$ZlyXcz?^P7E-$Jjf3MH!SSSyr~mI9xj zm^t{N?$zrqOy0-xa4@hdE30O@XsK`_C4Uou*hWpF#Oxr5vT1DLIl#=xoGSE+K|tEw zT`q72!!ei{-}07&c-L$8WA}V#0w2vKboOrP;s?I&M(o|%!%zSA!x)XmP)a3~*;oiH zm~}+9iIlr|fw*Bt6HDp@mrcLx>-XR_2WOHB;YHBYy0Mt*DEz>?4q{=tgI1|fYC^kY zRGQJPG+G6rQ!+};5evAK5!QvWYOsntzBt6EA6Z7b+ll5+k+H+Bp)if$hMnCw*4SLD z>?Q##gRFEEuesz!${_-1LAz`N)Q+OyfeTJS11ab}d%KK7J3DBXZkan${Vt=@pbG?c zTz~Ys!T;%xzl7iY@Kdl*=*@K9N+Id&+H=f~_1L1+3P1Ah+p%Y%>nXDioqqGJJMr5e zc>*WT4pCJcElQ*Ef808v^nGJp8z5nl;_ee0_H0cvq5esvKt-#vc5OoE$%DaUy$mdX zEjoNNYxJWB$hmXpMnI$UOfHga8*;bvFbsFzOUdXc`i^?P(AdKwd3A=F=x|VDW~#yu ze$%aZ+becYFnrEGalOPEGrs;6yKw)b$MLBLPGEYbjFm0ZZ7JO(YM~dW0M7*Y>FXtv70xP^uPJ( zljx5K({rsz`X`bkDGSHXzJ7aa)7d+G4Qs)u$y^h-h;k_4w91(949B@;l{n5Wf%vT$ z0kjhA-&*;ic4LMWU4%?>VH7wq-ahr{as0-IzJiCIIEAXy#Z<551q@8weGa43Bsf;WMVn^%;isU4z_^CWjJHg zOg79oNx7~{2*be`TV~t%@$b0{x9^|#{ia-0PsnReff@MGZ@v}Z@rLWsDiyS1Xm;hO zQVPm17H|;paxc$+-}%m*KjuimdP#Yb3|!i5EN&KH+7L(~!k>Nd6h8XE653OpsD#1F z&tJuXX?0_u7}z^sUX+!z(d!u27PWEffvk#%x6XBOA|O0~`GN&_2@lZnT9v5|AU(-H#01h+A&?w!3Tma4xw)&* zzv`^?qPnhSadELW)+l!5d+U}OtQ#Li?-}>PIXIHXJwtE9;Cn=CLv8F%YD9N$_vS{U z8k&Ls;oZ06_Wkpj)yKwkz4afSwZL4j!d$PqU{<^Mx7K}7ml1fA8GrMEdBtNKV*JIE zOZbHk9s`waXkB=)qd>IfWQGMW9E|anJ7#cTp*rsxT&QA*H?sgj?5$&yqcMfGML(hw z(8TtWa}G4I)Du5;8;=^?cjr6~ZttD92fWd?&-v;WldcZN3eGGK@bGhs_`Od&g-4$} z1CT;{s)y;Gp4dfo8P)su*apOIHr-zv;hW!l0DtAJhcctB$*-r5E#us|KH9yuKbaYj zCT-(bcQ6U(ymoIz6V~(mTAp)}plotL(I%y_Ldy01IdN&dIDppP@MNJ8iV%2wMqaRZ2TH(c_{NOVDW&7tq!SOl|Pp@3;wXxOqoXxVwxS zJh`)9T^73%@aIyG-wdF#*)L|s<40HU)4%^b22F|Hbd^Q~Ab_0}g^*y-H@N4vY5eWC zZbhl-yqob-gawCL5`{5G!=1XPl}(b9@;R$vaL9*;Qi&>c(K$AK@Ec zzZZYYgG_eaB8OWx5PbN-Bc7q=(OQt#st$8nld<=jBz7QaA6$aHhm}}nyNv6IM9d2H zxVFQkrFwg(N14zAWmI7hQKJE@z{|rhGYtj{PcS13~;;h5ac;eos{hqhXCZZrX;w^46O+>{qWOD6S-nT}~k7K+r}mbXW3P zH~aPFV?!*hDfH$X8javg=hO(Zyo2>p*MrGP?ELm8pTb8TJdQIihW{N=B|0e|hj>!H^LYhJ}YapVj>{owQH^xDZB znj}p+qSulyS>gD{?xwe(iM74V*ef5FlMRjova+&N&&+MnQ&Ur%mlJ-@Dnuk2zzall zz%lWGwY9Z+b#=97=9YhAvGs6d?KpWN2YptL_QtIlQmzRHBauymAeb+!I0>>@ArLIS z`@S2Zr0IIp@Jf4}%P%!)Q_p*$zh4S0xfZVx0IHTo*(%d4nN++PhzWzW2CurYjURdI zJf>QFS-&@bT&rM|g$A+_2yy{;|M@d(KSuKisI38V#Qfo)#+zO_hrf024)j{;qKXt3 zJV1z08^QgLp25S9En#MB58b)8_v#5VXSakxVm!D+N&MZr&Vhj8a0Dic?|sLO_?|ai z=X{Aa`i%Ym{@O>rg3(yeYw-qUe4<<=qEDzsC>er>>XRsD+TdL8R=nAdIK`|jugc=$ zV%_O+avh3 zgk8+=CdknRgWoD=H*bG!h*#Xa1Gn$ra+N^Li<3#Ogxh=J=Wz38rRcIy;*Bznn~SP= zV+3!S@oP8TNH)(RCLsfgq{FuS_3PxI#OI&)y=&n8Ixc&7uk687WL~k5r1^xHT@m-eDWd8@)LmeWk$Sk& zl&uyoFE5W~XJ@%AOIr6D3BZyDu)(~k-@qC7$=u%EUh&-yV9VgEq>_j*P~sjD-NbospyqMehGU#1_(9Yd3Oij^V(Tw z6>>GFg8wY`ZEfMv=T;%maAs<*2MmVYWehZIUdJ z|Gm(Jxv5t4Wg?|BD;RI$Wg6FKyLpkDK^uedsDao9ue)O#e)#P-U}3s-(a{{8`uw0K<&yG6td)tzh2%UlhGHzt>7xCqpGqS4V zFxka4gFzUN8}zybZrVFHfwEp!mK85ZHnEIA*^HQB#d@VhH|TDR!P?MZu2*5YQ(P7b z{L3GC3QrvELja6x!Ej{J2r#NG#-1=&@?qh!y16Wo*g}W>+5#o z9k1FQJ((_s+}Dl8&;I@wab|IdshOUiwfic@)c*5Jiz+r`T%?s!YYjM13XuR&7qpV~ z)n41Iv0}#k5xFfDtgWq?;c&=RRpqET0XU)o^hKnx*5cf`b0f-X9f#yPG zSd>MXy(Y)CU0BdgE%7SK_Ujf3%uE+JcCx{a?G^4mSm7PFb+LO!uVaE;Jpgvgt~OqG za~mIeU9@tP_{Qq93X8c zk8ybK{HC(pg>I~epIgLd9yktG3aZfFkxeD)Sup8h*H<^SMOiX_;GO%ibG~z)X3~W| z$j6Va;x|6}JUTNo=uY)Kc))3d5EdFjN9SpLh8PYdN~SUcQys>kgI&Dka0hqnX`x+Q zT=w)z+Lmy`E=-m9{j|m|`1wxQWvOpovk&dh`W)RsZ@_;DJmPslFdy+7VB}Uy} zGPW5FGXrkv_xp9f-{;xc+3-E?_xsCwJRUD;tv`GA?Ag158?-m$$rM;&2Ir2fG{aSZ z%QW|k#049b6&x+jDc0Gh0c-6?vIb%(I;Il?TW4DrCN^y1Yt&eDXS!&$+o|048$dCj z{3+Np0<8sq=Us6t>S+*uSNP>$bPBFy%J7 zLTzs^acG2pdf)v|;=lap|8|98;AZW_TnBl7B3zj|$LZOx=> zBjUH*1%T*QftBM=FOS#G)vdXGg*2n+0n4l$Qf3KZ@|45s!Rd=gIl7_%#`iznuoo&< zmK9p1c5;@!EOmRZ0YZ23lVC!BP-D7V;O~Fi4S4OLEt?9M@VkHcqet+ir`FJ$p7Pe3 zA&Xis16o84;6w;W8$!WZh#1aGH)|uVgou%vOl)YRb)jDHN=sA`L7{+s^9A4_jV=su*lC z;QvlY%JEm26%K5hiiTXV)bw*hW~a!%x-!DTT!nw|?T1~k%I3-UA9?5me*Y6k(CPJ{ z3l%+Vh@2606o-?99wr@Jg(OVvKskn;$gmsDB{y^P%LS;A8wKmpb0d8D=-@I*6X%}~ z>s{d1d)8i@q2+@0!w;RrXTE%PLNn@eKJ)x_C;}9D_-FlVx{R{>w?6(Pe*SkJf~XQz zryVUi#nTGo|3+;rpHbP%A0aqPn2ALfCwPxkMn@AhiXsAH-HPez>F1YyCmNEZ1t3k+ zn5Ctqu~JF{_){Ws%;2S^rALi1{Tv<6gO-`4uF+q5{-Gt9vG<|L{ab_j1SJYqG^bKg zNIA*2I6_5ZWMWW#xnFl2n8Ts{b68#OJIfG%x;2f(+L}RA*SP171^jQ{bqii|aCXzh zC=ub=lWX{ofAkEXTBzEUQ`$pDzZ3Fhw?>dib!vPnewf6W`v3^*H_5Jqwn&$dM$I30 zY_Y~a`)|kaTYtWI$#K?Z4vQ-%q!2#(=vn;auYLu8{Do64J6&GFu$W3-NOsMsl`ovO=pZxt3c;O^)ch6Yk#F%pw%=L~zV9G(*Zbz1~ z*{npB^~L_^>P}e^T(^A+|L0%33y;3AjB{&av`dY>3teoVE+YcHnZbSjA^-IIpTwh2 z4=_DHlZ3i_u;sMNC?FR~|C}NU`0VR(2aya%#-@6#%f4a#;rGOeA^yLAx`-pE3vAgr zjivq&UwCeWH{8&n#U!9|5FJK8w4w1P*D4DiOA%1xo#*Xp%} z=Xm_cB7Ww*593QuoJMbU3Po9ZE1-n=*5}KWtpb z3kgaLP?ROkKKIbMX0%!>-JS?mABPx^$1)fUPMtk_wjK_L&{>1~co^yAfDK78_){jZ%Fo3ZalGbeCs;l%q@)>l%5z=Qjn2e0w;(M61EgQ`$hJf{;8%=JpV z{_w(vO^drc1w|6Iow$N2d_J&MmiK191a zg|b}&LQq8uzyH}Yc-;-t?zLRxIj#*y++CN(SbX3wp2shK;1R6$Ev9Csz}g?e5vn&ms$zJZCM>)-_5T1a`591*1(1dvt;q6;r_YT0qq;TK5~Y-^$B>Aq zSX*2B4QuTvP&NPn%gf76r_)&tFfoF*qlT`YB#_B)s4_I#xhvGi&%)zxe=u>en8`s4g%yGYwUg4m67QCZanl6Pe?;MMr)!GNG&roIJgTV`o?K z)%*&m?&qFb#81EXNmy#3-RUHubYJ?W@|>n`@R)*NX}qTO8p({OK|L z>)$<&#kB&n3p3DV3t;U{umDm8idGxH`jON4^0EG=!LH37WVu`2>R^obedam*qo4l^ zeDKr9(Vd+}yH`0$*l?{Si3BpK=%xrJuOkd(RugF?L(20Flv85lY$_1Ze2?jPL3i=$ z7a#>DgT*6{oLM<{c8#?b3S{l9Bo-0YTAv$_$IHvh%K!ow$^$A&sZqP#exoslJa>`d zT-ue0C;-|tV=}`vyX(d~w~OkrTLSP59=|=$ildDID6_@zfh^+evU{kmHaLZkS15uj-r zy!K$V;i}nYO2A3cF?Yj#<>VMY^(SZX=Z_n-r+es3w==ev_uK`cC=`}f4IVqz$KBVp z&@TC^uV)a}1Asqx;2eJLgQxMplMSlQG&)nQD2qZN5Ilme6k~Oz#uuMk!7C25G21P# znEka;umZq`zjz!!_1;JENB6&g!5EmH?Ln2=D{~+c8HkceT6AHw+4fCLLIF_XM7i}Q z%`}0uQ|e*;)=;=V#P1mEvW>x+r^e6y`Fo!k4p*0TQPu#)%sgi1nurNN}U&a6Rn~&qo)1(NKg@8G1=|s3<@?dl zlc$*+f)}kAhZ=)C*}}C4qhW&`^9qNyl~-iVk(2>_kUX@4|M;OL96hHnH8+i_Q$;=I zSlI=YLjrWcIDT@3hhFI8z_tPlJsqF(a(co%Fh2Ff8h-XqPvV20@B31G3T0I}*8xtW zEskQ^?sEzHz05>S{(}7HzNzxz{K`$y;NV@E5VsN_qfnrj#)}km&oO|+C>l|!z-JJ5@QU?vK&@bbx+eYObJm@ekp)O zpzHCF&1g;L_uMdFOl{Y;9%nO06?+FKA;S?(rU=Nm6HFHxr%o?n*VZ0x+&h2S!FlDn zNbYAJJF<-bHcRGVb;xM@RVCk1XQP9;{(i8&k7g=u$(hCn@-zi&#J^Gc;C=qAGA^ z$>P&btYWn`*fyomDLH1#i~n&>1LxKneCUx?{Qo|-h(G%L0B2S;+Pxmy-8NKF#p`En z;~mQ#O_hS9o4-C)tHjc(!Tk@P!|~-2w#^jiRoZI+U;6a`&XNA;**^a8b4T$X{@_Wx z{}V^>!l@C;b_d<5E_9jAQ<<{sXyW%A@7HFc3xPx6?pvq#mb8Y0G)@%Hj|Zg089h<9 z^UA5JW>tXAvU%d8zx?dl@|kmGtK9&I!Ae985n2BpKRp}{KR+A}Wy65=K~NV(u}DO( zgi};h-j!YX+Cb@|)QhK2HN8%&z4hST)1z^n$zddQxR8b7tMw;Mm}dr%>ZzmW@QtrI zfU3~fB$I9ipn3TDCH#wDe;j953B8#qkOycYH^S>9Mcr5~{M#r0IQRNl=@cN!Sz1u$ z)#`#ax#pcZHNxVk#$5;6P>L>k2u)@)!qIbM{KjXN@n1i_f|Dx+I#V5#ofcTDC~6&% z34&8mjHSC10b^zqrG^p4BhL)+vB%c%+_{lQj|GkKZf@d)&PI)3WoU3_)!>2W2KbFn zE#lWdxq?4`qQUa0Le=V`)v2J%Dhg#26HF6iJ#|FV1>W`ECSN06Xb3T$cy53XJ$M?A z9$kfng<|KIWGtfG?6?uEjT@X@t?|N{HT>xVC-F-kdKSO_q37_KN6unp0O+bjtJ6kN zwW4WuU@mzd$+Wxb6Nn^AaGa|$tAq?^azKHs7PXpeX2+5%lS=yhg5rcV24&U8(o>&Y z{PHJ0@O0Vj)yzB!<**OdhKP*Mu%9}4^5pUJMtAGK78Vv}wbuX87!#ZUN)f57wQXx{ zTSPkbV9;vM%+B5Om;dKm)!gCMXt3%sDl0G*ncpTd%X#<`k)x)qScA2dKHl=`z4%|h z_a11?*PL;)UX1(051qo#z5gk!3>Z^$GrrfP2ttrnY1ZZ^U!-*Ysk+C9Ow8=`tXRbp zI0(W85F$?i&=o>6KmFytBIKVbmWPJaxLpUpzCwr@lPIxm8AYx{I<^ z#_Z(+k}^~t@p}m12PJ?I-YFbnF&d39TpfX7(5WnDdW>$1Q5Ehp8`T!eeZk_2L4U*$ zQ7Bs_TAeb}QKBgQ8ASQQc8dcey*i2HJX($m+_q`lYZ(qOSQ$a=2;B~2wx=-FRcMzC zhDF_2tPBj6)@m#-kI^3(FauS)bV#()2$%}sY$GX~fs=QgPbIC1rKQM57S6 z%v?83^UqJ8KHXe0V2h%_{QUe6h{%n8L{eC5D-mglNE<-gTH9V-Uas~XzGL^Rzw;*! zE%yzJF}`@bt-Q~!O;qll5=4? z;B6-4P7a~9#@nAsW{Ty<45l#{kBsxyZERGr4}3gbXjCm%K}7#tYvZgs@uP!)fTTc% zbw*@9fW??h!`FvFQ%4!nW?W-59K$p(1mkW`()TjFVwlM#^`HQEv{rPXt?RnkzZCyTh&S@0;fpR2EgkXaOk@iix zcnJ+bQEJ#u8^8G{k3uoy2j6jPG+@f(_OeGFNb|GDUs%R3{K->z@bOhtoi5tlR`hR8 z?s_U(h_Kg50)o}0UzZX|C~)Xee2*&;S!ASLXLr-O1nuU1MOk8ItHy9`ga@7);lZZ| zU>IoaY#W^!HNgl+$F-S-61q~(7})Ql#nJzfTTn-w8jh8`$~ko#4a^K^x-_ENXfLxB3Mceta9&1GOt($Skk!0 zBgWPr01kb28Mth>QJ?$D_}MRh>}b2wX?#32A`(hq6K1eVDGZ0hk9&`+iOh9DXm&6d zEcJT5EdX};OvT>zjy-D3092t_EgpYnu{$@*(U6kOrh9xT(GHt1;ASClT}sSWQ=JC6~!={4FHsY z)NpNCR!%-$-*D%>^G5Zk8ISxDxAiZcQdvk|iNg0h9JP*JqhFL7M~*JzPe1z{od`avxTljBQ?6ZnSQEBK>qpVzjvQ}Wtu|H)M z6Ozkt1%XsfUiK)c%7T)UTqv=m`#(Pb{f*6&YPfOU$V`#ZldFfg*F>>Ij@cLjr5LOj zNe98(c4!?pRg!Hfr7Rfjd<41Z8EX}RouuTE_|v({MO00UwwoD8*au`dyaHOBG=?*P zDS%Yrknrze(tzA%&yCnWhwC6BnA^4uPk!tdPd@SKKRm)^HPX5m5m5-#93e(g6syDG z@DKa_{@IO!@}dDd8jXf!S@yNow@ES$aUZuMQ!q0#Q^8B8jyHqFBe?#~d#A@nQ8OOK zkxnd$d_P3Ot~?3cjJV|B0;X)0XpG>|ubjrm9z24FpF4*mr&qDuud&=8V|CbIZCGP% zSYvT*jMK{_967UwN1j{6haNnJ|MszG@f#m{4i7!C2rAp?PEVnzN|&u!XR53mEk_)J zspB{%FC`H(g$q_|GmW0O8yNzV{1_9n`=#nkRTM=vKR^F%B66os(S?Y#08}0^Zi`5}u1Bq5e^|ZhZSOg7%iDi+`{`4Q zF!k7v98@~BgyRYC$_f8Ml!`V84y16IXgsPh>^rH-qEKkHG+M0^tyTdhz!+!RG#nWW zM-8lXbiwvi2W9C?%~%TZBst&DNS&^&&qg6&C6t5Ki)C{h=eWv2XUpkHr`Ms!$*o?1 z=;+2_$%7;rPOD64THvyvbHjk+9(anJr3@EHzAmIPu^tkb#z6zIhfQlJzTfmWu#t5x z?McNVjGsgHj8+`}xty#Q#hYE^d}sGy;+z1POqeVN1!5L;Ad$N^#?( z41|72d{hkg~Yk97Z*%1T0pd*$;x zPNSJHJt10`jl)62l9j}iV`xc~CFu2X`hAh->L)=?rYg-1*;}iyn%o-LmGiAl_c%@6sPZ#nRzwytXfBMT`JT)~nH74evFNH^* zEHMU96Om=+mGOA|$IHvh&s;QvZUV>AqtR%&EX$En>Ut3={n`(_QBMS;h=`lvP)iH@BtkBhSM0#&B#;F>fTItGJx{`^f4=w4(~De1vwN$ zgo#9!S_2ye*CgTt$tyRPE|q)%+B&fYT~ye*Fog%+`)`ha`LiE6*6ws_rPM^Q`jR*@ zn?&UEXU?4Yq>o8^H34e@6vN^0M7!N?G4poIsW7q*QTf1?Y+0& z)9Uv}$XujdK!l4e2{dr?P!9kJuN&w1ewY;CRSTJmXik)XANDsukzL;eAcbIbe;nN~ zux_F(YFJnZZ!czC6?^i8e7hUoX%tTaL>}`$oNRg29*7NN|`c@%wY41Id?J_?-}C{ip*Xl_0`#DLoV<|CaYZuK@u`1W&a?V zDOy;X@Y&0i;x@;>A_5zjWv>6UX&MnLIf^=40qIR;gpIznB1s@EQVheITo_9taexE$ zFfMy!vM)iJ&034H-NUx6Gx*X6e(Kc2AOHR5%XWL@N&O=Lk=2yZ5s8SNU0q#$U(+813tD0uh;dgyT;=vNki_sdgW}t2G*1jE8Gbx=2KD zqAbg*)WAnAs8BX5-$w>QHc!}nL^>c+jTw<&k+gk7f$`(eKc#g%(Sv+QM1_UGT=;CG zGFu3aYI#AMD)guckxZW_>&(_6D<4y78Zu_M*~AA~HlfK%+z|XBK;2Eh4w%SF=v2}8 zGB;|ClFzOa^jZIVD3;Og_XQ$*7%Qcp3#LwPgfzJa5-Na1)0J%0<%3BA=x7tWEYJqS z3<<#b{GDd<%wv7R*0_lTf0?8vxUij!NV8cP-2|`{c)L{oT zTAe8$tpE3^2S5CqM|4?@*%AAP?91Ws$8Y5Tz}fM5{5x6SYOh7W0st9fV2pXDs;W6= z-svaXAR?wT7$at8R+>hG6?yid`}?JC^!0bVv16#jXgExq-B^0$>vtJsDToC6gxYdK zUBOAAaH8Dv02V6{R6=pR&uOk?2%k~I&TCi&3m;Y(%Y;&!14}EXD~9onO0}ZWG_he5 z`Mf@W9I6`vFI)owYl@jW#1{L~Fa{X%%t;>orie0!GBIS-Pz8i^6$Sht=`f)59OC;{ z2WVwf$Gp@HfgPRSDP_W}Vr9ya=%g6P5#deSJWe*3CLHp@x?4QlJwwU0B4KOUGt`2( zSwwWLCsJgB1s0hvR075bIjYR*HRQBQj=QevzbC>6=q(m>-zmmOG{4%&eElV@Nxpy0$^iI4dD5rC>Drlhi7Vp8zUOf zy8F4Lx*5y!k3HBQFFuFEcir2eqDyNlt3EsUvXndr6r7|}!ww}>MzPCeSXgIOxexvj z0olr11S^Omsu_j{k)%)BmpX`#3*-jkB2o=VggMruwH)SGS zHs2=j&wbzOgOadGkU>o|?qEMVa?s;=vL2;g{GmfMMFOU`7?2o@wF&_ziQ!O>@*7%ac= zrRKmbuj))~-J=GBVeGxahnAPcq*PW52DXukWogK?L9WI1zlG1D$WB~jM16Mxlka<2 zX|OIL$iYgx*ni4Xr)`1`tKp%-@gPf71G-W8S&wA|W zjH%2dpS45JJQ=v811{jQbQn31qLjhe|J%Bf+#L!sfh-5YL@d2UCJ!X`b6H7;MMT1N z2IMeJ%$g%VA|kJ8Hl0@}amGoB;Y1l@BlpQk^0Sfwb)0(WfQH*9wja^ZEl#U!0?$O^ zE^OS&fyC?|2oVCp+`>F&JH~$Um;blpk9_*iP83Bku3GK9XI(#YHO$-?V?J^A?AcGG zMg+}f0`T&;#y!iauIn{sKCZRi4q$%W=|CBkkXR`qBAh<@{P^gjpB!wNn<@9)ba!b) zV>lT2eoALsE<6bUi9d~1PO?f)YQaAz5$!1JT{%-P6tM51-Q$&;|M~eUA|=g@aAG#3 zw7d}aAvw$V8AUJ#Shjna_q81RH^j0ym944FRV>-~C$W&+4LNCg75ieEM2?YJrn07N zW=a!F?wkc)s0Kp6PuZqb%-lXBia`nhNdf78CnX}qI)IfZYniP?a4yVtVKekMwy=KL z0@mHOA|6|?u{VyNzXTuKTwW&gW{oNkX^b^7r9d`&&U~5zE6SP%tPAYewF`3Y@zF>B z^Z#=6$uIu-nWCyjO6&2u5;$iy1w{DI7Z(@*OyYI`3^wWCawP#9B2kUU<5gxpQWV8J z5pDHkW&}U2^*Xq^C}?%*Z2jbCKeDD}jSt=NnpSIeI}HZ|nA*4u;QK<(fCFN;0M4q2 zJGE{E<4ftVpX$dq6Tu%jw7!1@JIg=ftZ!ydH_ZDXm+^x;oy{yXnbXb4>=9v=GN-Th zGafav%$Q2fiGbrQ>ml`rj=eHDx(I=$bmr_%S^4XyC83;ld$4KD6Cnh+?3yy8CwJrw ze}5lE7M4u_ki_pxR@Rf@w#y6^?BV7a3uE!Ou=mqaYn#N`==CofFMa~tc^_eyNZ$m`ZTKgBv%gcY#G)*8kk8l}gOIH%GlJ-KtD-W=W6v5vAs?u5o$Q|an{M%YoW=$m3=83NdDrj4rAsF<0oIkU>C^y5MNtd^ zj6yja`c?pjnT;{#{*{%LKd$S#@mck@gt)b9{KoSeC~+dbMSC$>)xBW-(N#LY9jh60a5e-6kxqpkoTe$PZ<cnSnA2W+ec@y8Kh=!uVQ*@xA)-+zgMBs~X0z9Z znQLq9#}^kD|ICB7L5Oi>hLrPOW!B>>|;MDYXSAm0eZELv;o zudbORPd+?2{@DG4c477Pcf7W&dNVW{)lM;hlFw|)lG(tWGbGrTv+m~MxB^H1u3hgL z8v-Ph%OC}%wYO)WOwqxD6#Fp@r&cFlN6T(LZ`2prNu-d3zcLU;=`2Xr^}Bgb8W3ey zct`|_;_uITXG|^@`SC+GHw^*o$2dw;(jE#ZwxW!Qg^7_$oEHma>Yr%~DYYPy`r(|Y zl$ElQ&wXXxzB6TXPf3diNopt&OCXqF$i<+8%|<;Gh3|t*O%PQ}n+$0T>SSpwv@WrA z=XT6bu{`oeKePPF-}<*lk39Xva#dBMR=Zt?AYGSLM_x?LGV^NFG#_4ET>QATw)Vfo zY-WV>Vgzgm+OQ*Qhr{9XMNuqit+x|VCquyyTm?c9yAn@}Qc4!joT{IF=>E0ikA8eS zKR=^)AG$@iXSR?LMm=gW589*+70O>RA)C21HS&FF@aLphV!K(Z(q$~0qjYH;=)0ez zFt6mmazbPmYe$x!xqtZK zU-PxaT<2EJb%hd|AOb({sPF!Sm0c>D*8i;G{7w2*5yLy&ke12)gJUAFQ5v`g6_P{H)%&@1UOAx|^&p z#v^Cq>&hb?QBC&Nj}Dab?4xY{>VO=Txv?{B=z)XJXPCuKEHH&}Q7ShjBkJdLy$LF` z&uF3S%eQXw5k}ZmWy)u=GQp3{cVLxD$SHfT#k?GzTo9n_hMYV|kS_pa3?<2k4k7ag zj{JnCvsuT##Uvp~kOM-AERi-|+}#j0e32p1l&=W-kY>s@?j(+TU=s`;+8wbb&D(>` zW5$;Zi|df2ifOIDHpXStqJ@PW+p%-U44N~K)t~(3pE&)=|Mu^WpE-4Gt!lSwuOU40 zGu9C^4@G1c0+pE?e@{O<91h>Rva<4&56;H_sjoCxH?v-MxnHFZP7Q#IqG)%!-Fvjw zuM_!y+PktIJE|jGb(Xu$>H&|J!I(AJ5FiPOKnU`JlqiqM|BRFuB3=>^i9`qzf)#?C zfNTgh8QbF-&$RD)`c&niPo1uA-&q{nV4_^fy1w0gyLJwWHVSKnGW|K_ijPM`m2->#f7ySqc!+ungNnmk=bwlx?fYl@OR)m8!OM3Y!+3CYk& zhFUdor$&Ixd3P1dPJqm<&K`=|6;{2gqPkEMzX1(Hl2%G_oYr`%6GGX7Y5}*B8!oG~ z3^E~9vPoR)N~Ku8N}OTMU5L`AS7o%BHOIV4{N%|ld73?DY9KQM$C=V=O4HBF(D1#h zv5-lWElgF(rc6n!5-0-n`dwICUxz^#VE11i&i?VFvE6*Eff~UN0JBO3edy z&dr#4nlzZEh!~79gora{zAzjPe>a&-c2teE1c2E+tA4`$e+g)_Eb7wI(zBgT=XC)1 zo{~)M5Rp&YcZtX&qK`3lh{yqek74SjA(}2g_w>1!`_KOPXG>4~@U4Zlr(g5q;NjNI zEf^N#N`uMzI^mL<2T;m8xfRZ3H@NDq>Ew2+TEzgXQUlz{kJWLiZVIYhM$B$25r8pD zhgZdrq607G9f^6HEno_irnc}z&8GLdtxej%5ExktBGmI=((%Q})I-VuVge!SnbWy1 zwx;-2624r6m2<;QdYEv7@g$(Hz@)U381iQUXZ`TNx(=#2ybMbIg>w&VRc;BDwJc|V z)>XaOrmC6N`cKsbiAiM67=-0xOR&1O1|ABy^6@+4&p&+U_NBkRTim#|IWhocZ!m}{ zaU@BkAhlHm;E=++TOovZi=z05h-8YkWQ1q;16&VkK89DIbpU|g`_+Yog%_Q3uQT&1 zGdpIs%S0x?&4mPD2?#)5Iap=M}oMMuC_BnVDK zmBj^-8cm>0lNfsa4lFG%!Rl%kW;<8-(x2ZRUHs#3_O5<*VYst>a|!_EpaN=0B>lk5 zVpW4;Ed^stVCIsUzX&1xz9@<>6G%ycHQX;?J;;GJZO~c(@ZE0r_`<@%8;JNE04xxZ zOL8+l$*Br}Ju};6bv*#s5T-tcXc)jQudMo&M^E+6zWCbW)35wuaPs`C-u72b;2w-d z5r)MWrjxQ#u;VI;AkFeNHMi?HwX$e+<~S<@`qb=UYlVfJl~p&r&<}+NEJS_*Sv7{U zzRA(nu4cB@-26rAwz;O13mU0yH~8~4vEJ6KDy<4=ELN73@BHQE+^9^hG^)ZKsPj%T zFRVev%EEGO=_%Hn=os{IF#(a2bxyR+1YVh7P+9ca@>iclOPG~ra0Dtt-4Gu`E=ySp z(CKxc-}f*WSm@XQakN8U|NXt`=O6rb{N<+~6uZ~2PR8SL$pB@y=c6&clyZ!KHo3mJ z(}tO20&@{#e1C6m?=LaNA^}u@dSAi%paE-DzpPaNb^zcP7Z)G*-oIvyIST-*NzxHh zeCt!AypxzVfz|o)qE!FFexvnb~97Of!Vq?dRH;mQbpIP38b2Dtler( za-~x4(MhaKU`P2rH!P#L<=H}V?e-c25F;lLK|XJZadV?2*ZsC)PIH_~t%pE8DivZ` z|DRP~I;FTX2F`LbRB|Ks6`%`vsjMDgLT{|bm!|DX$ZRDUXIe?;R#vtWu(Qw`80hr@ zx*ouCgiu`P;`*26)lc7_T>j_}lg-P28(;hC@`MSZu{IiGqN(QCL;wiZ+LD=PDQ*od zp|p^Aw?iWOENL)(-2$ktv&QcVVB2x6(SWV^5XKJ%gJ(OP&dZ4SBr_jN!=tSLmWZ-z z3;-_0w=Q)KiFGz*IkhoX<)yW?wa&>WpC6n)_ey8u+)LeKr_Q*Q(@#1#ST}aCSOpX_ zfa#Q>ED=IrhynA>PLZ1l7_2*EL@UX9;aeoSVcq9mD@Q15G;?LG#ggek0$Iiilx!*2 zDiy3sI5k}pvb+i!Zj5b|vXR{AXsb3cmiRI&Bw*f$G-%h_Om$6`$~p-o`;`Yxc4w1? zk7dd(N6zl8SWT9M6arAJJr(jmQ)A;n;vM^GI(EEP-iPep*Wrb&vtlL zT%+C1tL4orUxe$IFNS~r^TK5F@~4yS?d>T5khQ?hb))D3iwK$kG-Z0l6%OM1rnbO9 zM3-WW7mA|zB*m)KvaHhw1*C5Zu=47*++>Mw`@LT88Ry&!#+Y-=JV+%UD_~`2hloBU ztbB@p1;j=`OhjfjnHVXVTL8ay{6uHv#D-sb}Ok&$!;wiXE)2 zo58VlMBf4HQ8k}edld>^U7o2DN}0`LprK}{+j>#Us+j#RJRa}^acdi#Lq2VL)V$9+ zK4AZC{wcQF$M@Y<5h3a_P;+AeeD)+#$O`~KfdL|Bt}d6NmBv+KiV&!r!E9K-WN!z? zx3*)LPIxvdVsY(iEN*Va;oeSp^U9@iZ|g=m+__%f-rfqgcD4gaIS~N*g8?N`d=k2# zWN;H$ONm*_GzPn+B{??KZ9jUa;0Kce~v) z-EQ|eL_CLxiwU54+mxhovRsl^X}X?`G0J#MgNSA}nV7P2w*@Z71K7o5$82}7XkDj+ zoqivEe_*V2hz8MElN%6>n)RcZJr$9MYgtaXWB8duk4n?lk#nuN$1O?TJAS0vI_iB( ze+nyMA;}hNI5vkSE7)NRwv8B*8|yhY!f5~-U`*o{xmh-<&sVMxtLXu({w}DL4!PEO z%HnECc7=(UBS9HvTux>@n@%W(5{OEgjfQc!yGx;F5M}8??+rWGr36r7=4h=IK0uk6 zcmm9*;#L_-MF0?(`AUrOmS;+}Ae?>$WilVqoM8mW^Dxgx!9e&`i zZ}aBVk`Zm-=B%={wmTRMHk@>rc$MMN}- zy@OE6-!#A~jri@MTob{akta=?q>V;jepoa?snhz`nMe6 z-1(6GvDz+M*#yo^brq|ZtY{-!E1*^5I0z970N5(aauWc)x_$fhB_i5MzqbZzXjxSH zCV~2}0anMiILBSq0A>K_bi3W-*4lMr%t`P4DF8SD04r(x9I$Cio26LmWw_73L$A?M zt>t0g`){o7z3%T`k9pWONA)-kS;up{6Kc7{Ohn|In+sUkJ|&Fg0W$%BZD!t#F>b{e zZ-fvwQ*0^#j0&i+1<>$qg5+V1*E-5wo(EoC{r}RBaJl|brz8+)ToKB}(L{!8WcZsM_u_(9P-FA#Rdl-Q6 zFeg|nG$-Zh?6Q8htvI-EjOig_&wIb%oLjfnt|8(I0IVS5O0u-JWn~RBTWAW&$&G*q z-M~kQSLeld2Z4D%%Q^4HKgeA@D5l*HfCqv6u)p;%_xm95Yu6WZvujQuv0A5>iS;99 zzJ-V*BHE5I-V7n^lw~fOl+twnnB{0T^qo zcg`(ZYnO~MJ!8xgGxrd284=GQVpmNzke4}1vSq(S(P20DVOIAjR_`durGtQV6pMM7 zYkrueK4`sqk-9D=GvAbCkowMqhzcSa5z#1wFp4pjYAA9{1e~aoQQDP0DD(UKLZ*U+R`sCEkzKl)gj5&q@hY_5?)@_euSf22N!q0z{yc?Q2YY_Kym8e z5Fvwu2%hQO!{u_psMvL#(bD64NQRTZj^-}DnS22ry9f-;mW=gZvQj}U-ZdMsK&I8^7~DvX`q=iYeTN-bn-qWGR%ML&(>K5U&8sypN`Ne=YIef7F?Lk15NF)wM)c)^*9K zmU!>I&l@eDE;N*FPO31xN9pKU;KzXd{|0-Vv*zI+TJDN2i9u^*g6l8jZ4CI4hJ6Mum_^eqDxt z6R_G@^GB^T-(21Kse8t5JU9_3PnqWwrNJ0SX)VTDtg#fO!IlM4C6QgDyT?{qd63VZ z$b%q^g%Gd(pU7Zsqj~S|NZTtD;nw?Z9h|&r&t^018dG3uXy2$S+tvgkzRNfD>A_6|>z1{Au9dOP@K;gZ2X}dXG znYeXIs(_+M0fBQKhv(+aJ!~D0dF^7GSKn+RB_P(&`c9XZ=xROGL%X)O-+J~`TKJwM zNtV6$zY*A*y(>Rl7Wq1-Dm9S|_lvlv=0Urx(ay^Sy6c;U^0W=Uvp=%J^Wbeme0=W! z0?+=*9{%+4Q_M69=?rm}RK%#;WAq37EOy2g^E0Grk&U%dX4E2WGcjF+&ceMQ`>P-8*8U?vEH9RWMm9^2V~FYy?4kSt$JsaOhpZdhdU~Oq=_P zZ%etV`oUJRkiWJmk$JSB861gvhaCxzSWvOcD6nJv!91$YeYxMHX+2n0_Iw< zx0iYQwmcqMU%%-O?yq%sE1NfYhm3?kAP`a@gajRO*N#5!-7`#XJOVgai8OJfQA$$UNam$MNkbflA{-d0)dt3Qtc>2UZRzMYp9@#c$uQ|sLWr-g z<=MoV@^fk72fKEC`rcaKKy1nkXC2NtymNT(@qTr31RyD$pr;b@rTaG%Yl)DOymWl; z@GMygN=mE~I4{_KGK60i`6ZykvYJ=9Y;*v=qF((8O7TGX+tlrh~z$Ei1F< zmqa=n>mbU!_vbWlL!P$QiJ_ZzRQgA{imVOJvzB*+kR8oQ5MHe2Q$b#OzHo2@5;*;K zi>dJ*mRg3i6iB79-V=p_FWx)OzR3Z=v(zeh!c*_alWIu zHHMq1XaDsB+`4UmZ@hFFivrPMb`7jU@%e)vVBh2bXQr2FrzO4BkZPpayQR*g# zVw*G5i%6-M80n%YEzY{m$(OZ>y6T}A-n}bN+v|W`(v-!3k=1^k^wr8N!y1Eg7V9i& zZfIu)=fF5mX<#L_4EKgSeD@f~FD&!?>kS5aA^`fkBX(@;rCCV!PSm;c`hG6Wr#$}r zWs*wBrG<>ersbi#HURLC-#^Ro=_UXdXIqrU(auVYwUniyNLz&cTgEdh`>Zt++FBD^ zS*>|5u%_%BsjJ|w|3E)U9CG;7A{L2M5Qib3Ke&-N&^&!;mJNe7dXoU}JV_j~W4xOe z-pKjw57q&}*_oUR%Yvs~yv#HIy};N|jj@4*(ilFzZ=Btm`*``p3_pD3ZN}DB8SIHT za%u)G9Ug-WYq3#D-I{Vho6?BI#-bZ=4u|V3r*VAd?(KZ`o^1dee`|@-f{=oqBw%b^ z0(k!9V;c#y!aIkMf`w+m(??otUf<33kpzI1Trk(xeEo$6-b)_3tA5oSRU^qieCH(J zdhsINNysA)-N2F4S9t05OQ=wGWG4ir6%}VqMXxlQ&BlB?b+$kVNogIUgFXD-otpue zZ=@8)VytIkLl0e*fb&;c96qx`;RN+sz=2&I09P80{+=pd`fxAZl}=V1>Wzq_n7%4J zbZa;Jws!$g8qZ%nb%r-*+U(uBjz9kB7Lri%)C=bbwdx!o-h=Zj%+KV#gB7Fa78WmN zjYczDnJ?p>p`bK|;d+HQ>P&X}(h83}af|~uj<9QUon~6{*WaGz%shAzaN9(c1G@k` z6T=Z-c`#NU;Iv6#R4^dR+`LJ2r?xy|O`gi56Oi_c6^7{|t;gr$|7KmX^S zF};ve(Guqj9)T@W*O-61HADA|ZnfISUC~@vJpby<$nN_`q%bTrGMw{BDcCcyjwk=@ zcIvedYaM_8-HTjUmJIYH6iyT9@Tv_|63)*R{OylQc8^K^aGyj;$%cBsY@_7SXP23t z&-u$wYWiv+BmFS|FCL%e(eIt&(n3lSX`CtX&Led|bLQ-Fu`<6rC+rCo2H}EK>iX8g zbl=dneWN-`#N2Ym`u>E?*YzTWpb{!p(t^MH_61%#Yv``kkUBz#6;^UhtPI9_o;gwQ z*kNcBb8%U4`bx>ACByS4OP>6xIynYP(g$W1u6g?3Uowgyc#-O1*|~oPRbLqN1`P#DXoh7eQ>!L6`;BCHN2jOJ*(59h*O*^}LN4LjuPhF}| z2o-c#Q+n0pNRVsnUG>Nvy*dZpfwkZaID@w(qHLwUHFw!8T|AM_pa1z{Ykqp#3w78c zpU$)Fr=8FJ#TxW~uM(x~(^^jnZ>Ml}96?<`4UpG*-S<#FT`eB3vBu6r?mbN*m__Py m&WqQKF>iS9vv+&P{|o@bY=)=N$J4O@0000Cl7U`QGoGALl*$y7pe{S=W8vPp)4(USC(8gou#{0059^YN#0At;u&U9Rcv}D_$}f zcDFE~R83Jv9u6o!TQ4|3(cZ%j&Zdd5b%YzjZSDO%`{1$w01k(W_wqh~OPU(A(b~Ws4Sc_vZXtK?Uv& z^KwR_oITvx{wUhodHA599CwlacM1sPe`MXg|6QiLf`QPsNRY4)_)kiI19f!%e<%X+ zAG9~h5dJ^${-46$#{Nh+$Pn)B;o}9nYn%h;A6H0eWiPlb%EQap!^7?GD(X9Vpgg>t zJdkY4Mq+F_wlHV+KlZ=yIy%yt?%pU{cNkn#1IK5ieJl;VANqPMjMs@=iCl1<1`kEk) z4owYHS0=N8Q8ZG%05hO3A$C|X;P!})ZR-Sub9iY-(|u04U=&;|qe+fhk61`0k)F@W zXi*I!?C>HKJp;8h#e6QDV)f&%%3YjOzc?%lpy5bJ3Bw}5wk};Asr*i0@Z^aVU->n=nE>z(ZX7{_(#t1D7>)-{An^bvm-EBpMIuI3gI~|*Skbo+n~~At?B%V$_iqEs zc8zyAZ1Wd7Lx^#i6=NmsX!%OtFZ@(Kdttb{KO_j2<)@`wRVwP?R`LxI3-XdA>!ieP zlkPdd5cfkN0Z{`T;gaExb0Q*;KejJ^h6J@IPg$wjO>z|19r{(QRJE;q{cJ6MVEd<-IN2zMiXdwgAl*3@4vVpdtln7`rDWTQo>3nOb$UFj+7 zK+&%&ve1qpSepUrUF*VvZ@>rqfIBS@T1W1my zuyyr$Fz)c`nkyR1mOs3w?81sFP){N}3@0E~OV;n?COHaUI`%Wpd~O6^!qO2MLvY#Y z(hy-I`gzs0PBF!G@7sf$+OO%HS+_4=7104LJG~``Z?-caw&T6mOJ}nIwfzGoRiAcz z78NF|=Jl-&;zvxLtn9i@BfjM;1Dke&Er_`0zTM~G-M>u}f&`vMyl>0B+=}w!ea4h{Tz8`-?NqtNV*vI(8#^5B*V}ycO{iyz5=#ZW zX`KHwhNziSpYqU8uXRx$*Xl+u`s}ffD&Apt6c31XTYU<_o*t2VS* zF2L5%b<3zjDi~*l;)t%DB=w#&0ZBAoUiQTfu)lT|#o4x;`&HVNDw4Ij1X|i1H@ImW4mfqJ1P!npoU@ zrq#3iT1#C{^y(K-q{#QA@?H3vg6o3^LgB;EfTzl?V>B5$Lb`xE?zci(o=zPtZ z$26?ly=q;puwIt`9T6>DtQji&?&;3p!DO{s44U3Zh0AMf<6Y(G5|%SL1H*EYoA;(H zKB&EwJXcMkEBj5Ruzt&)uS~O{U2B?x^5EAa3wDLM%XSVU+;;NRnkfH73)a2%o zx~$xbVBim?WZ*FG5C5z0n^sQ}xe=CEkx8MV5`>q-6eSoUzc9MO&=@nm71pEOI+}yA zIZj@^!se-cPcp_rxtQ=Mfba3R^M}ASdSuHyrqSmiz2qzTRuMl^bD@p>mD*IZV=$&S zK_QXZ=pfx>{e{#iF1;a_DlJ2{Mk>ch6+v)7-WNM^wz6@;)qBEj!qWAfl+R#Us4FH? z^a%F@8%0bsgY02X?E_;vXJB6@q#FSAHb!b3=8bq#$Q8cPjM|CM8MB!^+t*gmDTd92 z)?GoiCL4$?kkr_Gu2c83A%0kcq1y-AIATL=kR(M0puLS6d6GJ&;`W7oSl?}e2(Mei5d}*6+U!HT8$g)Gx>pOE#Q7&9NxrMVt+{q93j$)2=$Vhw zb|)>Ype#>Mo5lki_BJ6O<;*=->cju`%B z+D17_feEs$DZ1AVa@gw6^0!{fv6pyg#;>Tpa$D+T2fxI)R9V*jnjNhc%pSPHn8%ah zld)n|4>YJANqggZBd6XU9|JRsKKwQuUMDgD`Kxe|5`G!fFgTe@<3o}_c$Aul9AM@7(=B+$Qf(m_PpngTD6ah}EVBCN z1=Lm)MOE-MS7*f=dW2*xJ*V>8b+X0C?`<4ylgR;!ir5F!$-lW`0^9~>wiPqlsb+g= zN)4xyoKsHaTmA4YP>+4YradXj^AC>`N4$A7l8U%YabJ_Y8+ggz*T*ohXf`OCw8a@i zp8RF74|2b-!}WY26WZcesPf4zlCd;r)w_99Q+aWC<~;>i?WluSAx0b_hlf``YTvjQ z=<`eK@Jr=(2*wa<_Q-()$s&}Mc-siX8(KISVsxTq!g=xH#h~i+J}GUe6D@zUx`gRv zm&o|x=-A=Jld3+VhjQN|cYUU2_cIS`!1B;F2MuMk49if3KkRA<`m8wahc`iiu9KqO z)k%9YR^|@jp6xP)W@#xrDP*YhDCDC7r+TMFqILK~fBzcaq1*`qAPD;;vNOzV^W;(8 zaF%4HwS9y@HU?`qhnUjfFnyRHq3a%=FRNw6v4|Q)u{xKUg4!cyD#o?}L7&>N=|liI zMKp&wOInJ7F{tZ1$0oU%BlBlou~me=xy#dzQ=-Ani9NtEa@5QO^i&$^-{WT5aOO&1 zC`@8seQodKLxPjrgBIeVu{p` zQ+H4Kl$)DdKQ^pn@#I-l0+z)1_;}4ZDhnQ;jZoYeLZ9!eg1KQFZ%c#;ovzPV0XoQB zY|I4f6kVbxW3z68goYFUExt0ahbA|*BKY^X9KpgQ4qnDPs=j;+ChTbKrBtr(WI+## zv)<*Wu1;9yI#k5d&0QM)_S!Q=^YCU3snSNHbzlbAic4c#uRqGs_l6!We6w)SeL1M` z98(14R>n4O^^sJzS_=BOJF&oi{~o?d4&MaCc0ihn7V?pq1zUk^1LK5Vwc)3pO4Npl zDw0!(ZnwYnv8j)?v#^iagW0f?2aK*IO8Q2B#^*k@<8dVV-aq|X=OuWhUezMCc2uWW zuw3TF#SV6+CD+C3(4vPq#Puvgo<$~T$y*h*KZdO=IQ{dD_H%>4`@fKvlxlRzEl^jw zzepIYk0x?Y_j0aA^X;O3Zi3d@PKQP0$Fj+5Uxg*owqCvdo!?{c^)x;{U#%?VemCyB ziIjnCqEH6tq>o@nrw5@ihL1k5B5X9mpt!EGQu~v_xRJ5t;6mCd54b@swIq!412J1y z+ygLJA2VMML^0?LYUwlKyOt^7m`ky#Rt2rw7l{Qp3%O85?G{a|2I@su{)#;Rjh8Et z2wQ^vB*4}&4=>FuI~WY!>bH6%8vZ#kGA-vc^;PhjhF6+g+NcwPxJT^FJe4Dn>XTM6 zh|Ra-ra(f$a++luIdjGgJjK`QT5x-tj3Xf?w>RBgweI8ngtD%m2%c1c1RpvA#^ZSE z^_a7s(GG|MW-U!1_ayPtuU(U>+t)|Ba~aMYiGt1prZHUt^l(qQ$uVC5!?xh8uV{9e z&j2mvJv>qTc@Msb4!qG$!LKuH>JZxLWM2-X$7U;S-yB}&*bIIau^X*D7SD?+OAIUO zrgUL*iAv-A(H-`6v#33Mbu3SoMikeSvDzihCq%1cDCI173idqu)1&}NVwrJ3MM2bB z2`Yc9RLnVtuiK6U9e4gHNaFqrn*%cZY`B2(rH!hT`C&^9YDK}=_PIk1-0S11?+|u={%v;q?!`0=yD88nPoz%I<@e=$hKEI1t-fgZKp#ZP zE<)F*CuU4*cilAEsSk$E z?zwo~(%O%l?iIf<6E0P}?@}aOUlYE=E#_<>S+3-~s8;u&o(Fr&EDuDmYJ@$rRZh`S#Yyq>Wh3u#a%B8bnqlM;uUqU z*=h0Kmsos%qF;xdOS`|=Mv~caopN%t+S8tlJ7Ups^|R~R4-x54eY2CStm!SPW)Mg; zOehLprwIXIOovuqDt>#HkDx#7qj7p%o|=)ahM+ydS-_zot;(0cLF6}MXPxgp zUe=f=_Sj=R97zJ{ak30m12iCM74xyUn4?14lI9h;O1RjN)+r;2fU<;nV6MRAczsBP zTgdxX)MBd-es@e(F8i%$K~HRIs?AQRe9#uA&o_R4o(5iOVRU`QPf83;fLbyK2p+Rk6XQ})np)v(ukQCT>PnMc${IQa`D-&l`%_MR4k74{a?zsKU zR4qGU@9j^7YWzNZ&ETh94RnTkGus6clJ(l1DJbIZ8EU2(KPH!M< za1!>r5uQ#%COgJ?{;KSsb7Ng2(A%g*=%^&uQaH|4*XyC#ux}RF^v+_=I}y#G&gX;b z$`))24fWYq^N=8V;qNuD>$AC{^98cPklF<2AET?h^lg73#|tJ~n70kMgcDmhb1YzO zHl(=)F%`|URHOMFnN|rr}6MQ1MF^%VJkR-!5)R9pzPHeOElT%s6q} zLY(PojnRkZ?+@vdT>AGj4t0qqhk6Sp&w}q0#2yb7t8`JHGY%61A9tG*C z(d^{a-BzAE3w2_bYIKYqM-8D2}ZjOoJ3$qpE6RA>kn-*8VB zzTYo&;+qxp>8q1+EV#&fkv}`)`w}XuxGpN(o-_suCk02TMNo`_jQW!%H84#6_}I+3 znr-1h27+793CqeFudK5-&L{5QPo{(U*4vHzusTkKNbys#>f(PBm}z;X`n*W1i0y3l zpgp!Qv>lCS@9FUZkm0vCGi0fE-H6Bu^9DOe9gP^_?nOL)`^2PhST5rNTO?`@Us&?| z2CrwWDN`Vlc+-2tZZE9sc@PCwu+!j0QXpNi*iO9n#s>leU|}D6b_%4mdI|Es=a%<+QJNRv`l2h;v~OPjV0;^!Czshp;Bs$MDQvy?MZfaWzF647 zKpn(QBZ9A1W&+sq$MNx&+d4N!nPiqAS6EN^ ziGq27J}t(%f>s$u0igN!o-7{&$?E9oKvoXh0k$CvJgTVRqmp zvJtQ`A<yseQQ%7Izk!v@~ zAos#uc!-1OB#@!Kp}n+GyZpFjGhwI@9ZmL3M%#@igYG0e8-@e`A5zfsNlAk%9%L^N z8F%BBa3jVdm|T5rZ%?JekKh-2@cNQ0k#;z8T&`_-XTtSxYurr#Ne~RggZr@A;=$VF)PO%# z&$dfqDUAu36Q}5r))Heen(+8*62N_5C3kT@ugd%v^Pqf@(@dNmX$V17`%-^)8J%1bfo=i-ciTQ8l(z=3sDbWvV~csm&1@pb06SxL@_4`5ZHLvvEF%oGoC zp%G44S4VWHk*gTvPIKzLyydRej!9B%C*MQ=Hy7Rn=E)SZn|#I`se5^oLCcnk9G5`>q`<(ihmfB>Gm_JyiR}1uV&L(gzdFB?5id1W8OS4; z$qr1qyFRZSs)wuLJSzZAexkD@l%&s)92IIua@(kzx#G7DQ(<~~cXhA^F+HC6^^ilU zcjgZmUfF&G7*!{O=I8S4Ke^1|qXW}MN(kd{?+@tC;uSHJFHVgkhuSE}M|x4%BXTVt znt@DZBh;N#X>ms^A@-n|*U7k|(7wBB_Ckd8= zoIVVDv>Ho?wdO+)BL{90C$8Ib&G4s%M*&tPQp z8{Ka3SS~N_5n;I!SiU7!h+RoBbFWgqz%zdiFb_(;!adfwc+r60quI|&lKXp#HIoy7 zEm*<5Dg!mt2brLeTAR@!HO PelKaN>Z(*J*+l#o=FgAV diff --git a/api/resources/images/c9-sponsor.png b/api/resources/images/c9-sponsor.png deleted file mode 100644 index 599d3b49b07be4610d0ce3c808b47c7218eb2257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12244 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
     
    -// elements on the page and add the "prettyprint" style. If at least one 
    -// prettyprint element was found, call the Google Prettify prettyPrint() API.
    -//http://sstatic.net/so/js/master.js?v=6523
    -function styleCode() 
    -{
    -    if (typeof disableStyleCode != "undefined") 
    -    {
    -        return;
    -    }
    -
    -    var a = false;
    -
    -    $("pre code").parent().each(function() 
    -    {
    -        if (!$(this).hasClass("prettyprint")) 
    -        {
    -            $(this).addClass("prettyprint");
    -            a = true
    -        }
    -    });
    -    
    -    if (a) { prettyPrint() } 
    -}
    \ No newline at end of file
    diff --git a/api/resources/javascripts/prettify.js b/api/resources/javascripts/prettify.js
    deleted file mode 100644
    index eef5ad7e6a0..00000000000
    --- a/api/resources/javascripts/prettify.js
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
    -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
    -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
    -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
    -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
    -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
    -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
    -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
    -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
    -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
    -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
    -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
    -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
    -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
    -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
    -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
    -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b=
    -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p 1010) sx = 1010 - document.documentElement.offsetWidth;
    -    }
    -    else sx = 0;
    -
    -    $('span.methodClicker, article.article, i.methodClicker').each(function () {
    -        var a = $(this);
    -        var constructorPos = a.attr("id").indexOf("new ");
    -
    -        var objName = a.attr("id");
    -        if (constructorPos >= 0) {
    -            objName = objName.substring(constructorPos + 4);
    -            objName += ".new";
    -        }
    -
    -        a.attr("id", objName);
    -    });
    -    
    -    function showMethodContent() {
    -        var locationHash = location.hash.replace(/^#/, '').replace(/\./g, '\\.');
    -        var equalsPos = location.hash.indexOf("=");
    -        
    -        if (equalsPos >=0) {
    -            locationHash = locationHash.substring(0, location.hash.indexOf("="));
    -        }
    -        
    -        var $clickerEl = $('span#' + locationHash);
    -        if ($clickerEl.length > 0 && $clickerEl.hasClass('methodClicker')) {
    -            var p = $clickerEl.parent();
    -            p[0].force = true;
    -            p.trigger('click');
    -            p[0].force = false;
    -        }
    -    }
    -
    -    if (location.hash.indexOf("section") >= 1) {
    -        showMethodContent();
    -        var data = location.hash;
    -        scrollTo(null, data.substr(1));
    -    }
    -
    -    window.onhashchange = function () {
    -        showMethodContent();
    -    }
    -};
    -
    -function scrollTo(el, data) {
    -    if (!data) {
    -        data = el.getAttribute("data-id");
    -        //location.hash = data;
    -    }
    -    var el = $("span#" + data.replace(/\./g, "\\."))[0];
    -    if (!el) return;
    -
    -    var article = $(el).closest('.article')[0];
    -
    -    var top = article.offsetTop - 100;
    -
    -    if (document.body.scrollTop > top || document.body.scrollTop != top && document.body.scrollTop + (window.innerHeight || document.documentElement.offsetHeight) < top + article.offsetHeight) {
    -        $('body').animate({
    -            scrollTop: top
    -        }, {
    -            duration: 200,
    -            easing: "swing"
    -        });
    -    }
    -}
    \ No newline at end of file
    diff --git a/api/scrollbar.html b/api/scrollbar.html
    deleted file mode 100644
    index 5f3110602c4..00000000000
    --- a/api/scrollbar.html
    +++ /dev/null
    @@ -1,261 +0,0 @@
    -
    -
    -
    -
    -
    -
    -

    ScrollBar -

    - -
    -
    -
    -
    -

    A set of methods for setting and retrieving the editor's scrollbar.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Creates a new ScrollBar. parent is the owner of the scroll bar.

    - -
    -

    Creates a new ScrollBar. parent is the owner of the scroll bar.

    - -

    Arguments

    parentDOMElement

    Required. A DOM element

    -
    -
    -
    -
    -
    -
    -

    Events

    -
    -
    -
    -
    -
      -
    • -
        -
      • ScrollBar.on("scroll", function(Object e))
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the scroll bar, well, scrolls.

    - -
    -

    Emitted when the scroll bar, well, scrolls.

    - -

    Arguments

    eObject

    Required. Contains one property, "data", which indicates the current scroll top position

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • ScrollBar.getWidth() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the width of the scroll bar.

    - -
    -

    Returns the width of the scroll bar.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • ScrollBar.onScroll()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • ScrollBar.setHeight(Number height)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the height of the scroll bar, in pixels.

    - -
    -

    Sets the height of the scroll bar, in pixels.

    - -

    Arguments

    heightNumber

    Required. The new height

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • ScrollBar.setInnerHeight(Number height)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the inner height of the scroll bar, in pixels.

    - -
    -

    Sets the inner height of the scroll bar, in pixels.

    - -

    Arguments

    heightNumber

    Required. The new inner height

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • ScrollBar.setScrollTop(Number scrollTop)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the scroll top of the scroll bar.

    - -
    -

    Sets the scroll top of the scroll bar.

    - -

    Arguments

    scrollTopNumber

    Required. The new scroll top

    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/search.html b/api/search.html deleted file mode 100644 index db551f63f6c..00000000000 --- a/api/search.html +++ /dev/null @@ -1,295 +0,0 @@ - -
    -
    -
    -
    -
    -

    Search -

    - -
    -
    -
    -
    -

    A class designed to handle all sorts of text searches within a Document.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    -
      -
    • -
        -
      • new Search()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Creates a new Search object. The following search options are available:

    - -
    -

    Creates a new Search object. The following search options are available:

    -
      -
    • needle: The string or regular expression you're looking for
    • -
    • backwards: Whether to search backwards from where cursor currently is. Defaults to false.
    • -
    • wrap: Whether to wrap the search back to the beginning when it hits the end. Defaults to false.
    • -
    • caseSensitive: Whether the search ought to be case-sensitive. Defaults to false.
    • -
    • wholeWord: Whether the search matches only on whole words. Defaults to false.
    • -
    • range: The Range to search within. Set this to null for the whole document
    • -
    • regExp: Whether the search is a regular expression or not. Defaults to false.
    • -
    • start: The starting Range or cursor position to begin the search
    • -
    • skipCurrent: Whether or not to include the current line in the search. Default to false.
    • -
    - -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    - -
    -
    -

    Searches for options.needle. If found, this method returns the Range where the text first occurs. If options.backwards is true, the search goes backwards in the session.

    - -
    -

    Searches for options.needle. If found, this method returns the Range where the text first occurs. If options.backwards is true, the search goes backwards in the session.

    - -

    Arguments

    sessionEditSession

    Required. The session to search with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Searches for all occurrences options.needle. If found, this method returns an array of Ranges where the text first occurs. If options.backwards is true, the search goes backwards in the session.

    - -
    -

    Searches for all occurrences options.needle. If found, this method returns an array of Ranges where the text first occurs. If options.backwards is true, the search goes backwards in the session.

    - -

    Arguments

    sessionEditSession

    Required. The session to search with

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Search.getOptions() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an object containing all the search options.

    - -
    -

    Returns an object containing all the search options.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Searches for options.needle in input, and, if found, replaces it with replacement.

    - -
    -

    Searches for options.needle in input, and, if found, replaces it with replacement.

    - -

    Arguments

    inputString

    Required. The text to search in

    -
    replacementString

    Required. The replacing text

    -
      -
    • (String): If options.regExp is true, this function returns input with the replacement already made. Otherwise, this function just returns replacement.
      -If options.needle was not found, this function returns null.
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      • Chainable
      • -
      -
    • -
    -
    -
    -

    Sets the search options via the options parameter.

    - -
    -

    Sets the search options via the options parameter.

    - -

    Arguments

    optionsObject

    Required. An object containing all the new search properties

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Search.setOptions()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/selection.html b/api/selection.html deleted file mode 100644 index 4da8f771b3b..00000000000 --- a/api/selection.html +++ /dev/null @@ -1,1781 +0,0 @@ - -
    -
    -
    - -
    -
    -

    Contains the cursor position and the text selection of an edit session.

    -

    The row/columns used in the selection are in document coordinates representing the coordinates as they appear in the document before applying soft wrap and folding.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Creates a new Selection object.

    - -
    -

    Creates a new Selection object.

    - -

    Arguments

    sessionEditSession

    Required. The session to use

    -
    -
    -
    -
    -
    -
    -

    Events

    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.on("changeCursor", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the cursor position changes.

    - -
    -

    Emitted when the cursor position changes.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.on("changeSelection", function())
      • -
      -
        -
      -
    • -
    -
    -
    -

    Emitted when the cursor selection changes.

    - -
    -

    Emitted when the cursor selection changes.

    - -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.addRange(Range range, Boolean $blockChangeEvents)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Adds a range to a selection by entering multiselect mode, if necessary.

    - -
    -

    Adds a range to a selection by entering multiselect mode, if necessary.

    - -

    Arguments

    rangeRange

    Required. The new range to add

    -
    $blockChangeEventsBoolean

    Required. Whether or not to block changing events

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.clearSelection()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Empties the selection (by de-selecting it). This function also emits the 'changeSelection' event.

    - -
    -

    Empties the selection (by de-selecting it). This function also emits the 'changeSelection' event.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.detach()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.fromOrientedRange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.getAllRanges() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns a concatenation of all the ranges.

    - -
    -

    Returns a concatenation of all the ranges.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.getCursor() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Gets the current position of the cursor.

    - -
    -

    Gets the current position of the cursor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.getLineRange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.getRange() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the Range for the selected text.

    - -
    -

    Returns the Range for the selected text.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.getSelectionAnchor() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an object containing the row and column of the calling selection anchor.

    - -
    -

    Returns an object containing the row and column of the calling selection anchor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.getSelectionLead() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns an object containing the row and column of the calling selection lead.

    - -
    -

    Returns an object containing the row and column of the calling selection lead.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Moves the selection to highlight the entire word.

    - -
    -

    Moves the selection to highlight the entire word.

    - -

    Arguments

    rowObject

    Required.

    -
    columnObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.isBackwards() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the selection is going backwards in the document.

    - -
    -

    Returns true if the selection is going backwards in the document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.isEmpty() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the selection is empty.

    - -
    -

    Returns true if the selection is empty.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.isMultiLine() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the selection is a multi-line.

    - -
    -

    Returns true if the selection is a multi-line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.mergeOverlappingRanges()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Merges overlapping ranges ensuring consistency after changes

    - -
    -

    Merges overlapping ranges ensuring consistency after changes

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to position indicated by the parameters. Negative numbers move the cursor backwards in the document.

    - -
    -

    Moves the cursor to position indicated by the parameters. Negative numbers move the cursor backwards in the document.

    - -

    Arguments

    rowsNumber

    Required. The number of rows to move by

    -
    charsNumber

    Required. The number of characters to move by

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorDown()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor down one row.

    - -
    -

    Moves the cursor down one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorFileEnd()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the end of the file.

    - -
    -

    Moves the cursor to the end of the file.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorFileStart()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the start of the file.

    - -
    -

    Moves the cursor to the start of the file.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorLeft()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor left one column.

    - -
    -

    Moves the cursor left one column.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorLineEnd()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the end of the line.

    - -
    -

    Moves the cursor to the end of the line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorLineStart()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the start of the line.

    - -
    -

    Moves the cursor to the start of the line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorLongWordLeft()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the word on the left.

    - -
    -

    Moves the cursor to the word on the left.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorLongWordRight()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the word on the right.

    - -
    -

    Moves the cursor to the word on the right.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorRight()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor right one column.

    - -
    -

    Moves the cursor right one column.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorShortWordLeft()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorShortWordRight()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Moves the cursor to the row and column provided. If preventUpdateDesiredColumn is true, then the cursor stays in the same column position as its original point.

    - -
    -

    Moves the cursor to the row and column provided. If preventUpdateDesiredColumn is true, then the cursor stays in the same column position as its original point.

    - -

    Arguments

    rowNumber

    Required. The row to move to

    -
    columnNumber

    Required. The column to move to

    -
    keepDesiredColumnBoolean

    Required. If true, the cursor move does not respect the previous column

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorToPosition(Object position)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection to the position indicated by its row and column.

    - -
    -

    Moves the selection to the position indicated by its row and column.

    - -

    Arguments

    positionObject

    Required. The position to move to

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Moves the cursor to the screen position indicated by row and column. If preventUpdateDesiredColumn is true, then the cursor stays in the same column position as its original point.

    - -
    -

    Moves the cursor to the screen position indicated by row and column. If preventUpdateDesiredColumn is true, then the cursor stays in the same column position as its original point.

    - -

    Arguments

    rowNumber

    Required. The row to move to

    -
    columnNumber

    Required. The column to move to

    -
    keepDesiredColumnBoolean

    Required. If true, the cursor move does not respect the previous column

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorUp()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the cursor up one row.

    - -
    -

    Moves the cursor up one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorWordLeft()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.moveCursorWordRight()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.rectangularRangeBlock(Cursor screenCursor, Anchor screenAnchor, Boolean includeEmptyLines) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Gets list of ranges composing rectangular block on the screen

    - -
    -

    Gets list of ranges composing rectangular block on the screen

    - -

    Arguments

    screenCursorCursor

    Required. The cursor to use

    -
    screenAnchorAnchor

    Required. The anchor to use

    -
    includeEmptyLinesBoolean

    Required. If true, this includes ranges inside the block which are empty due to clipping

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectAll()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Selects all the text in the document.

    - -
    -

    Selects all the text in the document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectAWord()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Selects a word, including its right whitespace.

    - -
    -

    Selects a word, including its right whitespace.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectDown()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection down one row.

    - -
    -

    Moves the selection down one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectFileEnd()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection to the end of the file.

    - -
    -

    Moves the selection to the end of the file.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectFileStart()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection to the start of the file.

    - -
    -

    Moves the selection to the start of the file.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectLeft()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection left one column.

    - -
    -

    Moves the selection left one column.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectLine()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Selects the entire line.

    - -
    -

    Selects the entire line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectLineEnd()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection to the end of the current line.

    - -
    -

    Moves the selection to the end of the current line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectLineStart()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection to the beginning of the current line.

    - -
    -

    Moves the selection to the beginning of the current line.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectRight()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection right one column.

    - -
    -

    Moves the selection right one column.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Moves the selection cursor to the indicated row and column.

    - -
    -

    Moves the selection cursor to the indicated row and column.

    - -

    Arguments

    rowNumber

    Required. The row to select to

    -
    columnNumber

    Required. The column to select to

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectToPosition(Object pos)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection cursor to the row and column indicated by pos.

    - -
    -

    Moves the selection cursor to the row and column indicated by pos.

    - -

    Arguments

    posObject

    Required. An object containing the row and column

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectUp()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection up one row.

    - -
    -

    Moves the selection up one row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectWord()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Selects an entire word boundary.

    - -
    -

    Selects an entire word boundary.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectWordLeft()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection to the first word on the left.

    - -
    -

    Moves the selection to the first word on the left.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.selectWordRight()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Moves the selection to the first word on the right.

    - -
    -

    Moves the selection to the first word on the right.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.setSelectionAnchor(Number row, Number column)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the row and column position of the anchor. This function also emits the 'changeSelection' event.

    - -
    -

    Sets the row and column position of the anchor. This function also emits the 'changeSelection' event.

    - -

    Arguments

    rowNumber

    Required. The new row

    -
    columnNumber

    Required. The new column

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.setSelectionRange(Range range, Boolean reverse)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the selection to the provided range.

    - -
    -

    Sets the selection to the provided range.

    - -

    Arguments

    rangeRange

    Required. The range of text to select

    -
    reverseBoolean

    Required. Indicates if the range should go backwards (true) or not

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.shiftSelection(Number columns)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Shifts the selection up (or down, if isBackwards() is true) the given number of columns.

    - -
    -

    Shifts the selection up (or down, if isBackwards() is true) the given number of columns.

    - -

    Arguments

    columnsNumber

    Required. The number of columns to shift by

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.splitIntoLines()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Splits all the ranges into lines.

    - -
    -

    Splits all the ranges into lines.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.substractPoint(Range pos)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes a Range containing pos (if it exists).

    - -
    -

    Removes a Range containing pos (if it exists).

    - -

    Arguments

    posRange

    Required. The position to remove, as a {row, column} object

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.toggleBlockSelection()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.toOrientedRange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Selection.toSingleRange()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/split.html b/api/split.html deleted file mode 100644 index fd75edceb1c..00000000000 --- a/api/split.html +++ /dev/null @@ -1,640 +0,0 @@ - -
    -
    -
    -
    -
    -

    Split -

    - -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.blur()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Blurs the current editor.

    - -
    -

    Blurs the current editor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.execute()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.focus()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Focuses the current editor.

    - -
    -

    Focuses the current editor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -

    Arguments

    callbackFunction

    Required. A callback function to execute

    -
    scopeString

    Required. The default scope for the callback

    -

    Executes callback on all of the available editors.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.getCurrentEditor() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current editor.

    - -
    -

    Returns the current editor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.getEditor(Number idx)
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -

    Arguments

    idxNumber

    Required. The index of the editor you want

    -

    Returns the editor identified by the index idx.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.getOrientation() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the orientation.

    - -
    -

    Returns the orientation.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.getSplits() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the number of splits.

    - -
    -

    Returns the number of splits.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.hasRedo()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.hasUndo()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.redo()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.reset()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.resize()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Resizes the editor.

    - -
    -

    Resizes the editor.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.setFontSize(Number size)
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -

    Arguments

    sizeNumber

    Required. The new font size

    -

    Sets the font size, in pixels, for all the available editors.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.setKeyboardHandler(String keybinding)
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -

    Arguments

    keybindingString

    Required. Sets the keyboard handler for the editor.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.setOrientation(Number orientation)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the orientation.

    - -
    -

    Sets the orientation.

    - -

    Arguments

    orientationNumber

    Required. The new orientation value

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -

    Arguments

    sessionEditSession

    Required. The new edit session

    -
    idxNumber

    Required. The editor's index you're interested in

    -

    Sets a new EditSession for the indicated editor.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.setSplits()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.setTheme(String theme)
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -

    Arguments

    themeString

    Required. The name of the theme to set

    -

    Sets a theme for each of the available editors.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.undo()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • Split.UndoManagerProxy()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/token_iterator.html b/api/token_iterator.html deleted file mode 100644 index 0252712fdf2..00000000000 --- a/api/token_iterator.html +++ /dev/null @@ -1,248 +0,0 @@ - -
    -
    -
    -
    -
    -

    TokenIterator -

    - -
    -
    -
    -
    -

    This class provides an essay way to treat the document as a stream of tokens, and provides methods to iterate over these tokens.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Creates a new token iterator object. The initial token index is set to the provided row and column coordinates.

    - -
    -

    Creates a new token iterator object. The initial token index is set to the provided row and column coordinates.

    - -

    Arguments

    sessionEditSession

    Required. The session to associate with

    -
    initialRowNumber

    Required. The row to start the tokenizing at

    -
    initialColumnNumber

    Required. The column to start the tokenizing at

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • TokenIterator.getCurrentToken() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current tokenized string.

    - -
    -

    Returns the current tokenized string.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • TokenIterator.getCurrentTokenColumn() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current column.

    - -
    -

    Returns the current column.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • TokenIterator.getCurrentTokenRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the current row.

    - -
    -

    Returns the current row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • TokenIterator.stepBackward() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Tokenizes all the items from the current point to the row prior in the document.

    - -
    -

    Tokenizes all the items from the current point to the row prior in the document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • TokenIterator.stepForward() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Tokenizes all the items from the current point until the next row in the document. If the current point is at the end of the file, this function returns null. Otherwise, it returns the tokenized string.

    - -
    -

    Tokenizes all the items from the current point until the next row in the document. If the current point is at the end of the file, this function returns null. Otherwise, it returns the tokenized string.

    - -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/tokenizer.html b/api/tokenizer.html deleted file mode 100644 index b45bd58da21..00000000000 --- a/api/tokenizer.html +++ /dev/null @@ -1,122 +0,0 @@ - -
    -
    -
    -
    -
    -

    Tokenizer -

    - -
    -
    - -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

    Constructs a new tokenizer based on the given rules and flags.

    - -
    -

    Constructs a new tokenizer based on the given rules and flags.

    - -

    Arguments

    rulesObject

    Required. The highlighting rules

    -
    flagString

    Required. Any additional regular expression flags to pass (like "i" for case insensitive)

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns an object containing two properties: tokens, which contains all the tokens; and state, the current state.

    - -
    -

    Returns an object containing two properties: tokens, which contains all the tokens; and state, the current state.

    - -

    Arguments

    lineObject

    Required.

    -
    startStateObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    \ No newline at end of file diff --git a/api/undomanager.html b/api/undomanager.html deleted file mode 100644 index ea43a7fbc58..00000000000 --- a/api/undomanager.html +++ /dev/null @@ -1,271 +0,0 @@ - -
    -
    -
    -
    -
    -

    UndoManager -

    - -
    -
    -
    -
    -

    This object maintains the undo stack for an EditSession.

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    -
      -
    • -
        -
      • new UndoManager()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Resets the current undo state and creates a new UndoManager.

    - -
    -

    Resets the current undo state and creates a new UndoManager.

    - -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • UndoManager.execute(Object options)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Provides a means for implementing your own undo manager. options has one property, args, an Array, with two elements:

    - -
    -

    Provides a means for implementing your own undo manager. options has one property, args, an Array, with two elements:

    -
      -
    • args[0] is an array of deltas
    • -
    • args[1] is the document to associate with
    • -
    - -

    Arguments

    optionsObject

    Required. Contains additional properties

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • UndoManager.hasRedo() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if there are redo operations left to perform.

    - -
    -

    Returns true if there are redo operations left to perform.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • UndoManager.hasUndo() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if there are undo operations left to perform.

    - -
    -

    Returns true if there are undo operations left to perform.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • UndoManager.redo(Boolean dontSelect)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Perform a redo operation on the document, reimplementing the last change.

    - -
    -

    Perform a redo operation on the document, reimplementing the last change.

    - -

    Arguments

    dontSelectBoolean

    Required. If true, doesn't select the range of where the change occurred

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • UndoManager.reset()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Destroys the stack of undo and redo redo operations.

    - -
    -

    Destroys the stack of undo and redo redo operations.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Perform an undo operation on the document, reverting the last change.

    - -
    -

    Perform an undo operation on the document, reverting the last change.

    - -

    Arguments

    dontSelectBoolean

    Required. If true, doesn't select the range of where the change occurred

    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/api/virtual_renderer.html b/api/virtual_renderer.html deleted file mode 100644 index abdfecc8756..00000000000 --- a/api/virtual_renderer.html +++ /dev/null @@ -1,2190 +0,0 @@ - -
    -
    -
    -
    -
    -

    VirtualRenderer -

    - -
    -
    -
    -
    -

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

    - -
    -
    -
    -

    Constructors

    -
    -
    -
    -
    - -
    -
    -

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

    - -
    -

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

    - -

    Arguments

    containerDOMElement

    Required. The root element of the editor

    -
    themeString

    Required. The starting theme

    -
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer._loadTheme()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.addGutterDecoration(Object row, Object className)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Deprecated; (moved to EditSession)

    - -
    -

    Deprecated; (moved to EditSession)

    - -

    Arguments

    rowObject

    Required.

    -
    classNameObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.adjustWrapLimit()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Adjusts the wrap limit, which is the number of characters that can fit within the width of the edit area on screen.

    - -
    -

    Adjusts the wrap limit, which is the number of characters that can fit within the width of the edit area on screen.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.alignCursor()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.animateScrolling()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.destroy()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Destroys the text and cursor layers for this renderer.

    - -
    -

    Destroys the text and cursor layers for this renderer.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getAnimatedScroll() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns whether an animated scroll happens or not.

    - -
    -

    Returns whether an animated scroll happens or not.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getContainerElement() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the root element containing this renderer.

    - -
    -

    Returns the root element containing this renderer.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getDisplayIndentGuides()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getFadeFoldWidgets()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getFirstFullyVisibleRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the index of the first fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen.

    - -
    -

    Returns the index of the first fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getFirstVisibleRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the index of the first visible row.

    - -
    -

    Returns the index of the first visible row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getHighlightGutterLine()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getHScrollBarAlwaysVisible() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns whether the horizontal scrollbar is set to be always visible.

    - -
    -

    Returns whether the horizontal scrollbar is set to be always visible.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getLastFullyVisibleRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the index of the last fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen.

    - -
    -

    Returns the index of the last fully visible row. "Fully" here means that the characters in the row are not truncated; that the top and the bottom of the row are on the screen.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getLastVisibleRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the index of the last visible row.

    - -
    -

    Returns the index of the last visible row.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getMouseEventTarget() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the element that the mouse events are attached to

    - -
    -

    Returns the element that the mouse events are attached to

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getPrintMarginColumn() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns whether the print margin column is being shown or not.

    - -
    -

    Returns whether the print margin column is being shown or not.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getScrollBottomRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the last visible row, regardless of whether it's fully visible or not.

    - -
    -

    Returns the last visible row, regardless of whether it's fully visible or not.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getScrollLeft() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the value of the distance between the left of the editor and the leftmost part of the visible content.

    - -
    -

    Returns the value of the distance between the left of the editor and the leftmost part of the visible content.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getScrollTop() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the value of the distance between the top of the editor and the topmost part of the visible content.

    - -
    -

    Returns the value of the distance between the top of the editor and the topmost part of the visible content.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getScrollTopRow() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the first visible row, regardless of whether it's fully visible or not.

    - -
    -

    Returns the first visible row, regardless of whether it's fully visible or not.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getShowGutter() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns true if the gutter is being shown.

    - -
    -

    Returns true if the gutter is being shown.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getShowInvisibles() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns whether invisible characters are being shown or not.

    - -
    -

    Returns whether invisible characters are being shown or not.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getShowPrintMargin() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns whether the print margin is being shown or not.

    - -
    -

    Returns whether the print margin is being shown or not.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getTextAreaContainer() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the element to which the hidden text area is added.

    - -
    -

    Returns the element to which the hidden text area is added.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.getTheme() -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Returns the path of the current theme.

    - -
    -

    Returns the path of the current theme.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.hideComposition()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Hides the current composition.

    - -
    -

    Hides the current composition.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.hideCursor()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Hides the cursor icon.

    - -
    -

    Hides the cursor icon.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns true if you can still scroll by either parameter; in other words, you haven't reached the end of the file or line.

    - -
    -

    Returns true if you can still scroll by either parameter; in other words, you haven't reached the end of the file or line.

    - -

    Arguments

    deltaXNumber

    Required. The x value to scroll by

    -
    deltaYNumber

    Required. The y value to scroll by

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.onChangeTabSize()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.onGutterResize()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Triggers a resize of the editor.

    - -
    -

    Triggers a resize of the editor.

    - -

    Arguments

    forceBoolean

    Required. If true, recomputes the size, even if the height and width haven't changed

    -
    gutterWidthNumber

    Required. The width of the gutter in pixels

    -
    widthNumber

    Required. The width of the editor in pixels

    -
    heightNumber

    Required. The height of the editor, in pixels

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.pixelToScreenCoordinates()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.removeGutterDecoration(Object row, Object className)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Deprecated; (moved to EditSession)

    - -
    -

    Deprecated; (moved to EditSession)

    - -

    Arguments

    rowObject

    Required.

    -
    classNameObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.screenToTextCoordinates()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.scrollBy(Number deltaX, Number deltaY)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Scrolls the editor across both x- and y-axes.

    - -
    -

    Scrolls the editor across both x- and y-axes.

    - -

    Arguments

    deltaXNumber

    Required. The x value to scroll by

    -
    deltaYNumber

    Required. The y value to scroll by

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.scrollCursorIntoView(Object cursor, Object offset)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Scrolls the cursor into the first visible area of the editor

    - -
    -

    Scrolls the cursor into the first visible area of the editor

    - -

    Arguments

    cursorObject

    Required.

    -
    offsetObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.scrollSelectionIntoView()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -

    Gracefully scrolls the editor to the row indicated.

    - -
    -

    Gracefully scrolls the editor to the row indicated.

    - -

    Arguments

    lineNumber

    Required. A line number

    -
    centerBoolean

    Required. If true, centers the editor the to indicated line

    -
    animateBoolean

    Required. If true animates scrolling

    -
    callbackFunction

    Required. Function to be called after the animation has finished

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.scrollToRow(Number row)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Gracefully scrolls from the top of the editor to the row indicated.

    - -
    -

    Gracefully scrolls from the top of the editor to the row indicated.

    - -

    Arguments

    rowNumber

    Required. A row id

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.scrollToX(Number scrollLeft) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Scrolls the editor across the x-axis to the pixel indicated.

    - -
    -

    Scrolls the editor across the x-axis to the pixel indicated.

    - -

    Arguments

    scrollLeftNumber

    Required. The position to scroll to

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.scrollToY(Number scrollTop) -
      • - -
      • -
      -
        -
      -
    • -
    -
    -
    -

    Scrolls the editor to the y pixel indicated.

    - -
    -

    Scrolls the editor to the y pixel indicated.

    - -

    Arguments

    scrollTopNumber

    Required. The position to scroll to

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setAnimatedScroll(Boolean shouldAnimate)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Identifies whether you want to have an animated scroll or not.

    - -
    -

    Identifies whether you want to have an animated scroll or not.

    - -

    Arguments

    shouldAnimateBoolean

    Required. Set to true to show animated scrolls

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setAnnotations(Array annotations)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets annotations for the gutter.

    - -
    -

    Sets annotations for the gutter.

    - -

    Arguments

    annotationsArray

    Required. An array containing annotations

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setCompositionText(String text)
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -

    Arguments

    textString

    Required. A string of text to use

    -

    Sets the inner text of the current composition to text.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setDisplayIndentGuides()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setFadeFoldWidgets()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setHighlightGutterLine()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setHScrollBarAlwaysVisible(Boolean alwaysVisible)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Identifies whether you want to show the horizontal scrollbar or not.

    - -
    -

    Identifies whether you want to show the horizontal scrollbar or not.

    - -

    Arguments

    alwaysVisibleBoolean

    Required. Set to true to make the horizontal scroll bar visible

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setPadding(Number padding)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets the padding for all the layers.

    - -
    -

    Sets the padding for all the layers.

    - -

    Arguments

    paddingNumber

    Required. A new padding value (in pixels)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setPrintMarginColumn(Boolean showPrintMargin)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Identifies whether you want to show the print margin column or not.

    - -
    -

    Identifies whether you want to show the print margin column or not.

    - -

    Arguments

    showPrintMarginBoolean

    Required. Set to true to show the print margin column

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setSession(Object session)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Associates the renderer with an EditSession.

    - -
    -

    Associates the renderer with an EditSession.

    - -

    Arguments

    sessionObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setShowGutter(Boolean show)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Identifies whether you want to show the gutter or not.

    - -
    -

    Identifies whether you want to show the gutter or not.

    - -

    Arguments

    showBoolean

    Required. Set to true to show the gutter

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setShowInvisibles(Boolean showInvisibles)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Identifies whether you want to show invisible characters or not.

    - -
    -

    Identifies whether you want to show invisible characters or not.

    - -

    Arguments

    showInvisiblesBoolean

    Required. Set to true to show invisibles

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setShowPrintMargin(Boolean showPrintMargin)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Identifies whether you want to show the print margin or not.

    - -
    -

    Identifies whether you want to show the print margin or not.

    - -

    Arguments

    showPrintMarginBoolean

    Required. Set to true to show the print margin

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setStyle()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.setTheme(String theme)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Sets a new theme for the editor. theme should exist, and be a directory path, like ace/theme/textmate.

    - -
    -

    Sets a new theme for the editor. theme should exist, and be a directory path, like ace/theme/textmate.

    - -

    Arguments

    themeString

    Required. The path to a theme

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.showCursor()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Shows the cursor icon.

    - -
    -

    Shows the cursor icon.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
        -
      -
    • -
    -
    -
    -

    Returns an object containing the pageX and pageY coordinates of the document position.

    - -
    -

    Returns an object containing the pageX and pageY coordinates of the document position.

    - -

    Arguments

    rowNumber

    Required. The document row position

    -
    columnNumber

    Required. The document column position

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.unsetStyle(String style)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Removes the class style from the editor.

    - -
    -

    Removes the class style from the editor.

    - -

    Arguments

    styleString

    Required. A class name

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateBackMarkers()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Schedules an update to all the back markers in the document.

    - -
    -

    Schedules an update to all the back markers in the document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateBreakpoints(Object rows)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Redraw breakpoints.

    - -
    -

    Redraw breakpoints.

    - -

    Arguments

    rowsObject

    Required.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateCharacterSize()
      • -
      -
        -
      • Undocumented
      • -
      -
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateCursor()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Updates the cursor icon.

    - -
    -

    Updates the cursor icon.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateFontSize()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Updates the font size.

    - -
    -

    Updates the font size.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateFrontMarkers()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Schedules an update to all the front markers in the document.

    - -
    -

    Schedules an update to all the front markers in the document.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateFull(Boolean force)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Triggers a full update of all the layers, for all the rows.

    - -
    -

    Triggers a full update of all the layers, for all the rows.

    - -

    Arguments

    forceBoolean

    Required. If true, forces the changes through

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateLines(Number firstRow, Number lastRow)
      • -
      -
        -
      -
    • -
    -
    -
    -

    Triggers a partial update of the text, from the range given by the two parameters.

    - -
    -

    Triggers a partial update of the text, from the range given by the two parameters.

    - -

    Arguments

    firstRowNumber

    Required. The first row to update

    -
    lastRowNumber

    Required. The last row to update

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.updateText()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Triggers a full update of the text, for all the rows.

    - -
    -

    Triggers a full update of the text, for all the rows.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.visualizeBlur()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Blurs the current container.

    - -
    -

    Blurs the current container.

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
        -
      • VirtualRenderer.visualizeFocus()
      • -
      -
        -
      -
    • -
    -
    -
    -

    Focuses the current container.

    - -
    -

    Focuses the current container.

    - -
    -
    -
    -
    -
    -
    - - - - - -
    -
    diff --git a/doc/site/js/main.js b/doc/site/js/main.js index d7df23a4437..ffea39e5976 100644 --- a/doc/site/js/main.js +++ b/doc/site/js/main.js @@ -98,6 +98,10 @@ $(function() { var firstLoad = true; tabs.find(tab_a_selector).click(function(e) { + if ($(this).attr("href").indexOf("http") === 0) { + return; + } + e.preventDefault(); if ($(this).attr("href") === "/") { window.location = "https://ace.c9.io"; diff --git a/doc/site/style.css b/doc/site/style.css index a499996d6af..af9c0d3ec1d 100644 --- a/doc/site/style.css +++ b/doc/site/style.css @@ -492,4 +492,8 @@ img { .rotating-logo:hover { transform: rotate(360deg); transition: all 0.5s ease-in-out; +} + +.nav>li>a.external-nav:hover { + text-decoration: underline; } \ No newline at end of file diff --git a/index.html b/index.html index 62a7af745fa..dedfa3804a2 100644 --- a/index.html +++ b/index.html @@ -48,7 +48,7 @@

    The high performance code ed
                             <a href=Syntax Highlighters

    C+U-;RWd&sWGV{Ott_dLlyBKs{1ktj;JxN^%*2 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 diff --git a/api/resources/images/cloud9-logo.png b/api/resources/images/cloud9-logo.png deleted file mode 100644 index 912524a9ee1d12e58f34ec5622fd4d0b99cfd9ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14564 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 P00000NkvXXu0mjfThRhE diff --git a/api/resources/images/dashed_back.png b/api/resources/images/dashed_back.png deleted file mode 100644 index c6ee9313f2d636546a778425ff998e839f05624f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3445 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 XM~`vmQcs7_00000NkvXXu0mjfem-^= diff --git a/api/resources/images/footer-bg.png b/api/resources/images/footer-bg.png deleted file mode 100644 index 0d572c2809916d5279032187efd1863651024884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1090 zcmaJ=TSyd97@jWLwjphyK|Y-w!3y1-%eK4j;HJAfySm}Xwk~J|(KvI|VVybC%+Xz? z2NMm2C_xAVDJY{Ls;5Hmq0C-{dgv+WAt<7!KmjMD460vS8Y3=P&HI3J};rh23dNFWP> zpr7?AY={LR&d&vohr{7Uz_T37usp-@J}xW-c!6cX#z&KAmf9y|#neVDGKc<=Kf^^L5l4gPeFWjNM+__%eTH3ERuG}BSel77WB^A|?nOg5N)xB06m)Y_ z*048@i5wVHlud^7vrbB7pd|ets_UC*8)xBPzgr61xe*gGS!kmnOCcB6SLcK>g@grV zjI10&gXL4q3?Pi`0c3(iR}e_Dq8ZM79WO~j+OV-~C@?KXX`72r75|+ml9Xq!b>TSrqs4vhL~ZTi~Z-K%S)tsoZ)8KlF4S_LxWViMasHj z?D9SGB%Y?lSg!c)%iHCu72v6O(>T`<&z$^$s^%*%eoKvZy}0^WX6txV@afk38T;4$hTRjMopINt$BmO? zp4p1YRNr$=+jDfnGuK#JXHS#Oi80SLp|nX5*W;~ItK)Ik^3v>+ q@52?yb#p3mr0&MV70#7@>3dG)&xIEj=RPhtuR5LV6d%RUkN*LJOIQW~ diff --git a/api/resources/images/main_bg.png b/api/resources/images/main_bg.png deleted file mode 100644 index f26aefc2af41d6a77b1c5caa18f50cbe26e5990a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9630 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 U(??5`rT_o{07*qoM6N<$f-EzwH~;_u diff --git a/api/resources/images/member-sprites.png b/api/resources/images/member-sprites.png deleted file mode 100644 index 96b0520fd70a6299d27e188d1090606c78b3c72a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3505 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 diff --git a/api/resources/images/menu_disc.png b/api/resources/images/menu_disc.png deleted file mode 100644 index 1d3925b3f103cb7d1d2ccb34251cb2543f936f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)KLZ*U+R`sCEkzKl)gj5&q@hY_5?)@_euSf22N!q0z{yc?Q2YY_Kym8e z5Fvwu2%hQO!{u_psMvL#(bD64NQRTZj^-}DnS22ry9f-;mW=gZvQj}U-ZdMsK&I8^7~DvX`q=inIVXE>RF&gA_=FG; u5mXfsK}5K&3+cUYfYusjMvM_v&>- diff --git a/api/resources/images/method_bg.png b/api/resources/images/method_bg.png deleted file mode 100644 index b018955737a730de52f23bc8fd39786ffe7cd9d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8001 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 N002ovPDHLkV1g96i!uNJ diff --git a/api/resources/images/sidebar-top-bg.png b/api/resources/images/sidebar-top-bg.png deleted file mode 100644 index c0a800e1f8ac0b7cba486dba48441f5cfaaca8be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2693 zcmaJ@c{r47AD)mURCE%9&KQL(vogjsgjpXhEv2IGNHi%+mV_*sV>#)JPIbONzP|Um-uHQa&voDTZ+))o&G7Yh(_RBz z1A#!aJ>1FuiuG5;yG~t6@wGp&z)&m(AcY3*=0<=bIv;?zgmc3HmK!4gu{0@!H6*gg#a4>>981fG)F*)afE-;B`EeQ$4EHr z69kNMg#R5B&C3@?;_?BQ9Rg*;K;cj@92$Yf+S=ROTf;CYGzy8rAki2bv^@cfA)rvO z&ktPTjUOIC@F!D0`%+kr@JJBk5s*lcNQ4k!5nTR3B-+8jVMPOju~8sw1hE{D9%I81 zn0`?p0|Ex0$pe{O4s1n{9>x`dj&Mb!f2Y9aeU;@1K9@;RFk}p!heRV#D=B>edU^eS zD4YEiEdc$2f8zb0!h(QU9)R=*1Y9AXp=ex$>53~Jfy4*sAeSG&^vH=eGg&Y147xPW-$|$gT3eRMK&pZT#Q~6vr>{H4F<~L)p zqkdEGGdKL(v7o-mMJj?pt~B<)8vW%+F+D5WuVbq)z79UXQA|5uG1fCf3)&Ef>VgN^ zB_QT`=jk4nk;i&U@V@AeACYTRT-WKU8wAN7?)iRUUN@*$eV92`()##;SUg81%MS^K z)ofW!+{;(5u(LBWGar^j5kG{4UO1I8>z2nHAp$~QNdNZwY z`D|~#3bD$+lX5d$_Xd!2?AGc+l4Vxoolu{N(e->oR#C%sJyaX-1(C#fG_lmLfi-az zZ(FVzy8n~jIfLYbc4}t#jL{c0@wU>LE@ixJmJoT^nDT~Y%q5pr=GrH76&K&aeI%7Y zZq}V!TQ1Hm1T4NIq7wV0l^6E>Zc?=Bg%~EkpJB3@F({b0i)qKFxq22y+0+?tCN5+5 zE~}qU<&$6X$^;{zH$BiI{TjaBTNxPEX-d}}3)P?qA)pbdxY*QM7IgA4?7q47y~Vm? zTa!E;?Qh*|$XKtuOlpzI_IDYmJh$6t3Kn=8o*}04DQ5FO3yG@8loL)#eu9B1PAoem zI*oL5xpTI{#xlJoC0cN*l+<*8T3^`}yhv=Pu*$0mR*2;711$Y)m$alKi6%!Ymm(9C zux8Ma?HE5zm+O~1J@3qkE3=rZBu;$a@Wy?*nYDNIpD0akg|6lA+A{8ovUOwGekj|m z%eu%eZ8De6Og62$6zQIyJe!`V(XTD9&}+yZzoF#QE~;{9A$lck@DP-q@bmNW@iEo7 zy55SV8(nH7uIo3^e7=iTo1a)z{w&i!V#NFGc{8{50V(zilh?T6o$?lQUlsG*yzWFj z6cN@kJ$1Pe`oMi=cBK9G+><0%m7{_3v3Kju-QK3nkG$U#Jsk(xa-|b#S zvUp6%Cse&`EXdWXSz1~;-nL2hXl05xu1TV(;x-?*TE|uHcfUxGh9d{d*36 zODY?)*_u8s+3jxnA!w@cHGZfYdmv?kWYVW*R!M|RNS2Y z`y)S7tG9DI+OKcP>6dV%QmJ7^=~>c={UivA@Xtq4hd6P@VnrUXe%=w~ZEOYaW$K)P{|X)@I)m)yMVWrJXt{vTGr?>jYTZ#y#`K z+9k!cnNE8<-p@fFGROTaB2hgRCPt4Q6MCo<&f|tRIJTbb)9$QDncpG$v*FyD zW|T$LmUF>ZplOrK*r$%kD25qMqk#5ou*);6Ry**}&OoLLx+@uv_pGk!YBj&3pE`J4 zR-Bf#{f2G_Ce(kmd`OR4`J!?QbQ7+~y&8px#u58$k4#F`&8Gw}{ND{6lpNOCVK-I> zT?`2}l(S`lSGAi@ZFqKcBKG1n?ckn-uAPeH8?8~;_v@j^FWM>ROt% zM`#8ii=Cmhmz{dAWYQBk>1EDJKWkF${Wq5wS%AbG1Ew+U<4-YH?ikHq+YnW!uM!;E q{jpaa61jM9fI=A43m{H~Fe-X!2h!YK=+& diff --git a/api/resources/images/sidebar_border.png b/api/resources/images/sidebar_border.png deleted file mode 100644 index ea6cd700be849c020b74c06ca2c4ed521b744cd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2967 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 LQ|<2BoVog6l3=FD diff --git a/api/resources/images/swirl_divider.png b/api/resources/images/swirl_divider.png deleted file mode 100644 index f3e9f6c6af3c18fc84c25594f3434d1a1031d209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm2XP)R?59o%`Dv8?v^mBYql_}fD5H#NI5wfv&DMR<8C9Dp z{b^e^v-L~bZ0nk)O`A)u`Tjk3d*_zexpnOpD_QReFPGfsbI(Jc>&NrlJ%{E(Q9;-b z9q7jm45JSYQ`~`G3_->K4qMvj#%0L3g428Sc?1%?7=+vCM~sE=8@jGH&GvshVPEvm zuSH*c-P)d9kEdq7Y^sZ#)A0eP(1UxQBkI!)H9fhqwH=%fMT?wM(2p*R2i9YcR+Yqy zZ_&iU!kUt)xA76(mi`I!|$Xw#$v$P9b~8475=|Z&~7<%s`id#Onq0IY);j=j?VSUp1~rWIO$` z*6tqvAf2&P?h}RfjNQjb__xKg9WE0$qyxqa*~Z4;Z$bjPjm6<_f)BEdc_AGzZn#X^ zjoAQPCT>Uvj2E(vjlti91pfF_TT(MC{F788@5l4asGiOje~ITyWjzp%89BT((sRYK zLDPQbD5v*FmAX^+HF5=7yccVKFx2r7#*fEcGAMZ(64*XE2`5HQG=)9{XK?JWIX9BLR=y z$4C&*JcZW05!;wiE;E~4F})49I*D1{jz1*dXL^HPfV4vaO|a#tk>i8Yl5=rgO_>X5 z&klXM>2H$UHoK3JAd08Zx;LYT<@*K&Z;RhS$nZkODlcsUxnk)(dHwbL>&aX}XU3|T z_HkZ=gyF?-Y=-uV>=|to&=9Ub!Vo5yeNNSu{_OFr@H>kUNOeB8PL0yffZfMN5XDny z{TtHFp39J$&Tp>8k{@cD*4ZrohCP=NVt({k3oef`!?hwxp2DX2cOfPDh&SX9iA~}x zX1QLECbKGq^fhfhF-K@?BnKU%_L z05>3G2*-EHcff<2kTHlpOU_ALhK#H5z-eit4').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this); \ No newline at end of file diff --git a/api/resources/javascripts/bootstrap.js b/api/resources/javascripts/bootstrap.js deleted file mode 100644 index 79241e74e14..00000000000 --- a/api/resources/javascripts/bootstrap.js +++ /dev/null @@ -1,389 +0,0 @@ -/* ============================================================ - * bootstrap-dropdown.js v2.1.1 - * http://twitter.github.com/bootstrap/javascript.html#dropdowns - * ============================================================ - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* DROPDOWN CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=dropdown]' - , Dropdown = function (element) { - var $el = $(element).on('click.dropdown.data-api', this.toggle) - $('html').on('click.dropdown.data-api', function () { - $el.parent().removeClass('open') - }) - } - - Dropdown.prototype = { - - constructor: Dropdown - - , toggle: function (e) { - var $this = $(this) - , $parent - , isActive - - if ($this.is('.disabled, :disabled')) return - - $parent = getParent($this) - - isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - $parent.toggleClass('open') - $this.focus() - } - - return false - } - - , keydown: function (e) { - var $this - , $items - , $active - , $parent - , isActive - , index - - if (!/(38|40|27)/.test(e.keyCode)) return - - $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - $parent = getParent($this) - - isActive = $parent.hasClass('open') - - if (!isActive || (isActive && e.keyCode == 27)) return $this.click() - - $items = $('[role=menu] li:not(.divider) a', $parent) - - if (!$items.length) return - - index = $items.index($items.filter(':focus')) - - if (e.keyCode == 38 && index > 0) index-- // up - if (e.keyCode == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items - .eq(index) - .focus() - } - - } - - function clearMenus() { - getParent($(toggle)) - .removeClass('open') - } - - function getParent($this) { - var selector = $this.attr('data-target') - , $parent - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 - } - - $parent = $(selector) - $parent.length || ($parent = $this.parent()) - - return $parent - } - - - /* DROPDOWN PLUGIN DEFINITION - * ========================== */ - - $.fn.dropdown = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('dropdown') - if (!data) $this.data('dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.dropdown.Constructor = Dropdown - - - /* APPLY TO STANDARD DROPDOWN ELEMENTS - * =================================== */ - - $(function () { - $('html') - .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) - $('body') - .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) - .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) - }) - -}(window.jQuery); -/* ======================================================== - * bootstrap-tab.js v2.1.1 - * http://twitter.github.com/bootstrap/javascript.html#tabs - * ======================================================== - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ======================================================== */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* TAB CLASS DEFINITION - * ==================== */ - - var Tab = function (element) { - this.element = $(element) - } - - Tab.prototype = { - - constructor: Tab - - , show: function () { - var $this = this.element - , $ul = $this.closest('ul:not(.dropdown-menu)') - , selector = $this.attr('data-target') - , previous - , $target - , e - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 - } - - if ( $this.parent('li').hasClass('active') ) return - - previous = $ul.find('.active a').last()[0] - - e = $.Event('show', { - relatedTarget: previous - }) - - $this.trigger(e) - - if (e.isDefaultPrevented()) return - - $target = $(selector) - - this.activate($this.parent('li'), $ul) - this.activate($target, $target.parent(), function () { - $this.trigger({ - type: 'shown' - , relatedTarget: previous - }) - }) - } - - , activate: function ( element, container, callback) { - var $active = container.find('> .active') - , transition = callback - && $.support.transition - && $active.hasClass('fade') - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - - element.addClass('active') - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if ( element.parent('.dropdown-menu') ) { - element.closest('li.dropdown').addClass('active') - } - - callback && callback() - } - - transition ? - $active.one($.support.transition.end, next) : - next() - - $active.removeClass('in') - } - } - - - /* TAB PLUGIN DEFINITION - * ===================== */ - - $.fn.tab = function ( option ) { - return this.each(function () { - var $this = $(this) - , data = $this.data('tab') - if (!data) $this.data('tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.tab.Constructor = Tab - - - /* TAB DATA-API - * ============ */ - - $(function () { - $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { - e.preventDefault() - $(this).tab('show') - }) - }) - -}(window.jQuery); -/* ========================================================== - * bootstrap-affix.js v2.1.1 - * http://twitter.github.com/bootstrap/javascript.html#affix - * ========================================================== - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* AFFIX CLASS DEFINITION - * ====================== */ - - var Affix = function (element, options) { - this.options = $.extend({}, $.fn.affix.defaults, options) - this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) - this.$element = $(element) - this.checkPosition() - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var scrollHeight = $(document).height() - , scrollTop = this.$window.scrollTop() - , position = this.$element.offset() - , offset = this.options.offset - , offsetBottom = offset.bottom - , offsetTop = offset.top - , reset = 'affix affix-top affix-bottom' - , affix - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top() - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() - - affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? - false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? - 'bottom' : offsetTop != null && scrollTop <= offsetTop ? - 'top' : false - - if (this.affixed === affix) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? position.top - scrollTop : null - - this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) - } - - - /* AFFIX PLUGIN DEFINITION - * ======================= */ - - $.fn.affix = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('affix') - , options = typeof option == 'object' && option - if (!data) $this.data('affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.affix.Constructor = Affix - - $.fn.affix.defaults = { - offset: 0 - } - - - /* AFFIX DATA-API - * ============== */ - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - , data = $spy.data() - - data.offset = data.offset || {} - - data.offsetBottom && (data.offset.bottom = data.offsetBottom) - data.offsetTop && (data.offset.top = data.offsetTop) - - $spy.affix(data) - }) - }) - - -}(window.jQuery); \ No newline at end of file diff --git a/api/resources/javascripts/clicker.js b/api/resources/javascripts/clicker.js deleted file mode 100644 index 90e7e12c813..00000000000 --- a/api/resources/javascripts/clicker.js +++ /dev/null @@ -1,69 +0,0 @@ -function setupClicker() { - // when hovering over arrow, add highlight (only if inactive) - $("i.methodToggle").hover(function () { - if (!$("i.methodToggle").hasClass('active')) - $(this).addClass("methodToggleHover"); - }, - function () { - $(this).removeClass("methodToggleHover"); - } - ); - - function handleClick(e, linkHref) { - //if (linkHref.indexOf("nav=api&api=") >= 0) - // return; - if (linkHref == "api") - return; - - e.preventDefault(); - - var dstElem; - if (linkHref) { - dstElem = $("article[id='" + linkHref + "']"); - } - - var $article = (dstElem || $(this)).closest('.article'), - $arrow = $('i.methodClicker', $article); - - if (!$article.hasClass('methodToggleOpen') || this.force) { - $article.addClass('methodToggleOpen'); - $arrow.removeClass('inactive').addClass('active'); - - if (!$arrow[0]) - return; - - var data = $arrow[0].id.replace(/^js_/, ""); - //var state = {}; - //state.section = data; - //$.bbq.pushState(state); - - scrollTo(null, data); - } - else { - $article.removeClass('methodToggleOpen'); - $arrow.removeClass('active').addClass('inactive'); - } - } - - function transformHash(e) { - // some bs to figure out link hash - var hashId = (e.srcElement ? e.srcElement.href : (e.hash || e.target.href)) || e.currentTarget.hash; - - handleClick(e, hashId.substring(hashId.indexOf("#") + 1)); - } - - // for the arrow - $("i.methodToggle").click(handleClick); - - // for the signature - $('.member-name').click(handleClick); - - // for the top dropdown - $('li.memberLink a').click(transformHash); - - //$('a[href^="#"]').click(transformHash); - - $('.related-to', '.metaInfo').click(function(){ - location.hash = $(this).find('a').attr('href').split('#')[1]; - }); -} \ No newline at end of file diff --git a/api/resources/javascripts/disqus-ext.js b/api/resources/javascripts/disqus-ext.js deleted file mode 100644 index 6bb7ff4ed63..00000000000 --- a/api/resources/javascripts/disqus-ext.js +++ /dev/null @@ -1,17 +0,0 @@ -function setupDisqus(href) { - var disqus_shortname = 'aceapi'; - - //var paths = window.location.pathname.split("/"); - //var fileName = paths[paths.length - 2] + "/" + paths[paths.length - 1]; - - //var disqus_identifier = fileName; - var disqus_identifier = href.substring(2); - - (function() { - if (document.getElementById("disqusScript") === null) { - var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; - dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; - (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); - } - })(); -} \ No newline at end of file diff --git a/api/resources/javascripts/jquery-scrollspy.js b/api/resources/javascripts/jquery-scrollspy.js deleted file mode 100644 index 71b4a3631b2..00000000000 --- a/api/resources/javascripts/jquery-scrollspy.js +++ /dev/null @@ -1,98 +0,0 @@ -/*! - * jQuery Scrollspy Plugin - * Author: @sxalexander - * Licensed under the MIT license - */ - - -;(function ( $, window, document, undefined ) { - - $.fn.extend({ - scrollspy: function ( options ) { - - var defaults = { - min: 0, - max: 0, - mode: 'vertical', - buffer: 0, - container: window, - onEnter: options.onEnter ? options.onEnter : [], - onLeave: options.onLeave ? options.onLeave : [], - onTick: options.onTick ? options.onTick : [] - } - - var options = $.extend( {}, defaults, options ); - - return this.each(function (i) { - - var element = this; - var o = options; - var $container = $(o.container); - var mode = o.mode; - var buffer = o.buffer; - var enters = leaves = 0; - var inside = false; - - /* add listener to container */ - $container.bind('scroll', function(e){ - var position = {top: $(this).scrollTop(), left: $(this).scrollLeft()}; - var xy = (mode == 'vertical') ? position.top + buffer : position.left + buffer; - var max = o.max; - var min = o.min; - - /* fix max */ - if($.isFunction(o.max)){ - max = o.max(); - } - - /* fix max */ - if($.isFunction(o.min)){ - min = o.min(); - } - - if(max == 0){ - max = (mode == 'vertical') ? $container.height() : $container.outerWidth() + $(element).outerWidth(); - } - - /* if we have reached the minimum bound but are below the max ... */ - if(xy >= o.min && xy <= max){ - /* trigger enter event */ - if(!inside){ - inside = true; - enters++; - - /* fire enter event */ - $(element).trigger('scrollEnter', {position: position}) - if($.isFunction(o.onEnter)){ - o.onEnter(element, position); - } - - } - - /* triger tick event */ - $(element).trigger('scrollTick', {position: position, inside: inside, enters: enters, leaves: leaves}) - if($.isFunction(o.onTick)){ - o.onTick(element, position, inside, enters, leaves); - } - }else{ - - if(inside){ - inside = false; - leaves++; - /* trigger leave event */ - $(element).trigger('scrollLeave', {position: position, leaves:leaves}) - - if($.isFunction(o.onLeave)){ - o.onLeave(element, position); - } - } - } - }); - - }); - } - - }) - - -})( jQuery, window ); diff --git a/api/resources/javascripts/jquery.collapse.js b/api/resources/javascripts/jquery.collapse.js deleted file mode 100644 index 427ee5fa002..00000000000 --- a/api/resources/javascripts/jquery.collapse.js +++ /dev/null @@ -1,151 +0,0 @@ -/*! - * Collapse plugin for jQuery - * http://github.com/danielstocks/jQuery-Collapse/ - * - * @author Daniel Stocks (http://webcloud.se) - * @version 0.9.1 - * @updated 17-AUG-2010 - * - * Copyright 2010, Daniel Stocks - * Released under the MIT, BSD, and GPL Licenses. - */ - -(function($) { - - // Use a cookie counter to allow multiple instances of the plugin - var cookieCounter = 0; - - $.fn.extend({ - collapse: function(options) { - - var defaults = { - head : "h3", - group : "div, ul", - cookieName : "collapse", - // Default function for showing content - show: function() { - this.show(); - }, - // Default function for hiding content - hide: function() { - this.hide(); - } - }; - var op = $.extend(defaults, options); - - // Default CSS classes - var active = "active", - inactive = "inactive"; - - return this.each(function() { - - // Increment coookie counter to ensure cookie name integrity - cookieCounter++; - var obj = $(this), - // Find all headers and wrap them in for accessibility. - sections = obj.find(op.head).wrapInner(''), - l = sections.length, - cookie = op.cookieName + "_" + cookieCounter; - // Locate all panels directly following a header - var panel = obj.find(op.head).map(function() { - var head = $(this) - if(!head.hasClass(active)) { - return head.next(op.group).hide()[0]; - } - return head.next(op.group)[0]; - }); - - // Bind event for showing content - obj.bind("show", function(e, bypass) { - var obj = $(e.target); - // ARIA attribute - obj.attr('aria-hidden', false) - .prev() - .removeClass(inactive) - .addClass(active); - // Bypass method for instant display - if(bypass) { - obj.show(); - } else { - op.show.call(obj); - } - }); - - // Bind event for hiding content - obj.bind("hide", function(e, bypass) { - var obj = $(e.target); - obj.attr('aria-hidden', true) - .prev() - .removeClass(active) - .addClass(inactive); - if(bypass) { - obj.hide(); - } else { - op.hide.call(obj); - } - }); - - // Look for existing cookies - if(cookieSupport) { - for (var c=0;c<=l;c++) { - var val = $.cookie(cookie + c); - // Show content if associating cookie is found - if ( val == c + "open" ) { - panel.eq(c).trigger('show', [true]); - // Hide content - } else if ( val == c + "closed") { - panel.eq(c).trigger('hide', [true]); - } - } - } - - // Delegate click event to show/hide content. - obj.bind("click", function(e) { - var t = $(e.target); - // Check if header was clicked - if(!t.is(op.head)) { - // What about link inside header. - if ( t.parent().is(op.head) ) { - t = t.parent(); - } else { - return; - } - e.preventDefault(); - } - // Figure out what position the clicked header has. - var num = sections.index(t), - cookieName = cookie + num, - cookieVal = num, - content = t.next(op.group); - // If content is already active, hide it. - if(t.hasClass(active)) { - content.trigger('hide'); - cookieVal += 'closed'; - if(cookieSupport) { - $.cookie(cookieName, cookieVal, { path: '/', expires: 10 }); - } - return; - } - // Otherwise show it. - content.trigger('show'); - cookieVal += 'open'; - if(cookieSupport) { - $.cookie(cookieName, cookieVal, { path: '/', expires: 10 }); - } - }); - }); - } - }); - - // Make sure can we eat cookies without getting into trouble. - var cookieSupport = (function() { - try { - $.cookie('x', 'x', { path: '/', expires: 10 }); - $.cookie('x', null); - } - catch(e) { - return false; - } - return true; - })(); -})(jQuery); \ No newline at end of file diff --git a/api/resources/javascripts/jquery.cookie.js b/api/resources/javascripts/jquery.cookie.js deleted file mode 100644 index 6df1faca25f..00000000000 --- a/api/resources/javascripts/jquery.cookie.js +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Cookie plugin - * - * Copyright (c) 2006 Klaus Hartl (stilbuero.de) - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - */ - -/** - * Create a cookie with the given name and value and other optional parameters. - * - * @example $.cookie('the_cookie', 'the_value'); - * @desc Set the value of a cookie. - * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); - * @desc Create a cookie with all available options. - * @example $.cookie('the_cookie', 'the_value'); - * @desc Create a session cookie. - * @example $.cookie('the_cookie', null); - * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain - * used when the cookie was set. - * - * @param String name The name of the cookie. - * @param String value The value of the cookie. - * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. - * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. - * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. - * If set to null or omitted, the cookie will be a session cookie and will not be retained - * when the the browser exits. - * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). - * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). - * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will - * require a secure protocol (like HTTPS). - * @type undefined - * - * @name $.cookie - * @cat Plugins/Cookie - * @author Klaus Hartl/klaus.hartl@stilbuero.de - */ - -/** - * Get the value of a cookie with the given name. - * - * @example $.cookie('the_cookie'); - * @desc Get the value of a cookie. - * - * @param String name The name of the cookie. - * @return The value of the cookie. - * @type String - * - * @name $.cookie - * @cat Plugins/Cookie - * @author Klaus Hartl/klaus.hartl@stilbuero.de - */ -jQuery.cookie = function(name, value, options) { - if (typeof value != 'undefined') { // name and value given, set cookie - options = options || {}; - if (value === null) { - value = ''; - options.expires = -1; - } - var expires = ''; - if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { - var date; - if (typeof options.expires == 'number') { - date = new Date(); - date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); - } else { - date = options.expires; - } - expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE - } - // CAUTION: Needed to parenthesize options.path and options.domain - // in the following expressions, otherwise they evaluate to undefined - // in the packed version for some reason... - var path = options.path ? '; path=' + (options.path) : ''; - var domain = options.domain ? '; domain=' + (options.domain) : ''; - var secure = options.secure ? '; secure' : ''; - document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); - } else { // only name given, get cookie - var cookieValue = null; - if (document.cookie && document.cookie != '') { - var cookies = document.cookie.split(';'); - for (var i = 0; i < cookies.length; i++) { - var cookie = jQuery.trim(cookies[i]); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) == (name + '=')) { - cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); - break; - } - } - } - return cookieValue; - } -}; \ No newline at end of file diff --git a/api/resources/javascripts/plugins.js b/api/resources/javascripts/plugins.js deleted file mode 100644 index efda459cd4b..00000000000 --- a/api/resources/javascripts/plugins.js +++ /dev/null @@ -1,13 +0,0 @@ -window.log=function(){log.history=log.history||[];log.history.push(arguments);if(this.console){arguments.callee=arguments.callee.caller;var a=[].slice.call(arguments);(typeof console.log==="object"?log.apply.call(console.log,console,a):console.log.apply(console,a))}}; -(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try -{console.log();return window.console;}catch(err){return window.console={};}})()); - -/* - * jQuery throttle / debounce - v1.1 - 3/7/2010 - * http://benalman.com/projects/jquery-throttle-debounce-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this); diff --git a/api/resources/javascripts/prettify-extension.js b/api/resources/javascripts/prettify-extension.js deleted file mode 100644 index ca8458dc634..00000000000 --- a/api/resources/javascripts/prettify-extension.js +++ /dev/null @@ -1,24 +0,0 @@ -// Stolen from StackOverflow. Find all

  • - API Reference + API Reference
  • Real World Users @@ -183,7 +183,7 @@

    Loading Ace from a Local URL

    contents of lib/ace folder as ace:

    Loading Ace from a CDN

    -

    The packaged version can also be loaded from CDN's such as PageCDN, jsDelivr or cdnjs. +

    The packaged version can also be loaded from CDN's such as jsDelivr or cdnjs.

    diff --git a/src/multi_select.js b/src/multi_select.js index d3359fc110a..971406522c7 100644 --- a/src/multi_select.js +++ b/src/multi_select.js @@ -224,8 +224,8 @@ var EditSession = require("./edit_session").EditSession; * * Gets list of ranges composing rectangular block on the screen * - * @param {Cursor} screenCursor The cursor to use - * @param {Anchor} screenAnchor The anchor to use + * @param {Position} screenCursor The cursor to use + * @param {Position} screenAnchor The anchor to use * @param {Boolean} includeEmptyLines If true, this includes ranges inside the block which are empty due to clipping * @returns {Range} * @method Selection.rectangularRangeBlock diff --git a/tool/release-api-docs.sh b/tool/release-api-docs.sh new file mode 100644 index 00000000000..0eb6f6f78e6 --- /dev/null +++ b/tool/release-api-docs.sh @@ -0,0 +1,68 @@ +#!/bin/bash +set -e + + +cd `dirname $0`/.. +SOURCE=`pwd` + +mkdir -p .apigenerator + +# check if api dir is clean +if ! [ -f .apigenerator/.git/HEAD ]; then + git clone git@github.com:ajaxorg/ace-api-docs.git .apigenerator +fi + +pushd .apigenerator +git pull origin master # fetch + +rm -rf ./doc + +npm i +export ACE_VERSION="v$(node -p 'require("../package.json").version')" +node generateAnnotations.js ../src +node generateNewDts.js ace.d.ts +node generateDoc.js ./doc + +rm -rf ./doc-repo +git worktree prune +git worktree add --force --no-checkout doc-repo origin/gh-pages + +cd doc-repo +mv ../doc/* . +git reset origin/gh-pages +git add . + +if [ "$(git status --porcelain)" ]; then + git commit -m "build api reference $ACE_VERSION" + git push origin HEAD:gh-pages --force +fi + +popd + + + +git worktree prune +rm -rf .apigenerator/ace-gh-pages +git worktree add --force --no-checkout .apigenerator/ace-gh-pages HEAD + + +pushd .apigenerator/ace-gh-pages +git reset > /dev/null +git rm -rf api || : +mv ../doc-repo ./api +echo '[submodule "doc/wiki"] + path = doc/wiki + url = https://github.com/ajaxorg/ace.wiki.git +[submodule "build"] + path = build + url = https://github.com/ajaxorg/ace-builds.git +[submodule "api"] + path = api + url = https://github.com/ajaxorg/ace-api-docs.git' > .gitmodules +git add .gitmodules api + +git commit -m "build api reference $ACE_VERSION" + +git push --progress "origin" HEAD:refs/heads/gh-pages --force + +popd \ No newline at end of file diff --git a/tool/release.sh b/tool/release.sh index 2696b7f81aa..bdc2b6c935b 100755 --- a/tool/release.sh +++ b/tool/release.sh @@ -27,8 +27,8 @@ if [ "$(git rev-parse --revs-only HEAD)" != "$(git rev-parse --revs-only refs/re echo build directory not clean; exit 1 fi -if [ "$(git ls-files --others --exclude-standard)" ]; - then echo untracked files; +if [ "$(git ls-files --others --exclude-standard)" ]; then + echo untracked files; git ls-files --others --exclude-standard exit 1 fi @@ -110,7 +110,12 @@ fi pause "continue pushing to github? [y/n]" -git push --progress "origin" HEAD:gh-pages HEAD:master refs/tags/"v"$VERSION_NUM:refs/tags/"v"$VERSION_NUM +git push --progress "origin" HEAD:master refs/tags/"v"$VERSION_NUM:refs/tags/"v"$VERSION_NUM + + +pause "update api docs [y/n]" +bash tool/release-api-docs.sh + echo "All done!" pause "May I go now? [y/n]"