use-ua-parser-js
Version:
React Hook for UAParser.js - Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
99 lines (83 loc) • 2.08 kB
JavaScript
import { useMemo } from 'react';
import { UAParser } from 'ua-parser-js';
function isMobile(details) {
return details.type === 'mobile';
}
function isTouchDevice(details) {
return ['mobile', 'tablet', 'wearable'].includes(details.type || '');
}
var uaParser = /*#__PURE__*/new UAParser(); // Access window.navigator.userAgent only once, this prevents browser from re-rendering
var defaultUAString = window.navigator.userAgent;
function useUA(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return useMemo(function () {
try {
uaParser.setUA(uastring);
return {
os: uaParser.getOS(),
browser: uaParser.getBrowser(),
cpu: uaParser.getCPU(),
device: uaParser.getDevice(),
engine: uaParser.getEngine()
};
} catch (err) {
return null;
}
}, [uastring]);
}
function useDevice(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getDevice();
} catch (err) {
return null;
}
}, [uastring]);
}
function useBrowser(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getBrowser();
} catch (err) {
return null;
}
}, [uastring]);
}
function useCPU(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getCPU();
} catch (err) {
return null;
}
}, [uastring]);
}
function useEngine(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getEngine();
} catch (err) {
return null;
}
}, [uastring]);
}
export { isMobile, isTouchDevice, useBrowser, useCPU, useDevice, useEngine, useUA };
//# sourceMappingURL=use-ua-parser-js.esm.js.map