mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
Sorted command completions. Console tab notifies when new messages have arrived if another tab is selected. Desktop app prepends scheme to URL if missing. Increased upload size limit.
This commit is contained in:
parent
c59a18aff0
commit
2858731cd1
1
.gitignore
vendored
1
.gitignore
vendored
@ -263,5 +263,6 @@ __pycache__/
|
||||
/Remotely_Server/wwwroot/Downloads/*.exe
|
||||
/Remotely_Server/wwwroot/Downloads/*.zip
|
||||
/Remotely_Server/wwwroot/Downloads/*.appimage
|
||||
/Remotely_Server/wwwroot/Downloads/CurrentAgentVersion.txt
|
||||
/Remotely_Server/Server.db
|
||||
/Remotely_Agent/Resources/*
|
||||
@ -54,6 +54,7 @@ namespace Remotely_Desktop.ViewModels
|
||||
Config = Config.GetConfig();
|
||||
while (string.IsNullOrWhiteSpace(Config.Host))
|
||||
{
|
||||
Config.Host = "https://";
|
||||
PromptForHostName();
|
||||
}
|
||||
|
||||
@ -135,6 +136,10 @@ namespace Remotely_Desktop.ViewModels
|
||||
prompt.Owner = App.Current?.MainWindow;
|
||||
prompt.ShowDialog();
|
||||
var result = HostNamePromptViewModel.Current.Host.TrimEnd("/".ToCharArray());
|
||||
if (!result.StartsWith("https://") && !result.StartsWith("http://"))
|
||||
{
|
||||
result = $"https://{result}";
|
||||
}
|
||||
if (result != Config.Host)
|
||||
{
|
||||
Config.Host = result;
|
||||
|
||||
@ -2,8 +2,19 @@
|
||||
|
||||
<div class="work-area hidden">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item"><a class="nav-link active show" href="#consoleFrame" data-toggle="tab">Console</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#dataGridFrame" data-toggle="tab">Grid</a></li>
|
||||
<li class="nav-item">
|
||||
<a id="consoleTab" class="nav-link active show" href="#consoleFrame" data-toggle="tab">
|
||||
Console
|
||||
<span id="consoleAlert" class="badge badge-info badge-pill align-top" hidden>
|
||||
<i class="fa fa-exclamation" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#dataGridFrame" data-toggle="tab">
|
||||
Grid
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="tabContentWrapper">
|
||||
<div class="tab-content">
|
||||
|
||||
@ -4,6 +4,11 @@
|
||||
<modules runAllManagedModulesForAllRequests="false">
|
||||
<remove name="WebDAVModule" />
|
||||
</modules>
|
||||
<security>
|
||||
<requestFiltering>
|
||||
<requestLimits maxAllowedContentLength="100000000" />
|
||||
</requestFiltering>
|
||||
</security>
|
||||
</system.webServer>
|
||||
<!-- To customize the asp.net core module uncomment and edit the following section.
|
||||
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
|
||||
|
||||
@ -37,6 +37,23 @@ a.navbar-brand {
|
||||
overflow-y: hidden;
|
||||
margin-top: 10px
|
||||
}
|
||||
#consoleAlert {
|
||||
animation-name: blink;
|
||||
animation-direction: alternate-reverse;
|
||||
animation-duration: 1s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: ease;
|
||||
}
|
||||
@keyframes blink {
|
||||
from {
|
||||
opacity: .25;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#dataGridFrame {
|
||||
max-height: calc(100vh - 250px);
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
import { UserSettings } from "./UserSettings.js";
|
||||
import { Store } from "./Store.js";
|
||||
import { WebCommands } from "./Commands/WebCommands.js";
|
||||
import * as UI from "./UI.js";
|
||||
import { CMDCommands } from "./Commands/CMDCommands.js";
|
||||
import { PSCoreCommands } from "./Commands/PSCoreCommands.js";
|
||||
import { WinPSCommands } from "./Commands/WinPSCommands.js";
|
||||
import { BashCommands } from "./Commands/BashCommands.js";
|
||||
var commandCompletionDisplayTimeout;
|
||||
export function DisplayCommandCompletions(commands, relevantText) {
|
||||
window.clearTimeout(commandCompletionDisplayTimeout);
|
||||
@ -9,14 +14,14 @@ export function DisplayCommandCompletions(commands, relevantText) {
|
||||
var commandCompletionItem = document.createElement("div");
|
||||
commandCompletionItem.classList.add("command-completion-item");
|
||||
commandCompletionItem.innerHTML = x.Name;
|
||||
commandCompletionItem.onclick = function (e) {
|
||||
commandCompletionItem.onclick = function () {
|
||||
var commandText = UI.ConsoleTextArea.value;
|
||||
var insertCommandStart = commandText.lastIndexOf(relevantText);
|
||||
UI.ConsoleTextArea.value = commandText.substring(0, insertCommandStart) + commandCompletionItem.innerHTML;
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
UI.CommandInfoDiv.classList.add("hidden");
|
||||
};
|
||||
commandCompletionItem.onfocus = function (e) {
|
||||
commandCompletionItem.onfocus = function () {
|
||||
ShowCommandInfo(x);
|
||||
};
|
||||
UI.CommandCompletionDiv.appendChild(commandCompletionItem);
|
||||
@ -46,13 +51,13 @@ export function DisplayParameterCompletions(command, parameters, commandText) {
|
||||
var commandCompletionItem = document.createElement("div");
|
||||
commandCompletionItem.classList.add("command-completion-item");
|
||||
commandCompletionItem.innerHTML = param.Name;
|
||||
commandCompletionItem.onclick = function (e) {
|
||||
commandCompletionItem.onclick = function () {
|
||||
var preParam = UI.ConsoleTextArea.value.substring(0, UI.ConsoleTextArea.value.lastIndexOf(" "));
|
||||
UI.ConsoleTextArea.value = preParam.trim() + ` -${commandCompletionItem.innerText}`;
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
UI.CommandInfoDiv.classList.add("hidden");
|
||||
};
|
||||
commandCompletionItem.onfocus = function (e) {
|
||||
commandCompletionItem.onfocus = function () {
|
||||
ShowParameterInfo(param);
|
||||
};
|
||||
UI.CommandCompletionDiv.appendChild(commandCompletionItem);
|
||||
@ -71,13 +76,13 @@ export function DisplayCommandShortcuts(shortcutText) {
|
||||
var commandCompletionItem = document.createElement("div");
|
||||
commandCompletionItem.classList.add("command-completion-item");
|
||||
commandCompletionItem.innerHTML = x;
|
||||
commandCompletionItem.onclick = function (e) {
|
||||
commandCompletionItem.onclick = function () {
|
||||
UI.CommandModeSelect.value = x;
|
||||
UI.ConsoleTextArea.value = "";
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
UI.CommandInfoDiv.classList.add("hidden");
|
||||
};
|
||||
commandCompletionItem.onfocus = function (e) { };
|
||||
commandCompletionItem.onfocus = function () { };
|
||||
UI.CommandCompletionDiv.appendChild(commandCompletionItem);
|
||||
});
|
||||
if (!UI.CommandCompletionDiv.classList.contains("hidden") && matchingShortcuts.length > 0) {
|
||||
@ -85,6 +90,32 @@ export function DisplayCommandShortcuts(shortcutText) {
|
||||
PositionCommandCompletionWindow();
|
||||
}
|
||||
}
|
||||
export function GetCommandCompletions(commandText) {
|
||||
var commandList;
|
||||
switch (UI.CommandModeSelect.value) {
|
||||
case "Web":
|
||||
commandList = WebCommands;
|
||||
break;
|
||||
case "CMD":
|
||||
commandList = CMDCommands;
|
||||
break;
|
||||
case "PSCore":
|
||||
commandList = PSCoreCommands;
|
||||
break;
|
||||
case "WinPS":
|
||||
commandList = WinPSCommands;
|
||||
break;
|
||||
case "Bash":
|
||||
commandList = BashCommands;
|
||||
break;
|
||||
default:
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
return;
|
||||
}
|
||||
var filteredList = commandList.filter(x => x.Name.toLowerCase().indexOf(commandText.toLowerCase()) > -1);
|
||||
filteredList.sort((a, b) => a.Name.localeCompare(b.Name));
|
||||
return filteredList;
|
||||
}
|
||||
export function SetCommandCompletionPositionToIncompleteParam(parameters) {
|
||||
var lastParam = parameters[parameters.length - 1];
|
||||
if (typeof lastParam != 'undefined' && lastParam.Value.length == 0) {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,13 +1,14 @@
|
||||
import * as CommandProcessor from "./CommandProcessor.js";
|
||||
import { UserSettings } from "./UserSettings.js";
|
||||
import * as Utilities from "./Utilities.js";
|
||||
import { UserSettings } from "./UserSettings.js";
|
||||
import { Store } from "./Store.js";
|
||||
import { ConsoleCommand } from "./Models/ConsoleCommand.js";
|
||||
import { CommandLineParameter } from "./Models/CommandLineParameter.js";
|
||||
import { WebCommands } from "./Commands/WebCommands.js";
|
||||
import { Parameter } from "./Models/Parameter.js";
|
||||
import { Main } from "./Main.js";
|
||||
import * as UI from "./UI.js"
|
||||
import { CMDCommands } from "./Commands/CMDCommands.js";
|
||||
import { PSCoreCommands } from "./Commands/PSCoreCommands.js";
|
||||
import { WinPSCommands } from "./Commands/WinPSCommands.js";
|
||||
import { BashCommands } from "./Commands/BashCommands.js";
|
||||
|
||||
var commandCompletionDisplayTimeout;
|
||||
|
||||
@ -18,14 +19,14 @@ export function DisplayCommandCompletions(commands: Array<ConsoleCommand>, relev
|
||||
var commandCompletionItem = document.createElement("div");
|
||||
commandCompletionItem.classList.add("command-completion-item");
|
||||
commandCompletionItem.innerHTML = x.Name;
|
||||
commandCompletionItem.onclick = function (e) {
|
||||
commandCompletionItem.onclick = function () {
|
||||
var commandText = UI.ConsoleTextArea.value;
|
||||
var insertCommandStart = commandText.lastIndexOf(relevantText);
|
||||
UI.ConsoleTextArea.value = commandText.substring(0, insertCommandStart) + commandCompletionItem.innerHTML;
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
UI.CommandInfoDiv.classList.add("hidden");
|
||||
};
|
||||
commandCompletionItem.onfocus = function (e) {
|
||||
commandCompletionItem.onfocus = function () {
|
||||
ShowCommandInfo(x);
|
||||
}
|
||||
UI.CommandCompletionDiv.appendChild(commandCompletionItem);
|
||||
@ -60,13 +61,13 @@ export function DisplayParameterCompletions(command: ConsoleCommand, parameters:
|
||||
var commandCompletionItem = document.createElement("div");
|
||||
commandCompletionItem.classList.add("command-completion-item");
|
||||
commandCompletionItem.innerHTML = param.Name;
|
||||
commandCompletionItem.onclick = function (e: MouseEvent) {
|
||||
commandCompletionItem.onclick = function () {
|
||||
var preParam = UI.ConsoleTextArea.value.substring(0, UI.ConsoleTextArea.value.lastIndexOf(" "));
|
||||
UI.ConsoleTextArea.value = preParam.trim() + ` -${commandCompletionItem.innerText}`;
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
UI.CommandInfoDiv.classList.add("hidden");
|
||||
};
|
||||
commandCompletionItem.onfocus = function (e) {
|
||||
commandCompletionItem.onfocus = function () {
|
||||
ShowParameterInfo(param);
|
||||
}
|
||||
UI.CommandCompletionDiv.appendChild(commandCompletionItem);
|
||||
@ -86,13 +87,13 @@ export function DisplayCommandShortcuts(shortcutText: string) {
|
||||
var commandCompletionItem = document.createElement("div");
|
||||
commandCompletionItem.classList.add("command-completion-item");
|
||||
commandCompletionItem.innerHTML = x;
|
||||
commandCompletionItem.onclick = function (e: MouseEvent) {
|
||||
commandCompletionItem.onclick = function () {
|
||||
UI.CommandModeSelect.value = x;
|
||||
UI.ConsoleTextArea.value = "";
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
UI.CommandInfoDiv.classList.add("hidden");
|
||||
};
|
||||
commandCompletionItem.onfocus = function (e) {}
|
||||
commandCompletionItem.onfocus = function () {}
|
||||
UI.CommandCompletionDiv.appendChild(commandCompletionItem);
|
||||
})
|
||||
if (!UI.CommandCompletionDiv.classList.contains("hidden") && matchingShortcuts.length > 0) {
|
||||
@ -101,6 +102,34 @@ export function DisplayCommandShortcuts(shortcutText: string) {
|
||||
}
|
||||
}
|
||||
|
||||
export function GetCommandCompletions(commandText: string): ConsoleCommand[] {
|
||||
var commandList:ConsoleCommand[];
|
||||
switch (UI.CommandModeSelect.value) {
|
||||
case "Web":
|
||||
commandList = WebCommands;
|
||||
break;
|
||||
case "CMD":
|
||||
commandList = CMDCommands;
|
||||
break;
|
||||
case "PSCore":
|
||||
commandList = PSCoreCommands;
|
||||
break;
|
||||
case "WinPS":
|
||||
commandList = WinPSCommands;
|
||||
break;
|
||||
case "Bash":
|
||||
commandList = BashCommands;
|
||||
break;
|
||||
default:
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
return;
|
||||
}
|
||||
|
||||
var filteredList = commandList.filter(x => x.Name.toLowerCase().indexOf(commandText.toLowerCase()) > -1);
|
||||
filteredList.sort((a, b) => a.Name.localeCompare(b.Name));
|
||||
return filteredList;
|
||||
}
|
||||
|
||||
export function SetCommandCompletionPositionToIncompleteParam(parameters: CommandLineParameter[]) {
|
||||
var lastParam = parameters[parameters.length - 1];
|
||||
if (typeof lastParam != 'undefined' && lastParam.Value.length == 0) {
|
||||
|
||||
@ -1,14 +1,10 @@
|
||||
import { WebCommands } from "./Commands/WebCommands.js";
|
||||
import { UserSettings } from "./UserSettings.js";
|
||||
import { CMDCommands } from "./Commands/CMDCommands.js";
|
||||
import { PSCoreCommands } from "./Commands/PSCoreCommands.js";
|
||||
import { BashCommands } from "./Commands/BashCommands.js";
|
||||
import { Main } from "./Main.js";
|
||||
import { CommandLineParameter } from "./Models/CommandLineParameter.js";
|
||||
import * as UI from "./UI.js";
|
||||
import { Store } from "./Store.js";
|
||||
import { DisplayCommandShortcuts, DisplayCommandCompletions, DisplayParameterCompletions } from "./CommandCompletion.js";
|
||||
import { WinPSCommands } from "./Commands/WinPSCommands.js";
|
||||
import { DisplayCommandShortcuts, DisplayCommandCompletions, DisplayParameterCompletions, GetCommandCompletions } from "./CommandCompletion.js";
|
||||
import { Connection } from "./BrowserSockets.js";
|
||||
export function EvaluateCurrentCommandText() {
|
||||
UI.AutoSizeTextArea();
|
||||
@ -60,30 +56,6 @@ export function GetRelevantCommandText(commandText) {
|
||||
}
|
||||
return commandText;
|
||||
}
|
||||
export function GetCommandCompletions(commandText) {
|
||||
var commandList;
|
||||
switch (UI.CommandModeSelect.value) {
|
||||
case "Web":
|
||||
commandList = WebCommands;
|
||||
break;
|
||||
case "CMD":
|
||||
commandList = CMDCommands;
|
||||
break;
|
||||
case "PSCore":
|
||||
commandList = PSCoreCommands;
|
||||
break;
|
||||
case "WinPS":
|
||||
commandList = WinPSCommands;
|
||||
break;
|
||||
case "Bash":
|
||||
commandList = BashCommands;
|
||||
break;
|
||||
default:
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
return;
|
||||
}
|
||||
return commandList.filter(x => x.Name.toLowerCase().indexOf(commandText.toLowerCase()) > -1);
|
||||
}
|
||||
/** Checks the given string for a matching shortcut. */
|
||||
export function GetCommandModeShortcut() {
|
||||
switch (UI.ConsoleTextArea.value.toLowerCase()) {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,15 +1,10 @@
|
||||
import { WebCommands } from "./Commands/WebCommands.js";
|
||||
import { UserSettings } from "./UserSettings.js";
|
||||
import { CMDCommands } from "./Commands/CMDCommands.js";
|
||||
import { PSCoreCommands } from "./Commands/PSCoreCommands.js";
|
||||
import { BashCommands } from "./Commands/BashCommands.js";
|
||||
import { Main } from "./Main.js";
|
||||
import { CommandLineParameter } from "./Models/CommandLineParameter.js";
|
||||
import * as UI from "./UI.js";
|
||||
import { Store } from "./Store.js";
|
||||
import { ConsoleCommand } from "./Models/ConsoleCommand.js";
|
||||
import { DisplayCommandShortcuts, DisplayCommandCompletions, DisplayParameterCompletions } from "./CommandCompletion.js";
|
||||
import { WinPSCommands } from "./Commands/WinPSCommands.js";
|
||||
import { DisplayCommandShortcuts, DisplayCommandCompletions, DisplayParameterCompletions, GetCommandCompletions } from "./CommandCompletion.js";
|
||||
import { Connection } from "./BrowserSockets.js";
|
||||
|
||||
export function EvaluateCurrentCommandText() {
|
||||
@ -63,31 +58,7 @@ export function GetRelevantCommandText(commandText:string) {
|
||||
}
|
||||
return commandText;
|
||||
}
|
||||
export function GetCommandCompletions(commandText:string): ConsoleCommand[] {
|
||||
var commandList;
|
||||
switch (UI.CommandModeSelect.value) {
|
||||
case "Web":
|
||||
commandList = WebCommands;
|
||||
break;
|
||||
case "CMD":
|
||||
commandList = CMDCommands;
|
||||
break;
|
||||
case "PSCore":
|
||||
commandList = PSCoreCommands;
|
||||
break;
|
||||
case "WinPS":
|
||||
commandList = WinPSCommands;
|
||||
break;
|
||||
case "Bash":
|
||||
commandList = BashCommands;
|
||||
break;
|
||||
default:
|
||||
UI.CommandCompletionDiv.classList.add("hidden");
|
||||
return;
|
||||
}
|
||||
|
||||
return commandList.filter(x => x.Name.toLowerCase().indexOf(commandText.toLowerCase()) > -1);
|
||||
}
|
||||
|
||||
/** Checks the given string for a matching shortcut. */
|
||||
export function GetCommandModeShortcut() {
|
||||
|
||||
@ -12,6 +12,7 @@ export function ApplyInputEventHandlers() {
|
||||
inputOnFilterTextBox();
|
||||
clickToggleAllDevices();
|
||||
clickStartRemoteControlButton();
|
||||
consoleTabSelected();
|
||||
window.addEventListener("resize", ev => {
|
||||
PositionCommandCompletionWindow();
|
||||
});
|
||||
@ -149,6 +150,11 @@ function inputOnFilterTextBox() {
|
||||
});
|
||||
});
|
||||
}
|
||||
function consoleTabSelected() {
|
||||
$(UI.ConsoleTab).on("shown.bs.tab", () => {
|
||||
UI.ConsoleAlert.hidden = true;
|
||||
});
|
||||
}
|
||||
function clickToggleAllDevices() {
|
||||
document.getElementById("toggleAllDevices").addEventListener("click", function (e) {
|
||||
DataGrid.ToggleSelectAll();
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -14,6 +14,7 @@ export function ApplyInputEventHandlers() {
|
||||
inputOnFilterTextBox();
|
||||
clickToggleAllDevices();
|
||||
clickStartRemoteControlButton();
|
||||
consoleTabSelected();
|
||||
|
||||
window.addEventListener("resize", ev => {
|
||||
PositionCommandCompletionWindow();
|
||||
@ -156,6 +157,11 @@ function inputOnFilterTextBox() {
|
||||
})
|
||||
})
|
||||
}
|
||||
function consoleTabSelected() {
|
||||
$(UI.ConsoleTab).on("shown.bs.tab", () => {
|
||||
UI.ConsoleAlert.hidden = true;
|
||||
});
|
||||
}
|
||||
function clickToggleAllDevices() {
|
||||
document.getElementById("toggleAllDevices").addEventListener("click", function (e) {
|
||||
DataGrid.ToggleSelectAll();
|
||||
|
||||
@ -13,6 +13,8 @@ export var TotalDevicesCount = document.querySelector("#totalDevicesSpan");
|
||||
export var MeasurementCanvas = document.createElement("canvas");
|
||||
export var MeasurementContext = MeasurementCanvas.getContext("2d");
|
||||
export var TabContentWrapper = document.getElementById("tabContentWrapper");
|
||||
export var ConsoleTab = document.getElementById("consoleTab");
|
||||
export var ConsoleAlert = document.getElementById("consoleAlert");
|
||||
export function AddConsoleOutput(strOutputMessage) {
|
||||
var outputBlock = document.createElement("div");
|
||||
outputBlock.classList.add("console-block");
|
||||
@ -26,6 +28,9 @@ export function AddConsoleOutput(strOutputMessage) {
|
||||
outputBlock.appendChild(output);
|
||||
ConsoleOutputDiv.appendChild(outputBlock);
|
||||
TabContentWrapper.scrollTop = TabContentWrapper.scrollHeight;
|
||||
if (!ConsoleTab.classList.contains("active")) {
|
||||
ConsoleAlert.hidden = false;
|
||||
}
|
||||
}
|
||||
export function AddConsoleHTML(html) {
|
||||
var contentWrapper = document.createElement("div");
|
||||
|
||||
@ -1 +1 @@
|
||||
{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"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"}
|
||||
@ -27,6 +27,8 @@ export var TotalDevicesCount = document.querySelector("#totalDevicesSpan") as HT
|
||||
export var MeasurementCanvas = document.createElement("canvas");
|
||||
export var MeasurementContext = MeasurementCanvas.getContext("2d");
|
||||
export var TabContentWrapper = document.getElementById("tabContentWrapper") as HTMLDivElement;
|
||||
export var ConsoleTab = document.getElementById("consoleTab") as HTMLAnchorElement;
|
||||
export var ConsoleAlert = document.getElementById("consoleAlert") as HTMLAnchorElement;
|
||||
|
||||
|
||||
export function AddConsoleOutput(strOutputMessage:string) {
|
||||
@ -47,6 +49,10 @@ export function AddConsoleOutput(strOutputMessage:string) {
|
||||
ConsoleOutputDiv.appendChild(outputBlock);
|
||||
|
||||
TabContentWrapper.scrollTop = TabContentWrapper.scrollHeight;
|
||||
|
||||
if (!ConsoleTab.classList.contains("active")) {
|
||||
ConsoleAlert.hidden = false;
|
||||
}
|
||||
}
|
||||
export function AddConsoleHTML(html: string) {
|
||||
var contentWrapper = document.createElement("div");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user