This commit is contained in:
eewing
2026-02-17 14:10:16 -06:00
parent 2bca5834c5
commit cf73cd3b4c
11246 changed files with 1690552 additions and 0 deletions
@@ -0,0 +1,27 @@
import { defaultWindow, } from "../../internal/configurable-globals.js";
import { on } from "svelte/events";
/**
* Tracks whether the current document is visible (i.e., not hidden).
* It listens to the "visibilitychange" event and updates reactively.
*
* @see {@link https://developer.mozilla.org/docs/Web/API/Document/visibilitychange_event}
* @see {@link https://runed.dev/docs/utilities/is-document-visible}
*/
export class IsDocumentVisible {
#visible = $state(false);
constructor(options = {}) {
const window = options.window ?? defaultWindow;
const document = options.document ?? window?.document;
this.#visible = document ? !document.hidden : false;
$effect(() => {
if (!document)
return;
return on(document, "visibilitychange", () => {
this.#visible = !document.hidden;
});
});
}
get current() {
return this.#visible;
}
}