const WCO_CLASS_NAME = "wco"; interface WindowControlsOverlayLike { readonly visible: boolean; addEventListener(type: "geometrychange", listener: EventListener): void; removeEventListener(type: "geometrychange", listener: EventListener): void;} interface NavigatorWithWindowControlsOverlay extends Navigator { readonly windowControlsOverlay?: WindowControlsOverlayLike;} function getWindowControlsOverlay(): WindowControlsOverlayLike | null { if (typeof navigator === "undefined") { return null; } return (navigator as NavigatorWithWindowControlsOverlay).windowControlsOverlay ?? null;} export function syncDocumentWindowControlsOverlayClass(): () => void { if (typeof document === "undefined") { return () => {}; } const overlay = getWindowControlsOverlay(); const update = () => { document.documentElement.classList.toggle(WCO_CLASS_NAME, overlay !== null && overlay.visible); }; update(); if (!overlay) { return () => {}; } overlay.addEventListener("geometrychange", update); return () => { overlay.removeEventListener("geometrychange", update); };}
const WCO_CLASS_NAME = "wco";
interface WindowControlsOverlayLike {
readonly visible: boolean;
addEventListener(type: "geometrychange", listener: EventListener): void;
removeEventListener(type: "geometrychange", listener: EventListener): void;
}
interface NavigatorWithWindowControlsOverlay extends Navigator {
readonly windowControlsOverlay?: WindowControlsOverlayLike;
}
function getWindowControlsOverlay(): WindowControlsOverlayLike | null {
if (typeof navigator === "undefined") {
return null;
}
return (navigator as NavigatorWithWindowControlsOverlay).windowControlsOverlay ?? null;
}
export function syncDocumentWindowControlsOverlayClass(): () => void {
if (typeof document === "undefined") {
return () => {};
}
const overlay = getWindowControlsOverlay();
const update = () => {
document.documentElement.classList.toggle(WCO_CLASS_NAME, overlay !== null && overlay.visible);
};
update();
if (!overlay) {
return () => {};
}
overlay.addEventListener("geometrychange", update);
return () => {
overlay.removeEventListener("geometrychange", update);
};
}