@measured/puck-plugin-heading-analyzer 0.17.3-canary.f61dd4a → 0.18.0-canary.007a413
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 +79 -1392
- package/dist/index.mjs +87 -1399
- 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,57 @@ function useAppContext() {
|
|
1773
419
|
});
|
1774
420
|
}
|
1775
421
|
|
422
|
+
// ../../node_modules/zustand/esm/vanilla.mjs
|
423
|
+
init_react_import();
|
424
|
+
var createStoreImpl = (createState) => {
|
425
|
+
let state;
|
426
|
+
const listeners = /* @__PURE__ */ new Set();
|
427
|
+
const setState = (partial, replace) => {
|
428
|
+
const nextState = typeof partial === "function" ? partial(state) : partial;
|
429
|
+
if (!Object.is(nextState, state)) {
|
430
|
+
const previousState = state;
|
431
|
+
state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState);
|
432
|
+
listeners.forEach((listener) => listener(state, previousState));
|
433
|
+
}
|
434
|
+
};
|
435
|
+
const getState = () => state;
|
436
|
+
const getInitialState = () => initialState;
|
437
|
+
const subscribe = (listener) => {
|
438
|
+
listeners.add(listener);
|
439
|
+
return () => listeners.delete(listener);
|
440
|
+
};
|
441
|
+
const api = { setState, getState, getInitialState, subscribe };
|
442
|
+
const initialState = state = createState(setState, getState, api);
|
443
|
+
return api;
|
444
|
+
};
|
445
|
+
var createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
|
446
|
+
|
447
|
+
// ../core/components/DropZone/context.tsx
|
448
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
449
|
+
var dropZoneContext = (0, import_react7.createContext)(null);
|
450
|
+
var ZoneStoreContext = (0, import_react7.createContext)(
|
451
|
+
createStore(() => ({
|
452
|
+
zoneDepthIndex: {},
|
453
|
+
nextZoneDepthIndex: {},
|
454
|
+
areaDepthIndex: {},
|
455
|
+
nextAreaDepthIndex: {},
|
456
|
+
draggedItem: null,
|
457
|
+
previewIndex: {}
|
458
|
+
}))
|
459
|
+
);
|
460
|
+
|
461
|
+
// ../core/lib/get-zone-id.ts
|
462
|
+
init_react_import();
|
463
|
+
var getZoneId = (zoneCompound) => {
|
464
|
+
if (!zoneCompound) {
|
465
|
+
return [];
|
466
|
+
}
|
467
|
+
if (zoneCompound && zoneCompound.indexOf(":") > -1) {
|
468
|
+
return zoneCompound.split(":");
|
469
|
+
}
|
470
|
+
return [rootDroppableId, zoneCompound];
|
471
|
+
};
|
472
|
+
|
1776
473
|
// ../core/lib/use-breadcrumbs.ts
|
1777
474
|
var convertPathDataToBreadcrumbs = (selectedItem, pathData, data) => {
|
1778
475
|
const id = selectedItem ? selectedItem == null ? void 0 : selectedItem.props.id : "";
|
@@ -1980,36 +677,29 @@ var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1980
677
|
var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
|
1981
678
|
var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
|
1982
679
|
var ReactFromJSON = import_react_from_json.default.default || import_react_from_json.default;
|
1983
|
-
var
|
1984
|
-
var getOutline = ({
|
1985
|
-
addDataAttr = false,
|
1986
|
-
frame
|
1987
|
-
} = {}) => {
|
680
|
+
var getOutline = ({ frame } = {}) => {
|
1988
681
|
const headings = (frame == null ? void 0 : frame.querySelectorAll("h1,h2,h3,h4,h5,h6")) || [];
|
1989
682
|
const _outline = [];
|
1990
683
|
headings.forEach((item, i) => {
|
1991
|
-
if (addDataAttr) {
|
1992
|
-
item.setAttribute(dataAttr, i.toString());
|
1993
|
-
}
|
1994
684
|
_outline.push({
|
1995
685
|
rank: parseInt(item.tagName.split("H")[1]),
|
1996
686
|
text: item.textContent,
|
1997
|
-
|
687
|
+
element: item
|
1998
688
|
});
|
1999
689
|
});
|
2000
690
|
return _outline;
|
2001
691
|
};
|
2002
692
|
function buildHierarchy(frame) {
|
2003
693
|
var _a, _b;
|
2004
|
-
const headings = getOutline({
|
694
|
+
const headings = getOutline({ frame });
|
2005
695
|
const root = { rank: 0, children: [], text: "" };
|
2006
696
|
let path = [root];
|
2007
697
|
for (let heading of headings) {
|
2008
698
|
const node = {
|
2009
699
|
rank: heading.rank,
|
2010
700
|
text: heading.text,
|
2011
|
-
|
2012
|
-
|
701
|
+
children: [],
|
702
|
+
element: heading.element
|
2013
703
|
};
|
2014
704
|
if (node.rank === 1) {
|
2015
705
|
path = [root];
|
@@ -2036,18 +726,18 @@ function buildHierarchy(frame) {
|
|
2036
726
|
var HeadingAnalyzer = () => {
|
2037
727
|
const { appState } = (0, import_puck.usePuck)();
|
2038
728
|
const [hierarchy, setHierarchy] = (0, import_react9.useState)([]);
|
2039
|
-
const [firstRender, setFirstRender] = (0, import_react9.useState)(true);
|
2040
729
|
(0, import_react9.useEffect)(() => {
|
2041
730
|
const frame = getFrame();
|
2042
|
-
|
2043
|
-
if (
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2047
|
-
|
2048
|
-
|
2049
|
-
|
2050
|
-
|
731
|
+
const entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
|
732
|
+
if (!entry) return;
|
733
|
+
setHierarchy(buildHierarchy(entry));
|
734
|
+
const observer = new MutationObserver(() => {
|
735
|
+
setHierarchy(buildHierarchy(entry));
|
736
|
+
});
|
737
|
+
observer.observe(entry, { subtree: true, childList: true });
|
738
|
+
return () => {
|
739
|
+
observer.disconnect();
|
740
|
+
};
|
2051
741
|
}, [appState.data]);
|
2052
742
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: getClassName5(), children: [
|
2053
743
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
@@ -2078,12 +768,9 @@ var HeadingAnalyzer = () => {
|
|
2078
768
|
"small",
|
2079
769
|
{
|
2080
770
|
className: getClassNameItem2({ missing: props.missing }),
|
2081
|
-
onClick: typeof props.
|
771
|
+
onClick: typeof props.element == "undefined" ? void 0 : (e) => {
|
2082
772
|
e.stopPropagation();
|
2083
|
-
const
|
2084
|
-
const el = frame == null ? void 0 : frame.querySelector(
|
2085
|
-
`[${dataAttr}="${props.analyzeId}"]`
|
2086
|
-
);
|
773
|
+
const el = props.element;
|
2087
774
|
const oldStyle = __spreadValues({}, el.style);
|
2088
775
|
if (el) {
|
2089
776
|
scrollIntoView(el);
|