cakeinpanic-shared 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/cjs/_virtual/_commonjsHelpers.js +10 -0
  2. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -0
  3. package/dist/cjs/_virtual/index.js +10 -0
  4. package/dist/cjs/_virtual/index.js.map +1 -0
  5. package/dist/cjs/_virtual/index2.js +8 -0
  6. package/dist/cjs/_virtual/index2.js.map +1 -0
  7. package/dist/cjs/_virtual/ua-parser.js +10 -0
  8. package/dist/cjs/_virtual/ua-parser.js.map +1 -0
  9. package/dist/cjs/_virtual/ua-parser2.js +8 -0
  10. package/dist/cjs/_virtual/ua-parser2.js.map +1 -0
  11. package/dist/cjs/index.css +1 -0
  12. package/dist/cjs/index.js +39 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/node_modules/classnames/index.js +74 -0
  15. package/dist/cjs/node_modules/classnames/index.js.map +1 -0
  16. package/dist/cjs/node_modules/ua-parser-js/src/ua-parser.js +811 -0
  17. package/dist/cjs/node_modules/ua-parser-js/src/ua-parser.js.map +1 -0
  18. package/dist/cjs/theme-css/constants.js +21 -0
  19. package/dist/cjs/theme-css/constants.js.map +1 -0
  20. package/dist/cjs/theme-css/content-theme/content-theme.js +30 -0
  21. package/dist/cjs/theme-css/content-theme/content-theme.js.map +1 -0
  22. package/dist/cjs/theme-css/content-theme/content-theme.module.css.js +6 -0
  23. package/dist/cjs/theme-css/content-theme/content-theme.module.css.js.map +1 -0
  24. package/dist/cjs/theme-css/cookie-theme-provider.js +129 -0
  25. package/dist/cjs/theme-css/cookie-theme-provider.js.map +1 -0
  26. package/dist/cjs/theme-css/document-head-contents/element-theme-script.js +73 -0
  27. package/dist/cjs/theme-css/document-head-contents/element-theme-script.js.map +1 -0
  28. package/dist/cjs/theme-css/theme-provider/theme-provider.js +48 -0
  29. package/dist/cjs/theme-css/theme-provider/theme-provider.js.map +1 -0
  30. package/dist/cjs/theme-css/theme-toggler/theme-toggler.js +72 -0
  31. package/dist/cjs/theme-css/theme-toggler/theme-toggler.js.map +1 -0
  32. package/dist/cjs/theme-css/theme-toggler/theme-toggler.module.css.js +6 -0
  33. package/dist/cjs/theme-css/theme-toggler/theme-toggler.module.css.js.map +1 -0
  34. package/dist/cjs/theme-css/use-theme-toggle.js +13 -0
  35. package/dist/cjs/theme-css/use-theme-toggle.js.map +1 -0
  36. package/dist/cjs/theme-css/utils/cookies.js +21 -0
  37. package/dist/cjs/theme-css/utils/cookies.js.map +1 -0
  38. package/dist/cjs/theme-css/utils/set-theme-cookie.js +37 -0
  39. package/dist/cjs/theme-css/utils/set-theme-cookie.js.map +1 -0
  40. package/dist/cjs/utils/cookies-client-side.js +63 -0
  41. package/dist/cjs/utils/cookies-client-side.js.map +1 -0
  42. package/dist/cjs/utils/get-top-level-domain.js +18 -0
  43. package/dist/cjs/utils/get-top-level-domain.js.map +1 -0
  44. package/dist/cjs/utils/index.js +18 -0
  45. package/dist/cjs/utils/index.js.map +1 -0
  46. package/dist/cjs/utils/modalRoot.js +19 -0
  47. package/dist/cjs/utils/modalRoot.js.map +1 -0
  48. package/dist/esm/_virtual/_commonjsHelpers.mjs +6 -0
  49. package/dist/esm/_virtual/_commonjsHelpers.mjs.map +1 -0
  50. package/dist/esm/_virtual/index.mjs +8 -0
  51. package/dist/esm/_virtual/index.mjs.map +1 -0
  52. package/dist/esm/_virtual/index2.mjs +4 -0
  53. package/dist/esm/_virtual/index2.mjs.map +1 -0
  54. package/dist/esm/_virtual/ua-parser.mjs +6 -0
  55. package/dist/esm/_virtual/ua-parser.mjs.map +1 -0
  56. package/dist/esm/_virtual/ua-parser2.mjs +4 -0
  57. package/dist/esm/_virtual/ua-parser2.mjs.map +1 -0
  58. package/dist/esm/index.css +1 -0
  59. package/dist/esm/index.mjs +11 -0
  60. package/dist/esm/index.mjs.map +1 -0
  61. package/dist/esm/node_modules/classnames/index.mjs +70 -0
  62. package/dist/esm/node_modules/classnames/index.mjs.map +1 -0
  63. package/dist/esm/node_modules/ua-parser-js/src/ua-parser.mjs +807 -0
  64. package/dist/esm/node_modules/ua-parser-js/src/ua-parser.mjs.map +1 -0
  65. package/dist/esm/theme-css/constants.mjs +13 -0
  66. package/dist/esm/theme-css/constants.mjs.map +1 -0
  67. package/dist/esm/theme-css/content-theme/content-theme.mjs +26 -0
  68. package/dist/esm/theme-css/content-theme/content-theme.mjs.map +1 -0
  69. package/dist/esm/theme-css/content-theme/content-theme.module.css.mjs +4 -0
  70. package/dist/esm/theme-css/content-theme/content-theme.module.css.mjs.map +1 -0
  71. package/dist/esm/theme-css/cookie-theme-provider.mjs +124 -0
  72. package/dist/esm/theme-css/cookie-theme-provider.mjs.map +1 -0
  73. package/dist/esm/theme-css/document-head-contents/element-theme-script.mjs +69 -0
  74. package/dist/esm/theme-css/document-head-contents/element-theme-script.mjs.map +1 -0
  75. package/dist/esm/theme-css/theme-provider/theme-provider.mjs +42 -0
  76. package/dist/esm/theme-css/theme-provider/theme-provider.mjs.map +1 -0
  77. package/dist/esm/theme-css/theme-toggler/theme-toggler.mjs +68 -0
  78. package/dist/esm/theme-css/theme-toggler/theme-toggler.mjs.map +1 -0
  79. package/dist/esm/theme-css/theme-toggler/theme-toggler.module.css.mjs +4 -0
  80. package/dist/esm/theme-css/theme-toggler/theme-toggler.module.css.mjs.map +1 -0
  81. package/dist/esm/theme-css/use-theme-toggle.mjs +9 -0
  82. package/dist/esm/theme-css/use-theme-toggle.mjs.map +1 -0
  83. package/dist/esm/theme-css/utils/cookies.mjs +17 -0
  84. package/dist/esm/theme-css/utils/cookies.mjs.map +1 -0
  85. package/dist/esm/theme-css/utils/set-theme-cookie.mjs +33 -0
  86. package/dist/esm/theme-css/utils/set-theme-cookie.mjs.map +1 -0
  87. package/dist/esm/utils/cookies-client-side.mjs +55 -0
  88. package/dist/esm/utils/cookies-client-side.mjs.map +1 -0
  89. package/dist/esm/utils/get-top-level-domain.mjs +14 -0
  90. package/dist/esm/utils/get-top-level-domain.mjs.map +1 -0
  91. package/dist/esm/utils/index.mjs +8 -0
  92. package/dist/esm/utils/index.mjs.map +1 -0
  93. package/dist/esm/utils/modalRoot.mjs +17 -0
  94. package/dist/esm/utils/modalRoot.mjs.map +1 -0
  95. package/dist/types/hooks/index.d.ts +1 -0
  96. package/dist/types/hooks/index.d.ts.map +1 -0
  97. package/dist/types/index.d.ts +3 -0
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/theme-css/block/Block.d.ts +2 -0
  100. package/dist/types/theme-css/block/Block.d.ts.map +1 -0
  101. package/dist/types/theme-css/block/index.d.ts +2 -0
  102. package/dist/types/theme-css/block/index.d.ts.map +1 -0
  103. package/dist/types/theme-css/constants.d.ts +9 -0
  104. package/dist/types/theme-css/constants.d.ts.map +1 -0
  105. package/dist/types/theme-css/content-theme/content-theme.d.ts +7 -0
  106. package/dist/types/theme-css/content-theme/content-theme.d.ts.map +1 -0
  107. package/dist/types/theme-css/content-theme/index.d.ts +2 -0
  108. package/dist/types/theme-css/content-theme/index.d.ts.map +1 -0
  109. package/dist/types/theme-css/cookie-theme-provider.d.ts +20 -0
  110. package/dist/types/theme-css/cookie-theme-provider.d.ts.map +1 -0
  111. package/dist/types/theme-css/document-head-contents/element-theme-script.d.ts +6 -0
  112. package/dist/types/theme-css/document-head-contents/element-theme-script.d.ts.map +1 -0
  113. package/dist/types/theme-css/document-head-contents/index.d.ts +2 -0
  114. package/dist/types/theme-css/document-head-contents/index.d.ts.map +1 -0
  115. package/dist/types/theme-css/index.d.ts +7 -0
  116. package/dist/types/theme-css/index.d.ts.map +1 -0
  117. package/dist/types/theme-css/theme-provider/index.d.ts +2 -0
  118. package/dist/types/theme-css/theme-provider/index.d.ts.map +1 -0
  119. package/dist/types/theme-css/theme-provider/theme-provider.d.ts +10 -0
  120. package/dist/types/theme-css/theme-provider/theme-provider.d.ts.map +1 -0
  121. package/dist/types/theme-css/theme-toggler/index.d.ts +2 -0
  122. package/dist/types/theme-css/theme-toggler/index.d.ts.map +1 -0
  123. package/dist/types/theme-css/theme-toggler/theme-toggler.d.ts +5 -0
  124. package/dist/types/theme-css/theme-toggler/theme-toggler.d.ts.map +1 -0
  125. package/dist/types/theme-css/use-theme-toggle.d.ts +3 -0
  126. package/dist/types/theme-css/use-theme-toggle.d.ts.map +1 -0
  127. package/dist/types/theme-css/utils/cookies.d.ts +3 -0
  128. package/dist/types/theme-css/utils/cookies.d.ts.map +1 -0
  129. package/dist/types/theme-css/utils/set-theme-cookie.d.ts +3 -0
  130. package/dist/types/theme-css/utils/set-theme-cookie.d.ts.map +1 -0
  131. package/dist/types/types/index.d.ts +1 -0
  132. package/dist/types/types/index.d.ts.map +1 -0
  133. package/dist/types/utils/__tests__/get-top-level-domain.test.d.ts +2 -0
  134. package/dist/types/utils/__tests__/get-top-level-domain.test.d.ts.map +1 -0
  135. package/dist/types/utils/cookies-client-side.d.ts +6 -0
  136. package/dist/types/utils/cookies-client-side.d.ts.map +1 -0
  137. package/dist/types/utils/get-top-level-domain.d.ts +2 -0
  138. package/dist/types/utils/get-top-level-domain.d.ts.map +1 -0
  139. package/dist/types/utils/index.d.ts +6 -0
  140. package/dist/types/utils/index.d.ts.map +1 -0
  141. package/dist/types/utils/modalRoot.d.ts +3 -0
  142. package/dist/types/utils/modalRoot.d.ts.map +1 -0
  143. package/dist/types/utils/types.d.ts +11 -0
  144. package/dist/types/utils/types.d.ts.map +1 -0
  145. package/package.json +68 -0
