Spaces:
Paused
Paused
| 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 }; | |