Spaces:
Sleeping
Sleeping
import { browser } from "$app/environment"; | |
const app = { | |
is: { | |
installed: false, | |
} | |
} | |
const device = { | |
is: { | |
iPhone: false, | |
iPad: false, | |
iOS: false, | |
android: false, | |
mobile: false, | |
}, | |
prefers: { | |
language: "en", | |
reducedMotion: false, | |
reducedTransparency: false, | |
}, | |
supports: { | |
share: false, | |
directDownload: false, | |
}, | |
userAgent: "sveltekit server", | |
} | |
if (browser) { | |
const ua = navigator.userAgent.toLowerCase(); | |
const iPhone = ua.includes("iphone os"); | |
const iPad = !iPhone && ua.includes("mac os") && navigator.maxTouchPoints > 0; | |
const iOS = iPhone || iPad; | |
const android = ua.includes("android") || ua.includes("diordna"); | |
const installed = window.matchMedia('(display-mode: standalone)').matches; | |
app.is = { | |
installed, | |
}; | |
device.is = { | |
iPhone, | |
iPad, | |
iOS, | |
android, | |
mobile: iOS || android, | |
}; | |
device.prefers = { | |
language: navigator.language.toLowerCase().slice(0, 2) || "en", | |
reducedMotion: window.matchMedia('(prefers-reduced-motion: reduce)').matches, | |
reducedTransparency: window.matchMedia('(prefers-reduced-transparency: reduce)').matches, | |
}; | |
device.supports = { | |
share: navigator.share !== undefined, | |
directDownload: !(installed && iOS), | |
}; | |
device.userAgent = navigator.userAgent; | |
} | |
export { device, app }; | |