@@ -0,0 +1,807 @@
1
+ import { __module as uaParser$1 } from '../../../_virtual/ua-parser2.mjs';
2
+
3
+ var uaParser = uaParser$1.exports;
4
+ var hasRequiredUaParser;
5
+ function requireUaParser() {
6
+ if (hasRequiredUaParser) return uaParser$1.exports;
7
+ hasRequiredUaParser = 1;
8
+ (function (module, exports) {
9
+ /////////////////////////////////////////////////////////////////////////////////
10
+ /* UAParser.js v1.0.41
11
+ Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
12
+ MIT License */ /*
13
+ Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
14
+ Supports browser & node.js environment.
15
+ Demo : https://faisalman.github.io/ua-parser-js
16
+ Source : https://github.com/faisalman/ua-parser-js */
17
+ /////////////////////////////////////////////////////////////////////////////////
18
+
19
+ (function (window, undefined$1) {
20
+
21
+ //////////////
22
+ // Constants
23
+ /////////////
24
+ var LIBVERSION = '1.0.41',
25
+ EMPTY = '',
26
+ UNKNOWN = '?',
27
+ FUNC_TYPE = 'function',
28
+ UNDEF_TYPE = 'undefined',
29
+ OBJ_TYPE = 'object',
30
+ STR_TYPE = 'string',
31
+ MAJOR = 'major',
32
+ MODEL = 'model',
33
+ NAME = 'name',
34
+ TYPE = 'type',
35
+ VENDOR = 'vendor',
36
+ VERSION = 'version',
37
+ ARCHITECTURE = 'architecture',
38
+ CONSOLE = 'console',
39
+ MOBILE = 'mobile',
40
+ TABLET = 'tablet',
41
+ SMARTTV = 'smarttv',
42
+ WEARABLE = 'wearable',
43
+ EMBEDDED = 'embedded',
44
+ UA_MAX_LENGTH = 500;
45
+ var AMAZON = 'Amazon',
46
+ APPLE = 'Apple',
47
+ ASUS = 'ASUS',
48
+ BLACKBERRY = 'BlackBerry',
49
+ BROWSER = 'Browser',
50
+ CHROME = 'Chrome',
51
+ EDGE = 'Edge',
52
+ FIREFOX = 'Firefox',
53
+ GOOGLE = 'Google',
54
+ HONOR = 'Honor',
55
+ HUAWEI = 'Huawei',
56
+ LENOVO = 'Lenovo',
57
+ LG = 'LG',
58
+ MICROSOFT = 'Microsoft',
59
+ MOTOROLA = 'Motorola',
60
+ NVIDIA = 'Nvidia',
61
+ ONEPLUS = 'OnePlus',
62
+ OPERA = 'Opera',
63
+ OPPO = 'OPPO',
64
+ SAMSUNG = 'Samsung',
65
+ SHARP = 'Sharp',
66
+ SONY = 'Sony',
67
+ XIAOMI = 'Xiaomi',
68
+ ZEBRA = 'Zebra',
69
+ FACEBOOK = 'Facebook',
70
+ CHROMIUM_OS = 'Chromium OS',
71
+ MAC_OS = 'Mac OS',
72
+ SUFFIX_BROWSER = ' Browser';
73
+
74
+ ///////////
75
+ // Helper
76
+ //////////
77
+
78
+ var extend = function (regexes, extensions) {
79
+ var mergedRegexes = {};
80
+ for (var i in regexes) {
81
+ if (extensions[i] && extensions[i].length % 2 === 0) {
82
+ mergedRegexes[i] = extensions[i].concat(regexes[i]);
83
+ } else {
84
+ mergedRegexes[i] = regexes[i];
85
+ }
86
+ }
87
+ return mergedRegexes;
88
+ },
89
+ enumerize = function (arr) {
90
+ var enums = {};
91
+ for (var i = 0; i < arr.length; i++) {
92
+ enums[arr[i].toUpperCase()] = arr[i];
93
+ }
94
+ return enums;
95
+ },
96
+ has = function (str1, str2) {
97
+ return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
98
+ },
99
+ lowerize = function (str) {
100
+ return str.toLowerCase();
101
+ },
102
+ majorize = function (version) {
103
+ return typeof version === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split('.')[0] : undefined$1;
104
+ },
105
+ trim = function (str, len) {
106
+ if (typeof str === STR_TYPE) {
107
+ str = str.replace(/^\s\s*/, EMPTY);
108
+ return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
109
+ }
110
+ };
111
+
112
+ ///////////////
113
+ // Map helper
114
+ //////////////
115
+
116
+ var rgxMapper = function (ua, arrays) {
117
+ var i = 0,
118
+ j,
119
+ k,
120
+ p,
121
+ q,
122
+ matches,
123
+ match;
124
+
125
+ // loop through all regexes maps
126
+ while (i < arrays.length && !matches) {
127
+ var regex = arrays[i],
128
+ // even sequence (0,2,4,..)
129
+ props = arrays[i + 1]; // odd sequence (1,3,5,..)
130
+ j = k = 0;
131
+
132
+ // try matching uastring with regexes
133
+ while (j < regex.length && !matches) {
134
+ if (!regex[j]) {
135
+ break;
136
+ }
137
+ matches = regex[j++].exec(ua);
138
+ if (!!matches) {
139
+ for (p = 0; p < props.length; p++) {
140
+ match = matches[++k];
141
+ q = props[p];
142
+ // check if given property is actually array
143
+ if (typeof q === OBJ_TYPE && q.length > 0) {
144
+ if (q.length === 2) {
145
+ if (typeof q[1] == FUNC_TYPE) {
146
+ // assign modified match
147
+ this[q[0]] = q[1].call(this, match);
148
+ } else {
149
+ // assign given value, ignore regex match
150
+ this[q[0]] = q[1];
151
+ }
152
+ } else if (q.length === 3) {
153
+ // check whether function or regex
154
+ if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
155
+ // call function (usually string mapper)
156
+ this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined$1;
157
+ } else {
158
+ // sanitize match using given regex
159
+ this[q[0]] = match ? match.replace(q[1], q[2]) : undefined$1;
160
+ }
161
+ } else if (q.length === 4) {
162
+ this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined$1;
163
+ }
164
+ } else {
165
+ this[q] = match ? match : undefined$1;
166
+ }
167
+ }
168
+ }
169
+ }
170
+ i += 2;
171
+ }
172
+ },
173
+ strMapper = function (str, map) {
174
+ for (var i in map) {
175
+ // check if current value is array
176
+ if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
177
+ for (var j = 0; j < map[i].length; j++) {
178
+ if (has(map[i][j], str)) {
179
+ return i === UNKNOWN ? undefined$1 : i;
180
+ }
181
+ }
182
+ } else if (has(map[i], str)) {
183
+ return i === UNKNOWN ? undefined$1 : i;
184
+ }
185
+ }
186
+ return map.hasOwnProperty('*') ? map['*'] : str;
187
+ };
188
+
189
+ ///////////////
190
+ // String map
191
+ //////////////
192
+
193
+ // Safari < 3.0
194
+ var oldSafariMap = {
195
+ '1.0': '/8',
196
+ '1.2': '/1',
197
+ '1.3': '/3',
198
+ '2.0': '/412',
199
+ '2.0.2': '/416',
200
+ '2.0.3': '/417',
201
+ '2.0.4': '/419',
202
+ '?': '/'
203
+ },
204
+ windowsVersionMap = {
205
+ 'ME': '4.90',
206
+ 'NT 3.11': 'NT3.51',
207
+ 'NT 4.0': 'NT4.0',
208
+ '2000': 'NT 5.0',
209
+ 'XP': ['NT 5.1', 'NT 5.2'],
210
+ 'Vista': 'NT 6.0',
211
+ '7': 'NT 6.1',
212
+ '8': 'NT 6.2',
213
+ '8.1': 'NT 6.3',
214
+ '10': ['NT 6.4', 'NT 10.0'],
215
+ 'RT': 'ARM'
216
+ };
217
+
218
+ //////////////
219
+ // Regex map
220
+ /////////////
221
+
222
+ var regexes = {
223
+ browser: [[/\b(?:crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
224
+ ], [VERSION, [NAME, 'Chrome']], [/edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge
225
+ ], [VERSION, [NAME, 'Edge']], [
226
+ // Presto based
227
+ /(opera mini)\/([-\w\.]+)/i,
228
+ // Opera Mini
229
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
230
+ // Opera Mobi/Tablet
231
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i // Opera
232
+ ], [NAME, VERSION], [/opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0
233
+ ], [VERSION, [NAME, OPERA + ' Mini']], [/\bop(?:rg)?x\/([\w\.]+)/i // Opera GX
234
+ ], [VERSION, [NAME, OPERA + ' GX']], [/\bopr\/([\w\.]+)/i // Opera Webkit
235
+ ], [VERSION, [NAME, OPERA]], [
236
+ // Mixed
237
+ /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i // Baidu
238
+ ], [VERSION, [NAME, 'Baidu']], [/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i // Maxthon
239
+ ], [VERSION, [NAME, 'Maxthon']], [/(kindle)\/([\w\.]+)/i,
240
+ // Kindle
241
+ /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
242
+ // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
243
+ // Trident based
244
+ /(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,
245
+ // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
246
+ /(?:ms|\()(ie) ([\w\.]+)/i,
247
+ // Internet Explorer
248
+
249
+ // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
250
+ /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,
251
+ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
252
+ /(heytap|ovi|115)browser\/([\d\.]+)/i,
253
+ // HeyTap/Ovi/115
254
+ /(weibo)__([\d\.]+)/i // Weibo
255
+ ], [NAME, VERSION], [/quark(?:pc)?\/([-\w\.]+)/i // Quark
256
+ ], [VERSION, [NAME, 'Quark']], [/\bddg\/([\w\.]+)/i // DuckDuckGo
257
+ ], [VERSION, [NAME, 'DuckDuckGo']], [/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
258
+ ], [VERSION, [NAME, 'UC' + BROWSER]], [/microm.+\bqbcore\/([\w\.]+)/i,
259
+ // WeChat Desktop for Windows Built-in Browser
260
+ /\bqbcore\/([\w\.]+).+microm/i, /micromessenger\/([\w\.]+)/i // WeChat
261
+ ], [VERSION, [NAME, 'WeChat']], [/konqueror\/([\w\.]+)/i // Konqueror
262
+ ], [VERSION, [NAME, 'Konqueror']], [/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
263
+ ], [VERSION, [NAME, 'IE']], [/ya(?:search)?browser\/([\w\.]+)/i // Yandex
264
+ ], [VERSION, [NAME, 'Yandex']], [/slbrowser\/([\w\.]+)/i // Smart Lenovo Browser
265
+ ], [VERSION, [NAME, 'Smart Lenovo ' + BROWSER]], [/(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
266
+ ], [[NAME, /(.+)/, '$1 Secure ' + BROWSER], VERSION], [/\bfocus\/([\w\.]+)/i // Firefox Focus
267
+ ], [VERSION, [NAME, FIREFOX + ' Focus']], [/\bopt\/([\w\.]+)/i // Opera Touch
268
+ ], [VERSION, [NAME, OPERA + ' Touch']], [/coc_coc\w+\/([\w\.]+)/i // Coc Coc Browser
269
+ ], [VERSION, [NAME, 'Coc Coc']], [/dolfin\/([\w\.]+)/i // Dolphin
270
+ ], [VERSION, [NAME, 'Dolphin']], [/coast\/([\w\.]+)/i // Opera Coast
271
+ ], [VERSION, [NAME, OPERA + ' Coast']], [/miuibrowser\/([\w\.]+)/i // MIUI Browser
272
+ ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [/fxios\/([\w\.-]+)/i // Firefox for iOS
273
+ ], [VERSION, [NAME, FIREFOX]], [/\bqihoobrowser\/?([\w\.]*)/i // 360
274
+ ], [VERSION, [NAME, '360']], [/\b(qq)\/([\w\.]+)/i // QQ
275
+ ], [[NAME, /(.+)/, '$1Browser'], VERSION], [/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [
276
+ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
277
+ /samsungbrowser\/([\w\.]+)/i // Samsung Internet
278
+ ], [VERSION, [NAME, SAMSUNG + ' Internet']], [/metasr[\/ ]?([\d\.]+)/i // Sogou Explorer
279
+ ], [VERSION, [NAME, 'Sogou Explorer']], [/(sogou)mo\w+\/([\d\.]+)/i // Sogou Mobile
280
+ ], [[NAME, 'Sogou Mobile'], VERSION], [/(electron)\/([\w\.]+) safari/i,
281
+ // Electron-based App
282
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
283
+ // Tesla
284
+ /m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i // QQ/2345
285
+ ], [NAME, VERSION], [/(lbbrowser|rekonq)/i,
286
+ // LieBao Browser/Rekonq
287
+ /\[(linkedin)app\]/i // LinkedIn App for iOS & Android
288
+ ], [NAME], [/ome\/([\w\.]+) \w* ?(iron) saf/i,
289
+ // Iron
290
+ /ome\/([\w\.]+).+qihu (360)[es]e/i // 360
291
+ ], [VERSION, NAME], [
292
+ // WebView
293
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
294
+ ], [[NAME, FACEBOOK], VERSION], [/(Klarna)\/([\w\.]+)/i,
295
+ // Klarna Shopping Browser for iOS & Android
296
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
297
+ // Kakao App
298
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
299
+ // Naver InApp
300
+ /(daum)apps[\/ ]([\w\.]+)/i,
301
+ // Daum App
302
+ /safari (line)\/([\w\.]+)/i,
303
+ // Line App for iOS
304
+ /\b(line)\/([\w\.]+)\/iab/i,
305
+ // Line App for Android
306
+ /(alipay)client\/([\w\.]+)/i,
307
+ // Alipay
308
+ /(twitter)(?:and| f.+e\/([\w\.]+))/i,
309
+ // Twitter
310
+ /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i // Chromium/Instagram/Snapchat
311
+ ], [NAME, VERSION], [/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
312
+ ], [VERSION, [NAME, 'GSA']], [/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
313
+ ], [VERSION, [NAME, 'TikTok']], [/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
314
+ ], [VERSION, [NAME, CHROME + ' Headless']], [/ wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
315
+ ], [[NAME, CHROME + ' WebView'], VERSION], [/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
316
+ ], [VERSION, [NAME, 'Android ' + BROWSER]], [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia
317
+ ], [NAME, VERSION], [/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i // Mobile Safari
318
+ ], [VERSION, [NAME, 'Mobile Safari']], [/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile
319
+ ], [VERSION, NAME], [/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
320
+ ], [NAME, [VERSION, strMapper, oldSafariMap]], [/(webkit|khtml)\/([\w\.]+)/i], [NAME, VERSION], [
321
+ // Gecko based
322
+ /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
323
+ ], [[NAME, 'Netscape'], VERSION], [/(wolvic|librewolf)\/([\w\.]+)/i // Wolvic/LibreWolf
324
+ ], [NAME, VERSION], [/mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
325
+ ], [VERSION, [NAME, FIREFOX + ' Reality']], [/ekiohf.+(flow)\/([\w\.]+)/i,
326
+ // Flow
327
+ /(swiftfox)/i,
328
+ // Swiftfox
329
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,
330
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
331
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
332
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
333
+ /(firefox)\/([\w\.]+)/i,
334
+ // Other Firefox-based
335
+ /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
336
+ // Mozilla
337
+
338
+ // Other
339
+ /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
340
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird
341
+ /\b(links) \(([\w\.]+)/i // Links
342
+ ], [NAME, [VERSION, /_/g, '.']], [/(cobalt)\/([\w\.]+)/i // Cobalt
343
+ ], [NAME, [VERSION, /master.|lts./, ""]]],
344
+ cpu: [[/\b((amd|x|x86[-_]?|wow|win)64)\b/i // AMD64 (x64)
345
+ ], [[ARCHITECTURE, 'amd64']], [/(ia32(?=;))/i,
346
+ // IA32 (quicktime)
347
+ /\b((i[346]|x)86)(pc)?\b/i // IA32 (x86)
348
+ ], [[ARCHITECTURE, 'ia32']], [/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i // ARM64
349
+ ], [[ARCHITECTURE, 'arm64']], [/\b(arm(v[67])?ht?n?[fl]p?)\b/i // ARMHF
350
+ ], [[ARCHITECTURE, 'armhf']], [
351
+ // PocketPC mistakenly identified as PowerPC
352
+ /( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i], [[ARCHITECTURE, 'arm']], [/((ppc|powerpc)(64)?)( mac|;|\))/i // PowerPC
353
+ ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [/ sun4\w[;\)]/i // SPARC
354
+ ], [[ARCHITECTURE, 'sparc']], [/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i
355
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
356
+ ], [[ARCHITECTURE, lowerize]]],
357
+ device: [[
358
+ //////////////////////////
359
+ // MOBILES & TABLETS
360
+ /////////////////////////
361
+
362
+ // Samsung
363
+ /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, /samsung[- ]((?!sm-[lr])[-\w]+)/i, /sec-(sgh\w+)/i], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
364
+ // Apple
365
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
366
+ ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [/\((ipad);[-\w\),; ]+apple/i,
367
+ // iPad
368
+ /applecoremedia\/[\w\.]+ \((ipad)/i, /\b(ipad)\d\d?,\d\d?[;\]].+ios/i], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [/(macintosh);/i], [MODEL, [VENDOR, APPLE]], [
369
+ // Sharp
370
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
371
+ // Honor
372
+ /\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [/honor([-\w ]+)[;\)]/i], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [
373
+ // Huawei
374
+ /\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [/(?:huawei)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
375
+ // Xiaomi
376
+ /oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i, /\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i // Mi Pad tablets
377
+ ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
378
+ // Xiaomi POCO
379
+ /\b; (\w+) build\/hm\1/i,
380
+ // Xiaomi Hongmi 'numeric' models
381
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
382
+ // Xiaomi Hongmi
383
+ /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
384
+ // Xiaomi Redmi
385
+ /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
386
+ // Xiaomi Redmi 'numeric' models
387
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,
388
+ // Xiaomi Mi
389
+ / ([\w ]+) miui\/v?\d/i], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
390
+ // OPPO
391
+ /; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [/\b(opd2(\d{3}a?))(?: bui|\))/i], [MODEL, [VENDOR, strMapper, {
392
+ 'OnePlus': ['304', '403', '203'],
393
+ '*': OPPO
394
+ }], [TYPE, TABLET]], [
395
+ // Vivo
396
+ /vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
397
+ // Realme
398
+ /\b(rmx[1-3]\d{3})(?: bui|;|\))/i], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
399
+ // Motorola
400
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, /\bmot(?:orola)?[- ](\w*)/i, /((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [/\b(mz60\d|xoom[2 ]{0,2}) build\//i], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [
401
+ // LG
402
+ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, /\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i, /\blg-?([\d\w]+) bui/i], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
403
+ // Lenovo
404
+ /(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i, /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [
405
+ // Nokia
406
+ /(nokia) (t[12][01])/i], [VENDOR, MODEL, [TYPE, TABLET]], [/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i, /nokia[-_ ]?(([-\w\. ]*))/i], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [
407
+ // Google
408
+ /(pixel (c|tablet))\b/i // Google Pixel C/Tablet
409
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i // Google Pixel
410
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
411
+ // Sony
412
+ /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [/sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [
413
+ // OnePlus
414
+ / (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [
415
+ // Amazon
416
+ /(alexa)webm/i, /(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,
417
+ // Kindle Fire without Silk / Echo Show
418
+ /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
419
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
420
+ ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [
421
+ // BlackBerry
422
+ /(playbook);[-\w\),; ]+(rim)/i // BlackBerry PlayBook
423
+ ], [MODEL, VENDOR, [TYPE, TABLET]], [/\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i // BlackBerry 10
424
+ ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [
425
+ // Asus
426
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [
427
+ // HTC
428
+ /(nexus 9)/i // HTC Nexus 9
429
+ ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
430
+ // HTC
431
+
432
+ // ZTE
433
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
434
+ ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
435
+ // TCL
436
+ /droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [
437
+ // itel
438
+ /(itel) ((\w+))/i], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, {
439
+ 'tablet': ['p10001l', 'w7001'],
440
+ '*': 'mobile'
441
+ }]], [
442
+ // Acer
443
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
444
+ // Meizu
445
+ /droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
446
+ // Ulefone
447
+ /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
448
+ // Energizer
449
+ /; (energy ?\w+)(?: bui|\))/i, /; energizer ([\w ]+)(?: bui|\))/i], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [
450
+ // Cat
451
+ /; cat (b35);/i, /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [
452
+ // Smartfren
453
+ /((?:new )?andromax[\w- ]+)(?: bui|\))/i], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [
454
+ // Nothing
455
+ /droid.+; (a(?:015|06[35]|142p?))/i], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
456
+ // Archos
457
+ /; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i, /archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [/archos ([\w ]+)( b|\))/i, /; (ac[3-6]\d\w{2,8})( b|\))/i], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [
458
+ // MIXED
459
+ /(imo) (tab \w+)/i,
460
+ // IMO
461
+ /(infinix) (x1101b?)/i // Infinix XPad
462
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
463
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
464
+ /; (hmd|imo) ([\w ]+?)(?: bui|\))/i,
465
+ // HMD/IMO
466
+ /(hp) ([\w ]+\w)/i,
467
+ // HP iPAQ
468
+ /(microsoft); (lumia[\w ]+)/i,
469
+ // Microsoft Lumia
470
+ /(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,
471
+ // Lenovo
472
+ /(oppo) ?([\w ]+) bui/i // OPPO
473
+ ], [VENDOR, MODEL, [TYPE, MOBILE]], [/(kobo)\s(ereader|touch)/i,
474
+ // Kobo
475
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i,
476
+ // HP TouchPad
477
+ /(kindle)\/([\w\.]+)/i,
478
+ // Kindle
479
+ /(nook)[\w ]+build\/(\w+)/i,
480
+ // Nook
481
+ /(dell) (strea[kpr\d ]*[\dko])/i,
482
+ // Dell Streak
483
+ /(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
484
+ // Le Pan Tablets
485
+ /(trinity)[- ]*(t\d{3}) bui/i,
486
+ // Trinity Tablets
487
+ /(gigaset)[- ]+(q\w{1,9}) bui/i,
488
+ // Gigaset Tablets
489
+ /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
490
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [/(surface duo)/i // Surface Duo
491
+ ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [/droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone
492
+ ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [/(u304aa)/i // AT&T
493
+ ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [/\bsie-(\w*)/i // Siemens
494
+ ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [/\b(rct\w+) b/i // RCA Tablets
495
+ ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [/\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
496
+ ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [/\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
497
+ ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
498
+ ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [/\b(tm\d{3}\w+) b/i], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [/\b(k88) b/i // ZTE K Series Tablet
499
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [/\b(nx\d{3}j) b/i // ZTE Nubia
500
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [/\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
501
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [/\b(zur\d{3}) b/i // Swiss ZUR Tablet
502
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [/\b((zeki)?tb.*\b) b/i // Zeki Tablets
503
+ ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [/\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
504
+ ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [/\b(ns-?\w{0,9}) b/i // Insignia Tablets
505
+ ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [/\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
506
+ ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
507
+ ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [/\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
508
+ ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [/\b(ph-1) /i // Essential PH-1
509
+ ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [/\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
510
+ ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [/\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
511
+ ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [/\btu_(1491) b/i // Rotor Tablets
512
+ ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i // Nvidia Tablets
513
+ ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [/(sprint) (\w+)/i // Sprint Phones
514
+ ], [VENDOR, MODEL, [TYPE, MOBILE]], [/(kin\.[onetw]{3})/i // Microsoft Kin
515
+ ], [[MODEL, /\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i // Zebra
516
+ ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
517
+ ///////////////////
518
+ // SMARTTVS
519
+ ///////////////////
520
+
521
+ /smart-tv.+(samsung)/i // Samsung
522
+ ], [VENDOR, [TYPE, SMARTTV]], [/hbbtv.+maple;(\d+)/i], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
523
+ ], [[VENDOR, LG], [TYPE, SMARTTV]], [/(apple) ?tv/i // Apple TV
524
+ ], [VENDOR, [MODEL, APPLE + ' TV'], [TYPE, SMARTTV]], [/crkey/i // Google Chromecast
525
+ ], [[MODEL, CHROME + 'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [/droid.+aft(\w+)( bui|\))/i // Fire TV
526
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [/(shield \w+ tv)/i // Nvidia Shield TV
527
+ ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [/\(dtv[\);].+(aquos)/i, /(aquos-tv[\w ]+)\)/i // Sharp
528
+ ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]], [/(bravia[\w ]+)( bui|\))/i // Sony
529
+ ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [/(mi(tv|box)-?\w+) bui/i // Xiaomi
530
+ ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [/Hbbtv.*(technisat) (.*);/i // TechniSAT
531
+ ], [VENDOR, MODEL, [TYPE, SMARTTV]], [/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
532
+ // Roku
533
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
534
+ ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
535
+ // SmartTV from Unidentified Vendors
536
+ /droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i], [MODEL, [TYPE, SMARTTV]], [/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i], [[TYPE, SMARTTV]], [
537
+ ///////////////////
538
+ // CONSOLES
539
+ ///////////////////
540
+
541
+ /(ouya)/i,
542
+ // Ouya
543
+ /(nintendo) ([wids3utch]+)/i // Nintendo
544
+ ], [VENDOR, MODEL, [TYPE, CONSOLE]], [/droid.+; (shield)( bui|\))/i // Nvidia Portable
545
+ ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [/(playstation \w+)/i // Playstation
546
+ ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [/\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
547
+ ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
548
+ ///////////////////
549
+ // WEARABLES
550
+ ///////////////////
551
+
552
+ /\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i // Samsung Galaxy Watch
553
+ ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [/((pebble))app/i,
554
+ // Pebble
555
+ /(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i // Asus ZenWatch / LG Watch / Pixel Watch
556
+ ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch
557
+ ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
558
+ ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [/(opwwe\d{3})/i // OnePlus Watch
559
+ ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [/(moto 360)/i // Motorola 360
560
+ ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [/(smartwatch 3)/i // Sony SmartWatch
561
+ ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [/(g watch r)/i // LG G Watch R
562
+ ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [/droid.+; (wt63?0{2,3})\)/i], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
563
+ ///////////////////
564
+ // XR
565
+ ///////////////////
566
+
567
+ /droid.+; (glass) \d/i // Google Glass
568
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [/(pico) (4|neo3(?: link|pro)?)/i // Pico
569
+ ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/; (quest( \d| pro)?)/i // Oculus Quest
570
+ ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
571
+ ///////////////////
572
+ // EMBEDDED
573
+ ///////////////////
574
+
575
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
576
+ ], [VENDOR, [TYPE, EMBEDDED]], [/(aeobc)\b/i // Echo Dot
577
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [/(homepod).+mac os/i // Apple HomePod
578
+ ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [/windows iot/i], [[TYPE, EMBEDDED]], [
579
+ ////////////////////
580
+ // MIXED (GENERIC)
581
+ ///////////////////
582
+
583
+ /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
584
+ ], [MODEL, [TYPE, MOBILE]], [/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors
585
+ ], [MODEL, [TYPE, TABLET]], [/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet
586
+ ], [[TYPE, TABLET]], [/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile
587
+ ], [[TYPE, MOBILE]], [/droid .+?; ([\w\. -]+)( bui|\))/i // Generic Android Device
588
+ ], [MODEL, [VENDOR, 'Generic']]],
589
+ engine: [[/windows.+ edge\/([\w\.]+)/i // EdgeHTML
590
+ ], [VERSION, [NAME, EDGE + 'HTML']], [/(arkweb)\/([\w\.]+)/i // ArkWeb
591
+ ], [NAME, VERSION], [/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
592
+ ], [VERSION, [NAME, 'Blink']], [/(presto)\/([\w\.]+)/i,
593
+ // Presto
594
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,
595
+ // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
596
+ /ekioh(flow)\/([\w\.]+)/i,
597
+ // Flow
598
+ /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
599
+ // KHTML/Tasman/Links
600
+ /(icab)[\/ ]([23]\.[\d\.]+)/i,
601
+ // iCab
602
+
603
+ /\b(libweb)/i // LibWeb
604
+ ], [NAME, VERSION], [/ladybird\//i], [[NAME, 'LibWeb']], [/rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
605
+ ], [VERSION, NAME]],
606
+ os: [[
607
+ // Windows
608
+ /microsoft (windows) (vista|xp)/i // Windows (iTunes)
609
+ ], [NAME, VERSION], [/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i // Windows Phone
610
+ ], [NAME, [VERSION, strMapper, windowsVersionMap]], [/windows nt 6\.2; (arm)/i,
611
+ // Windows RT
612
+ /windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i, /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [
613
+ // iOS/macOS
614
+ /[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,
615
+ // iOS
616
+ /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i, /cfnetwork\/.+darwin/i], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [/(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
617
+ ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
618
+ // Mobile OSes
619
+ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
620
+ ], [VERSION, NAME], [/(ubuntu) ([\w\.]+) like android/i // Ubuntu Touch
621
+ ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [
622
+ // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
623
+ /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i], [NAME, VERSION], [/\(bb(10);/i // BlackBerry 10
624
+ ], [VERSION, [NAME, BLACKBERRY]], [/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i // Symbian
625
+ ], [VERSION, [NAME, 'Symbian']], [/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i // Firefox OS
626
+ ], [VERSION, [NAME, FIREFOX + ' OS']], [/web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
627
+ ], [VERSION, [NAME, 'webOS']], [/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
628
+ ], [VERSION, [NAME, 'watchOS']], [
629
+ // Google Chromecast
630
+ /crkey\/([\d\.]+)/i // Google Chromecast
631
+ ], [VERSION, [NAME, CHROME + 'cast']], [/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
632
+ ], [[NAME, CHROMIUM_OS], VERSION], [
633
+ // Smart TVs
634
+ /panasonic;(viera)/i,
635
+ // Panasonic Viera
636
+ /(netrange)mmh/i,
637
+ // Netrange
638
+ /(nettv)\/(\d+\.[\w\.]+)/i,
639
+ // NetTV
640
+
641
+ // Console
642
+ /(nintendo|playstation) ([wids345portablevuch]+)/i,
643
+ // Nintendo/Playstation
644
+ /(xbox); +xbox ([^\);]+)/i,
645
+ // Microsoft Xbox (360, One, X, S, Series X, Series S)
646
+
647
+ // Other
648
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
649
+ // Joli/Palm
650
+ /(mint)[\/\(\) ]?(\w*)/i,
651
+ // Mint
652
+ /(mageia|vectorlinux)[; ]/i,
653
+ // Mageia/VectorLinux
654
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
655
+ // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
656
+ /(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,
657
+ // Hurd/Linux
658
+ /(gnu) ?([\w\.]*)/i,
659
+ // GNU
660
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
661
+ // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
662
+ /(haiku) (\w+)/i // Haiku
663
+ ], [NAME, VERSION], [/(sunos) ?([\w\.\d]*)/i // Solaris
664
+ ], [[NAME, 'Solaris'], VERSION], [/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
665
+ // Solaris
666
+ /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
667
+ // AIX
668
+ /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
669
+ // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
670
+ /(unix) ?([\w\.]*)/i // UNIX
671
+ ], [NAME, VERSION]]
672
+ };
673
+
674
+ /////////////////
675
+ // Constructor
676
+ ////////////////
677
+
678
+ var UAParser = function (ua, extensions) {
679
+ if (typeof ua === OBJ_TYPE) {
680
+ extensions = ua;
681
+ ua = undefined$1;
682
+ }
683
+ if (!(this instanceof UAParser)) {
684
+ return new UAParser(ua, extensions).getResult();
685
+ }
686
+ var _navigator = typeof window !== UNDEF_TYPE && window.navigator ? window.navigator : undefined$1;
687
+ var _ua = ua || (_navigator && _navigator.userAgent ? _navigator.userAgent : EMPTY);
688
+ var _uach = _navigator && _navigator.userAgentData ? _navigator.userAgentData : undefined$1;
689
+ var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
690
+ var _isSelfNav = _navigator && _navigator.userAgent == _ua;
691
+ this.getBrowser = function () {
692
+ var _browser = {};
693
+ _browser[NAME] = undefined$1;
694
+ _browser[VERSION] = undefined$1;
695
+ rgxMapper.call(_browser, _ua, _rgxmap.browser);
696
+ _browser[MAJOR] = majorize(_browser[VERSION]);
697
+ // Brave-specific detection
698
+ if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
699
+ _browser[NAME] = 'Brave';
700
+ }
701
+ return _browser;
702
+ };
703
+ this.getCPU = function () {
704
+ var _cpu = {};
705
+ _cpu[ARCHITECTURE] = undefined$1;
706
+ rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
707
+ return _cpu;
708
+ };
709
+ this.getDevice = function () {
710
+ var _device = {};
711
+ _device[VENDOR] = undefined$1;
712
+ _device[MODEL] = undefined$1;
713
+ _device[TYPE] = undefined$1;
714
+ rgxMapper.call(_device, _ua, _rgxmap.device);
715
+ if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
716
+ _device[TYPE] = MOBILE;
717
+ }
718
+ // iPadOS-specific detection: identified as Mac, but has some iOS-only properties
719
+ if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
720
+ _device[MODEL] = 'iPad';
721
+ _device[TYPE] = TABLET;
722
+ }
723
+ return _device;
724
+ };
725
+ this.getEngine = function () {
726
+ var _engine = {};
727
+ _engine[NAME] = undefined$1;
728
+ _engine[VERSION] = undefined$1;
729
+ rgxMapper.call(_engine, _ua, _rgxmap.engine);
730
+ return _engine;
731
+ };
732
+ this.getOS = function () {
733
+ var _os = {};
734
+ _os[NAME] = undefined$1;
735
+ _os[VERSION] = undefined$1;
736
+ rgxMapper.call(_os, _ua, _rgxmap.os);
737
+ if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {
738
+ _os[NAME] = _uach.platform.replace(/chrome os/i, CHROMIUM_OS).replace(/macos/i, MAC_OS); // backward compatibility
739
+ }
740
+ return _os;
741
+ };
742
+ this.getResult = function () {
743
+ return {
744
+ ua: this.getUA(),
745
+ browser: this.getBrowser(),
746
+ engine: this.getEngine(),
747
+ os: this.getOS(),
748
+ device: this.getDevice(),
749
+ cpu: this.getCPU()
750
+ };
751
+ };
752
+ this.getUA = function () {
753
+ return _ua;
754
+ };
755
+ this.setUA = function (ua) {
756
+ _ua = typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;
757
+ return this;
758
+ };
759
+ this.setUA(_ua);
760
+ return this;
761
+ };
762
+ UAParser.VERSION = LIBVERSION;
763
+ UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);
764
+ UAParser.CPU = enumerize([ARCHITECTURE]);
765
+ UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
766
+ UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);
767
+
768
+ ///////////
769
+ // Export
770
+ //////////
771
+
772
+ // check js environment
773
+ {
774
+ // nodejs env
775
+ if (module.exports) {
776
+ exports = module.exports = UAParser;
777
+ }
778
+ exports.UAParser = UAParser;
779
+ }
780
+
781
+ // jQuery/Zepto specific (optional)
782
+ // Note:
783
+ // In AMD env the global scope should be kept clean, but jQuery is an exception.
784
+ // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
785
+ // and we should catch that.
786
+ var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);
787
+ if ($ && !$.ua) {
788
+ var parser = new UAParser();
789
+ $.ua = parser.getResult();
790
+ $.ua.get = function () {
791
+ return parser.getUA();
792
+ };
793
+ $.ua.set = function (ua) {
794
+ parser.setUA(ua);
795
+ var result = parser.getResult();
796
+ for (var prop in result) {
797
+ $.ua[prop] = result[prop];
798
+ }
799
+ };
800
+ }
801
+ })(typeof window === 'object' ? window : uaParser);
802
+ })(uaParser$1, uaParser$1.exports);
803
+ return uaParser$1.exports;
804
+ }
805
+
806
+ export { requireUaParser as __require };
807
+ //# sourceMappingURL=ua-parser.mjs.map