@finos/legend-application
Version:
Legend application core
171 lines • 6.81 kB
JavaScript
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* 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.
*/
import { action, makeObservable, observable } from 'mobx';
// NOTE: using Unicode for ANSI escape
// See https://stackoverflow.com/questions/26153308/best-ansi-escape-beginning
// See https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
export var DISPLAY_ANSI_ESCAPE;
(function (DISPLAY_ANSI_ESCAPE) {
DISPLAY_ANSI_ESCAPE["RESET"] = "\u001B[0m";
// text decoration
DISPLAY_ANSI_ESCAPE["BOLD"] = "\u001B[1m";
DISPLAY_ANSI_ESCAPE["DIM"] = "\u001B[2m";
DISPLAY_ANSI_ESCAPE["ITALIC"] = "\u001B[3m";
DISPLAY_ANSI_ESCAPE["UNDERLINE"] = "\u001B[4m";
DISPLAY_ANSI_ESCAPE["BLINKING"] = "\u001B[5m";
DISPLAY_ANSI_ESCAPE["STRIKETHROUGH"] = "\u001B[9m";
// foreground
DISPLAY_ANSI_ESCAPE["BLACK"] = "\u001B[30m";
DISPLAY_ANSI_ESCAPE["RED"] = "\u001B[31m";
DISPLAY_ANSI_ESCAPE["GREEN"] = "\u001B[32m";
DISPLAY_ANSI_ESCAPE["YELLOW"] = "\u001B[33m";
DISPLAY_ANSI_ESCAPE["BLUE"] = "\u001B[34m";
DISPLAY_ANSI_ESCAPE["MAGENTA"] = "\u001B[35m";
DISPLAY_ANSI_ESCAPE["CYAN"] = "\u001B[36m";
DISPLAY_ANSI_ESCAPE["WHITE"] = "\u001B[37m";
DISPLAY_ANSI_ESCAPE["BRIGHT_BLACK"] = "\u001B[1;30m";
DISPLAY_ANSI_ESCAPE["BRIGHT_RED"] = "\u001B[1;31m";
DISPLAY_ANSI_ESCAPE["BRIGHT_GREEN"] = "\u001B[1;32m";
DISPLAY_ANSI_ESCAPE["BRIGHT_YELLOW"] = "\u001B[1;33m";
DISPLAY_ANSI_ESCAPE["BRIGHT_BLUE"] = "\u001B[1;34m";
DISPLAY_ANSI_ESCAPE["BRIGHT_MAGENTA"] = "\u001B[1;35m";
DISPLAY_ANSI_ESCAPE["BRIGHT_CYAN"] = "\u001B[1;36m";
DISPLAY_ANSI_ESCAPE["BRIGHT_WHITE"] = "\u001B[1;37m";
DISPLAY_ANSI_ESCAPE["DIMMED_BLACK"] = "\u001B[2;30m";
DISPLAY_ANSI_ESCAPE["DIMMED_RED"] = "\u001B[2;31m";
DISPLAY_ANSI_ESCAPE["DIMMED_GREEN"] = "\u001B[2;32m";
DISPLAY_ANSI_ESCAPE["DIMMED_YELLOW"] = "\u001B[2;33m";
DISPLAY_ANSI_ESCAPE["DIMMED_BLUE"] = "\u001B[2;34m";
DISPLAY_ANSI_ESCAPE["DIMMED_MAGENTA"] = "\u001B[2;35m";
DISPLAY_ANSI_ESCAPE["DIMMED_CYAN"] = "\u001B[2;36m";
DISPLAY_ANSI_ESCAPE["DIMMED_WHITE"] = "\u001B[2;37m";
// background
DISPLAY_ANSI_ESCAPE["BLACK_BG"] = "\u001B[40m";
DISPLAY_ANSI_ESCAPE["RED_BG"] = "\u001B[41m";
DISPLAY_ANSI_ESCAPE["GREEN_BG"] = "\u001B[42m";
DISPLAY_ANSI_ESCAPE["YELLOW_BG"] = "\u001B[43m";
DISPLAY_ANSI_ESCAPE["BLUE_BG"] = "\u001B[44m";
DISPLAY_ANSI_ESCAPE["MAGENTA_BG"] = "\u001B[45m";
DISPLAY_ANSI_ESCAPE["CYAN_BG"] = "\u001B[46m";
DISPLAY_ANSI_ESCAPE["WHITE_BG"] = "\u001B[47m";
DISPLAY_ANSI_ESCAPE["BRIGHT_BLACK_BG"] = "\u001B[1;40m";
DISPLAY_ANSI_ESCAPE["BRIGHT_RED_BG"] = "\u001B[1;41m";
DISPLAY_ANSI_ESCAPE["BRIGHT_GREEN_BG"] = "\u001B[1;42m";
DISPLAY_ANSI_ESCAPE["BRIGHT_YELLOW_BG"] = "\u001B[1;43m";
DISPLAY_ANSI_ESCAPE["BRIGHT_BLUE_BG"] = "\u001B[1;44m";
DISPLAY_ANSI_ESCAPE["BRIGHT_MAGENTA_BG"] = "\u001B[1;45m";
DISPLAY_ANSI_ESCAPE["BRIGHT_CYAN_BG"] = "\u001B[1;46m";
DISPLAY_ANSI_ESCAPE["BRIGHT_WHITE_BG"] = "\u001B[1;47m";
DISPLAY_ANSI_ESCAPE["DIMMED_BLACK_BG"] = "\u001B[2;40m";
DISPLAY_ANSI_ESCAPE["DIMMED_RED_BG"] = "\u001B[2;41m";
DISPLAY_ANSI_ESCAPE["DIMMED_GREEN_BG"] = "\u001B[2;42m";
DISPLAY_ANSI_ESCAPE["DIMMED_YELLOW_BG"] = "\u001B[2;43m";
DISPLAY_ANSI_ESCAPE["DIMMED_BLUE_BG"] = "\u001B[2;44m";
DISPLAY_ANSI_ESCAPE["DIMMED_MAGENTA_BG"] = "\u001B[2;45m";
DISPLAY_ANSI_ESCAPE["DIMMED_CYAN_BG"] = "\u001B[2;46m";
DISPLAY_ANSI_ESCAPE["DIMMED_WHITE_BG"] = "\u001B[2;47m";
})(DISPLAY_ANSI_ESCAPE || (DISPLAY_ANSI_ESCAPE = {}));
/**
* NOTE: this is the line and the column of the viewport of the terminal;
* Also, line and column start from 1
*/
export const ANSI_moveCursor = (line, column) => `\x1b[${line};${column}H`;
export const ANSI_moveCursorUp = (val, start) => start ? `\x1b[${val}F` : `\x1b[${val}A`;
export const ANSI_moveCursorDown = (val, start) => start ? `\x1b[${val}E` : `\x1b[${val}B`;
export const ANSI_moveCursorRight = (val) => `\x1b[${val}C`;
export const ANSI_moveCursorLeft = (val) => `\x1b[${val}D`;
export const ANSI_moveCursorToColumn = (val) => `\x1b[${val}G`;
class ConsoleSearchConfiguration {
searchInput;
searchText = '';
useRegex = false;
matchWholeWord = false;
matchCaseSensitive = false;
resultCount;
currentResultIndex;
constructor() {
makeObservable(this, {
searchText: observable,
useRegex: observable,
matchWholeWord: observable,
matchCaseSensitive: observable,
resultCount: observable,
currentResultIndex: observable,
});
}
setSearchInput(el) {
this.searchInput = el;
}
focus() {
this.searchInput?.focus();
}
}
export class Console {
applicationStore;
searchConfig = new ConsoleSearchConfiguration();
constructor(applicationStore) {
makeObservable(this, {
setSearchText: action,
setSearchRegex: action,
setSearchWholeWord: action,
setSearchCaseSensitive: action,
setSearchResultCount: action,
setSearchCurrentResultIndex: action,
});
this.applicationStore = applicationStore;
}
setSearchText(val) {
this.searchConfig.searchText = val;
}
setSearchRegex(val) {
this.searchConfig.useRegex = val;
}
setSearchWholeWord(val) {
this.searchConfig.matchWholeWord = val;
}
setSearchCaseSensitive(val) {
this.searchConfig.matchCaseSensitive = val;
}
setSearchResultCount(val) {
this.searchConfig.resultCount = val;
}
setSearchCurrentResultIndex(val) {
this.searchConfig.currentResultIndex = val;
}
}
export class OutputConsole extends Console {
}
export class Terminal extends Console {
preserveLog = false;
commandRegistry = new Map();
constructor(applicationStore) {
super(applicationStore);
makeObservable(this, {
preserveLog: observable,
setPreserveLog: action,
});
}
setPreserveLog(val) {
this.preserveLog = val;
}
showHelp() {
// do nothing
}
showCommonANSIEscapeSequences() {
// do nothing
}
}
//# sourceMappingURL=Terminal.js.map