UNPKG

4.45 kBJavaScriptView Raw
1"use strict";
2exports.__esModule = true;
3var appleIphone = /iPhone/i;
4var appleIpod = /iPod/i;
5var appleTablet = /iPad/i;
6var appleUniversal = /\biOS-universal(?:.+)Mac\b/i;
7var androidPhone = /\bAndroid(?:.+)Mobile\b/i;
8var androidTablet = /Android/i;
9var amazonPhone = /(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i;
10var amazonTablet = /Silk/i;
11var windowsPhone = /Windows Phone/i;
12var windowsTablet = /\bWindows(?:.+)ARM\b/i;
13var otherBlackBerry = /BlackBerry/i;
14var otherBlackBerry10 = /BB10/i;
15var otherOpera = /Opera Mini/i;
16var otherChrome = /\b(CriOS|Chrome)(?:.+)Mobile/i;
17var otherFirefox = /Mobile(?:.+)Firefox\b/i;
18var isAppleTabletOnIos13 = function (navigator) {
19 return (typeof navigator !== 'undefined' &&
20 navigator.platform === 'MacIntel' &&
21 typeof navigator.maxTouchPoints === 'number' &&
22 navigator.maxTouchPoints > 1 &&
23 typeof MSStream === 'undefined');
24};
25function createMatch(userAgent) {
26 return function (regex) { return regex.test(userAgent); };
27}
28function isMobile(param) {
29 var nav = {
30 userAgent: '',
31 platform: '',
32 maxTouchPoints: 0
33 };
34 if (!param && typeof navigator !== 'undefined') {
35 nav = {
36 userAgent: navigator.userAgent,
37 platform: navigator.platform,
38 maxTouchPoints: navigator.maxTouchPoints || 0
39 };
40 }
41 else if (typeof param === 'string') {
42 nav.userAgent = param;
43 }
44 else if (param && param.userAgent) {
45 nav = {
46 userAgent: param.userAgent,
47 platform: param.platform,
48 maxTouchPoints: param.maxTouchPoints || 0
49 };
50 }
51 var userAgent = nav.userAgent;
52 var tmp = userAgent.split('[FBAN');
53 if (typeof tmp[1] !== 'undefined') {
54 userAgent = tmp[0];
55 }
56 tmp = userAgent.split('Twitter');
57 if (typeof tmp[1] !== 'undefined') {
58 userAgent = tmp[0];
59 }
60 var match = createMatch(userAgent);
61 var result = {
62 apple: {
63 phone: match(appleIphone) && !match(windowsPhone),
64 ipod: match(appleIpod),
65 tablet: !match(appleIphone) &&
66 (match(appleTablet) || isAppleTabletOnIos13(nav)) &&
67 !match(windowsPhone),
68 universal: match(appleUniversal),
69 device: (match(appleIphone) ||
70 match(appleIpod) ||
71 match(appleTablet) ||
72 match(appleUniversal) ||
73 isAppleTabletOnIos13(nav)) &&
74 !match(windowsPhone)
75 },
76 amazon: {
77 phone: match(amazonPhone),
78 tablet: !match(amazonPhone) && match(amazonTablet),
79 device: match(amazonPhone) || match(amazonTablet)
80 },
81 android: {
82 phone: (!match(windowsPhone) && match(amazonPhone)) ||
83 (!match(windowsPhone) && match(androidPhone)),
84 tablet: !match(windowsPhone) &&
85 !match(amazonPhone) &&
86 !match(androidPhone) &&
87 (match(amazonTablet) || match(androidTablet)),
88 device: (!match(windowsPhone) &&
89 (match(amazonPhone) ||
90 match(amazonTablet) ||
91 match(androidPhone) ||
92 match(androidTablet))) ||
93 match(/\bokhttp\b/i)
94 },
95 windows: {
96 phone: match(windowsPhone),
97 tablet: match(windowsTablet),
98 device: match(windowsPhone) || match(windowsTablet)
99 },
100 other: {
101 blackberry: match(otherBlackBerry),
102 blackberry10: match(otherBlackBerry10),
103 opera: match(otherOpera),
104 firefox: match(otherFirefox),
105 chrome: match(otherChrome),
106 device: match(otherBlackBerry) ||
107 match(otherBlackBerry10) ||
108 match(otherOpera) ||
109 match(otherFirefox) ||
110 match(otherChrome)
111 },
112 any: false,
113 phone: false,
114 tablet: false
115 };
116 result.any =
117 result.apple.device ||
118 result.android.device ||
119 result.windows.device ||
120 result.other.device;
121 result.phone =
122 result.apple.phone || result.android.phone || result.windows.phone;
123 result.tablet =
124 result.apple.tablet || result.android.tablet || result.windows.tablet;
125 return result;
126}
127exports["default"] = isMobile;
128//# sourceMappingURL=isMobile.js.map
\No newline at end of file