UNPKG

react-device-detect

Version:

Detect device type and render your component according to it

1,086 lines (971 loc) 34.2 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var React = require('react'); var React__default = _interopDefault(React); var UAParser = require('ua-parser-js/dist/ua-parser.min'); var ClientUAInstance = new UAParser(); var browser = ClientUAInstance.getBrowser(); var cpu = ClientUAInstance.getCPU(); var device = ClientUAInstance.getDevice(); var engine = ClientUAInstance.getEngine(); var os = ClientUAInstance.getOS(); var ua = ClientUAInstance.getUA(); var setUa = function setUa(userAgentString) { return ClientUAInstance.setUA(userAgentString); }; var parseUserAgent = function parseUserAgent(userAgent) { if (!userAgent) { console.error('No userAgent string was provided'); return; } var UserAgentInstance = new UAParser(userAgent); return { UA: UserAgentInstance, browser: UserAgentInstance.getBrowser(), cpu: UserAgentInstance.getCPU(), device: UserAgentInstance.getDevice(), engine: UserAgentInstance.getEngine(), os: UserAgentInstance.getOS(), ua: UserAgentInstance.getUA(), setUserAgent: function setUserAgent(userAgentString) { return UserAgentInstance.setUA(userAgentString); } }; }; var UAHelper = /*#__PURE__*/Object.freeze({ ClientUAInstance: ClientUAInstance, browser: browser, cpu: cpu, device: device, engine: engine, os: os, ua: ua, setUa: setUa, parseUserAgent: parseUserAgent }); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var DeviceTypes = { Mobile: 'mobile', Tablet: 'tablet', SmartTv: 'smarttv', Console: 'console', Wearable: 'wearable', Embedded: 'embedded', Browser: undefined }; var BrowserTypes = { Chrome: 'Chrome', Firefox: 'Firefox', Opera: 'Opera', Yandex: 'Yandex', Safari: 'Safari', InternetExplorer: 'Internet Explorer', Edge: 'Edge', Chromium: 'Chromium', Ie: 'IE', MobileSafari: 'Mobile Safari', EdgeChromium: 'Edge Chromium', MIUI: 'MIUI Browser', SamsungBrowser: 'Samsung Browser' }; var OsTypes = { IOS: 'iOS', Android: 'Android', WindowsPhone: 'Windows Phone', Windows: 'Windows', MAC_OS: 'Mac OS' }; var InitialDeviceTypes = { isMobile: false, isTablet: false, isBrowser: false, isSmartTV: false, isConsole: false, isWearable: false }; var checkDeviceType = function checkDeviceType(type) { switch (type) { case DeviceTypes.Mobile: return { isMobile: true }; case DeviceTypes.Tablet: return { isTablet: true }; case DeviceTypes.SmartTv: return { isSmartTV: true }; case DeviceTypes.Console: return { isConsole: true }; case DeviceTypes.Wearable: return { isWearable: true }; case DeviceTypes.Browser: return { isBrowser: true }; case DeviceTypes.Embedded: return { isEmbedded: true }; default: return InitialDeviceTypes; } }; var setUserAgent = function setUserAgent(userAgent) { return setUa(userAgent); }; var setDefaults = function setDefaults(p) { var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none'; return p ? p : d; }; var getNavigatorInstance = function getNavigatorInstance() { if (typeof window !== 'undefined') { if (window.navigator || navigator) { return window.navigator || navigator; } } return false; }; var isIOS13Check = function isIOS13Check(type) { var nav = getNavigatorInstance(); return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream); }; var browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) { return { isBrowser: isBrowser, browserMajorVersion: setDefaults(browser.major), browserFullVersion: setDefaults(browser.version), browserName: setDefaults(browser.name), engineName: setDefaults(engine.name), engineVersion: setDefaults(engine.version), osName: setDefaults(os.name), osVersion: setDefaults(os.version), userAgent: setDefaults(ua) }; }; var mobilePayload = function mobilePayload(type, device, os, ua) { return _objectSpread2({}, type, { vendor: setDefaults(device.vendor), model: setDefaults(device.model), os: setDefaults(os.name), osVersion: setDefaults(os.version), ua: setDefaults(ua) }); }; var smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) { return { isSmartTV: isSmartTV, engineName: setDefaults(engine.name), engineVersion: setDefaults(engine.version), osName: setDefaults(os.name), osVersion: setDefaults(os.version), userAgent: setDefaults(ua) }; }; var consolePayload = function consolePayload(isConsole, engine, os, ua) { return { isConsole: isConsole, engineName: setDefaults(engine.name), engineVersion: setDefaults(engine.version), osName: setDefaults(os.name), osVersion: setDefaults(os.version), userAgent: setDefaults(ua) }; }; var wearablePayload = function wearablePayload(isWearable, engine, os, ua) { return { isWearable: isWearable, engineName: setDefaults(engine.name), engineVersion: setDefaults(engine.version), osName: setDefaults(os.name), osVersion: setDefaults(os.version), userAgent: setDefaults(ua) }; }; var embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) { return { isEmbedded: isEmbedded, vendor: setDefaults(device.vendor), model: setDefaults(device.model), engineName: setDefaults(engine.name), engineVersion: setDefaults(engine.version), osName: setDefaults(os.name), osVersion: setDefaults(os.version), userAgent: setDefaults(ua) }; }; function deviceDetect(userAgent) { var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper, device = _ref.device, browser = _ref.browser, engine = _ref.engine, os = _ref.os, ua = _ref.ua; var type = checkDeviceType(device.type); var isBrowser = type.isBrowser, isMobile = type.isMobile, isTablet = type.isTablet, isSmartTV = type.isSmartTV, isConsole = type.isConsole, isWearable = type.isWearable, isEmbedded = type.isEmbedded; if (isBrowser) { return browserPayload(isBrowser, browser, engine, os, ua); } if (isSmartTV) { return smartTvPayload(isSmartTV, engine, os, ua); } if (isConsole) { return consolePayload(isConsole, engine, os, ua); } if (isMobile) { return mobilePayload(type, device, os, ua); } if (isTablet) { return mobilePayload(type, device, os, ua); } if (isWearable) { return wearablePayload(isWearable, engine, os, ua); } if (isEmbedded) { return embeddedPayload(isEmbedded, device, engine, os, ua); } } var isMobileType = function isMobileType(_ref) { var type = _ref.type; return type === DeviceTypes.Mobile; }; var isTabletType = function isTabletType(_ref2) { var type = _ref2.type; return type === DeviceTypes.Tablet; }; var isMobileAndTabletType = function isMobileAndTabletType(_ref3) { var type = _ref3.type; return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet; }; var isSmartTVType = function isSmartTVType(_ref4) { var type = _ref4.type; return type === DeviceTypes.SmartTv; }; var isBrowserType = function isBrowserType(_ref5) { var type = _ref5.type; return type === DeviceTypes.Browser; }; var isWearableType = function isWearableType(_ref6) { var type = _ref6.type; return type === DeviceTypes.Wearable; }; var isConsoleType = function isConsoleType(_ref7) { var type = _ref7.type; return type === DeviceTypes.Console; }; var isEmbeddedType = function isEmbeddedType(_ref8) { var type = _ref8.type; return type === DeviceTypes.Embedded; }; var getMobileVendor = function getMobileVendor(_ref9) { var vendor = _ref9.vendor; return setDefaults(vendor); }; var getMobileModel = function getMobileModel(_ref10) { var model = _ref10.model; return setDefaults(model); }; var getDeviceType = function getDeviceType(_ref11) { var type = _ref11.type; return setDefaults(type, 'browser'); }; // os types var isAndroidType = function isAndroidType(_ref12) { var name = _ref12.name; return name === OsTypes.Android; }; var isWindowsType = function isWindowsType(_ref13) { var name = _ref13.name; return name === OsTypes.Windows; }; var isMacOsType = function isMacOsType(_ref14) { var name = _ref14.name; return name === OsTypes.MAC_OS; }; var isWinPhoneType = function isWinPhoneType(_ref15) { var name = _ref15.name; return name === OsTypes.WindowsPhone; }; var isIOSType = function isIOSType(_ref16) { var name = _ref16.name; return name === OsTypes.IOS; }; var getOsVersion = function getOsVersion(_ref17) { var version = _ref17.version; return setDefaults(version); }; var getOsName = function getOsName(_ref18) { var name = _ref18.name; return setDefaults(name); }; // browser types var isChromeType = function isChromeType(_ref19) { var name = _ref19.name; return name === BrowserTypes.Chrome; }; var isFirefoxType = function isFirefoxType(_ref20) { var name = _ref20.name; return name === BrowserTypes.Firefox; }; var isChromiumType = function isChromiumType(_ref21) { var name = _ref21.name; return name === BrowserTypes.Chromium; }; var isEdgeType = function isEdgeType(_ref22) { var name = _ref22.name; return name === BrowserTypes.Edge; }; var isYandexType = function isYandexType(_ref23) { var name = _ref23.name; return name === BrowserTypes.Yandex; }; var isSafariType = function isSafariType(_ref24) { var name = _ref24.name; return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari; }; var isMobileSafariType = function isMobileSafariType(_ref25) { var name = _ref25.name; return name === BrowserTypes.MobileSafari; }; var isOperaType = function isOperaType(_ref26) { var name = _ref26.name; return name === BrowserTypes.Opera; }; var isIEType = function isIEType(_ref27) { var name = _ref27.name; return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie; }; var isMIUIType = function isMIUIType(_ref28) { var name = _ref28.name; return name === BrowserTypes.MIUI; }; var isSamsungBrowserType = function isSamsungBrowserType(_ref29) { var name = _ref29.name; return name === BrowserTypes.SamsungBrowser; }; var getBrowserFullVersion = function getBrowserFullVersion(_ref30) { var version = _ref30.version; return setDefaults(version); }; var getBrowserVersion = function getBrowserVersion(_ref31) { var major = _ref31.major; return setDefaults(major); }; var getBrowserName = function getBrowserName(_ref32) { var name = _ref32.name; return setDefaults(name); }; // engine types var getEngineName = function getEngineName(_ref33) { var name = _ref33.name; return setDefaults(name); }; var getEngineVersion = function getEngineVersion(_ref34) { var version = _ref34.version; return setDefaults(version); }; var isElectronType = function isElectronType() { var nav = getNavigatorInstance(); var ua = nav && nav.userAgent && nav.userAgent.toLowerCase(); return typeof ua === 'string' ? /electron/.test(ua) : false; }; var isEdgeChromiumType = function isEdgeChromiumType(ua) { return typeof ua === 'string' && ua.indexOf('Edg/') !== -1; }; var getIOS13 = function getIOS13() { var nav = getNavigatorInstance(); return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream; }; var getIPad13 = function getIPad13() { return isIOS13Check('iPad'); }; var getIphone13 = function getIphone13() { return isIOS13Check('iPhone'); }; var getIPod13 = function getIPod13() { return isIOS13Check('iPod'); }; var getUseragent = function getUseragent(userAg) { return setDefaults(userAg); }; function buildSelectorsObject(options) { var _ref = options ? options : UAHelper, device = _ref.device, browser = _ref.browser, os = _ref.os, engine = _ref.engine, ua = _ref.ua; return { isSmartTV: isSmartTVType(device), isConsole: isConsoleType(device), isWearable: isWearableType(device), isEmbedded: isEmbeddedType(device), isMobileSafari: isMobileSafariType(browser) || getIPad13(), isChromium: isChromiumType(browser), isMobile: isMobileAndTabletType(device) || getIPad13(), isMobileOnly: isMobileType(device), isTablet: isTabletType(device) || getIPad13(), isBrowser: isBrowserType(device), isDesktop: isBrowserType(device), isAndroid: isAndroidType(os), isWinPhone: isWinPhoneType(os), isIOS: isIOSType(os) || getIPad13(), isChrome: isChromeType(browser), isFirefox: isFirefoxType(browser), isSafari: isSafariType(browser), isOpera: isOperaType(browser), isIE: isIEType(browser), osVersion: getOsVersion(os), osName: getOsName(os), fullBrowserVersion: getBrowserFullVersion(browser), browserVersion: getBrowserVersion(browser), browserName: getBrowserName(browser), mobileVendor: getMobileVendor(device), mobileModel: getMobileModel(device), engineName: getEngineName(engine), engineVersion: getEngineVersion(engine), getUA: getUseragent(ua), isEdge: isEdgeType(browser) || isEdgeChromiumType(ua), isYandex: isYandexType(browser), deviceType: getDeviceType(device), isIOS13: getIOS13(), isIPad13: getIPad13(), isIPhone13: getIphone13(), isIPod13: getIPod13(), isElectron: isElectronType(), isEdgeChromium: isEdgeChromiumType(ua), isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua), isWindows: isWindowsType(os), isMacOs: isMacOsType(os), isMIUI: isMIUIType(browser), isSamsungBrowser: isSamsungBrowserType(browser) }; } var isSmartTV = isSmartTVType(device); var isConsole = isConsoleType(device); var isWearable = isWearableType(device); var isEmbedded = isEmbeddedType(device); var isMobileSafari = isMobileSafariType(browser) || getIPad13(); var isChromium = isChromiumType(browser); var isMobile = isMobileAndTabletType(device) || getIPad13(); var isMobileOnly = isMobileType(device); var isTablet = isTabletType(device) || getIPad13(); var isBrowser = isBrowserType(device); var isDesktop = isBrowserType(device); var isAndroid = isAndroidType(os); var isWinPhone = isWinPhoneType(os); var isIOS = isIOSType(os) || getIPad13(); var isChrome = isChromeType(browser); var isFirefox = isFirefoxType(browser); var isSafari = isSafariType(browser); var isOpera = isOperaType(browser); var isIE = isIEType(browser); var osVersion = getOsVersion(os); var osName = getOsName(os); var fullBrowserVersion = getBrowserFullVersion(browser); var browserVersion = getBrowserVersion(browser); var browserName = getBrowserName(browser); var mobileVendor = getMobileVendor(device); var mobileModel = getMobileModel(device); var engineName = getEngineName(engine); var engineVersion = getEngineVersion(engine); var getUA = getUseragent(ua); var isEdge = isEdgeType(browser) || isEdgeChromiumType(ua); var isYandex = isYandexType(browser); var deviceType = getDeviceType(device); var isIOS13 = getIOS13(); var isIPad13 = getIPad13(); var isIPhone13 = getIphone13(); var isIPod13 = getIPod13(); var isElectron = isElectronType(); var isEdgeChromium = isEdgeChromiumType(ua); var isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua); var isWindows = isWindowsType(os); var isMacOs = isMacOsType(os); var isMIUI = isMIUIType(browser); var isSamsungBrowser = isSamsungBrowserType(browser); var getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) { if (!userAgent || typeof userAgent !== 'string') { console.error('No valid user agent string was provided'); return; } var _UAHelper$parseUserAg = parseUserAgent(userAgent), device = _UAHelper$parseUserAg.device, browser = _UAHelper$parseUserAg.browser, os = _UAHelper$parseUserAg.os, engine = _UAHelper$parseUserAg.engine, ua = _UAHelper$parseUserAg.ua; return buildSelectorsObject({ device: device, browser: browser, os: os, engine: engine, ua: ua }); }; var AndroidView = function AndroidView(_ref) { var renderWithFragment = _ref.renderWithFragment, children = _ref.children, props = _objectWithoutProperties(_ref, ["renderWithFragment", "children"]); return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var BrowserView = function BrowserView(_ref2) { var renderWithFragment = _ref2.renderWithFragment, children = _ref2.children, props = _objectWithoutProperties(_ref2, ["renderWithFragment", "children"]); return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var IEView = function IEView(_ref3) { var renderWithFragment = _ref3.renderWithFragment, children = _ref3.children, props = _objectWithoutProperties(_ref3, ["renderWithFragment", "children"]); return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var IOSView = function IOSView(_ref4) { var renderWithFragment = _ref4.renderWithFragment, children = _ref4.children, props = _objectWithoutProperties(_ref4, ["renderWithFragment", "children"]); return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var MobileView = function MobileView(_ref5) { var renderWithFragment = _ref5.renderWithFragment, children = _ref5.children, props = _objectWithoutProperties(_ref5, ["renderWithFragment", "children"]); return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var TabletView = function TabletView(_ref6) { var renderWithFragment = _ref6.renderWithFragment, children = _ref6.children, props = _objectWithoutProperties(_ref6, ["renderWithFragment", "children"]); return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var WinPhoneView = function WinPhoneView(_ref7) { var renderWithFragment = _ref7.renderWithFragment, children = _ref7.children, props = _objectWithoutProperties(_ref7, ["renderWithFragment", "children"]); return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var MobileOnlyView = function MobileOnlyView(_ref8) { var renderWithFragment = _ref8.renderWithFragment, children = _ref8.children, viewClassName = _ref8.viewClassName, style = _ref8.style, props = _objectWithoutProperties(_ref8, ["renderWithFragment", "children", "viewClassName", "style"]); return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var SmartTVView = function SmartTVView(_ref9) { var renderWithFragment = _ref9.renderWithFragment, children = _ref9.children, props = _objectWithoutProperties(_ref9, ["renderWithFragment", "children"]); return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var ConsoleView = function ConsoleView(_ref10) { var renderWithFragment = _ref10.renderWithFragment, children = _ref10.children, props = _objectWithoutProperties(_ref10, ["renderWithFragment", "children"]); return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var WearableView = function WearableView(_ref11) { var renderWithFragment = _ref11.renderWithFragment, children = _ref11.children, props = _objectWithoutProperties(_ref11, ["renderWithFragment", "children"]); return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; var CustomView = function CustomView(_ref12) { var renderWithFragment = _ref12.renderWithFragment, children = _ref12.children, viewClassName = _ref12.viewClassName, style = _ref12.style, condition = _ref12.condition, props = _objectWithoutProperties(_ref12, ["renderWithFragment", "children", "viewClassName", "style", "condition"]); return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement("div", props, children) : null; }; function withOrientationChange(WrappedComponent) { return /*#__PURE__*/function (_React$Component) { _inherits(_class, _React$Component); function _class(props) { var _this; _classCallCheck(this, _class); _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props)); _this.isEventListenerAdded = false; _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this)); _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this)); _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this)); _this.state = { isLandscape: false, isPortrait: false }; return _this; } _createClass(_class, [{ key: "handleOrientationChange", value: function handleOrientationChange() { if (!this.isEventListenerAdded) { this.isEventListenerAdded = true; } var orientation = window.innerWidth > window.innerHeight ? 90 : 0; this.setState({ isPortrait: orientation === 0, isLandscape: orientation === 90 }); } }, { key: "onOrientationChange", value: function onOrientationChange() { this.handleOrientationChange(); } }, { key: "onPageLoad", value: function onPageLoad() { this.handleOrientationChange(); } }, { key: "componentDidMount", value: function componentDidMount() { if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== undefined && isMobile) { if (!this.isEventListenerAdded) { this.handleOrientationChange(); window.addEventListener("load", this.onPageLoad, false); } else { window.removeEventListener("load", this.onPageLoad, false); } window.addEventListener("resize", this.onOrientationChange, false); } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { window.removeEventListener("resize", this.onOrientationChange, false); } }, { key: "render", value: function render() { return React__default.createElement(WrappedComponent, _extends({}, this.props, { isLandscape: this.state.isLandscape, isPortrait: this.state.isPortrait })); } }]); return _class; }(React__default.Component); } function useMobileOrientation() { var _useState = React.useState(function () { var orientation = window.innerWidth > window.innerHeight ? 90 : 0; return { isPortrait: orientation === 0, isLandscape: orientation === 90, orientation: orientation === 0 ? 'portrait' : 'landscape' }; }), _useState2 = _slicedToArray(_useState, 2), state = _useState2[0], setState = _useState2[1]; var handleOrientationChange = React.useCallback(function () { var orientation = window.innerWidth > window.innerHeight ? 90 : 0; var next = { isPortrait: orientation === 0, isLandscape: orientation === 90, orientation: orientation === 0 ? 'portrait' : 'landscape' }; state.orientation !== next.orientation && setState(next); }, [state.orientation]); React.useEffect(function () { if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== undefined && isMobile) { handleOrientationChange(); window.addEventListener("load", handleOrientationChange, false); window.addEventListener("resize", handleOrientationChange, false); } return function () { window.removeEventListener("resize", handleOrientationChange, false); window.removeEventListener("load", handleOrientationChange, false); }; }, [handleOrientationChange]); return state; } function useDeviceData(userAgent) { var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent; return parseUserAgent(hookUserAgent); } function useDeviceSelectors(userAgent) { var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent; var deviceData = useDeviceData(hookUserAgent); var selectors = buildSelectorsObject(deviceData); return [selectors, deviceData]; } exports.AndroidView = AndroidView; exports.BrowserTypes = BrowserTypes; exports.BrowserView = BrowserView; exports.ConsoleView = ConsoleView; exports.CustomView = CustomView; exports.IEView = IEView; exports.IOSView = IOSView; exports.MobileOnlyView = MobileOnlyView; exports.MobileView = MobileView; exports.OsTypes = OsTypes; exports.SmartTVView = SmartTVView; exports.TabletView = TabletView; exports.WearableView = WearableView; exports.WinPhoneView = WinPhoneView; exports.browserName = browserName; exports.browserVersion = browserVersion; exports.deviceDetect = deviceDetect; exports.deviceType = deviceType; exports.engineName = engineName; exports.engineVersion = engineVersion; exports.fullBrowserVersion = fullBrowserVersion; exports.getSelectorsByUserAgent = getSelectorsByUserAgent; exports.getUA = getUA; exports.isAndroid = isAndroid; exports.isBrowser = isBrowser; exports.isChrome = isChrome; exports.isChromium = isChromium; exports.isConsole = isConsole; exports.isDesktop = isDesktop; exports.isEdge = isEdge; exports.isEdgeChromium = isEdgeChromium; exports.isElectron = isElectron; exports.isEmbedded = isEmbedded; exports.isFirefox = isFirefox; exports.isIE = isIE; exports.isIOS = isIOS; exports.isIOS13 = isIOS13; exports.isIPad13 = isIPad13; exports.isIPhone13 = isIPhone13; exports.isIPod13 = isIPod13; exports.isLegacyEdge = isLegacyEdge; exports.isMIUI = isMIUI; exports.isMacOs = isMacOs; exports.isMobile = isMobile; exports.isMobileOnly = isMobileOnly; exports.isMobileSafari = isMobileSafari; exports.isOpera = isOpera; exports.isSafari = isSafari; exports.isSamsungBrowser = isSamsungBrowser; exports.isSmartTV = isSmartTV; exports.isTablet = isTablet; exports.isWearable = isWearable; exports.isWinPhone = isWinPhone; exports.isWindows = isWindows; exports.isYandex = isYandex; exports.mobileModel = mobileModel; exports.mobileVendor = mobileVendor; exports.osName = osName; exports.osVersion = osVersion; exports.parseUserAgent = parseUserAgent; exports.setUserAgent = setUserAgent; exports.useDeviceData = useDeviceData; exports.useDeviceSelectors = useDeviceSelectors; exports.useMobileOrientation = useMobileOrientation; exports.withOrientationChange = withOrientationChange;