App-Mxpress-PDF
view release on metacpan or search on metacpan
public/javascripts/ace/ace.js view on Meta::CPAN
});
define("ace/layer/lines",["require","exports","module","ace/lib/dom"], function(require, exports, module) {
"use strict";
var dom = require("../lib/dom");
var Lines = function(element, canvasHeight) {
this.element = element;
this.canvasHeight = canvasHeight || 500000;
this.element.style.height = (this.canvasHeight * 2) + "px";
this.cells = [];
this.cellCache = [];
this.$offsetCoefficient = 0;
};
(function() {
this.moveContainer = function(config) {
dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);
};
this.pageChanged = function(oldConfig, newConfig) {
return (
Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==
Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)
);
};
this.computeLineTop = function(row, config, session) {
var screenTop = config.firstRowScreen * config.lineHeight;
var screenPage = Math.floor(screenTop / this.canvasHeight);
var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;
return lineTop - (screenPage * this.canvasHeight);
};
this.computeLineHeight = function(row, config, session) {
return config.lineHeight * session.getRowLineCount(row);
};
this.getLength = function() {
return this.cells.length;
};
this.get = function(index) {
return this.cells[index];
};
this.shift = function() {
this.$cacheCell(this.cells.shift());
};
this.pop = function() {
this.$cacheCell(this.cells.pop());
};
this.push = function(cell) {
if (Array.isArray(cell)) {
this.cells.push.apply(this.cells, cell);
var fragment = dom.createFragment(this.element);
for (var i=0; i<cell.length; i++) {
fragment.appendChild(cell[i].element);
}
this.element.appendChild(fragment);
} else {
this.cells.push(cell);
this.element.appendChild(cell.element);
}
};
this.unshift = function(cell) {
if (Array.isArray(cell)) {
this.cells.unshift.apply(this.cells, cell);
var fragment = dom.createFragment(this.element);
for (var i=0; i<cell.length; i++) {
fragment.appendChild(cell[i].element);
}
if (this.element.firstChild)
this.element.insertBefore(fragment, this.element.firstChild);
else
this.element.appendChild(fragment);
} else {
this.cells.unshift(cell);
this.element.insertAdjacentElement("afterbegin", cell.element);
}
};
this.last = function() {
if (this.cells.length)
return this.cells[this.cells.length-1];
else
return null;
};
this.$cacheCell = function(cell) {
if (!cell)
return;
cell.element.remove();
this.cellCache.push(cell);
};
this.createCell = function(row, config, session, initElement) {
var cell = this.cellCache.pop();
if (!cell) {
var element = dom.createElement("div");
if (initElement)
initElement(element);
this.element.appendChild(element);
cell = {
element: element,
text: "",
row: row
};
}
cell.row = row;
return cell;
};
}).call(Lines.prototype);
exports.Lines = Lines;
});
define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/layer/lines"], function(require, exports, module) {
"use strict";
var dom = require("../lib/dom");
var oop = require("../lib/oop");
var lang = require("../lib/lang");
var EventEmitter = require("../lib/event_emitter").EventEmitter;
var Lines = require("./lines").Lines;
var Gutter = function(parentEl) {
this.element = dom.createElement("div");
this.element.className = "ace_layer ace_gutter-layer";
parentEl.appendChild(this.element);
public/javascripts/ace/ace.js view on Meta::CPAN
var cell = cells[i];
if (cell.row >= this.$cursorRow) {
if (cell.row > this.$cursorRow) {
var fold = this.session.getFoldLine(this.$cursorRow);
if (i > 0 && fold && fold.start.row == cells[i - 1].row)
cell = cells[i - 1];
else
break;
}
cell.element.className = "ace_gutter-active-line " + cell.element.className;
this.$cursorCell = cell;
break;
}
}
};
this.scrollLines = function(config) {
var oldConfig = this.config;
this.config = config;
this.$updateCursorRow();
if (this.$lines.pageChanged(oldConfig, config))
return this.update(config);
this.$lines.moveContainer(config);
var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar
this.session.getLength() - 1);
var oldLastRow = this.oldLastRow;
this.oldLastRow = lastRow;
if (!oldConfig || oldLastRow < config.firstRow)
return this.update(config);
if (lastRow < oldConfig.firstRow)
return this.update(config);
if (oldConfig.firstRow < config.firstRow)
for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)
this.$lines.shift();
if (oldLastRow > lastRow)
for (var row=this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row>0; row--)
this.$lines.pop();
if (config.firstRow < oldConfig.firstRow) {
this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));
}
if (lastRow > oldLastRow) {
this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));
}
this.updateLineHighlight();
this._signal("afterRender");
this.$updateGutterWidth(config);
};
this.$renderLines = function(config, firstRow, lastRow) {
var fragment = [];
var row = firstRow;
var foldLine = this.session.getNextFoldLine(row);
var foldStart = foldLine ? foldLine.start.row : Infinity;
while (true) {
if (row > foldStart) {
row = foldLine.end.row+1;
foldLine = this.session.getNextFoldLine(row, foldLine);
foldStart = foldLine ? foldLine.start.row : Infinity;
}
if (row > lastRow)
break;
var cell = this.$lines.createCell(row, config, this.session, onCreateCell);
this.$renderCell(cell, config, foldLine, row);
fragment.push(cell);
row++;
}
return fragment;
};
this.$renderCell = function(cell, config, fold, row) {
var element = cell.element;
var session = this.session;
var textNode = element.childNodes[0];
var foldWidget = element.childNodes[1];
var firstLineNumber = session.$firstLineNumber;
var breakpoints = session.$breakpoints;
var decorations = session.$decorations;
var gutterRenderer = session.gutterRenderer || this.$renderer;
var foldWidgets = this.$showFoldWidgets && session.foldWidgets;
var foldStart = fold ? fold.start.row : Number.MAX_VALUE;
var className = "ace_gutter-cell ";
if (this.$highlightGutterLine) {
if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {
className += "ace_gutter-active-line ";
if (this.$cursorCell != cell) {
if (this.$cursorCell)
this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", "");
this.$cursorCell = cell;
}
}
}
if (breakpoints[row])
className += breakpoints[row];
if (decorations[row])
className += decorations[row];
if (this.$annotations[row])
className += this.$annotations[row].className;
if (element.className != className)
element.className = className;
if (foldWidgets) {
var c = foldWidgets[row];
if (c == null)
c = foldWidgets[row] = session.getFoldWidget(row);
}
if (c) {
var className = "ace_fold-widget ace_" + c;
if (c == "start" && row == foldStart && row < fold.end.row)
className += " ace_closed";
else
className += " ace_open";
if (foldWidget.className != className)
foldWidget.className = className;
var foldHeight = config.lineHeight + "px";
dom.setStyle(foldWidget.style, "height", foldHeight);
dom.setStyle(foldWidget.style, "display", "inline-block");
} else {
if (foldWidget) {
dom.setStyle(foldWidget.style, "display", "none");
public/javascripts/ace/ace.js view on Meta::CPAN
lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + "px";
var height = (config.lineHeight * this.session.getRowLength(row)) + "px";
if (lineElement.style.height != height) {
heightChanged = true;
lineElement.style.height = height;
}
}
row++;
}
if (heightChanged) {
while (lineElementsIdx < this.$lines.cells.length) {
var cell = this.$lines.cells[lineElementsIdx++];
cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + "px";
}
}
};
this.scrollLines = function(config) {
var oldConfig = this.config;
this.config = config;
if (this.$lines.pageChanged(oldConfig, config))
return this.update(config);
this.$lines.moveContainer(config);
var lastRow = config.lastRow;
var oldLastRow = oldConfig ? oldConfig.lastRow : -1;
if (!oldConfig || oldLastRow < config.firstRow)
return this.update(config);
if (lastRow < oldConfig.firstRow)
return this.update(config);
if (!oldConfig || oldConfig.lastRow < config.firstRow)
return this.update(config);
if (config.lastRow < oldConfig.firstRow)
return this.update(config);
if (oldConfig.firstRow < config.firstRow)
for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)
this.$lines.shift();
if (oldConfig.lastRow > config.lastRow)
for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)
this.$lines.pop();
if (config.firstRow < oldConfig.firstRow) {
this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));
}
if (config.lastRow > oldConfig.lastRow) {
this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));
}
};
this.$renderLinesFragment = function(config, firstRow, lastRow) {
var fragment = [];
var row = firstRow;
var foldLine = this.session.getNextFoldLine(row);
var foldStart = foldLine ? foldLine.start.row : Infinity;
while (true) {
if (row > foldStart) {
row = foldLine.end.row+1;
foldLine = this.session.getNextFoldLine(row, foldLine);
foldStart = foldLine ? foldLine.start.row : Infinity;
}
if (row > lastRow)
break;
var line = this.$lines.createCell(row, config, this.session);
var lineEl = line.element;
this.dom.removeChildren(lineEl);
dom.setStyle(lineEl.style, "height", this.$lines.computeLineHeight(row, config, this.session) + "px");
dom.setStyle(lineEl.style, "top", this.$lines.computeLineTop(row, config, this.session) + "px");
this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);
if (this.$useLineGroups()) {
lineEl.className = "ace_line_group";
} else {
lineEl.className = "ace_line";
}
fragment.push(line);
row++;
}
return fragment;
};
this.update = function(config) {
this.$lines.moveContainer(config);
this.config = config;
var firstRow = config.firstRow;
var lastRow = config.lastRow;
var lines = this.$lines;
while (lines.getLength())
lines.pop();
lines.push(this.$renderLinesFragment(config, firstRow, lastRow));
};
this.$textToken = {
"text": true,
"rparen": true,
"lparen": true
};
this.$renderToken = function(parent, screenColumn, token, value) {
var self = this;
var re = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u30...
var valueFragment = this.dom.createFragment(this.element);
var m;
var i = 0;
while (m = re.exec(value)) {
var tab = m[1];
var simpleSpace = m[2];
var controlCharacter = m[3];
var cjkSpace = m[4];
var cjk = m[5];
if (!self.showSpaces && simpleSpace)
continue;
var before = i != m.index ? value.slice(i, m.index) : "";
i = m.index + m[0].length;
if (before) {
valueFragment.appendChild(this.dom.createTextNode(before, this.element));
}
if (tab) {
var tabSize = self.session.getScreenTabSize(screenColumn + m.index);
valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));
screenColumn += tabSize - 1;
} else if (simpleSpace) {
if (self.showSpaces) {
var span = this.dom.createElement("span");
span.className = "ace_invisible ace_invisible_space";
span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);
valueFragment.appendChild(span);
} else {
( run in 2.062 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )