@measured/puck-plugin-heading-analyzer 0.17.2-canary.f323610 → 0.18.0-canary.d253d54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.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, {
@@ -1644,6 +309,12 @@ var import_react8 = require("react");
1644
309
  // ../core/components/DropZone/context.tsx
1645
310
  init_react_import();
1646
311
  var import_react4 = require("react");
312
+ var import_jsx_runtime2 = require("react/jsx-runtime");
313
+ var dropZoneContext = (0, import_react4.createContext)(null);
314
+
315
+ // ../core/components/Puck/context.tsx
316
+ init_react_import();
317
+ var import_react7 = require("react");
1647
318
 
1648
319
  // ../core/lib/get-item.ts
1649
320
  init_react_import();
@@ -1655,26 +326,6 @@ var rootDroppableId = "default-zone";
1655
326
  // ../core/lib/setup-zone.ts
1656
327
  init_react_import();
1657
328
 
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
329
  // ../core/components/ViewportControls/default-viewports.ts
1679
330
  init_react_import();
1680
331
  var defaultViewports = [
@@ -1683,9 +334,6 @@ var defaultViewports = [
1683
334
  { width: 1280, height: "auto", icon: "Monitor", label: "Large" }
1684
335
  ];
1685
336
 
1686
- // ../core/components/Puck/context.tsx
1687
- var import_ua_parser_js = __toESM(require_ua_parser());
1688
-
1689
337
  // ../core/lib/use-resolved-permissions.ts
1690
338
  init_react_import();
1691
339
  var import_react5 = require("react");
@@ -1753,7 +401,6 @@ var defaultContext = {
1753
401
  status: "LOADING",
1754
402
  setStatus: () => null,
1755
403
  iframe: {},
1756
- safariFallbackMode: false,
1757
404
  globalPermissions: {},
1758
405
  getPermissions: () => ({}),
1759
406
  refreshPermissions: () => null
@@ -1773,6 +420,18 @@ function useAppContext() {
1773
420
  });
1774
421
  }
1775
422
 
423
+ // ../core/lib/get-zone-id.ts
424
+ init_react_import();
425
+ var getZoneId = (zoneCompound) => {
426
+ if (!zoneCompound) {
427
+ return [];
428
+ }
429
+ if (zoneCompound && zoneCompound.indexOf(":") > -1) {
430
+ return zoneCompound.split(":");
431
+ }
432
+ return [rootDroppableId, zoneCompound];
433
+ };
434
+
1776
435
  // ../core/lib/use-breadcrumbs.ts
1777
436
  var convertPathDataToBreadcrumbs = (selectedItem, pathData, data) => {
1778
437
  const id = selectedItem ? selectedItem == null ? void 0 : selectedItem.props.id : "";
@@ -1966,11 +625,12 @@ var scrollIntoView = (el) => {
1966
625
  // ../core/lib/get-frame.ts
1967
626
  init_react_import();
1968
627
  var getFrame = () => {
1969
- let frame = document.querySelector("#preview-frame");
1970
- if ((frame == null ? void 0 : frame.tagName) === "IFRAME") {
1971
- frame = frame.contentDocument;
628
+ if (typeof window === "undefined") return;
629
+ let frameEl = document.querySelector("#preview-frame");
630
+ if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
631
+ return frameEl.contentDocument || document;
1972
632
  }
1973
- return frame;
633
+ return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
1974
634
  };
1975
635
 
1976
636
  // src/HeadingAnalyzer.tsx
@@ -1979,36 +639,29 @@ var import_jsx_runtime7 = require("react/jsx-runtime");
1979
639
  var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
1980
640
  var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
1981
641
  var ReactFromJSON = import_react_from_json.default.default || import_react_from_json.default;
1982
- var dataAttr = "data-puck-heading-analyzer-id";
1983
- var getOutline = ({
1984
- addDataAttr = false,
1985
- frame
1986
- } = {}) => {
642
+ var getOutline = ({ frame } = {}) => {
1987
643
  const headings = (frame == null ? void 0 : frame.querySelectorAll("h1,h2,h3,h4,h5,h6")) || [];
1988
644
  const _outline = [];
1989
645
  headings.forEach((item, i) => {
1990
- if (addDataAttr) {
1991
- item.setAttribute(dataAttr, i.toString());
1992
- }
1993
646
  _outline.push({
1994
647
  rank: parseInt(item.tagName.split("H")[1]),
1995
648
  text: item.textContent,
1996
- analyzeId: i.toString()
649
+ element: item
1997
650
  });
1998
651
  });
1999
652
  return _outline;
2000
653
  };
2001
654
  function buildHierarchy(frame) {
2002
655
  var _a, _b;
2003
- const headings = getOutline({ addDataAttr: true, frame });
656
+ const headings = getOutline({ frame });
2004
657
  const root = { rank: 0, children: [], text: "" };
2005
658
  let path = [root];
2006
659
  for (let heading of headings) {
2007
660
  const node = {
2008
661
  rank: heading.rank,
2009
662
  text: heading.text,
2010
- analyzeId: heading.analyzeId,
2011
- children: []
663
+ children: [],
664
+ element: heading.element
2012
665
  };
2013
666
  if (node.rank === 1) {
2014
667
  path = [root];
@@ -2035,18 +688,18 @@ function buildHierarchy(frame) {
2035
688
  var HeadingAnalyzer = () => {
2036
689
  const { appState } = (0, import_puck.usePuck)();
2037
690
  const [hierarchy, setHierarchy] = (0, import_react9.useState)([]);
2038
- const [firstRender, setFirstRender] = (0, import_react9.useState)(true);
2039
691
  (0, import_react9.useEffect)(() => {
2040
692
  const frame = getFrame();
2041
- if (!frame) return;
2042
- if (firstRender) {
2043
- setTimeout(() => {
2044
- setHierarchy(buildHierarchy(frame));
2045
- setFirstRender(false);
2046
- }, 100);
2047
- } else {
2048
- setHierarchy(buildHierarchy(frame));
2049
- }
693
+ const entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
694
+ if (!entry) return;
695
+ setHierarchy(buildHierarchy(entry));
696
+ const observer = new MutationObserver(() => {
697
+ setHierarchy(buildHierarchy(entry));
698
+ });
699
+ observer.observe(entry, { subtree: true, childList: true });
700
+ return () => {
701
+ observer.disconnect();
702
+ };
2050
703
  }, [appState.data]);
2051
704
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: getClassName5(), children: [
2052
705
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
@@ -2077,12 +730,9 @@ var HeadingAnalyzer = () => {
2077
730
  "small",
2078
731
  {
2079
732
  className: getClassNameItem2({ missing: props.missing }),
2080
- onClick: typeof props.analyzeId == "undefined" ? void 0 : (e) => {
733
+ onClick: typeof props.element == "undefined" ? void 0 : (e) => {
2081
734
  e.stopPropagation();
2082
- const frame = getFrame();
2083
- const el = frame == null ? void 0 : frame.querySelector(
2084
- `[${dataAttr}="${props.analyzeId}"]`
2085
- );
735
+ const el = props.element;
2086
736
  const oldStyle = __spreadValues({}, el.style);
2087
737
  if (el) {
2088
738
  scrollIntoView(el);