mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
109 lines
2.8 KiB
JavaScript
109 lines
2.8 KiB
JavaScript
window.addClassName = (element, className) => {
|
|
element.classList.add(className);
|
|
}
|
|
|
|
window.getSelectionStart = (element) => {
|
|
return element.selectionStart;
|
|
}
|
|
|
|
window.invokeClick = elementId => {
|
|
document.getElementById(elementId).click();
|
|
}
|
|
|
|
window.invokeConfirm = async (message) => {
|
|
return confirm(message);
|
|
}
|
|
|
|
window.invokeAlert = async (message) => {
|
|
alert(message);
|
|
}
|
|
|
|
window.invokePrompt = async (message) => {
|
|
return prompt(message);
|
|
}
|
|
|
|
window.preventTabOut = (element) => {
|
|
element.addEventListener("keydown", ev => {
|
|
if (ev.key.toLowerCase() == "tab") {
|
|
ev.preventDefault();
|
|
}
|
|
})
|
|
}
|
|
window.scrollToEnd = (element) => {
|
|
if (!element) {
|
|
return;
|
|
}
|
|
|
|
element.scrollTop = element.scrollHeight;
|
|
}
|
|
window.scrollToElement = (element) => {
|
|
window.setTimeout(() => {
|
|
window.scrollTo({ top: element.offsetTop, behavior: "smooth"});
|
|
}, 200);
|
|
|
|
}
|
|
window.setStyleProperty = (element, propertyName, value) => {
|
|
element.style[propertyName] = value;
|
|
}
|
|
|
|
window.startDraggingY = (element, clientY) => {
|
|
if (!element) {
|
|
return;
|
|
}
|
|
|
|
var startTop = Number(clientY);
|
|
|
|
function pointerMove(ev) {
|
|
if (Math.abs(ev.clientY - startTop) > 10) {
|
|
if (ev.clientY < 0 || ev.clientY > window.innerHeight - element.clientHeight) {
|
|
return;
|
|
}
|
|
|
|
element.style.top = `${ev.clientY}px`;
|
|
}
|
|
}
|
|
|
|
function pointerUpOrLeave(ev) {
|
|
window.removeEventListener("pointermove", pointerMove);
|
|
window.removeEventListener("pointerup", pointerUpOrLeave);
|
|
window.removeEventListener("pointerleave", pointerUpOrLeave);
|
|
}
|
|
|
|
pointerUpOrLeave();
|
|
|
|
window.addEventListener("pointermove", pointerMove);
|
|
window.addEventListener("pointerup", pointerUpOrLeave);
|
|
window.addEventListener("pointerleave", pointerUpOrLeave);
|
|
}
|
|
|
|
window.autoHeight = () => {
|
|
document.querySelectorAll(".auto-height").forEach(x => {
|
|
var desiredHeight = window.innerHeight - x.getBoundingClientRect().top;
|
|
x.style.height = `${desiredHeight}px`;
|
|
x.style.opacity = 1;
|
|
})
|
|
}
|
|
|
|
window.openWindow = (url, target) => {
|
|
window.open(url, target);
|
|
}
|
|
|
|
window.addEventListener("load", () => {
|
|
window.addEventListener("resize", () => {
|
|
autoHeight();
|
|
});
|
|
autoHeight();
|
|
})
|
|
|
|
window.addBeforeUnloadHandler = () => {
|
|
window.addEventListener("beforeunload", (ev) => {
|
|
if (location.href.indexOf("localhost") == -1) {
|
|
// All three methods have been implemented in different browsers at some point.
|
|
// Might as well cover all bases.
|
|
ev.preventDefault();
|
|
var msg = "This will disconnect your session. Are you sure you want to exit?";
|
|
ev.returnValue = msg;
|
|
return msg;
|
|
}
|
|
})
|
|
} |