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