@ozen-ui/kit
Version:
React component library
48 lines (47 loc) • 1.86 kB
JavaScript
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 };
}
;