mirror of
https://github.com/TheRealOwenRees/echecsfrance.git
synced 2026-07-22 20:16:57 +00:00
50 lines
1.1 KiB
TypeScript
50 lines
1.1 KiB
TypeScript
export const useDynamicViewportUnits = () => {
|
|
const setVh = function () {
|
|
var svh = document.documentElement.clientHeight * 0.01;
|
|
document.documentElement.style.setProperty("--1svh", svh + "px");
|
|
var dvh = window.innerHeight * 0.01;
|
|
document.documentElement.style.setProperty("--1dvh", dvh + "px");
|
|
};
|
|
|
|
const isMobile = function () {
|
|
if (
|
|
/Android|iPhone|iPad|iPod/i.test(navigator.userAgent) ||
|
|
(navigator.userAgent.match(/Mac/) &&
|
|
navigator.maxTouchPoints &&
|
|
navigator.maxTouchPoints > 2)
|
|
) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
// SSR support
|
|
if (typeof window === "undefined") {
|
|
return;
|
|
}
|
|
|
|
// Don't run polyfill if browser supports the units natively
|
|
if (
|
|
"CSS" in window &&
|
|
"supports" in window.CSS &&
|
|
window.CSS.supports("height: 100svh") &&
|
|
window.CSS.supports("height: 100dvh") &&
|
|
window.CSS.supports("height: 100lvh")
|
|
) {
|
|
return;
|
|
}
|
|
|
|
// Don't run on desktop browsers
|
|
if (!isMobile) {
|
|
return;
|
|
}
|
|
|
|
window.addEventListener("resize", setVh);
|
|
setVh();
|
|
|
|
return () => {
|
|
window.removeEventListener("resize", setVh);
|
|
};
|
|
};
|