UNPKG

@ozen-ui/kit

Version:

React component library

48 lines (47 loc) 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDeviceDetect = useDeviceDetect; var tslib_1 = require("tslib"); var react_1 = require("react"); var environment_1 = require("../../constants/environment"); var useIsomorphicEffect_1 = require("../useIsomorphicEffect"); function getPlatform(userAgent) { var iosPlatforms = /iphone|ipad|ipod/i.test(userAgent); var windowsPlatforms = /windows/i.test(userAgent); var macosPlatforms = /macintosh|macintel|macppc|mac68k/i.test(userAgent); var linuxPlatforms = /linux/i.test(userAgent); var androidPlatforms = /android/i.test(userAgent); if (iosPlatforms) { return 'ios'; } if (macosPlatforms) { return 'macos'; } if (windowsPlatforms) { return 'windows'; } /** Android обязательно должен быть перед Linux т.к Android использует ядро Linux и определяется двумя ОС */ if (androidPlatforms) { return 'android'; } if (linuxPlatforms) { return 'linux'; } return 'undetermined'; } function detectIsMobile(userAgent) { return Boolean(userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i)); } function useDeviceDetect() { var _a = tslib_1.__read((0, react_1.useState)(false), 2), isMobile = _a[0], setIsMobile = _a[1]; var _b = tslib_1.__read((0, react_1.useState)('undetermined'), 2), platform = _b[0], setPlatform = _b[1]; (0, useIsomorphicEffect_1.useIsomorphicEffect)(function () { if (environment_1.isServer) { return; } var userAgent = window.navigator.userAgent; setPlatform(getPlatform(userAgent)); setIsMobile(detectIsMobile(userAgent)); }, []); return { isMobile: isMobile, platform: platform }; }