-
Notifications
You must be signed in to change notification settings - Fork 5.3k
/
Copy pathstatusbar.js
58 lines (51 loc) · 1.68 KB
/
statusbar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
"use strict";
/**
*
* @typedef {import("../editor").Editor} Editor
*/
var dom = require("../lib/dom");
var lang = require("../lib/lang");
/** simple statusbar **/
class StatusBar{
/**
* @param {Editor} editor
* @param {HTMLElement} parentNode
*/
constructor(editor, parentNode) {
this.element = dom.createElement("div");
this.element.className = "ace_status-indicator";
this.element.style.cssText = "display: inline-block;";
parentNode.appendChild(this.element);
var statusUpdate = lang.delayedCall(function(){
this.updateStatus(editor);
}.bind(this)).schedule.bind(null, 100);
editor.on("changeStatus", statusUpdate);
editor.on("changeSelection", statusUpdate);
editor.on("keyboardActivity", statusUpdate);
}
/**
* @param {Editor} editor
*/
updateStatus(editor) {
var status = [];
function add(str, separator) {
str && status.push(str, separator || "|");
}
// @ts-expect-error TODO: potential wrong argument
add(editor.keyBinding.getStatusText(editor));
if (editor.commands.recording)
add("REC");
var sel = editor.selection;
var c = sel.lead;
if (!sel.isEmpty()) {
var r = editor.getSelectionRange();
add("(" + (r.end.row - r.start.row) + ":" +(r.end.column - r.start.column) + ")", " ");
}
add(c.row + ":" + c.column, " ");
if (sel.rangeCount)
add("[" + sel.rangeCount + "]", " ");
status.pop();
this.element.textContent = status.join("");
}
}
exports.StatusBar = StatusBar;