@measured/puck-plugin-heading-analyzer 0.17.2-canary.f323610 → 0.18.0-canary.d253d54
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.
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +40 -1390
- package/dist/index.mjs +47 -1396
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
@@ -126,1341 +126,6 @@ var require_classnames = __commonJS({
|
|
126
126
|
}
|
127
127
|
});
|
128
128
|
|
129
|
-
// ../../node_modules/ua-parser-js/src/ua-parser.js
|
130
|
-
var require_ua_parser = __commonJS({
|
131
|
-
"../../node_modules/ua-parser-js/src/ua-parser.js"(exports, module) {
|
132
|
-
"use strict";
|
133
|
-
init_react_import();
|
134
|
-
(function(window2, undefined2) {
|
135
|
-
"use strict";
|
136
|
-
var LIBVERSION = "1.0.39", EMPTY = "", UNKNOWN = "?", FUNC_TYPE = "function", UNDEF_TYPE = "undefined", OBJ_TYPE = "object", STR_TYPE = "string", MAJOR = "major", MODEL = "model", NAME = "name", TYPE = "type", VENDOR = "vendor", VERSION = "version", ARCHITECTURE = "architecture", CONSOLE = "console", MOBILE = "mobile", TABLET = "tablet", SMARTTV = "smarttv", WEARABLE = "wearable", EMBEDDED = "embedded", UA_MAX_LENGTH = 500;
|
137
|
-
var AMAZON = "Amazon", APPLE = "Apple", ASUS = "ASUS", BLACKBERRY = "BlackBerry", BROWSER = "Browser", CHROME = "Chrome", EDGE = "Edge", FIREFOX = "Firefox", GOOGLE = "Google", HUAWEI = "Huawei", LG = "LG", MICROSOFT = "Microsoft", MOTOROLA = "Motorola", OPERA = "Opera", SAMSUNG = "Samsung", SHARP = "Sharp", SONY = "Sony", XIAOMI = "Xiaomi", ZEBRA = "Zebra", FACEBOOK = "Facebook", CHROMIUM_OS = "Chromium OS", MAC_OS = "Mac OS", SUFFIX_BROWSER = " Browser";
|
138
|
-
var extend = function(regexes2, extensions) {
|
139
|
-
var mergedRegexes = {};
|
140
|
-
for (var i in regexes2) {
|
141
|
-
if (extensions[i] && extensions[i].length % 2 === 0) {
|
142
|
-
mergedRegexes[i] = extensions[i].concat(regexes2[i]);
|
143
|
-
} else {
|
144
|
-
mergedRegexes[i] = regexes2[i];
|
145
|
-
}
|
146
|
-
}
|
147
|
-
return mergedRegexes;
|
148
|
-
}, enumerize = function(arr) {
|
149
|
-
var enums = {};
|
150
|
-
for (var i = 0; i < arr.length; i++) {
|
151
|
-
enums[arr[i].toUpperCase()] = arr[i];
|
152
|
-
}
|
153
|
-
return enums;
|
154
|
-
}, has = function(str1, str2) {
|
155
|
-
return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
|
156
|
-
}, lowerize = function(str) {
|
157
|
-
return str.toLowerCase();
|
158
|
-
}, majorize = function(version) {
|
159
|
-
return typeof version === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split(".")[0] : undefined2;
|
160
|
-
}, trim = function(str, len) {
|
161
|
-
if (typeof str === STR_TYPE) {
|
162
|
-
str = str.replace(/^\s\s*/, EMPTY);
|
163
|
-
return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
|
164
|
-
}
|
165
|
-
};
|
166
|
-
var rgxMapper = function(ua, arrays) {
|
167
|
-
var i = 0, j, k, p, q, matches, match;
|
168
|
-
while (i < arrays.length && !matches) {
|
169
|
-
var regex = arrays[i], props = arrays[i + 1];
|
170
|
-
j = k = 0;
|
171
|
-
while (j < regex.length && !matches) {
|
172
|
-
if (!regex[j]) {
|
173
|
-
break;
|
174
|
-
}
|
175
|
-
matches = regex[j++].exec(ua);
|
176
|
-
if (!!matches) {
|
177
|
-
for (p = 0; p < props.length; p++) {
|
178
|
-
match = matches[++k];
|
179
|
-
q = props[p];
|
180
|
-
if (typeof q === OBJ_TYPE && q.length > 0) {
|
181
|
-
if (q.length === 2) {
|
182
|
-
if (typeof q[1] == FUNC_TYPE) {
|
183
|
-
this[q[0]] = q[1].call(this, match);
|
184
|
-
} else {
|
185
|
-
this[q[0]] = q[1];
|
186
|
-
}
|
187
|
-
} else if (q.length === 3) {
|
188
|
-
if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
|
189
|
-
this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined2;
|
190
|
-
} else {
|
191
|
-
this[q[0]] = match ? match.replace(q[1], q[2]) : undefined2;
|
192
|
-
}
|
193
|
-
} else if (q.length === 4) {
|
194
|
-
this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined2;
|
195
|
-
}
|
196
|
-
} else {
|
197
|
-
this[q] = match ? match : undefined2;
|
198
|
-
}
|
199
|
-
}
|
200
|
-
}
|
201
|
-
}
|
202
|
-
i += 2;
|
203
|
-
}
|
204
|
-
}, strMapper = function(str, map) {
|
205
|
-
for (var i in map) {
|
206
|
-
if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
|
207
|
-
for (var j = 0; j < map[i].length; j++) {
|
208
|
-
if (has(map[i][j], str)) {
|
209
|
-
return i === UNKNOWN ? undefined2 : i;
|
210
|
-
}
|
211
|
-
}
|
212
|
-
} else if (has(map[i], str)) {
|
213
|
-
return i === UNKNOWN ? undefined2 : i;
|
214
|
-
}
|
215
|
-
}
|
216
|
-
return map.hasOwnProperty("*") ? map["*"] : str;
|
217
|
-
};
|
218
|
-
var oldSafariMap = {
|
219
|
-
"1.0": "/8",
|
220
|
-
"1.2": "/1",
|
221
|
-
"1.3": "/3",
|
222
|
-
"2.0": "/412",
|
223
|
-
"2.0.2": "/416",
|
224
|
-
"2.0.3": "/417",
|
225
|
-
"2.0.4": "/419",
|
226
|
-
"?": "/"
|
227
|
-
}, windowsVersionMap = {
|
228
|
-
"ME": "4.90",
|
229
|
-
"NT 3.11": "NT3.51",
|
230
|
-
"NT 4.0": "NT4.0",
|
231
|
-
"2000": "NT 5.0",
|
232
|
-
"XP": ["NT 5.1", "NT 5.2"],
|
233
|
-
"Vista": "NT 6.0",
|
234
|
-
"7": "NT 6.1",
|
235
|
-
"8": "NT 6.2",
|
236
|
-
"8.1": "NT 6.3",
|
237
|
-
"10": ["NT 6.4", "NT 10.0"],
|
238
|
-
"RT": "ARM"
|
239
|
-
};
|
240
|
-
var regexes = {
|
241
|
-
browser: [
|
242
|
-
[
|
243
|
-
/\b(?:crmo|crios)\/([\w\.]+)/i
|
244
|
-
// Chrome for Android/iOS
|
245
|
-
],
|
246
|
-
[VERSION, [NAME, "Chrome"]],
|
247
|
-
[
|
248
|
-
/edg(?:e|ios|a)?\/([\w\.]+)/i
|
249
|
-
// Microsoft Edge
|
250
|
-
],
|
251
|
-
[VERSION, [NAME, "Edge"]],
|
252
|
-
[
|
253
|
-
// Presto based
|
254
|
-
/(opera mini)\/([-\w\.]+)/i,
|
255
|
-
// Opera Mini
|
256
|
-
/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
|
257
|
-
// Opera Mobi/Tablet
|
258
|
-
/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
|
259
|
-
// Opera
|
260
|
-
],
|
261
|
-
[NAME, VERSION],
|
262
|
-
[
|
263
|
-
/opios[\/ ]+([\w\.]+)/i
|
264
|
-
// Opera mini on iphone >= 8.0
|
265
|
-
],
|
266
|
-
[VERSION, [NAME, OPERA + " Mini"]],
|
267
|
-
[
|
268
|
-
/\bop(?:rg)?x\/([\w\.]+)/i
|
269
|
-
// Opera GX
|
270
|
-
],
|
271
|
-
[VERSION, [NAME, OPERA + " GX"]],
|
272
|
-
[
|
273
|
-
/\bopr\/([\w\.]+)/i
|
274
|
-
// Opera Webkit
|
275
|
-
],
|
276
|
-
[VERSION, [NAME, OPERA]],
|
277
|
-
[
|
278
|
-
// Mixed
|
279
|
-
/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
|
280
|
-
// Baidu
|
281
|
-
],
|
282
|
-
[VERSION, [NAME, "Baidu"]],
|
283
|
-
[
|
284
|
-
/(kindle)\/([\w\.]+)/i,
|
285
|
-
// Kindle
|
286
|
-
/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
|
287
|
-
// Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
|
288
|
-
// Trident based
|
289
|
-
/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,
|
290
|
-
// Avant/IEMobile/SlimBrowser
|
291
|
-
/(?:ms|\()(ie) ([\w\.]+)/i,
|
292
|
-
// Internet Explorer
|
293
|
-
// Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
294
|
-
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio)\/([-\w\.]+)/i,
|
295
|
-
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio
|
296
|
-
/(heytap|ovi)browser\/([\d\.]+)/i,
|
297
|
-
// HeyTap/Ovi
|
298
|
-
/(weibo)__([\d\.]+)/i
|
299
|
-
// Weibo
|
300
|
-
],
|
301
|
-
[NAME, VERSION],
|
302
|
-
[
|
303
|
-
/quark(?:pc)?\/([-\w\.]+)/i
|
304
|
-
// Quark
|
305
|
-
],
|
306
|
-
[VERSION, [NAME, "Quark"]],
|
307
|
-
[
|
308
|
-
/\bddg\/([\w\.]+)/i
|
309
|
-
// DuckDuckGo
|
310
|
-
],
|
311
|
-
[VERSION, [NAME, "DuckDuckGo"]],
|
312
|
-
[
|
313
|
-
/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
|
314
|
-
// UCBrowser
|
315
|
-
],
|
316
|
-
[VERSION, [NAME, "UC" + BROWSER]],
|
317
|
-
[
|
318
|
-
/microm.+\bqbcore\/([\w\.]+)/i,
|
319
|
-
// WeChat Desktop for Windows Built-in Browser
|
320
|
-
/\bqbcore\/([\w\.]+).+microm/i,
|
321
|
-
/micromessenger\/([\w\.]+)/i
|
322
|
-
// WeChat
|
323
|
-
],
|
324
|
-
[VERSION, [NAME, "WeChat"]],
|
325
|
-
[
|
326
|
-
/konqueror\/([\w\.]+)/i
|
327
|
-
// Konqueror
|
328
|
-
],
|
329
|
-
[VERSION, [NAME, "Konqueror"]],
|
330
|
-
[
|
331
|
-
/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
|
332
|
-
// IE11
|
333
|
-
],
|
334
|
-
[VERSION, [NAME, "IE"]],
|
335
|
-
[
|
336
|
-
/ya(?:search)?browser\/([\w\.]+)/i
|
337
|
-
// Yandex
|
338
|
-
],
|
339
|
-
[VERSION, [NAME, "Yandex"]],
|
340
|
-
[
|
341
|
-
/slbrowser\/([\w\.]+)/i
|
342
|
-
// Smart Lenovo Browser
|
343
|
-
],
|
344
|
-
[VERSION, [NAME, "Smart Lenovo " + BROWSER]],
|
345
|
-
[
|
346
|
-
/(avast|avg)\/([\w\.]+)/i
|
347
|
-
// Avast/AVG Secure Browser
|
348
|
-
],
|
349
|
-
[[NAME, /(.+)/, "$1 Secure " + BROWSER], VERSION],
|
350
|
-
[
|
351
|
-
/\bfocus\/([\w\.]+)/i
|
352
|
-
// Firefox Focus
|
353
|
-
],
|
354
|
-
[VERSION, [NAME, FIREFOX + " Focus"]],
|
355
|
-
[
|
356
|
-
/\bopt\/([\w\.]+)/i
|
357
|
-
// Opera Touch
|
358
|
-
],
|
359
|
-
[VERSION, [NAME, OPERA + " Touch"]],
|
360
|
-
[
|
361
|
-
/coc_coc\w+\/([\w\.]+)/i
|
362
|
-
// Coc Coc Browser
|
363
|
-
],
|
364
|
-
[VERSION, [NAME, "Coc Coc"]],
|
365
|
-
[
|
366
|
-
/dolfin\/([\w\.]+)/i
|
367
|
-
// Dolphin
|
368
|
-
],
|
369
|
-
[VERSION, [NAME, "Dolphin"]],
|
370
|
-
[
|
371
|
-
/coast\/([\w\.]+)/i
|
372
|
-
// Opera Coast
|
373
|
-
],
|
374
|
-
[VERSION, [NAME, OPERA + " Coast"]],
|
375
|
-
[
|
376
|
-
/miuibrowser\/([\w\.]+)/i
|
377
|
-
// MIUI Browser
|
378
|
-
],
|
379
|
-
[VERSION, [NAME, "MIUI " + BROWSER]],
|
380
|
-
[
|
381
|
-
/fxios\/([-\w\.]+)/i
|
382
|
-
// Firefox for iOS
|
383
|
-
],
|
384
|
-
[VERSION, [NAME, FIREFOX]],
|
385
|
-
[
|
386
|
-
/\bqihu|(qi?ho?o?|360)browser/i
|
387
|
-
// 360
|
388
|
-
],
|
389
|
-
[[NAME, "360" + SUFFIX_BROWSER]],
|
390
|
-
[
|
391
|
-
/\b(qq)\/([\w\.]+)/i
|
392
|
-
// QQ
|
393
|
-
],
|
394
|
-
[[NAME, /(.+)/, "$1Browser"], VERSION],
|
395
|
-
[
|
396
|
-
/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
|
397
|
-
],
|
398
|
-
[[NAME, /(.+)/, "$1" + SUFFIX_BROWSER], VERSION],
|
399
|
-
[
|
400
|
-
// Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
|
401
|
-
/samsungbrowser\/([\w\.]+)/i
|
402
|
-
// Samsung Internet
|
403
|
-
],
|
404
|
-
[VERSION, [NAME, SAMSUNG + " Internet"]],
|
405
|
-
[
|
406
|
-
/(comodo_dragon)\/([\w\.]+)/i
|
407
|
-
// Comodo Dragon
|
408
|
-
],
|
409
|
-
[[NAME, /_/g, " "], VERSION],
|
410
|
-
[
|
411
|
-
/metasr[\/ ]?([\d\.]+)/i
|
412
|
-
// Sogou Explorer
|
413
|
-
],
|
414
|
-
[VERSION, [NAME, "Sogou Explorer"]],
|
415
|
-
[
|
416
|
-
/(sogou)mo\w+\/([\d\.]+)/i
|
417
|
-
// Sogou Mobile
|
418
|
-
],
|
419
|
-
[[NAME, "Sogou Mobile"], VERSION],
|
420
|
-
[
|
421
|
-
/(electron)\/([\w\.]+) safari/i,
|
422
|
-
// Electron-based App
|
423
|
-
/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
|
424
|
-
// Tesla
|
425
|
-
/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i
|
426
|
-
// QQBrowser/2345 Browser
|
427
|
-
],
|
428
|
-
[NAME, VERSION],
|
429
|
-
[
|
430
|
-
/(lbbrowser|rekonq)/i,
|
431
|
-
// LieBao Browser/Rekonq
|
432
|
-
/\[(linkedin)app\]/i
|
433
|
-
// LinkedIn App for iOS & Android
|
434
|
-
],
|
435
|
-
[NAME],
|
436
|
-
[
|
437
|
-
// WebView
|
438
|
-
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
|
439
|
-
// Facebook App for iOS & Android
|
440
|
-
],
|
441
|
-
[[NAME, FACEBOOK], VERSION],
|
442
|
-
[
|
443
|
-
/(Klarna)\/([\w\.]+)/i,
|
444
|
-
// Klarna Shopping Browser for iOS & Android
|
445
|
-
/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
|
446
|
-
// Kakao App
|
447
|
-
/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
|
448
|
-
// Naver InApp
|
449
|
-
/safari (line)\/([\w\.]+)/i,
|
450
|
-
// Line App for iOS
|
451
|
-
/\b(line)\/([\w\.]+)\/iab/i,
|
452
|
-
// Line App for Android
|
453
|
-
/(alipay)client\/([\w\.]+)/i,
|
454
|
-
// Alipay
|
455
|
-
/(twitter)(?:and| f.+e\/([\w\.]+))/i,
|
456
|
-
// Twitter
|
457
|
-
/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i
|
458
|
-
// Chromium/Instagram/Snapchat
|
459
|
-
],
|
460
|
-
[NAME, VERSION],
|
461
|
-
[
|
462
|
-
/\bgsa\/([\w\.]+) .*safari\//i
|
463
|
-
// Google Search Appliance on iOS
|
464
|
-
],
|
465
|
-
[VERSION, [NAME, "GSA"]],
|
466
|
-
[
|
467
|
-
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
|
468
|
-
// TikTok
|
469
|
-
],
|
470
|
-
[VERSION, [NAME, "TikTok"]],
|
471
|
-
[
|
472
|
-
/headlesschrome(?:\/([\w\.]+)| )/i
|
473
|
-
// Chrome Headless
|
474
|
-
],
|
475
|
-
[VERSION, [NAME, CHROME + " Headless"]],
|
476
|
-
[
|
477
|
-
/ wv\).+(chrome)\/([\w\.]+)/i
|
478
|
-
// Chrome WebView
|
479
|
-
],
|
480
|
-
[[NAME, CHROME + " WebView"], VERSION],
|
481
|
-
[
|
482
|
-
/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
|
483
|
-
// Android Browser
|
484
|
-
],
|
485
|
-
[VERSION, [NAME, "Android " + BROWSER]],
|
486
|
-
[
|
487
|
-
/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
|
488
|
-
// Chrome/OmniWeb/Arora/Tizen/Nokia
|
489
|
-
],
|
490
|
-
[NAME, VERSION],
|
491
|
-
[
|
492
|
-
/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i
|
493
|
-
// Mobile Safari
|
494
|
-
],
|
495
|
-
[VERSION, [NAME, "Mobile Safari"]],
|
496
|
-
[
|
497
|
-
/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i
|
498
|
-
// Safari & Safari Mobile
|
499
|
-
],
|
500
|
-
[VERSION, NAME],
|
501
|
-
[
|
502
|
-
/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
|
503
|
-
// Safari < 3.0
|
504
|
-
],
|
505
|
-
[NAME, [VERSION, strMapper, oldSafariMap]],
|
506
|
-
[
|
507
|
-
/(webkit|khtml)\/([\w\.]+)/i
|
508
|
-
],
|
509
|
-
[NAME, VERSION],
|
510
|
-
[
|
511
|
-
// Gecko based
|
512
|
-
/(navigator|netscape\d?)\/([-\w\.]+)/i
|
513
|
-
// Netscape
|
514
|
-
],
|
515
|
-
[[NAME, "Netscape"], VERSION],
|
516
|
-
[
|
517
|
-
/(wolvic)\/([\w\.]+)/i
|
518
|
-
// Wolvic
|
519
|
-
],
|
520
|
-
[NAME, VERSION],
|
521
|
-
[
|
522
|
-
/mobile vr; rv:([\w\.]+)\).+firefox/i
|
523
|
-
// Firefox Reality
|
524
|
-
],
|
525
|
-
[VERSION, [NAME, FIREFOX + " Reality"]],
|
526
|
-
[
|
527
|
-
/ekiohf.+(flow)\/([\w\.]+)/i,
|
528
|
-
// Flow
|
529
|
-
/(swiftfox)/i,
|
530
|
-
// Swiftfox
|
531
|
-
/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,
|
532
|
-
// IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
|
533
|
-
/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
|
534
|
-
// Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
|
535
|
-
/(firefox)\/([\w\.]+)/i,
|
536
|
-
// Other Firefox-based
|
537
|
-
/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
|
538
|
-
// Mozilla
|
539
|
-
// Other
|
540
|
-
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
|
541
|
-
// Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser
|
542
|
-
/(links) \(([\w\.]+)/i
|
543
|
-
// Links
|
544
|
-
],
|
545
|
-
[NAME, [VERSION, /_/g, "."]],
|
546
|
-
[
|
547
|
-
/(cobalt)\/([\w\.]+)/i
|
548
|
-
// Cobalt
|
549
|
-
],
|
550
|
-
[NAME, [VERSION, /master.|lts./, ""]]
|
551
|
-
],
|
552
|
-
cpu: [
|
553
|
-
[
|
554
|
-
/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i
|
555
|
-
// AMD64 (x64)
|
556
|
-
],
|
557
|
-
[[ARCHITECTURE, "amd64"]],
|
558
|
-
[
|
559
|
-
/(ia32(?=;))/i
|
560
|
-
// IA32 (quicktime)
|
561
|
-
],
|
562
|
-
[[ARCHITECTURE, lowerize]],
|
563
|
-
[
|
564
|
-
/((?:i[346]|x)86)[;\)]/i
|
565
|
-
// IA32 (x86)
|
566
|
-
],
|
567
|
-
[[ARCHITECTURE, "ia32"]],
|
568
|
-
[
|
569
|
-
/\b(aarch64|arm(v?8e?l?|_?64))\b/i
|
570
|
-
// ARM64
|
571
|
-
],
|
572
|
-
[[ARCHITECTURE, "arm64"]],
|
573
|
-
[
|
574
|
-
/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i
|
575
|
-
// ARMHF
|
576
|
-
],
|
577
|
-
[[ARCHITECTURE, "armhf"]],
|
578
|
-
[
|
579
|
-
// PocketPC mistakenly identified as PowerPC
|
580
|
-
/windows (ce|mobile); ppc;/i
|
581
|
-
],
|
582
|
-
[[ARCHITECTURE, "arm"]],
|
583
|
-
[
|
584
|
-
/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i
|
585
|
-
// PowerPC
|
586
|
-
],
|
587
|
-
[[ARCHITECTURE, /ower/, EMPTY, lowerize]],
|
588
|
-
[
|
589
|
-
/(sun4\w)[;\)]/i
|
590
|
-
// SPARC
|
591
|
-
],
|
592
|
-
[[ARCHITECTURE, "sparc"]],
|
593
|
-
[
|
594
|
-
/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
|
595
|
-
// IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
|
596
|
-
],
|
597
|
-
[[ARCHITECTURE, lowerize]]
|
598
|
-
],
|
599
|
-
device: [
|
600
|
-
[
|
601
|
-
//////////////////////////
|
602
|
-
// MOBILES & TABLETS
|
603
|
-
/////////////////////////
|
604
|
-
// Samsung
|
605
|
-
/\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
|
606
|
-
],
|
607
|
-
[MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]],
|
608
|
-
[
|
609
|
-
/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
|
610
|
-
/samsung[- ]((?!sm-[lr])[-\w]+)/i,
|
611
|
-
/sec-(sgh\w+)/i
|
612
|
-
],
|
613
|
-
[MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]],
|
614
|
-
[
|
615
|
-
// Apple
|
616
|
-
/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
|
617
|
-
// iPod/iPhone
|
618
|
-
],
|
619
|
-
[MODEL, [VENDOR, APPLE], [TYPE, MOBILE]],
|
620
|
-
[
|
621
|
-
/\((ipad);[-\w\),; ]+apple/i,
|
622
|
-
// iPad
|
623
|
-
/applecoremedia\/[\w\.]+ \((ipad)/i,
|
624
|
-
/\b(ipad)\d\d?,\d\d?[;\]].+ios/i
|
625
|
-
],
|
626
|
-
[MODEL, [VENDOR, APPLE], [TYPE, TABLET]],
|
627
|
-
[
|
628
|
-
/(macintosh);/i
|
629
|
-
],
|
630
|
-
[MODEL, [VENDOR, APPLE]],
|
631
|
-
[
|
632
|
-
// Sharp
|
633
|
-
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
|
634
|
-
],
|
635
|
-
[MODEL, [VENDOR, SHARP], [TYPE, MOBILE]],
|
636
|
-
[
|
637
|
-
// Huawei
|
638
|
-
/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
|
639
|
-
],
|
640
|
-
[MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]],
|
641
|
-
[
|
642
|
-
/(?:huawei|honor)([-\w ]+)[;\)]/i,
|
643
|
-
/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
|
644
|
-
],
|
645
|
-
[MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]],
|
646
|
-
[
|
647
|
-
// Xiaomi
|
648
|
-
/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
|
649
|
-
// Xiaomi POCO
|
650
|
-
/\b; (\w+) build\/hm\1/i,
|
651
|
-
// Xiaomi Hongmi 'numeric' models
|
652
|
-
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
|
653
|
-
// Xiaomi Hongmi
|
654
|
-
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
|
655
|
-
// Xiaomi Redmi
|
656
|
-
/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
|
657
|
-
// Xiaomi Redmi 'numeric' models
|
658
|
-
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i
|
659
|
-
// Xiaomi Mi
|
660
|
-
],
|
661
|
-
[[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE, MOBILE]],
|
662
|
-
[
|
663
|
-
/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,
|
664
|
-
// Redmi Pad
|
665
|
-
/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i
|
666
|
-
// Mi Pad tablets
|
667
|
-
],
|
668
|
-
[[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE, TABLET]],
|
669
|
-
[
|
670
|
-
// OPPO
|
671
|
-
/; (\w+) bui.+ oppo/i,
|
672
|
-
/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
|
673
|
-
],
|
674
|
-
[MODEL, [VENDOR, "OPPO"], [TYPE, MOBILE]],
|
675
|
-
[
|
676
|
-
/\b(opd2\d{3}a?) bui/i
|
677
|
-
],
|
678
|
-
[MODEL, [VENDOR, "OPPO"], [TYPE, TABLET]],
|
679
|
-
[
|
680
|
-
// Vivo
|
681
|
-
/vivo (\w+)(?: bui|\))/i,
|
682
|
-
/\b(v[12]\d{3}\w?[at])(?: bui|;)/i
|
683
|
-
],
|
684
|
-
[MODEL, [VENDOR, "Vivo"], [TYPE, MOBILE]],
|
685
|
-
[
|
686
|
-
// Realme
|
687
|
-
/\b(rmx[1-3]\d{3})(?: bui|;|\))/i
|
688
|
-
],
|
689
|
-
[MODEL, [VENDOR, "Realme"], [TYPE, MOBILE]],
|
690
|
-
[
|
691
|
-
// Motorola
|
692
|
-
/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
|
693
|
-
/\bmot(?:orola)?[- ](\w*)/i,
|
694
|
-
/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
|
695
|
-
],
|
696
|
-
[MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]],
|
697
|
-
[
|
698
|
-
/\b(mz60\d|xoom[2 ]{0,2}) build\//i
|
699
|
-
],
|
700
|
-
[MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]],
|
701
|
-
[
|
702
|
-
// LG
|
703
|
-
/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
|
704
|
-
],
|
705
|
-
[MODEL, [VENDOR, LG], [TYPE, TABLET]],
|
706
|
-
[
|
707
|
-
/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
|
708
|
-
/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
|
709
|
-
/\blg-?([\d\w]+) bui/i
|
710
|
-
],
|
711
|
-
[MODEL, [VENDOR, LG], [TYPE, MOBILE]],
|
712
|
-
[
|
713
|
-
// Lenovo
|
714
|
-
/(ideatab[-\w ]+)/i,
|
715
|
-
/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
|
716
|
-
],
|
717
|
-
[MODEL, [VENDOR, "Lenovo"], [TYPE, TABLET]],
|
718
|
-
[
|
719
|
-
// Nokia
|
720
|
-
/(?:maemo|nokia).*(n900|lumia \d+)/i,
|
721
|
-
/nokia[-_ ]?([-\w\.]*)/i
|
722
|
-
],
|
723
|
-
[[MODEL, /_/g, " "], [VENDOR, "Nokia"], [TYPE, MOBILE]],
|
724
|
-
[
|
725
|
-
// Google
|
726
|
-
/(pixel c)\b/i
|
727
|
-
// Google Pixel C
|
728
|
-
],
|
729
|
-
[MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]],
|
730
|
-
[
|
731
|
-
/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
|
732
|
-
// Google Pixel
|
733
|
-
],
|
734
|
-
[MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]],
|
735
|
-
[
|
736
|
-
// Sony
|
737
|
-
/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
|
738
|
-
],
|
739
|
-
[MODEL, [VENDOR, SONY], [TYPE, MOBILE]],
|
740
|
-
[
|
741
|
-
/sony tablet [ps]/i,
|
742
|
-
/\b(?:sony)?sgp\w+(?: bui|\))/i
|
743
|
-
],
|
744
|
-
[[MODEL, "Xperia Tablet"], [VENDOR, SONY], [TYPE, TABLET]],
|
745
|
-
[
|
746
|
-
// OnePlus
|
747
|
-
/ (kb2005|in20[12]5|be20[12][59])\b/i,
|
748
|
-
/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
|
749
|
-
],
|
750
|
-
[MODEL, [VENDOR, "OnePlus"], [TYPE, MOBILE]],
|
751
|
-
[
|
752
|
-
// Amazon
|
753
|
-
/(alexa)webm/i,
|
754
|
-
/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,
|
755
|
-
// Kindle Fire without Silk / Echo Show
|
756
|
-
/(kf[a-z]+)( bui|\)).+silk\//i
|
757
|
-
// Kindle Fire HD
|
758
|
-
],
|
759
|
-
[MODEL, [VENDOR, AMAZON], [TYPE, TABLET]],
|
760
|
-
[
|
761
|
-
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
|
762
|
-
// Fire Phone
|
763
|
-
],
|
764
|
-
[[MODEL, /(.+)/g, "Fire Phone $1"], [VENDOR, AMAZON], [TYPE, MOBILE]],
|
765
|
-
[
|
766
|
-
// BlackBerry
|
767
|
-
/(playbook);[-\w\),; ]+(rim)/i
|
768
|
-
// BlackBerry PlayBook
|
769
|
-
],
|
770
|
-
[MODEL, VENDOR, [TYPE, TABLET]],
|
771
|
-
[
|
772
|
-
/\b((?:bb[a-f]|st[hv])100-\d)/i,
|
773
|
-
/\(bb10; (\w+)/i
|
774
|
-
// BlackBerry 10
|
775
|
-
],
|
776
|
-
[MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]],
|
777
|
-
[
|
778
|
-
// Asus
|
779
|
-
/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
|
780
|
-
],
|
781
|
-
[MODEL, [VENDOR, ASUS], [TYPE, TABLET]],
|
782
|
-
[
|
783
|
-
/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
|
784
|
-
],
|
785
|
-
[MODEL, [VENDOR, ASUS], [TYPE, MOBILE]],
|
786
|
-
[
|
787
|
-
// HTC
|
788
|
-
/(nexus 9)/i
|
789
|
-
// HTC Nexus 9
|
790
|
-
],
|
791
|
-
[MODEL, [VENDOR, "HTC"], [TYPE, TABLET]],
|
792
|
-
[
|
793
|
-
/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
|
794
|
-
// HTC
|
795
|
-
// ZTE
|
796
|
-
/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
|
797
|
-
/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
|
798
|
-
// Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
799
|
-
],
|
800
|
-
[VENDOR, [MODEL, /_/g, " "], [TYPE, MOBILE]],
|
801
|
-
[
|
802
|
-
// TCL
|
803
|
-
/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
|
804
|
-
],
|
805
|
-
[MODEL, [VENDOR, "TCL"], [TYPE, TABLET]],
|
806
|
-
[
|
807
|
-
// itel
|
808
|
-
/(itel) ((\w+))/i
|
809
|
-
],
|
810
|
-
[[VENDOR, lowerize], MODEL, [TYPE, strMapper, { "tablet": ["p10001l", "w7001"], "*": "mobile" }]],
|
811
|
-
[
|
812
|
-
// Acer
|
813
|
-
/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
|
814
|
-
],
|
815
|
-
[MODEL, [VENDOR, "Acer"], [TYPE, TABLET]],
|
816
|
-
[
|
817
|
-
// Meizu
|
818
|
-
/droid.+; (m[1-5] note) bui/i,
|
819
|
-
/\bmz-([-\w]{2,})/i
|
820
|
-
],
|
821
|
-
[MODEL, [VENDOR, "Meizu"], [TYPE, MOBILE]],
|
822
|
-
[
|
823
|
-
// Ulefone
|
824
|
-
/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
|
825
|
-
],
|
826
|
-
[MODEL, [VENDOR, "Ulefone"], [TYPE, MOBILE]],
|
827
|
-
[
|
828
|
-
// Nothing
|
829
|
-
/droid.+; (a(?:015|06[35]|142p?))/i
|
830
|
-
],
|
831
|
-
[MODEL, [VENDOR, "Nothing"], [TYPE, MOBILE]],
|
832
|
-
[
|
833
|
-
// MIXED
|
834
|
-
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
|
835
|
-
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
836
|
-
/(hp) ([\w ]+\w)/i,
|
837
|
-
// HP iPAQ
|
838
|
-
/(asus)-?(\w+)/i,
|
839
|
-
// Asus
|
840
|
-
/(microsoft); (lumia[\w ]+)/i,
|
841
|
-
// Microsoft Lumia
|
842
|
-
/(lenovo)[-_ ]?([-\w]+)/i,
|
843
|
-
// Lenovo
|
844
|
-
/(jolla)/i,
|
845
|
-
// Jolla
|
846
|
-
/(oppo) ?([\w ]+) bui/i
|
847
|
-
// OPPO
|
848
|
-
],
|
849
|
-
[VENDOR, MODEL, [TYPE, MOBILE]],
|
850
|
-
[
|
851
|
-
/(kobo)\s(ereader|touch)/i,
|
852
|
-
// Kobo
|
853
|
-
/(archos) (gamepad2?)/i,
|
854
|
-
// Archos
|
855
|
-
/(hp).+(touchpad(?!.+tablet)|tablet)/i,
|
856
|
-
// HP TouchPad
|
857
|
-
/(kindle)\/([\w\.]+)/i,
|
858
|
-
// Kindle
|
859
|
-
/(nook)[\w ]+build\/(\w+)/i,
|
860
|
-
// Nook
|
861
|
-
/(dell) (strea[kpr\d ]*[\dko])/i,
|
862
|
-
// Dell Streak
|
863
|
-
/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
|
864
|
-
// Le Pan Tablets
|
865
|
-
/(trinity)[- ]*(t\d{3}) bui/i,
|
866
|
-
// Trinity Tablets
|
867
|
-
/(gigaset)[- ]+(q\w{1,9}) bui/i,
|
868
|
-
// Gigaset Tablets
|
869
|
-
/(vodafone) ([\w ]+)(?:\)| bui)/i
|
870
|
-
// Vodafone
|
871
|
-
],
|
872
|
-
[VENDOR, MODEL, [TYPE, TABLET]],
|
873
|
-
[
|
874
|
-
/(surface duo)/i
|
875
|
-
// Surface Duo
|
876
|
-
],
|
877
|
-
[MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]],
|
878
|
-
[
|
879
|
-
/droid [\d\.]+; (fp\du?)(?: b|\))/i
|
880
|
-
// Fairphone
|
881
|
-
],
|
882
|
-
[MODEL, [VENDOR, "Fairphone"], [TYPE, MOBILE]],
|
883
|
-
[
|
884
|
-
/(u304aa)/i
|
885
|
-
// AT&T
|
886
|
-
],
|
887
|
-
[MODEL, [VENDOR, "AT&T"], [TYPE, MOBILE]],
|
888
|
-
[
|
889
|
-
/\bsie-(\w*)/i
|
890
|
-
// Siemens
|
891
|
-
],
|
892
|
-
[MODEL, [VENDOR, "Siemens"], [TYPE, MOBILE]],
|
893
|
-
[
|
894
|
-
/\b(rct\w+) b/i
|
895
|
-
// RCA Tablets
|
896
|
-
],
|
897
|
-
[MODEL, [VENDOR, "RCA"], [TYPE, TABLET]],
|
898
|
-
[
|
899
|
-
/\b(venue[\d ]{2,7}) b/i
|
900
|
-
// Dell Venue Tablets
|
901
|
-
],
|
902
|
-
[MODEL, [VENDOR, "Dell"], [TYPE, TABLET]],
|
903
|
-
[
|
904
|
-
/\b(q(?:mv|ta)\w+) b/i
|
905
|
-
// Verizon Tablet
|
906
|
-
],
|
907
|
-
[MODEL, [VENDOR, "Verizon"], [TYPE, TABLET]],
|
908
|
-
[
|
909
|
-
/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i
|
910
|
-
// Barnes & Noble Tablet
|
911
|
-
],
|
912
|
-
[MODEL, [VENDOR, "Barnes & Noble"], [TYPE, TABLET]],
|
913
|
-
[
|
914
|
-
/\b(tm\d{3}\w+) b/i
|
915
|
-
],
|
916
|
-
[MODEL, [VENDOR, "NuVision"], [TYPE, TABLET]],
|
917
|
-
[
|
918
|
-
/\b(k88) b/i
|
919
|
-
// ZTE K Series Tablet
|
920
|
-
],
|
921
|
-
[MODEL, [VENDOR, "ZTE"], [TYPE, TABLET]],
|
922
|
-
[
|
923
|
-
/\b(nx\d{3}j) b/i
|
924
|
-
// ZTE Nubia
|
925
|
-
],
|
926
|
-
[MODEL, [VENDOR, "ZTE"], [TYPE, MOBILE]],
|
927
|
-
[
|
928
|
-
/\b(gen\d{3}) b.+49h/i
|
929
|
-
// Swiss GEN Mobile
|
930
|
-
],
|
931
|
-
[MODEL, [VENDOR, "Swiss"], [TYPE, MOBILE]],
|
932
|
-
[
|
933
|
-
/\b(zur\d{3}) b/i
|
934
|
-
// Swiss ZUR Tablet
|
935
|
-
],
|
936
|
-
[MODEL, [VENDOR, "Swiss"], [TYPE, TABLET]],
|
937
|
-
[
|
938
|
-
/\b((zeki)?tb.*\b) b/i
|
939
|
-
// Zeki Tablets
|
940
|
-
],
|
941
|
-
[MODEL, [VENDOR, "Zeki"], [TYPE, TABLET]],
|
942
|
-
[
|
943
|
-
/\b([yr]\d{2}) b/i,
|
944
|
-
/\b(dragon[- ]+touch |dt)(\w{5}) b/i
|
945
|
-
// Dragon Touch Tablet
|
946
|
-
],
|
947
|
-
[[VENDOR, "Dragon Touch"], MODEL, [TYPE, TABLET]],
|
948
|
-
[
|
949
|
-
/\b(ns-?\w{0,9}) b/i
|
950
|
-
// Insignia Tablets
|
951
|
-
],
|
952
|
-
[MODEL, [VENDOR, "Insignia"], [TYPE, TABLET]],
|
953
|
-
[
|
954
|
-
/\b((nxa|next)-?\w{0,9}) b/i
|
955
|
-
// NextBook Tablets
|
956
|
-
],
|
957
|
-
[MODEL, [VENDOR, "NextBook"], [TYPE, TABLET]],
|
958
|
-
[
|
959
|
-
/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i
|
960
|
-
// Voice Xtreme Phones
|
961
|
-
],
|
962
|
-
[[VENDOR, "Voice"], MODEL, [TYPE, MOBILE]],
|
963
|
-
[
|
964
|
-
/\b(lvtel\-)?(v1[12]) b/i
|
965
|
-
// LvTel Phones
|
966
|
-
],
|
967
|
-
[[VENDOR, "LvTel"], MODEL, [TYPE, MOBILE]],
|
968
|
-
[
|
969
|
-
/\b(ph-1) /i
|
970
|
-
// Essential PH-1
|
971
|
-
],
|
972
|
-
[MODEL, [VENDOR, "Essential"], [TYPE, MOBILE]],
|
973
|
-
[
|
974
|
-
/\b(v(100md|700na|7011|917g).*\b) b/i
|
975
|
-
// Envizen Tablets
|
976
|
-
],
|
977
|
-
[MODEL, [VENDOR, "Envizen"], [TYPE, TABLET]],
|
978
|
-
[
|
979
|
-
/\b(trio[-\w\. ]+) b/i
|
980
|
-
// MachSpeed Tablets
|
981
|
-
],
|
982
|
-
[MODEL, [VENDOR, "MachSpeed"], [TYPE, TABLET]],
|
983
|
-
[
|
984
|
-
/\btu_(1491) b/i
|
985
|
-
// Rotor Tablets
|
986
|
-
],
|
987
|
-
[MODEL, [VENDOR, "Rotor"], [TYPE, TABLET]],
|
988
|
-
[
|
989
|
-
/(shield[\w ]+) b/i
|
990
|
-
// Nvidia Shield Tablets
|
991
|
-
],
|
992
|
-
[MODEL, [VENDOR, "Nvidia"], [TYPE, TABLET]],
|
993
|
-
[
|
994
|
-
/(sprint) (\w+)/i
|
995
|
-
// Sprint Phones
|
996
|
-
],
|
997
|
-
[VENDOR, MODEL, [TYPE, MOBILE]],
|
998
|
-
[
|
999
|
-
/(kin\.[onetw]{3})/i
|
1000
|
-
// Microsoft Kin
|
1001
|
-
],
|
1002
|
-
[[MODEL, /\./g, " "], [VENDOR, MICROSOFT], [TYPE, MOBILE]],
|
1003
|
-
[
|
1004
|
-
/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
|
1005
|
-
// Zebra
|
1006
|
-
],
|
1007
|
-
[MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]],
|
1008
|
-
[
|
1009
|
-
/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
|
1010
|
-
],
|
1011
|
-
[MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]],
|
1012
|
-
[
|
1013
|
-
///////////////////
|
1014
|
-
// SMARTTVS
|
1015
|
-
///////////////////
|
1016
|
-
/smart-tv.+(samsung)/i
|
1017
|
-
// Samsung
|
1018
|
-
],
|
1019
|
-
[VENDOR, [TYPE, SMARTTV]],
|
1020
|
-
[
|
1021
|
-
/hbbtv.+maple;(\d+)/i
|
1022
|
-
],
|
1023
|
-
[[MODEL, /^/, "SmartTV"], [VENDOR, SAMSUNG], [TYPE, SMARTTV]],
|
1024
|
-
[
|
1025
|
-
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
|
1026
|
-
// LG SmartTV
|
1027
|
-
],
|
1028
|
-
[[VENDOR, LG], [TYPE, SMARTTV]],
|
1029
|
-
[
|
1030
|
-
/(apple) ?tv/i
|
1031
|
-
// Apple TV
|
1032
|
-
],
|
1033
|
-
[VENDOR, [MODEL, APPLE + " TV"], [TYPE, SMARTTV]],
|
1034
|
-
[
|
1035
|
-
/crkey/i
|
1036
|
-
// Google Chromecast
|
1037
|
-
],
|
1038
|
-
[[MODEL, CHROME + "cast"], [VENDOR, GOOGLE], [TYPE, SMARTTV]],
|
1039
|
-
[
|
1040
|
-
/droid.+aft(\w+)( bui|\))/i
|
1041
|
-
// Fire TV
|
1042
|
-
],
|
1043
|
-
[MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]],
|
1044
|
-
[
|
1045
|
-
/\(dtv[\);].+(aquos)/i,
|
1046
|
-
/(aquos-tv[\w ]+)\)/i
|
1047
|
-
// Sharp
|
1048
|
-
],
|
1049
|
-
[MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],
|
1050
|
-
[
|
1051
|
-
/(bravia[\w ]+)( bui|\))/i
|
1052
|
-
// Sony
|
1053
|
-
],
|
1054
|
-
[MODEL, [VENDOR, SONY], [TYPE, SMARTTV]],
|
1055
|
-
[
|
1056
|
-
/(mitv-\w{5}) bui/i
|
1057
|
-
// Xiaomi
|
1058
|
-
],
|
1059
|
-
[MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]],
|
1060
|
-
[
|
1061
|
-
/Hbbtv.*(technisat) (.*);/i
|
1062
|
-
// TechniSAT
|
1063
|
-
],
|
1064
|
-
[VENDOR, MODEL, [TYPE, SMARTTV]],
|
1065
|
-
[
|
1066
|
-
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
|
1067
|
-
// Roku
|
1068
|
-
/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
|
1069
|
-
// HbbTV devices
|
1070
|
-
],
|
1071
|
-
[[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]],
|
1072
|
-
[
|
1073
|
-
/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
|
1074
|
-
// SmartTV from Unidentified Vendors
|
1075
|
-
],
|
1076
|
-
[[TYPE, SMARTTV]],
|
1077
|
-
[
|
1078
|
-
///////////////////
|
1079
|
-
// CONSOLES
|
1080
|
-
///////////////////
|
1081
|
-
/(ouya)/i,
|
1082
|
-
// Ouya
|
1083
|
-
/(nintendo) ([wids3utch]+)/i
|
1084
|
-
// Nintendo
|
1085
|
-
],
|
1086
|
-
[VENDOR, MODEL, [TYPE, CONSOLE]],
|
1087
|
-
[
|
1088
|
-
/droid.+; (shield) bui/i
|
1089
|
-
// Nvidia
|
1090
|
-
],
|
1091
|
-
[MODEL, [VENDOR, "Nvidia"], [TYPE, CONSOLE]],
|
1092
|
-
[
|
1093
|
-
/(playstation [345portablevi]+)/i
|
1094
|
-
// Playstation
|
1095
|
-
],
|
1096
|
-
[MODEL, [VENDOR, SONY], [TYPE, CONSOLE]],
|
1097
|
-
[
|
1098
|
-
/\b(xbox(?: one)?(?!; xbox))[\); ]/i
|
1099
|
-
// Microsoft Xbox
|
1100
|
-
],
|
1101
|
-
[MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]],
|
1102
|
-
[
|
1103
|
-
///////////////////
|
1104
|
-
// WEARABLES
|
1105
|
-
///////////////////
|
1106
|
-
/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i
|
1107
|
-
// Samsung Galaxy Watch
|
1108
|
-
],
|
1109
|
-
[MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]],
|
1110
|
-
[
|
1111
|
-
/((pebble))app/i
|
1112
|
-
// Pebble
|
1113
|
-
],
|
1114
|
-
[VENDOR, MODEL, [TYPE, WEARABLE]],
|
1115
|
-
[
|
1116
|
-
/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
|
1117
|
-
// Apple Watch
|
1118
|
-
],
|
1119
|
-
[MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]],
|
1120
|
-
[
|
1121
|
-
/droid.+; (glass) \d/i
|
1122
|
-
// Google Glass
|
1123
|
-
],
|
1124
|
-
[MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]],
|
1125
|
-
[
|
1126
|
-
/droid.+; (wt63?0{2,3})\)/i
|
1127
|
-
],
|
1128
|
-
[MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]],
|
1129
|
-
[
|
1130
|
-
/(quest( \d| pro)?)/i
|
1131
|
-
// Oculus Quest
|
1132
|
-
],
|
1133
|
-
[MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]],
|
1134
|
-
[
|
1135
|
-
///////////////////
|
1136
|
-
// EMBEDDED
|
1137
|
-
///////////////////
|
1138
|
-
/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
|
1139
|
-
// Tesla
|
1140
|
-
],
|
1141
|
-
[VENDOR, [TYPE, EMBEDDED]],
|
1142
|
-
[
|
1143
|
-
/(aeobc)\b/i
|
1144
|
-
// Echo Dot
|
1145
|
-
],
|
1146
|
-
[MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]],
|
1147
|
-
[
|
1148
|
-
////////////////////
|
1149
|
-
// MIXED (GENERIC)
|
1150
|
-
///////////////////
|
1151
|
-
/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i
|
1152
|
-
// Android Phones from Unidentified Vendors
|
1153
|
-
],
|
1154
|
-
[MODEL, [TYPE, MOBILE]],
|
1155
|
-
[
|
1156
|
-
/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i
|
1157
|
-
// Android Tablets from Unidentified Vendors
|
1158
|
-
],
|
1159
|
-
[MODEL, [TYPE, TABLET]],
|
1160
|
-
[
|
1161
|
-
/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
|
1162
|
-
// Unidentifiable Tablet
|
1163
|
-
],
|
1164
|
-
[[TYPE, TABLET]],
|
1165
|
-
[
|
1166
|
-
/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
|
1167
|
-
// Unidentifiable Mobile
|
1168
|
-
],
|
1169
|
-
[[TYPE, MOBILE]],
|
1170
|
-
[
|
1171
|
-
/(android[-\w\. ]{0,9});.+buil/i
|
1172
|
-
// Generic Android Device
|
1173
|
-
],
|
1174
|
-
[MODEL, [VENDOR, "Generic"]]
|
1175
|
-
],
|
1176
|
-
engine: [
|
1177
|
-
[
|
1178
|
-
/windows.+ edge\/([\w\.]+)/i
|
1179
|
-
// EdgeHTML
|
1180
|
-
],
|
1181
|
-
[VERSION, [NAME, EDGE + "HTML"]],
|
1182
|
-
[
|
1183
|
-
/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
|
1184
|
-
// Blink
|
1185
|
-
],
|
1186
|
-
[VERSION, [NAME, "Blink"]],
|
1187
|
-
[
|
1188
|
-
/(presto)\/([\w\.]+)/i,
|
1189
|
-
// Presto
|
1190
|
-
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
|
1191
|
-
// WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
|
1192
|
-
/ekioh(flow)\/([\w\.]+)/i,
|
1193
|
-
// Flow
|
1194
|
-
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
|
1195
|
-
// KHTML/Tasman/Links
|
1196
|
-
/(icab)[\/ ]([23]\.[\d\.]+)/i,
|
1197
|
-
// iCab
|
1198
|
-
/\b(libweb)/i
|
1199
|
-
],
|
1200
|
-
[NAME, VERSION],
|
1201
|
-
[
|
1202
|
-
/rv\:([\w\.]{1,9})\b.+(gecko)/i
|
1203
|
-
// Gecko
|
1204
|
-
],
|
1205
|
-
[VERSION, NAME]
|
1206
|
-
],
|
1207
|
-
os: [
|
1208
|
-
[
|
1209
|
-
// Windows
|
1210
|
-
/microsoft (windows) (vista|xp)/i
|
1211
|
-
// Windows (iTunes)
|
1212
|
-
],
|
1213
|
-
[NAME, VERSION],
|
1214
|
-
[
|
1215
|
-
/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i
|
1216
|
-
// Windows Phone
|
1217
|
-
],
|
1218
|
-
[NAME, [VERSION, strMapper, windowsVersionMap]],
|
1219
|
-
[
|
1220
|
-
/windows nt 6\.2; (arm)/i,
|
1221
|
-
// Windows RT
|
1222
|
-
/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,
|
1223
|
-
/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
|
1224
|
-
],
|
1225
|
-
[[VERSION, strMapper, windowsVersionMap], [NAME, "Windows"]],
|
1226
|
-
[
|
1227
|
-
// iOS/macOS
|
1228
|
-
/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,
|
1229
|
-
// iOS
|
1230
|
-
/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
|
1231
|
-
/cfnetwork\/.+darwin/i
|
1232
|
-
],
|
1233
|
-
[[VERSION, /_/g, "."], [NAME, "iOS"]],
|
1234
|
-
[
|
1235
|
-
/(mac os x) ?([\w\. ]*)/i,
|
1236
|
-
/(macintosh|mac_powerpc\b)(?!.+haiku)/i
|
1237
|
-
// Mac OS
|
1238
|
-
],
|
1239
|
-
[[NAME, MAC_OS], [VERSION, /_/g, "."]],
|
1240
|
-
[
|
1241
|
-
// Mobile OSes
|
1242
|
-
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
|
1243
|
-
// Android-x86/HarmonyOS
|
1244
|
-
],
|
1245
|
-
[VERSION, NAME],
|
1246
|
-
[
|
1247
|
-
// Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
|
1248
|
-
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
|
1249
|
-
/(blackberry)\w*\/([\w\.]*)/i,
|
1250
|
-
// Blackberry
|
1251
|
-
/(tizen|kaios)[\/ ]([\w\.]+)/i,
|
1252
|
-
// Tizen/KaiOS
|
1253
|
-
/\((series40);/i
|
1254
|
-
// Series 40
|
1255
|
-
],
|
1256
|
-
[NAME, VERSION],
|
1257
|
-
[
|
1258
|
-
/\(bb(10);/i
|
1259
|
-
// BlackBerry 10
|
1260
|
-
],
|
1261
|
-
[VERSION, [NAME, BLACKBERRY]],
|
1262
|
-
[
|
1263
|
-
/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i
|
1264
|
-
// Symbian
|
1265
|
-
],
|
1266
|
-
[VERSION, [NAME, "Symbian"]],
|
1267
|
-
[
|
1268
|
-
/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
|
1269
|
-
// Firefox OS
|
1270
|
-
],
|
1271
|
-
[VERSION, [NAME, FIREFOX + " OS"]],
|
1272
|
-
[
|
1273
|
-
/web0s;.+rt(tv)/i,
|
1274
|
-
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
|
1275
|
-
// WebOS
|
1276
|
-
],
|
1277
|
-
[VERSION, [NAME, "webOS"]],
|
1278
|
-
[
|
1279
|
-
/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
|
1280
|
-
// watchOS
|
1281
|
-
],
|
1282
|
-
[VERSION, [NAME, "watchOS"]],
|
1283
|
-
[
|
1284
|
-
// Google Chromecast
|
1285
|
-
/crkey\/([\d\.]+)/i
|
1286
|
-
// Google Chromecast
|
1287
|
-
],
|
1288
|
-
[VERSION, [NAME, CHROME + "cast"]],
|
1289
|
-
[
|
1290
|
-
/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i
|
1291
|
-
// Chromium OS
|
1292
|
-
],
|
1293
|
-
[[NAME, CHROMIUM_OS], VERSION],
|
1294
|
-
[
|
1295
|
-
// Smart TVs
|
1296
|
-
/panasonic;(viera)/i,
|
1297
|
-
// Panasonic Viera
|
1298
|
-
/(netrange)mmh/i,
|
1299
|
-
// Netrange
|
1300
|
-
/(nettv)\/(\d+\.[\w\.]+)/i,
|
1301
|
-
// NetTV
|
1302
|
-
// Console
|
1303
|
-
/(nintendo|playstation) ([wids345portablevuch]+)/i,
|
1304
|
-
// Nintendo/Playstation
|
1305
|
-
/(xbox); +xbox ([^\);]+)/i,
|
1306
|
-
// Microsoft Xbox (360, One, X, S, Series X, Series S)
|
1307
|
-
// Other
|
1308
|
-
/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
|
1309
|
-
// Joli/Palm
|
1310
|
-
/(mint)[\/\(\) ]?(\w*)/i,
|
1311
|
-
// Mint
|
1312
|
-
/(mageia|vectorlinux)[; ]/i,
|
1313
|
-
// Mageia/VectorLinux
|
1314
|
-
/([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,
|
1315
|
-
// Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
|
1316
|
-
/(hurd|linux) ?([\w\.]*)/i,
|
1317
|
-
// Hurd/Linux
|
1318
|
-
/(gnu) ?([\w\.]*)/i,
|
1319
|
-
// GNU
|
1320
|
-
/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
|
1321
|
-
// FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
|
1322
|
-
/(haiku) (\w+)/i
|
1323
|
-
// Haiku
|
1324
|
-
],
|
1325
|
-
[NAME, VERSION],
|
1326
|
-
[
|
1327
|
-
/(sunos) ?([\w\.\d]*)/i
|
1328
|
-
// Solaris
|
1329
|
-
],
|
1330
|
-
[[NAME, "Solaris"], VERSION],
|
1331
|
-
[
|
1332
|
-
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
|
1333
|
-
// Solaris
|
1334
|
-
/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
|
1335
|
-
// AIX
|
1336
|
-
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
|
1337
|
-
// BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
|
1338
|
-
/(unix) ?([\w\.]*)/i
|
1339
|
-
// UNIX
|
1340
|
-
],
|
1341
|
-
[NAME, VERSION]
|
1342
|
-
]
|
1343
|
-
};
|
1344
|
-
var UAParser2 = function(ua, extensions) {
|
1345
|
-
if (typeof ua === OBJ_TYPE) {
|
1346
|
-
extensions = ua;
|
1347
|
-
ua = undefined2;
|
1348
|
-
}
|
1349
|
-
if (!(this instanceof UAParser2)) {
|
1350
|
-
return new UAParser2(ua, extensions).getResult();
|
1351
|
-
}
|
1352
|
-
var _navigator = typeof window2 !== UNDEF_TYPE && window2.navigator ? window2.navigator : undefined2;
|
1353
|
-
var _ua = ua || (_navigator && _navigator.userAgent ? _navigator.userAgent : EMPTY);
|
1354
|
-
var _uach = _navigator && _navigator.userAgentData ? _navigator.userAgentData : undefined2;
|
1355
|
-
var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
|
1356
|
-
var _isSelfNav = _navigator && _navigator.userAgent == _ua;
|
1357
|
-
this.getBrowser = function() {
|
1358
|
-
var _browser = {};
|
1359
|
-
_browser[NAME] = undefined2;
|
1360
|
-
_browser[VERSION] = undefined2;
|
1361
|
-
rgxMapper.call(_browser, _ua, _rgxmap.browser);
|
1362
|
-
_browser[MAJOR] = majorize(_browser[VERSION]);
|
1363
|
-
if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
|
1364
|
-
_browser[NAME] = "Brave";
|
1365
|
-
}
|
1366
|
-
return _browser;
|
1367
|
-
};
|
1368
|
-
this.getCPU = function() {
|
1369
|
-
var _cpu = {};
|
1370
|
-
_cpu[ARCHITECTURE] = undefined2;
|
1371
|
-
rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
|
1372
|
-
return _cpu;
|
1373
|
-
};
|
1374
|
-
this.getDevice = function() {
|
1375
|
-
var _device = {};
|
1376
|
-
_device[VENDOR] = undefined2;
|
1377
|
-
_device[MODEL] = undefined2;
|
1378
|
-
_device[TYPE] = undefined2;
|
1379
|
-
rgxMapper.call(_device, _ua, _rgxmap.device);
|
1380
|
-
if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
|
1381
|
-
_device[TYPE] = MOBILE;
|
1382
|
-
}
|
1383
|
-
if (_isSelfNav && _device[MODEL] == "Macintosh" && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
|
1384
|
-
_device[MODEL] = "iPad";
|
1385
|
-
_device[TYPE] = TABLET;
|
1386
|
-
}
|
1387
|
-
return _device;
|
1388
|
-
};
|
1389
|
-
this.getEngine = function() {
|
1390
|
-
var _engine = {};
|
1391
|
-
_engine[NAME] = undefined2;
|
1392
|
-
_engine[VERSION] = undefined2;
|
1393
|
-
rgxMapper.call(_engine, _ua, _rgxmap.engine);
|
1394
|
-
return _engine;
|
1395
|
-
};
|
1396
|
-
this.getOS = function() {
|
1397
|
-
var _os = {};
|
1398
|
-
_os[NAME] = undefined2;
|
1399
|
-
_os[VERSION] = undefined2;
|
1400
|
-
rgxMapper.call(_os, _ua, _rgxmap.os);
|
1401
|
-
if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != "Unknown") {
|
1402
|
-
_os[NAME] = _uach.platform.replace(/chrome os/i, CHROMIUM_OS).replace(/macos/i, MAC_OS);
|
1403
|
-
}
|
1404
|
-
return _os;
|
1405
|
-
};
|
1406
|
-
this.getResult = function() {
|
1407
|
-
return {
|
1408
|
-
ua: this.getUA(),
|
1409
|
-
browser: this.getBrowser(),
|
1410
|
-
engine: this.getEngine(),
|
1411
|
-
os: this.getOS(),
|
1412
|
-
device: this.getDevice(),
|
1413
|
-
cpu: this.getCPU()
|
1414
|
-
};
|
1415
|
-
};
|
1416
|
-
this.getUA = function() {
|
1417
|
-
return _ua;
|
1418
|
-
};
|
1419
|
-
this.setUA = function(ua2) {
|
1420
|
-
_ua = typeof ua2 === STR_TYPE && ua2.length > UA_MAX_LENGTH ? trim(ua2, UA_MAX_LENGTH) : ua2;
|
1421
|
-
return this;
|
1422
|
-
};
|
1423
|
-
this.setUA(_ua);
|
1424
|
-
return this;
|
1425
|
-
};
|
1426
|
-
UAParser2.VERSION = LIBVERSION;
|
1427
|
-
UAParser2.BROWSER = enumerize([NAME, VERSION, MAJOR]);
|
1428
|
-
UAParser2.CPU = enumerize([ARCHITECTURE]);
|
1429
|
-
UAParser2.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
|
1430
|
-
UAParser2.ENGINE = UAParser2.OS = enumerize([NAME, VERSION]);
|
1431
|
-
if (typeof exports !== UNDEF_TYPE) {
|
1432
|
-
if (typeof module !== UNDEF_TYPE && module.exports) {
|
1433
|
-
exports = module.exports = UAParser2;
|
1434
|
-
}
|
1435
|
-
exports.UAParser = UAParser2;
|
1436
|
-
} else {
|
1437
|
-
if (typeof define === FUNC_TYPE && define.amd) {
|
1438
|
-
define(function() {
|
1439
|
-
return UAParser2;
|
1440
|
-
});
|
1441
|
-
} else if (typeof window2 !== UNDEF_TYPE) {
|
1442
|
-
window2.UAParser = UAParser2;
|
1443
|
-
}
|
1444
|
-
}
|
1445
|
-
var $ = typeof window2 !== UNDEF_TYPE && (window2.jQuery || window2.Zepto);
|
1446
|
-
if ($ && !$.ua) {
|
1447
|
-
var parser = new UAParser2();
|
1448
|
-
$.ua = parser.getResult();
|
1449
|
-
$.ua.get = function() {
|
1450
|
-
return parser.getUA();
|
1451
|
-
};
|
1452
|
-
$.ua.set = function(ua) {
|
1453
|
-
parser.setUA(ua);
|
1454
|
-
var result = parser.getResult();
|
1455
|
-
for (var prop in result) {
|
1456
|
-
$.ua[prop] = result[prop];
|
1457
|
-
}
|
1458
|
-
};
|
1459
|
-
}
|
1460
|
-
})(typeof window === "object" ? window : exports);
|
1461
|
-
}
|
1462
|
-
});
|
1463
|
-
|
1464
129
|
// index.ts
|
1465
130
|
init_react_import();
|
1466
131
|
|
@@ -1627,39 +292,16 @@ var ChevronRight = createLucideIcon("ChevronRight", [
|
|
1627
292
|
|
1628
293
|
// ../core/lib/use-breadcrumbs.ts
|
1629
294
|
init_react_import();
|
1630
|
-
import { useContext as useContext2, useMemo } from "react";
|
295
|
+
import { useContext as useContext2, useMemo as useMemo2 } from "react";
|
1631
296
|
|
1632
297
|
// ../core/components/DropZone/context.tsx
|
1633
298
|
init_react_import();
|
1634
299
|
import {
|
1635
300
|
createContext,
|
1636
301
|
useCallback,
|
302
|
+
useMemo,
|
1637
303
|
useState
|
1638
304
|
} from "react";
|
1639
|
-
|
1640
|
-
// ../core/lib/get-item.ts
|
1641
|
-
init_react_import();
|
1642
|
-
|
1643
|
-
// ../core/lib/root-droppable-id.ts
|
1644
|
-
init_react_import();
|
1645
|
-
var rootDroppableId = "default-zone";
|
1646
|
-
|
1647
|
-
// ../core/lib/setup-zone.ts
|
1648
|
-
init_react_import();
|
1649
|
-
|
1650
|
-
// ../core/lib/get-zone-id.ts
|
1651
|
-
init_react_import();
|
1652
|
-
var getZoneId = (zoneCompound) => {
|
1653
|
-
if (!zoneCompound) {
|
1654
|
-
return [];
|
1655
|
-
}
|
1656
|
-
if (zoneCompound && zoneCompound.indexOf(":") > -1) {
|
1657
|
-
return zoneCompound.split(":");
|
1658
|
-
}
|
1659
|
-
return [rootDroppableId, zoneCompound];
|
1660
|
-
};
|
1661
|
-
|
1662
|
-
// ../core/components/DropZone/context.tsx
|
1663
305
|
import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
|
1664
306
|
var dropZoneContext = createContext(null);
|
1665
307
|
|
@@ -1672,6 +314,16 @@ import {
|
|
1672
314
|
useState as useState4
|
1673
315
|
} from "react";
|
1674
316
|
|
317
|
+
// ../core/lib/get-item.ts
|
318
|
+
init_react_import();
|
319
|
+
|
320
|
+
// ../core/lib/root-droppable-id.ts
|
321
|
+
init_react_import();
|
322
|
+
var rootDroppableId = "default-zone";
|
323
|
+
|
324
|
+
// ../core/lib/setup-zone.ts
|
325
|
+
init_react_import();
|
326
|
+
|
1675
327
|
// ../core/components/ViewportControls/default-viewports.ts
|
1676
328
|
init_react_import();
|
1677
329
|
var defaultViewports = [
|
@@ -1680,9 +332,6 @@ var defaultViewports = [
|
|
1680
332
|
{ width: 1280, height: "auto", icon: "Monitor", label: "Large" }
|
1681
333
|
];
|
1682
334
|
|
1683
|
-
// ../core/components/Puck/context.tsx
|
1684
|
-
var import_ua_parser_js = __toESM(require_ua_parser());
|
1685
|
-
|
1686
335
|
// ../core/lib/use-resolved-permissions.ts
|
1687
336
|
init_react_import();
|
1688
337
|
import { useCallback as useCallback2, useEffect, useState as useState2 } from "react";
|
@@ -1750,7 +399,6 @@ var defaultContext = {
|
|
1750
399
|
status: "LOADING",
|
1751
400
|
setStatus: () => null,
|
1752
401
|
iframe: {},
|
1753
|
-
safariFallbackMode: false,
|
1754
402
|
globalPermissions: {},
|
1755
403
|
getPermissions: () => ({}),
|
1756
404
|
refreshPermissions: () => null
|
@@ -1770,6 +418,18 @@ function useAppContext() {
|
|
1770
418
|
});
|
1771
419
|
}
|
1772
420
|
|
421
|
+
// ../core/lib/get-zone-id.ts
|
422
|
+
init_react_import();
|
423
|
+
var getZoneId = (zoneCompound) => {
|
424
|
+
if (!zoneCompound) {
|
425
|
+
return [];
|
426
|
+
}
|
427
|
+
if (zoneCompound && zoneCompound.indexOf(":") > -1) {
|
428
|
+
return zoneCompound.split(":");
|
429
|
+
}
|
430
|
+
return [rootDroppableId, zoneCompound];
|
431
|
+
};
|
432
|
+
|
1773
433
|
// ../core/lib/use-breadcrumbs.ts
|
1774
434
|
var convertPathDataToBreadcrumbs = (selectedItem, pathData, data) => {
|
1775
435
|
const id = selectedItem ? selectedItem == null ? void 0 : selectedItem.props.id : "";
|
@@ -1821,7 +481,7 @@ var useBreadcrumbs = (renderCount) => {
|
|
1821
481
|
selectedItem
|
1822
482
|
} = useAppContext();
|
1823
483
|
const dzContext = useContext2(dropZoneContext);
|
1824
|
-
return
|
484
|
+
return useMemo2(() => {
|
1825
485
|
const breadcrumbs = convertPathDataToBreadcrumbs(
|
1826
486
|
selectedItem,
|
1827
487
|
dzContext == null ? void 0 : dzContext.pathData,
|
@@ -1963,11 +623,12 @@ var scrollIntoView = (el) => {
|
|
1963
623
|
// ../core/lib/get-frame.ts
|
1964
624
|
init_react_import();
|
1965
625
|
var getFrame = () => {
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
626
|
+
if (typeof window === "undefined") return;
|
627
|
+
let frameEl = document.querySelector("#preview-frame");
|
628
|
+
if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
|
629
|
+
return frameEl.contentDocument || document;
|
1969
630
|
}
|
1970
|
-
return
|
631
|
+
return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
|
1971
632
|
};
|
1972
633
|
|
1973
634
|
// src/HeadingAnalyzer.tsx
|
@@ -1976,36 +637,29 @@ import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs2 } from "react/jsx-run
|
|
1976
637
|
var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
|
1977
638
|
var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
|
1978
639
|
var ReactFromJSON = ReactFromJSONModule.default || ReactFromJSONModule;
|
1979
|
-
var
|
1980
|
-
var getOutline = ({
|
1981
|
-
addDataAttr = false,
|
1982
|
-
frame
|
1983
|
-
} = {}) => {
|
640
|
+
var getOutline = ({ frame } = {}) => {
|
1984
641
|
const headings = (frame == null ? void 0 : frame.querySelectorAll("h1,h2,h3,h4,h5,h6")) || [];
|
1985
642
|
const _outline = [];
|
1986
643
|
headings.forEach((item, i) => {
|
1987
|
-
if (addDataAttr) {
|
1988
|
-
item.setAttribute(dataAttr, i.toString());
|
1989
|
-
}
|
1990
644
|
_outline.push({
|
1991
645
|
rank: parseInt(item.tagName.split("H")[1]),
|
1992
646
|
text: item.textContent,
|
1993
|
-
|
647
|
+
element: item
|
1994
648
|
});
|
1995
649
|
});
|
1996
650
|
return _outline;
|
1997
651
|
};
|
1998
652
|
function buildHierarchy(frame) {
|
1999
653
|
var _a, _b;
|
2000
|
-
const headings = getOutline({
|
654
|
+
const headings = getOutline({ frame });
|
2001
655
|
const root = { rank: 0, children: [], text: "" };
|
2002
656
|
let path = [root];
|
2003
657
|
for (let heading of headings) {
|
2004
658
|
const node = {
|
2005
659
|
rank: heading.rank,
|
2006
660
|
text: heading.text,
|
2007
|
-
|
2008
|
-
|
661
|
+
children: [],
|
662
|
+
element: heading.element
|
2009
663
|
};
|
2010
664
|
if (node.rank === 1) {
|
2011
665
|
path = [root];
|
@@ -2032,18 +686,18 @@ function buildHierarchy(frame) {
|
|
2032
686
|
var HeadingAnalyzer = () => {
|
2033
687
|
const { appState } = usePuck();
|
2034
688
|
const [hierarchy, setHierarchy] = useState5([]);
|
2035
|
-
const [firstRender, setFirstRender] = useState5(true);
|
2036
689
|
useEffect4(() => {
|
2037
690
|
const frame = getFrame();
|
2038
|
-
|
2039
|
-
if (
|
2040
|
-
|
2041
|
-
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
691
|
+
const entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
|
692
|
+
if (!entry) return;
|
693
|
+
setHierarchy(buildHierarchy(entry));
|
694
|
+
const observer = new MutationObserver(() => {
|
695
|
+
setHierarchy(buildHierarchy(entry));
|
696
|
+
});
|
697
|
+
observer.observe(entry, { subtree: true, childList: true });
|
698
|
+
return () => {
|
699
|
+
observer.disconnect();
|
700
|
+
};
|
2047
701
|
}, [appState.data]);
|
2048
702
|
return /* @__PURE__ */ jsxs2("div", { className: getClassName5(), children: [
|
2049
703
|
/* @__PURE__ */ jsxs2(
|
@@ -2074,12 +728,9 @@ var HeadingAnalyzer = () => {
|
|
2074
728
|
"small",
|
2075
729
|
{
|
2076
730
|
className: getClassNameItem2({ missing: props.missing }),
|
2077
|
-
onClick: typeof props.
|
731
|
+
onClick: typeof props.element == "undefined" ? void 0 : (e) => {
|
2078
732
|
e.stopPropagation();
|
2079
|
-
const
|
2080
|
-
const el = frame == null ? void 0 : frame.querySelector(
|
2081
|
-
`[${dataAttr}="${props.analyzeId}"]`
|
2082
|
-
);
|
733
|
+
const el = props.element;
|
2083
734
|
const oldStyle = __spreadValues({}, el.style);
|
2084
735
|
if (el) {
|
2085
736
|
scrollIntoView(el);
|