mirror of
https://github.com/redphx/better-xcloud.git
synced 2025-06-11 01:57:18 +02:00
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
export class MouseCursorHider {
|
|
static #timeout: number | null;
|
|
static #cursorVisible = true;
|
|
|
|
static show() {
|
|
document.body && (document.body.style.cursor = 'unset');
|
|
MouseCursorHider.#cursorVisible = true;
|
|
}
|
|
|
|
static hide() {
|
|
document.body && (document.body.style.cursor = 'none');
|
|
MouseCursorHider.#timeout = null;
|
|
MouseCursorHider.#cursorVisible = false;
|
|
}
|
|
|
|
static onMouseMove(e: MouseEvent) {
|
|
// Toggle cursor
|
|
!MouseCursorHider.#cursorVisible && MouseCursorHider.show();
|
|
// Setup timeout
|
|
MouseCursorHider.#timeout && clearTimeout(MouseCursorHider.#timeout);
|
|
MouseCursorHider.#timeout = window.setTimeout(MouseCursorHider.hide, 3000);
|
|
}
|
|
|
|
static start() {
|
|
MouseCursorHider.show();
|
|
document.addEventListener('mousemove', MouseCursorHider.onMouseMove);
|
|
}
|
|
|
|
static stop() {
|
|
MouseCursorHider.#timeout && clearTimeout(MouseCursorHider.#timeout);
|
|
document.removeEventListener('mousemove', MouseCursorHider.onMouseMove);
|
|
MouseCursorHider.show();
|
|
}
|
|
}
|