mirror of
https://github.com/TheRealOwenRees/echecsfrance.git
synced 2026-07-23 04:26:57 +00:00
45 lines
1.1 KiB
TypeScript
45 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);
|
|
}
|
|
}
|