react-device-detect
Version:
Detect device type and render your component according to it
1,086 lines (971 loc) • 34.2 kB
JavaScript
'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;