use-ua-parser-js
Version:
React Hook for UAParser.js - Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
109 lines (91 loc) • 2.33 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var UAParser = require('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.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 React.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 React.useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getDevice();
} catch (err) {
return null;
}
}, [uastring]);
}
function useBrowser(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return React.useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getBrowser();
} catch (err) {
return null;
}
}, [uastring]);
}
function useCPU(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return React.useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getCPU();
} catch (err) {
return null;
}
}, [uastring]);
}
function useEngine(uastring) {
if (uastring === void 0) {
uastring = defaultUAString;
}
return React.useMemo(function () {
try {
uaParser.setUA(uastring);
return uaParser.getEngine();
} catch (err) {
return null;
}
}, [uastring]);
}
exports.isMobile = isMobile;
exports.isTouchDevice = isTouchDevice;
exports.useBrowser = useBrowser;
exports.useCPU = useCPU;
exports.useDevice = useDevice;
exports.useEngine = useEngine;
exports.useUA = useUA;
//# sourceMappingURL=use-ua-parser-js.cjs.development.js.map
;