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