1 | "use strict";
|
2 | exports.__esModule = true;
|
3 | var appleIphone = /iPhone/i;
|
4 | var appleIpod = /iPod/i;
|
5 | var appleTablet = /iPad/i;
|
6 | var appleUniversal = /\biOS-universal(?:.+)Mac\b/i;
|
7 | var androidPhone = /\bAndroid(?:.+)Mobile\b/i;
|
8 | var androidTablet = /Android/i;
|
9 | var amazonPhone = /(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i;
|
10 | var amazonTablet = /Silk/i;
|
11 | var windowsPhone = /Windows Phone/i;
|
12 | var windowsTablet = /\bWindows(?:.+)ARM\b/i;
|
13 | var otherBlackBerry = /BlackBerry/i;
|
14 | var otherBlackBerry10 = /BB10/i;
|
15 | var otherOpera = /Opera Mini/i;
|
16 | var otherChrome = /\b(CriOS|Chrome)(?:.+)Mobile/i;
|
17 | var otherFirefox = /Mobile(?:.+)Firefox\b/i;
|
18 | var 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 | };
|
25 | function createMatch(userAgent) {
|
26 | return function (regex) { return regex.test(userAgent); };
|
27 | }
|
28 | function 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 | }
|
127 | exports["default"] = isMobile;
|
128 |
|
\ | No newline at end of file |