@measured/puck-plugin-heading-analyzer 0.17.2-canary.f323610 → 0.18.0-canary.4b589f6
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 +84 -1396
- package/dist/index.mjs +92 -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,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 : "";
|
@@ -1966,11 +663,12 @@ var scrollIntoView = (el) => {
|
|
1966
663
|
// ../core/lib/get-frame.ts
|
1967
664
|
init_react_import();
|
1968
665
|
var getFrame = () => {
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
666
|
+
if (typeof window === "undefined") return;
|
667
|
+
let frameEl = document.querySelector("#preview-frame");
|
668
|
+
if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
|
669
|
+
return frameEl.contentDocument || document;
|
1972
670
|
}
|
1973
|
-
return
|
671
|
+
return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
|
1974
672
|
};
|
1975
673
|
|
1976
674
|
// src/HeadingAnalyzer.tsx
|
@@ -1979,36 +677,29 @@ var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1979
677
|
var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
|
1980
678
|
var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
|
1981
679
|
var ReactFromJSON = import_react_from_json.default.default || import_react_from_json.default;
|
1982
|
-
var
|
1983
|
-
var getOutline = ({
|
1984
|
-
addDataAttr = false,
|
1985
|
-
frame
|
1986
|
-
} = {}) => {
|
680
|
+
var getOutline = ({ frame } = {}) => {
|
1987
681
|
const headings = (frame == null ? void 0 : frame.querySelectorAll("h1,h2,h3,h4,h5,h6")) || [];
|
1988
682
|
const _outline = [];
|
1989
683
|
headings.forEach((item, i) => {
|
1990
|
-
if (addDataAttr) {
|
1991
|
-
item.setAttribute(dataAttr, i.toString());
|
1992
|
-
}
|
1993
684
|
_outline.push({
|
1994
685
|
rank: parseInt(item.tagName.split("H")[1]),
|
1995
686
|
text: item.textContent,
|
1996
|
-
|
687
|
+
element: item
|
1997
688
|
});
|
1998
689
|
});
|
1999
690
|
return _outline;
|
2000
691
|
};
|
2001
692
|
function buildHierarchy(frame) {
|
2002
693
|
var _a, _b;
|
2003
|
-
const headings = getOutline({
|
694
|
+
const headings = getOutline({ frame });
|
2004
695
|
const root = { rank: 0, children: [], text: "" };
|
2005
696
|
let path = [root];
|
2006
697
|
for (let heading of headings) {
|
2007
698
|
const node = {
|
2008
699
|
rank: heading.rank,
|
2009
700
|
text: heading.text,
|
2010
|
-
|
2011
|
-
|
701
|
+
children: [],
|
702
|
+
element: heading.element
|
2012
703
|
};
|
2013
704
|
if (node.rank === 1) {
|
2014
705
|
path = [root];
|
@@ -2035,18 +726,18 @@ function buildHierarchy(frame) {
|
|
2035
726
|
var HeadingAnalyzer = () => {
|
2036
727
|
const { appState } = (0, import_puck.usePuck)();
|
2037
728
|
const [hierarchy, setHierarchy] = (0, import_react9.useState)([]);
|
2038
|
-
const [firstRender, setFirstRender] = (0, import_react9.useState)(true);
|
2039
729
|
(0, import_react9.useEffect)(() => {
|
2040
730
|
const frame = getFrame();
|
2041
|
-
|
2042
|
-
if (
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2047
|
-
|
2048
|
-
|
2049
|
-
|
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
|
+
};
|
2050
741
|
}, [appState.data]);
|
2051
742
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: getClassName5(), children: [
|
2052
743
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
@@ -2077,12 +768,9 @@ var HeadingAnalyzer = () => {
|
|
2077
768
|
"small",
|
2078
769
|
{
|
2079
770
|
className: getClassNameItem2({ missing: props.missing }),
|
2080
|
-
onClick: typeof props.
|
771
|
+
onClick: typeof props.element == "undefined" ? void 0 : (e) => {
|
2081
772
|
e.stopPropagation();
|
2082
|
-
const
|
2083
|
-
const el = frame == null ? void 0 : frame.querySelector(
|
2084
|
-
`[${dataAttr}="${props.analyzeId}"]`
|
2085
|
-
);
|
773
|
+
const el = props.element;
|
2086
774
|
const oldStyle = __spreadValues({}, el.style);
|
2087
775
|
if (el) {
|
2088
776
|
scrollIntoView(el);
|