mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
147 lines
7.0 KiB
JavaScript
147 lines
7.0 KiB
JavaScript
import { MainRc } from "./Main.js";
|
|
import { ConvertUInt8ArrayToBase64 } from "../Utilities.js";
|
|
import { SessionType } from "./RtcDtos.js";
|
|
export var AudioButton = document.getElementById("audioButton");
|
|
export var MenuButton = document.getElementById("menuButton");
|
|
export var MenuFrame = document.getElementById("menuFrame");
|
|
export var SessionIDInput = document.getElementById("sessionIDInput");
|
|
export var ConnectButton = document.getElementById("connectButton");
|
|
export var RequesterNameInput = document.getElementById("nameInput");
|
|
export var StatusMessage = document.getElementById("statusMessage");
|
|
export var ScreenViewer = document.getElementById("screenViewer");
|
|
export var VideoScreenViewer = document.getElementById("videoScreenViewer");
|
|
export var ScreenViewerWrapper = document.getElementById("screenViewerWrapper");
|
|
export var Screen2DContext = ScreenViewer.getContext("2d");
|
|
export var HorizontalBars = document.querySelectorAll(".horizontal-button-bar");
|
|
export var ConnectBox = document.getElementById("connectBox");
|
|
export var ScreenSelectBar = document.getElementById("screenSelectBar");
|
|
export var QualityBar = document.getElementById("qualityBar");
|
|
export var QualitySlider = document.getElementById("qualityRangeInput");
|
|
export var AutoQualityAdjustCheckBox = document.getElementById("autoAdjustQualityCheckBox");
|
|
export var ActionsBar = document.getElementById("actionsBar");
|
|
export var ViewBar = document.getElementById("viewBar");
|
|
export var ChangeScreenButton = document.getElementById("changeScreenButton");
|
|
export var QualityButton = document.getElementById("qualityButton");
|
|
export var StreamVideoButton = document.getElementById("streamVideoButton");
|
|
export var FitToScreenButton = document.getElementById("fitToScreenButton");
|
|
export var BlockInputButton = document.getElementById("blockInputButton");
|
|
export var DisconnectButton = document.getElementById("disconnectButton");
|
|
export var FileTransferInput = document.getElementById("fileTransferInput");
|
|
export var FileTransferProgress = document.getElementById("fileTransferProgress");
|
|
export var FileTransferNameSpan = document.getElementById("fileTransferNameSpan");
|
|
export var KeyboardButton = document.getElementById("keyboardButton");
|
|
export var InviteButton = document.getElementById("inviteButton");
|
|
export var FileTransferButton = document.getElementById("fileTransferButton");
|
|
export var CtrlAltDelButton = document.getElementById("ctrlAltDelButton");
|
|
export var TouchKeyboardTextArea = document.getElementById("touchKeyboardTextArea");
|
|
export var ClipboardTransferBar = document.getElementById("clipboardTransferBar");
|
|
export var ClipboardTransferButton = document.getElementById("clipboardTransferButton");
|
|
export var TypeClipboardButton = document.getElementById("typeClipboardButton");
|
|
export var ConnectionP2PIcon = document.getElementById("connectionP2PIcon");
|
|
export var ConnectionRelayedIcon = document.getElementById("connectionRelayedIcon");
|
|
export var ToastsWrapper = document.getElementById("toastsWrapper");
|
|
export var WindowsSessionSelect = document.getElementById("windowsSessionSelect");
|
|
export var RecordSessionButton = document.getElementById("recordSessionButton");
|
|
export var DownloadRecordingButton = document.getElementById("downloadRecordingButton");
|
|
export function GetCurrentViewer() {
|
|
if (ScreenViewer.hasAttribute("hidden")) {
|
|
return VideoScreenViewer;
|
|
}
|
|
return ScreenViewer;
|
|
}
|
|
export function Prompt(promptMessage) {
|
|
return new Promise((resolve, reject) => {
|
|
var modalDiv = document.createElement("div");
|
|
modalDiv.classList.add("modal-prompt");
|
|
var messageDiv = document.createElement("div");
|
|
messageDiv.innerHTML = promptMessage;
|
|
var responseInput = document.createElement("input");
|
|
var buttonsDiv = document.createElement("div");
|
|
buttonsDiv.classList.add("buttons-footer");
|
|
var cancelButton = document.createElement("button");
|
|
cancelButton.innerHTML = "Cancel";
|
|
var okButton = document.createElement("button");
|
|
okButton.innerHTML = "OK";
|
|
buttonsDiv.appendChild(okButton);
|
|
buttonsDiv.appendChild(cancelButton);
|
|
modalDiv.appendChild(messageDiv);
|
|
modalDiv.appendChild(responseInput);
|
|
modalDiv.appendChild(buttonsDiv);
|
|
document.body.appendChild(modalDiv);
|
|
okButton.onclick = () => {
|
|
modalDiv.remove();
|
|
resolve(responseInput.value);
|
|
};
|
|
cancelButton.onclick = () => {
|
|
modalDiv.remove();
|
|
resolve(null);
|
|
};
|
|
});
|
|
}
|
|
export function SetScreenSize(width, height) {
|
|
ScreenViewer.width = width;
|
|
ScreenViewer.height = height;
|
|
Screen2DContext.clearRect(0, 0, width, height);
|
|
}
|
|
export function ShowMessage(message) {
|
|
var messageDiv = document.createElement("div");
|
|
messageDiv.classList.add("toast-message");
|
|
messageDiv.innerHTML = message;
|
|
ToastsWrapper.appendChild(messageDiv);
|
|
window.setTimeout(() => {
|
|
messageDiv.remove();
|
|
}, 5000);
|
|
}
|
|
export function UpdateCursor(imageBytes, hotSpotX, hotSpotY, cssOverride) {
|
|
var targetElement = GetCurrentViewer();
|
|
if (cssOverride) {
|
|
targetElement.style.cursor = cssOverride;
|
|
}
|
|
else if (imageBytes.byteLength == 0) {
|
|
targetElement.style.cursor = "default";
|
|
}
|
|
else {
|
|
var base64 = ConvertUInt8ArrayToBase64(imageBytes);
|
|
targetElement.style.cursor = `url('data:image/png;base64,${base64}') ${hotSpotX} ${hotSpotY}, default`;
|
|
}
|
|
}
|
|
export function UpdateDisplays(selectedDisplay, displayNames) {
|
|
ScreenSelectBar.innerHTML = "";
|
|
for (let i = 0; i < displayNames.length; i++) {
|
|
var button = document.createElement("button");
|
|
button.innerHTML = `Monitor ${i}`;
|
|
button.classList.add("horizontal-bar-button");
|
|
if (displayNames[i] == selectedDisplay) {
|
|
button.classList.add("toggled");
|
|
}
|
|
ScreenSelectBar.appendChild(button);
|
|
button.onclick = (ev) => {
|
|
MainRc.MessageSender.SendSelectScreen(displayNames[i]);
|
|
document.querySelectorAll("#screenSelectBar .horizontal-bar-button").forEach(button => {
|
|
button.classList.remove("toggled");
|
|
});
|
|
ev.currentTarget.classList.add("toggled");
|
|
};
|
|
}
|
|
}
|
|
export function UpdateWindowsSessions(windowsSessions) {
|
|
while (WindowsSessionSelect.options.length > 0) {
|
|
WindowsSessionSelect.options.remove(0);
|
|
}
|
|
WindowsSessionSelect.options.add(document.createElement("option"));
|
|
windowsSessions.forEach(x => {
|
|
var sessionType = "";
|
|
if (typeof x.Type == "number") {
|
|
sessionType = x.Type == SessionType.Console ? "Console" : "RDP";
|
|
}
|
|
else {
|
|
sessionType = x.Type;
|
|
}
|
|
var option = document.createElement("option");
|
|
option.value = String(x.ID);
|
|
option.text = `${sessionType} (ID: ${x.ID} | User: ${x.Username})`;
|
|
option.title = `${sessionType} Session (ID: ${x.ID} | User: ${x.Username})`;
|
|
WindowsSessionSelect.options.add(option);
|
|
});
|
|
}
|
|
//# sourceMappingURL=UI.js.map
|