@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.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
- useCallback,
1637
- useState
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 as useCallback2, useEffect, useState as useState2 } from "react";
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 useCallback3, useEffect as useEffect2, useState as useState3 } from "react";
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 jsx3 } from "react/jsx-runtime";
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 = createContext2(defaultContext);
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 useMemo(() => {
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
- let frame = document.querySelector("#preview-frame");
1967
- if ((frame == null ? void 0 : frame.tagName) === "IFRAME") {
1968
- frame = frame.contentDocument;
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 frame;
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 dataAttr = "data-puck-heading-analyzer-id";
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
- analyzeId: i.toString()
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({ addDataAttr: true, frame });
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
- analyzeId: heading.analyzeId,
2008
- children: []
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
- if (!frame) return;
2039
- if (firstRender) {
2040
- setTimeout(() => {
2041
- setHierarchy(buildHierarchy(frame));
2042
- setFirstRender(false);
2043
- }, 100);
2044
- } else {
2045
- setHierarchy(buildHierarchy(frame));
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.analyzeId == "undefined" ? void 0 : (e) => {
734
+ onClick: typeof props.element == "undefined" ? void 0 : (e) => {
2078
735
  e.stopPropagation();
2079
- const frame = getFrame();
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);