UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

44 lines (43 loc) 1.5 kB
"use client"; const require_use_isomorphic_effect = require("../use-isomorphic-effect/use-isomorphic-effect.cjs"); let react = require("react"); //#region packages/@mantine/hooks/src/use-os/use-os.ts function isMacOS(userAgent) { return /(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i.test(userAgent); } function isIOS(userAgent) { return /(iPhone)|(iPad)|(iPod)/i.test(userAgent); } function isWindows(userAgent) { return /(Win32)|(Win64)|(Windows)|(WinCE)/i.test(userAgent); } function isAndroid(userAgent) { return /Android/i.test(userAgent); } function isLinux(userAgent) { return /Linux/i.test(userAgent); } function isChromeOS(userAgent) { return /CrOS/i.test(userAgent); } function getOS() { if (typeof window === "undefined") return "undetermined"; const { userAgent } = window.navigator; if (isIOS(userAgent) || isMacOS(userAgent) && "ontouchend" in document) return "ios"; if (isMacOS(userAgent)) return "macos"; if (isWindows(userAgent)) return "windows"; if (isAndroid(userAgent)) return "android"; if (isLinux(userAgent)) return "linux"; if (isChromeOS(userAgent)) return "chromeos"; return "undetermined"; } function useOs(options = { getValueInEffect: true }) { const [value, setValue] = (0, react.useState)(options.getValueInEffect ? "undetermined" : getOS()); require_use_isomorphic_effect.useIsomorphicEffect(() => { if (options.getValueInEffect) setValue(getOS); }, []); return value; } //#endregion exports.useOs = useOs; //# sourceMappingURL=use-os.cjs.map