UNPKG

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
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