UNPKG

@finos/legend-application

Version:
171 lines 6.81 kB
/** * 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