@measured/puck-plugin-heading-analyzer 0.17.0-canary.fcdf346 → 0.17.0

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.
Files changed (3) hide show
  1. package/dist/index.js +1486 -82
  2. package/dist/index.mjs +1482 -74
  3. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -79,35 +79,45 @@ var require_classnames = __commonJS({
79
79
  (function() {
80
80
  "use strict";
81
81
  var hasOwn = {}.hasOwnProperty;
82
- var nativeCodeString = "[native code]";
83
82
  function classNames() {
84
- var classes = [];
83
+ var classes = "";
85
84
  for (var i = 0; i < arguments.length; i++) {
86
85
  var arg = arguments[i];
87
- if (!arg) continue;
88
- var argType = typeof arg;
89
- if (argType === "string" || argType === "number") {
90
- classes.push(arg);
91
- } else if (Array.isArray(arg)) {
92
- if (arg.length) {
93
- var inner = classNames.apply(null, arg);
94
- if (inner) {
95
- classes.push(inner);
96
- }
97
- }
98
- } else if (argType === "object") {
99
- if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
100
- classes.push(arg.toString());
101
- continue;
102
- }
103
- for (var key in arg) {
104
- if (hasOwn.call(arg, key) && arg[key]) {
105
- classes.push(key);
106
- }
107
- }
86
+ if (arg) {
87
+ classes = appendClass(classes, parseValue(arg));
108
88
  }
109
89
  }
110
- return classes.join(" ");
90
+ return classes;
91
+ }
92
+ function parseValue(arg) {
93
+ if (typeof arg === "string" || typeof arg === "number") {
94
+ return arg;
95
+ }
96
+ if (typeof arg !== "object") {
97
+ return "";
98
+ }
99
+ if (Array.isArray(arg)) {
100
+ return classNames.apply(null, arg);
101
+ }
102
+ if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
103
+ return arg.toString();
104
+ }
105
+ var classes = "";
106
+ for (var key in arg) {
107
+ if (hasOwn.call(arg, key) && arg[key]) {
108
+ classes = appendClass(classes, key);
109
+ }
110
+ }
111
+ return classes;
112
+ }
113
+ function appendClass(value, newClass) {
114
+ if (!newClass) {
115
+ return value;
116
+ }
117
+ if (value) {
118
+ return value + " " + newClass;
119
+ }
120
+ return value + newClass;
111
121
  }
112
122
  if (typeof module2 !== "undefined" && module2.exports) {
113
123
  classNames.default = classNames;
@@ -123,6 +133,1341 @@ var require_classnames = __commonJS({
123
133
  }
124
134
  });
125
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
+
126
1471
  // index.ts
127
1472
  var plugin_heading_analyzer_exports = {};
128
1473
  __export(plugin_heading_analyzer_exports, {
@@ -133,7 +1478,7 @@ init_react_import();
133
1478
 
134
1479
  // src/HeadingAnalyzer.tsx
135
1480
  init_react_import();
136
- var import_react8 = require("react");
1481
+ var import_react9 = require("react");
137
1482
 
138
1483
  // css-module:/home/runner/work/puck/puck/packages/plugin-heading-analyzer/src/HeadingAnalyzer.module.css#css-module
139
1484
  init_react_import();
@@ -204,6 +1549,17 @@ init_react_import();
204
1549
 
205
1550
  // ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
206
1551
  init_react_import();
1552
+ var import_react3 = require("react");
1553
+
1554
+ // ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
1555
+ init_react_import();
1556
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1557
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
1558
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
1559
+ }).join(" ").trim();
1560
+
1561
+ // ../../node_modules/lucide-react/dist/esm/Icon.js
1562
+ init_react_import();
207
1563
  var import_react2 = require("react");
208
1564
 
209
1565
  // ../../node_modules/lucide-react/dist/esm/defaultAttributes.js
@@ -220,28 +1576,55 @@ var defaultAttributes = {
220
1576
  strokeLinejoin: "round"
221
1577
  };
222
1578
 
1579
+ // ../../node_modules/lucide-react/dist/esm/Icon.js
1580
+ var Icon = (0, import_react2.forwardRef)(
1581
+ (_a, ref) => {
1582
+ var _b = _a, {
1583
+ color = "currentColor",
1584
+ size = 24,
1585
+ strokeWidth = 2,
1586
+ absoluteStrokeWidth,
1587
+ className = "",
1588
+ children,
1589
+ iconNode
1590
+ } = _b, rest = __objRest(_b, [
1591
+ "color",
1592
+ "size",
1593
+ "strokeWidth",
1594
+ "absoluteStrokeWidth",
1595
+ "className",
1596
+ "children",
1597
+ "iconNode"
1598
+ ]);
1599
+ return (0, import_react2.createElement)(
1600
+ "svg",
1601
+ __spreadValues(__spreadProps(__spreadValues({
1602
+ ref
1603
+ }, defaultAttributes), {
1604
+ width: size,
1605
+ height: size,
1606
+ stroke: color,
1607
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
1608
+ className: mergeClasses("lucide", className)
1609
+ }), rest),
1610
+ [
1611
+ ...iconNode.map(([tag, attrs]) => (0, import_react2.createElement)(tag, attrs)),
1612
+ ...Array.isArray(children) ? children : [children]
1613
+ ]
1614
+ );
1615
+ }
1616
+ );
1617
+
223
1618
  // ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
224
- var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase().trim();
225
1619
  var createLucideIcon = (iconName, iconNode) => {
226
- const Component = (0, import_react2.forwardRef)(
1620
+ const Component = (0, import_react3.forwardRef)(
227
1621
  (_a, ref) => {
228
- var _b = _a, { color = "currentColor", size = 24, strokeWidth = 2, absoluteStrokeWidth, className = "", children } = _b, rest = __objRest(_b, ["color", "size", "strokeWidth", "absoluteStrokeWidth", "className", "children"]);
229
- return (0, import_react2.createElement)(
230
- "svg",
231
- __spreadValues(__spreadProps(__spreadValues({
232
- ref
233
- }, defaultAttributes), {
234
- width: size,
235
- height: size,
236
- stroke: color,
237
- strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
238
- className: ["lucide", `lucide-${toKebabCase(iconName)}`, className].join(" ")
239
- }), rest),
240
- [
241
- ...iconNode.map(([tag, attrs]) => (0, import_react2.createElement)(tag, attrs)),
242
- ...Array.isArray(children) ? children : [children]
243
- ]
244
- );
1622
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1623
+ return (0, import_react3.createElement)(Icon, __spreadValues({
1624
+ ref,
1625
+ iconNode,
1626
+ className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className)
1627
+ }, props));
245
1628
  }
246
1629
  );
247
1630
  Component.displayName = `${iconName}`;
@@ -256,17 +1639,11 @@ var ChevronRight = createLucideIcon("ChevronRight", [
256
1639
 
257
1640
  // ../core/lib/use-breadcrumbs.ts
258
1641
  init_react_import();
259
- var import_react7 = require("react");
1642
+ var import_react8 = require("react");
260
1643
 
261
1644
  // ../core/components/DropZone/context.tsx
262
1645
  init_react_import();
263
- var import_react3 = require("react");
264
- var import_jsx_runtime2 = require("react/jsx-runtime");
265
- var dropZoneContext = (0, import_react3.createContext)(null);
266
-
267
- // ../core/components/Puck/context.tsx
268
- init_react_import();
269
- var import_react6 = require("react");
1646
+ var import_react4 = require("react");
270
1647
 
271
1648
  // ../core/lib/get-item.ts
272
1649
  init_react_import();
@@ -278,6 +1655,26 @@ var rootDroppableId = "default-zone";
278
1655
  // ../core/lib/setup-zone.ts
279
1656
  init_react_import();
280
1657
 
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
+
281
1678
  // ../core/components/ViewportControls/default-viewports.ts
282
1679
  init_react_import();
283
1680
  var defaultViewports = [
@@ -286,9 +1683,12 @@ var defaultViewports = [
286
1683
  { width: 1280, height: "auto", icon: "Monitor", label: "Large" }
287
1684
  ];
288
1685
 
1686
+ // ../core/components/Puck/context.tsx
1687
+ var import_ua_parser_js = __toESM(require_ua_parser());
1688
+
289
1689
  // ../core/lib/use-resolved-permissions.ts
290
1690
  init_react_import();
291
- var import_react4 = require("react");
1691
+ var import_react5 = require("react");
292
1692
 
293
1693
  // ../core/lib/flatten-data.ts
294
1694
  init_react_import();
@@ -298,7 +1698,7 @@ init_react_import();
298
1698
 
299
1699
  // ../core/lib/use-resolved-data.ts
300
1700
  init_react_import();
301
- var import_react5 = require("react");
1701
+ var import_react6 = require("react");
302
1702
 
303
1703
  // ../core/lib/resolve-component-data.ts
304
1704
  init_react_import();
@@ -353,13 +1753,14 @@ var defaultContext = {
353
1753
  status: "LOADING",
354
1754
  setStatus: () => null,
355
1755
  iframe: {},
1756
+ safariFallbackMode: false,
356
1757
  globalPermissions: {},
357
1758
  getPermissions: () => ({}),
358
1759
  refreshPermissions: () => null
359
1760
  };
360
- var appContext = (0, import_react6.createContext)(defaultContext);
1761
+ var appContext = (0, import_react7.createContext)(defaultContext);
361
1762
  function useAppContext() {
362
- const mainContext = (0, import_react6.useContext)(appContext);
1763
+ const mainContext = (0, import_react7.useContext)(appContext);
363
1764
  return __spreadProps(__spreadValues({}, mainContext), {
364
1765
  // Helpers
365
1766
  setUi: (ui, recordHistory) => {
@@ -372,18 +1773,6 @@ function useAppContext() {
372
1773
  });
373
1774
  }
374
1775
 
375
- // ../core/lib/get-zone-id.ts
376
- init_react_import();
377
- var getZoneId = (zoneCompound) => {
378
- if (!zoneCompound) {
379
- return [];
380
- }
381
- if (zoneCompound && zoneCompound.indexOf(":") > -1) {
382
- return zoneCompound.split(":");
383
- }
384
- return [rootDroppableId, zoneCompound];
385
- };
386
-
387
1776
  // ../core/lib/use-breadcrumbs.ts
388
1777
  var convertPathDataToBreadcrumbs = (selectedItem, pathData, data) => {
389
1778
  const id = selectedItem ? selectedItem == null ? void 0 : selectedItem.props.id : "";
@@ -434,8 +1823,8 @@ var useBreadcrumbs = (renderCount) => {
434
1823
  state: { data },
435
1824
  selectedItem
436
1825
  } = useAppContext();
437
- const dzContext = (0, import_react7.useContext)(dropZoneContext);
438
- return (0, import_react7.useMemo)(() => {
1826
+ const dzContext = (0, import_react8.useContext)(dropZoneContext);
1827
+ return (0, import_react8.useMemo)(() => {
439
1828
  const breadcrumbs = convertPathDataToBreadcrumbs(
440
1829
  selectedItem,
441
1830
  dzContext == null ? void 0 : dzContext.pathData,
@@ -577,12 +1966,11 @@ var scrollIntoView = (el) => {
577
1966
  // ../core/lib/get-frame.ts
578
1967
  init_react_import();
579
1968
  var getFrame = () => {
580
- if (typeof window === "undefined") return;
581
- let frameEl = document.querySelector("#preview-frame");
582
- if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
583
- return frameEl.contentDocument || document;
1969
+ let frame = document.querySelector("#preview-frame");
1970
+ if ((frame == null ? void 0 : frame.tagName) === "IFRAME") {
1971
+ frame = frame.contentDocument;
584
1972
  }
585
- return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
1973
+ return frame;
586
1974
  };
587
1975
 
588
1976
  // src/HeadingAnalyzer.tsx
@@ -646,9 +2034,9 @@ function buildHierarchy(frame) {
646
2034
  }
647
2035
  var HeadingAnalyzer = () => {
648
2036
  const { appState } = (0, import_puck.usePuck)();
649
- const [hierarchy, setHierarchy] = (0, import_react8.useState)([]);
650
- const [firstRender, setFirstRender] = (0, import_react8.useState)(true);
651
- (0, import_react8.useEffect)(() => {
2037
+ const [hierarchy, setHierarchy] = (0, import_react9.useState)([]);
2038
+ const [firstRender, setFirstRender] = (0, import_react9.useState)(true);
2039
+ (0, import_react9.useEffect)(() => {
652
2040
  const frame = getFrame();
653
2041
  if (!frame) return;
654
2042
  if (firstRender) {
@@ -760,9 +2148,25 @@ classnames/index.js:
760
2148
  http://jedwatson.github.io/classnames
761
2149
  *)
762
2150
 
2151
+ lucide-react/dist/esm/shared/src/utils.js:
2152
+ (**
2153
+ * @license lucide-react v0.468.0 - ISC
2154
+ *
2155
+ * This source code is licensed under the ISC license.
2156
+ * See the LICENSE file in the root directory of this source tree.
2157
+ *)
2158
+
763
2159
  lucide-react/dist/esm/defaultAttributes.js:
764
2160
  (**
765
- * @license lucide-react v0.298.0 - ISC
2161
+ * @license lucide-react v0.468.0 - ISC
2162
+ *
2163
+ * This source code is licensed under the ISC license.
2164
+ * See the LICENSE file in the root directory of this source tree.
2165
+ *)
2166
+
2167
+ lucide-react/dist/esm/Icon.js:
2168
+ (**
2169
+ * @license lucide-react v0.468.0 - ISC
766
2170
  *
767
2171
  * This source code is licensed under the ISC license.
768
2172
  * See the LICENSE file in the root directory of this source tree.
@@ -770,7 +2174,7 @@ lucide-react/dist/esm/defaultAttributes.js:
770
2174
 
771
2175
  lucide-react/dist/esm/createLucideIcon.js:
772
2176
  (**
773
- * @license lucide-react v0.298.0 - ISC
2177
+ * @license lucide-react v0.468.0 - ISC
774
2178
  *
775
2179
  * This source code is licensed under the ISC license.
776
2180
  * See the LICENSE file in the root directory of this source tree.
@@ -778,7 +2182,7 @@ lucide-react/dist/esm/createLucideIcon.js:
778
2182
 
779
2183
  lucide-react/dist/esm/icons/chevron-right.js:
780
2184
  (**
781
- * @license lucide-react v0.298.0 - ISC
2185
+ * @license lucide-react v0.468.0 - ISC
782
2186
  *
783
2187
  * This source code is licensed under the ISC license.
784
2188
  * See the LICENSE file in the root directory of this source tree.
@@ -786,7 +2190,7 @@ lucide-react/dist/esm/icons/chevron-right.js:
786
2190
 
787
2191
  lucide-react/dist/esm/lucide-react.js:
788
2192
  (**
789
- * @license lucide-react v0.298.0 - ISC
2193
+ * @license lucide-react v0.468.0 - ISC
790
2194
  *
791
2195
  * This source code is licensed under the ISC license.
792
2196
  * See the LICENSE file in the root directory of this source tree.