native-fn 1.0.74 → 1.0.76

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 (66) hide show
  1. package/dist/index.d.ts +5 -5
  2. package/dist/native.cjs +1 -1
  3. package/dist/native.min.cjs +1 -1
  4. package/dist/native.min.mjs +1 -1
  5. package/dist/native.mjs +1 -1
  6. package/dist/native.umd.js +1 -1
  7. package/dist/native.umd.min.js +1 -1
  8. package/dist/plugin/app/index.cjs +355 -176
  9. package/dist/plugin/app/index.min.cjs +1 -1
  10. package/dist/plugin/app/index.min.mjs +1 -1
  11. package/dist/plugin/app/index.mjs +355 -176
  12. package/dist/plugin/app/index.umd.js +355 -176
  13. package/dist/plugin/app/index.umd.min.js +1 -1
  14. package/dist/plugin/app/src/plugin/platform/cores/index.d.ts +12 -0
  15. package/dist/plugin/app/src/plugin/platform/types/platform.d.ts +16 -6
  16. package/dist/plugin/app/src/types/native.d.ts +5 -5
  17. package/dist/plugin/appearance/index.cjs +344 -165
  18. package/dist/plugin/appearance/index.min.cjs +1 -1
  19. package/dist/plugin/appearance/index.min.mjs +1 -1
  20. package/dist/plugin/appearance/index.mjs +344 -165
  21. package/dist/plugin/appearance/index.umd.js +344 -165
  22. package/dist/plugin/appearance/index.umd.min.js +1 -1
  23. package/dist/plugin/appearance/src/plugin/platform/cores/index.d.ts +12 -0
  24. package/dist/plugin/appearance/src/plugin/platform/types/platform.d.ts +16 -6
  25. package/dist/plugin/appearance/src/types/native.d.ts +5 -5
  26. package/dist/plugin/clipboard/index.cjs +339 -160
  27. package/dist/plugin/clipboard/index.min.cjs +1 -1
  28. package/dist/plugin/clipboard/index.min.mjs +1 -1
  29. package/dist/plugin/clipboard/index.mjs +339 -160
  30. package/dist/plugin/clipboard/index.umd.js +339 -160
  31. package/dist/plugin/clipboard/index.umd.min.js +1 -1
  32. package/dist/plugin/clipboard/src/plugin/platform/cores/index.d.ts +12 -0
  33. package/dist/plugin/clipboard/src/plugin/platform/types/platform.d.ts +16 -6
  34. package/dist/plugin/clipboard/src/types/native.d.ts +5 -5
  35. package/dist/plugin/fullscreen/index.cjs +348 -169
  36. package/dist/plugin/fullscreen/index.min.cjs +1 -1
  37. package/dist/plugin/fullscreen/index.min.mjs +1 -1
  38. package/dist/plugin/fullscreen/index.mjs +348 -169
  39. package/dist/plugin/fullscreen/index.umd.js +348 -169
  40. package/dist/plugin/fullscreen/index.umd.min.js +1 -1
  41. package/dist/plugin/fullscreen/src/plugin/platform/cores/index.d.ts +12 -0
  42. package/dist/plugin/fullscreen/src/plugin/platform/types/platform.d.ts +16 -6
  43. package/dist/plugin/fullscreen/src/types/native.d.ts +5 -5
  44. package/dist/plugin/platform/index.cjs +339 -160
  45. package/dist/plugin/platform/index.d.ts +17 -7
  46. package/dist/plugin/platform/index.min.cjs +1 -1
  47. package/dist/plugin/platform/index.min.mjs +1 -1
  48. package/dist/plugin/platform/index.mjs +339 -160
  49. package/dist/plugin/platform/index.umd.js +339 -160
  50. package/dist/plugin/platform/index.umd.min.js +1 -1
  51. package/dist/plugin/platform/src/plugin/platform/cores/index.d.ts +12 -0
  52. package/dist/plugin/platform/src/plugin/platform/types/platform.d.ts +16 -6
  53. package/dist/plugin/platform/src/types/native.d.ts +5 -5
  54. package/dist/plugin/theme/index.cjs +339 -160
  55. package/dist/plugin/theme/index.min.cjs +1 -1
  56. package/dist/plugin/theme/index.min.mjs +1 -1
  57. package/dist/plugin/theme/index.mjs +339 -160
  58. package/dist/plugin/theme/index.umd.js +339 -160
  59. package/dist/plugin/theme/index.umd.min.js +1 -1
  60. package/dist/plugin/theme/src/plugin/platform/cores/index.d.ts +12 -0
  61. package/dist/plugin/theme/src/plugin/platform/types/platform.d.ts +16 -6
  62. package/dist/plugin/theme/src/types/native.d.ts +5 -5
  63. package/dist/src/plugin/platform/cores/index.d.ts +12 -0
  64. package/dist/src/plugin/platform/types/platform.d.ts +16 -6
  65. package/dist/src/types/native.d.ts +5 -5
  66. package/package.json +8 -1
@@ -76,21 +76,43 @@
76
76
  var USER_AGENT = typeof globalThis.navigator !== 'undefined' && typeof globalThis.navigator.userAgent === 'string' ? globalThis.navigator.userAgent : '';
77
77
 
78
78
  var Platform = {
79
- device: Devices.Unknown,
80
- os: OS.Unknown,
81
- engine: Engines.Unknown,
82
- browser: Browsers.Unknown,
79
+ os: { name: OS.Unknown, version: '' },
80
+ engine: { name: Engines.Unknown, version: '' },
81
+ browser: { name: Browsers.Unknown, version: '' },
83
82
  crossPlatformFramework: CrossPlatformFramework.Unknown,
84
- osVersion: '',
85
- engineVersion: '',
86
- browserVersion: '',
87
- renderer: getRenderer(),
88
83
  userAgent: USER_AGENT,
89
- isNode: typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined,
90
- isMobile: false,
91
- isDesktop: false,
92
- isStandalone: false,
93
- isWebview: /; ?wv|applewebkit(?!.*safari)/i.test(USER_AGENT),
84
+ get network() {
85
+ return getNetwork();
86
+ },
87
+ get device() {
88
+ if (this.os.name === OS.iOS || this.os.name === OS.Android)
89
+ return Devices.Mobile;
90
+ if (this.os.name === OS.Windows || this.os.name === OS.MacOS)
91
+ return Devices.Desktop;
92
+ return Devices.Unknown;
93
+ },
94
+ get renderer() {
95
+ return getRenderer();
96
+ },
97
+ get isMobile() {
98
+ return this.device === Devices.Mobile;
99
+ },
100
+ get isDesktop() {
101
+ return this.device === Devices.Desktop;
102
+ },
103
+ get isWebview() {
104
+ return /; ?wv|applewebkit(?!.*safari)/i.test(this.userAgent);
105
+ },
106
+ get isNode() {
107
+ return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined;
108
+ },
109
+ get isStandalone() {
110
+ if (this.os.name === OS.iOS)
111
+ return 'standalone' in globalThis.navigator && !!globalThis.navigator.standalone;
112
+ if (!('matchMedia' in globalThis))
113
+ return false;
114
+ return globalThis.matchMedia('(display-mode: standalone)').matches;
115
+ },
94
116
  };
95
117
  var OS_RESOLVER_MAP = [
96
118
  [/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
@@ -150,6 +172,14 @@
150
172
  [/mobile vr; rv:([\w.]+)\).+firefox/i, Browsers.Firefox],
151
173
  [/firefox\/([\w.]+)/i, Browsers.Firefox],
152
174
  ];
175
+ var HIGH_ENTROPY_BRAND_NAME_MAP = {
176
+ 'Google Chrome': 'Chrome',
177
+ 'Microsoft Edge': 'Edge',
178
+ 'Microsoft Edge WebView2': 'Edge WebView2',
179
+ 'Android WebView': 'Chrome WebView',
180
+ 'HeadlessChrome': 'Chrome Headless',
181
+ 'OperaMobile': 'Opera Mobi',
182
+ };
153
183
  function resolveWindowsVersion(string) {
154
184
  if (string === undefined)
155
185
  return '';
@@ -324,6 +354,33 @@
324
354
  return { brand: entry, version: '' };
325
355
  return { brand: entry.brand, version: entry.version };
326
356
  }
357
+ function getSemanticVersion(string) {
358
+ var parts = string.split('.');
359
+ return {
360
+ major: parseInt(parts[0] || '0'),
361
+ minor: parseInt(parts[1] || '0'),
362
+ build: parseInt(parts[2] || '0')
363
+ };
364
+ }
365
+ function parseOSFromCordova() {
366
+ Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
367
+ if (typeof globalThis.device !== 'undefined') {
368
+ switch (globalThis.device.platform) {
369
+ case 'Android':
370
+ Platform.os = {
371
+ name: OS.Android,
372
+ version: globalThis.device.version,
373
+ };
374
+ break;
375
+ case 'iOS':
376
+ Platform.os = {
377
+ name: OS.iOS,
378
+ version: globalThis.device.version,
379
+ };
380
+ break;
381
+ }
382
+ }
383
+ }
327
384
  function getRenderer() {
328
385
  if (typeof globalThis.document === 'undefined')
329
386
  return '';
@@ -344,171 +401,293 @@
344
401
  return '';
345
402
  }
346
403
  }
347
- function getIsStandalone(os) {
348
- if (!('matchMedia' in globalThis))
349
- return false;
350
- if (os === OS.iOS)
351
- return 'standalone' in navigator && !!navigator.standalone;
352
- return globalThis.matchMedia('(display-mode: standalone)').matches;
353
- }
354
- function getSemanticVersion(string) {
355
- var parts = string.split('.');
356
- return {
357
- major: parseInt(parts[0] || '0'),
358
- minor: parseInt(parts[1] || '0'),
359
- build: parseInt(parts[2] || '0')
404
+ function getNetwork() {
405
+ var network = {
406
+ isOnline: null,
407
+ effectiveType: null,
408
+ type: null,
409
+ downlink: null,
410
+ rtt: null,
411
+ saveData: null,
360
412
  };
361
- }
362
- if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT))) {
363
- Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
364
- }
365
- if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative') {
366
- Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
367
- }
368
- for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
369
- var map = OS_RESOLVER_MAP[i];
370
- var regexp = map[0];
371
- var os = map[1];
372
- var resolver = map[2];
373
- var matched = Platform.userAgent.match(regexp);
374
- if (matched !== null) {
375
- Platform.os = os;
376
- Platform.osVersion = resolveVersion(matched[1], resolver);
377
- break;
413
+ if (typeof globalThis.navigator !== 'undefined') {
414
+ if (typeof globalThis.navigator.onLine !== 'undefined')
415
+ network.isOnline = globalThis.navigator.onLine;
416
+ var connection = globalThis.navigator.connection || globalThis.navigator.mozConnection || globalThis.navigator.webkitConnection;
417
+ if (typeof connection !== 'undefined') {
418
+ if (typeof connection.effectiveType !== 'undefined')
419
+ network.effectiveType = connection.effectiveType;
420
+ if (typeof connection.type !== 'undefined')
421
+ network.type = connection.type;
422
+ if (typeof connection.downlink !== 'undefined')
423
+ network.downlink = connection.downlink;
424
+ if (typeof connection.rtt !== 'undefined')
425
+ network.rtt = connection.rtt;
426
+ if (typeof connection.saveData !== 'undefined')
427
+ network.saveData = connection.saveData;
428
+ }
378
429
  }
379
- }
380
- if (Platform.os === OS.iOS && compareVersion(Platform.osVersion, '18.6') === 0) {
381
- var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
382
- if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
383
- Platform.osVersion = version[1];
384
- }
385
- for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
386
- var map = ENGINE_RESOLVER_MAP[i];
387
- var regexp = map[0];
388
- var engine = map[1];
389
- var resolver = map[2];
390
- var matched = Platform.userAgent.match(regexp);
391
- if (matched !== null) {
392
- Platform.engine = engine;
393
- Platform.engineVersion = resolveVersion(matched[1], resolver);
394
- break;
430
+ if (Platform.isNode) {
431
+ try {
432
+ var os = require('os');
433
+ var networkInterfaces = os.networkInterfaces();
434
+ var networkInterfaceNames = Object.keys(networkInterfaces);
435
+ for (var i = 0; i < networkInterfaceNames.length; i++) {
436
+ var name_1 = networkInterfaceNames[i];
437
+ var networkInterface = networkInterfaces[name_1];
438
+ for (var j = 0; j < networkInterface.length; j++) {
439
+ var address = networkInterface[j];
440
+ if (!address.internal && address.family === 'IPv4')
441
+ network.isOnline = true;
442
+ }
443
+ if (network.isOnline)
444
+ break;
445
+ }
446
+ }
447
+ catch (_) {
448
+ }
449
+ try {
450
+ var childProcess = require('child_process');
451
+ if (Platform.os.name === OS.Windows) {
452
+ try {
453
+ var output = childProcess.execSync('netsh wlan show interfaces', { encoding: 'utf8', timeout: 5000 });
454
+ if (output.includes('State') && output.includes('connected'))
455
+ network.type = 'wifi';
456
+ }
457
+ catch (_) {
458
+ }
459
+ if (network.type === null) {
460
+ try {
461
+ var output = childProcess.execSync('ipconfig', { encoding: 'utf8', timeout: 5000 });
462
+ if (output.includes('Ethernet adapter'))
463
+ network.type = 'ethernet';
464
+ }
465
+ catch (_) {
466
+ }
467
+ }
468
+ if (network.type === null)
469
+ network.type = 'other';
470
+ }
471
+ else if (Platform.os.name === OS.MacOS) {
472
+ try {
473
+ var output = childProcess.execSync('networksetup -listallhardwareports', { encoding: 'utf8', timeout: 5000 });
474
+ var activeInterface = childProcess.execSync('route -n get default | grep interface', { encoding: 'utf8', timeout: 5000 });
475
+ if (activeInterface.includes('en0') && output.includes('Wi-Fi'))
476
+ network.type = 'wifi';
477
+ else if (activeInterface.includes('en') || output.includes('Ethernet'))
478
+ network.type = 'ethernet';
479
+ else
480
+ network.type = 'other';
481
+ }
482
+ catch (_) {
483
+ network.type = 'other';
484
+ }
485
+ }
486
+ }
487
+ catch (_) {
488
+ }
395
489
  }
490
+ return network;
396
491
  }
397
- for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
398
- var map = BROWSER_RESOLVER_MAP[i];
399
- var regexp = map[0];
400
- var browser = map[1];
401
- var resolver = map[2];
402
- var matched = Platform.userAgent.match(regexp);
403
- if (matched !== null) {
404
- Platform.browser = browser;
405
- Platform.browserVersion = resolveVersion(matched[1], resolver);
406
- break;
407
- }
492
+ function canUseHighEntropyValues(navigator) {
493
+ return typeof globalThis.navigator !== 'undefined' && typeof navigator.userAgentData !== 'undefined' && typeof navigator.userAgentData.getHighEntropyValues !== 'undefined';
408
494
  }
409
- if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
410
- try {
411
- var reactNative = require('react-native');
412
- var platform = reactNative.Platform;
413
- var os = platform.OS;
414
- var release = '' + platform.Version;
415
- var version = getSemanticVersion(release);
416
- switch (os) {
417
- case 'android':
418
- Platform.os = OS.Android;
419
- Platform.osVersion = resolveSemanticAndroidVersion(version, release);
420
- break;
421
- case 'ios':
422
- Platform.os = OS.iOS;
423
- Platform.osVersion = release;
424
- break;
425
- case 'windows':
426
- Platform.os = OS.Windows;
427
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
428
- break;
429
- case 'macos':
430
- Platform.os = OS.MacOS;
431
- Platform.osVersion = release;
432
- break;
495
+ function init() {
496
+ if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT)))
497
+ Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
498
+ if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative')
499
+ Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
500
+ for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
501
+ var map = OS_RESOLVER_MAP[i];
502
+ var regexp = map[0];
503
+ var os = map[1];
504
+ var resolver = map[2];
505
+ var matched = Platform.userAgent.match(regexp);
506
+ if (matched !== null) {
507
+ Platform.os = {
508
+ name: os,
509
+ version: resolveVersion(matched[1], resolver),
510
+ };
511
+ break;
433
512
  }
434
513
  }
435
- catch (_) {
514
+ if (Platform.os.name === OS.iOS && compareVersion(Platform.os.version, '18.6') === 0) {
515
+ var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
516
+ if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
517
+ Platform.os.version = version[1];
436
518
  }
437
- }
438
- if (Platform.isNode) {
439
- try {
440
- var os = require('os');
441
- var platform = os.platform();
442
- var release = os.release();
443
- var version = getSemanticVersion(release);
444
- switch (platform) {
445
- case 'win32':
446
- Platform.os = OS.Windows;
447
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
448
- break;
449
- case 'darwin':
450
- Platform.os = OS.MacOS;
451
- Platform.osVersion = resolveSemanticDarwinVersion(version, release);
452
- break;
453
- case 'android':
454
- Platform.os = OS.Android;
455
- Platform.osVersion = release;
456
- break;
457
- case 'linux':
458
- if (/android/i.test(release)) {
459
- Platform.os = OS.Android;
460
- Platform.osVersion = release;
461
- }
462
- break;
519
+ for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
520
+ var map = ENGINE_RESOLVER_MAP[i];
521
+ var regexp = map[0];
522
+ var engine = map[1];
523
+ var resolver = map[2];
524
+ var matched = Platform.userAgent.match(regexp);
525
+ if (matched !== null) {
526
+ Platform.engine = {
527
+ name: engine,
528
+ version: resolveVersion(matched[1], resolver),
529
+ };
530
+ break;
463
531
  }
464
532
  }
465
- catch (_) {
533
+ for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
534
+ var map = BROWSER_RESOLVER_MAP[i];
535
+ var regexp = map[0];
536
+ var browser = map[1];
537
+ var resolver = map[2];
538
+ var matched = Platform.userAgent.match(regexp);
539
+ if (matched !== null) {
540
+ Platform.browser = {
541
+ name: browser,
542
+ version: resolveVersion(matched[1], resolver),
543
+ };
544
+ break;
545
+ }
466
546
  }
467
- }
468
- if (typeof globalThis.document !== 'undefined') {
469
- globalThis.document.addEventListener("deviceready", function () {
470
- Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
471
- if (Platform.os === OS.Unknown && typeof globalThis.device !== 'undefined') {
472
- switch (globalThis.device.platform) {
473
- case 'Android':
474
- Platform.os = OS.Android;
547
+ if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
548
+ try {
549
+ var reactNative = require('react-native');
550
+ var platform = reactNative.Platform;
551
+ var os = platform.OS;
552
+ var release = '' + platform.Version;
553
+ var version = getSemanticVersion(release);
554
+ switch (os) {
555
+ case 'android':
556
+ Platform.os = {
557
+ name: OS.Android,
558
+ version: resolveSemanticAndroidVersion(version, release),
559
+ };
560
+ break;
561
+ case 'ios':
562
+ Platform.os = {
563
+ name: OS.iOS,
564
+ version: release,
565
+ };
475
566
  break;
476
- case 'iOS':
477
- Platform.os = OS.iOS;
567
+ case 'windows':
568
+ Platform.os = {
569
+ name: OS.Windows,
570
+ version: resolveSemanticWindowsVersion(version, release),
571
+ };
572
+ break;
573
+ case 'macos':
574
+ Platform.os = {
575
+ name: OS.MacOS,
576
+ version: release,
577
+ };
478
578
  break;
479
579
  }
480
- Platform.osVersion = globalThis.device.version;
481
580
  }
482
- }, false);
483
- }
484
- if (navigator.userAgentData !== undefined && navigator.userAgentData.getHighEntropyValues !== undefined) {
485
- navigator
486
- .userAgentData
487
- .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
488
- .then(function (result) {
489
- var brands = result.fullVersionList || result.brands || [];
490
- var platformVersion = result.platformVersion;
491
- for (var i = 0; i < brands.length; i++) {
492
- var brand = normalizeBrand(brands[i]);
493
- var brandName = brand.brand;
494
- var brandVersion = brand.version;
495
- if (/not.a.brand/i.test(brandName))
496
- continue;
497
- if (brandName === "Chromium")
498
- Platform.engineVersion = brandVersion;
581
+ catch (_) {
582
+ }
583
+ finally {
584
+ }
585
+ }
586
+ if (Platform.isNode) {
587
+ try {
588
+ var os = require('os');
589
+ var platform = os.platform();
590
+ var release = os.release();
591
+ var version = getSemanticVersion(release);
592
+ switch (platform) {
593
+ case 'win32':
594
+ Platform.os = {
595
+ name: OS.Windows,
596
+ version: resolveSemanticWindowsVersion(version, release),
597
+ };
598
+ break;
599
+ case 'darwin':
600
+ Platform.os = {
601
+ name: OS.MacOS,
602
+ version: resolveSemanticDarwinVersion(version, release),
603
+ };
604
+ break;
605
+ case 'android':
606
+ Platform.os = {
607
+ name: OS.Android,
608
+ version: release,
609
+ };
610
+ break;
611
+ case 'linux':
612
+ if (/android/i.test(release)) {
613
+ Platform.os = {
614
+ name: OS.Android,
615
+ version: release,
616
+ };
617
+ }
618
+ break;
619
+ }
499
620
  }
500
- if (typeof platformVersion === 'string') {
501
- if (Platform.os === OS.Windows && parseInt(platformVersion.replace(/[^\d.]/g, '').split('.')[0], 10) >= 13)
502
- Platform.osVersion = '11';
503
- else
504
- Platform.osVersion = platformVersion;
621
+ catch (_) {
505
622
  }
506
- });
623
+ finally {
624
+ }
625
+ }
626
+ if (typeof globalThis.document !== 'undefined') {
627
+ if (typeof globalThis.device !== 'undefined') {
628
+ parseOSFromCordova();
629
+ }
630
+ else {
631
+ globalThis.document.addEventListener("deviceready", parseOSFromCordova, false);
632
+ }
633
+ }
634
+ if (canUseHighEntropyValues(globalThis.navigator)) {
635
+ globalThis
636
+ .navigator
637
+ .userAgentData
638
+ .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
639
+ .then(function (result) {
640
+ var brands = result.fullVersionList || result.brands || [];
641
+ var platformVersion = result.platformVersion;
642
+ var platform = result.platform;
643
+ var browserName = Platform.browser.name;
644
+ var prevBrandName = null;
645
+ for (var i = 0; i < brands.length; i++) {
646
+ var brand = normalizeBrand(brands[i]);
647
+ var brandVersion = brand.version;
648
+ var brandName = brand.brand;
649
+ if (/not.a.brand/i.test(brandName))
650
+ continue;
651
+ if (prevBrandName === null || (/Chrom/.test(prevBrandName) && brandName !== 'Chromium') || (prevBrandName === 'Edge' && /WebView2/.test(brandName))) {
652
+ brandName = HIGH_ENTROPY_BRAND_NAME_MAP[brandName] || brandName;
653
+ prevBrandName = browserName;
654
+ if (prevBrandName === null || /Chrom/.test(prevBrandName) || !/Chrom/.test(brandName)) {
655
+ browserName = brandName;
656
+ if (browserName === 'Chrome' || browserName === 'Chrome WebView' || browserName === 'Chrome Headless')
657
+ Platform.browser.name = Browsers.Chrome;
658
+ else if (browserName === 'Edge' || browserName === 'Edge WebView2')
659
+ Platform.browser.name = Browsers.Edge;
660
+ else if (browserName === 'Opera Mobi')
661
+ Platform.browser.name = Browsers.Opera;
662
+ Platform.browser.version = brandVersion;
663
+ }
664
+ prevBrandName = brandName;
665
+ }
666
+ if (brandName === 'Chromium')
667
+ Platform.engine.version = brandVersion;
668
+ }
669
+ if (typeof platformVersion === 'string') {
670
+ if (Platform.os.name === OS.Windows)
671
+ Platform.os.version = parseInt(platformVersion.split('.')[0], 10) >= 13 ? '11' : '10';
672
+ else
673
+ Platform.os.version = platformVersion;
674
+ }
675
+ if (typeof platform === 'string') {
676
+ if (/android/i.test(platform))
677
+ Platform.os.name = OS.Android;
678
+ else if (/ios|iphone|ipad/i.test(platform))
679
+ Platform.os.name = OS.iOS;
680
+ else if (/windows|win32/i.test(platform))
681
+ Platform.os.name = OS.Windows;
682
+ else if (/macos|macintel/i.test(platform))
683
+ Platform.os.name = OS.MacOS;
684
+ }
685
+ if (result.mobile === true)
686
+ Platform.device = Devices.Mobile;
687
+ });
688
+ }
507
689
  }
508
- Platform.device = Platform.os === OS.iOS || Platform.os === OS.Android ? Devices.Mobile : Platform.os === OS.Windows || Platform.os === OS.MacOS ? Devices.Desktop : Devices.Unknown;
509
- Platform.isMobile = Platform.device === Devices.Mobile;
510
- Platform.isDesktop = Platform.device === Devices.Desktop;
511
- Platform.isStandalone = getIsStandalone(Platform.os);
690
+ init();
512
691
 
513
692
  var IS_IE_MOBILE = /iemobile/i.test(Platform.userAgent);
514
693
  var IS_WINDOWS_PHONE = /windows phone/i.test(Platform.userAgent);
@@ -1 +1 @@
1
- !function(o,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(o="undefined"!=typeof globalThis?globalThis:o||self).Theme=e()}(this,(function(){"use strict";var o,e,r,i,n;!function(o){o.Unknown="Unknown",o.Android="Android",o.iOS="iOS",o.Windows="Windows",o.MacOS="MacOS"}(o||(o={})),function(o){o.Unknown="Unknown",o.Mobile="Mobile",o.Desktop="Desktop"}(e||(e={})),function(o){o.Unknown="Unknown",o.EdgeHTML="EdgeHTML",o.ArkWeb="ArkWeb",o.Blink="Blink",o.Presto="Presto",o.WebKit="WebKit",o.Trident="Trident",o.NetFront="NetFront",o.KHTML="KHTML",o.Tasman="Tasman",o.Gecko="Gecko"}(r||(r={})),function(o){o.Unknown="Unknown",o.Chrome="Chrome",o.Safari="Safari",o.Edge="Edge",o.Firefox="Firefox",o.Opera="Opera",o.IE="IE",o.SamsungInternet="SamsungInternet"}(i||(i={})),function(o){o.Unknown="Unknown",o.ReactNative="ReactNative",o.Electron="Electron",o.Cordova="Cordova"}(n||(n={}));var a=void 0!==globalThis.navigator&&"string"==typeof globalThis.navigator.userAgent?globalThis.navigator.userAgent:"",t={device:e.Unknown,os:o.Unknown,engine:r.Unknown,browser:i.Unknown,crossPlatformFramework:n.Unknown,osVersion:"",engineVersion:"",browserVersion:"",renderer:function(){if(void 0===globalThis.document)return"";var o=globalThis.document.createElement("canvas");if("function"!=typeof o.getContext)return"";var e=o.getContext("webgl2")||o.getContext("experimental-webgl")||o.getContext("webgl");if(null===e)return"";if(e instanceof WebGLRenderingContext||"getParameter"in e&&"function"==typeof e.getParameter){var r=e.getExtension("WEBGL_debug_renderer_info");return null===r?e.getParameter(e.RENDERER):e.getParameter(r.UNMASKED_RENDERER_WEBGL)}return""}(),userAgent:a,isNode:void 0!==globalThis.process&&void 0!==globalThis.process.versions&&void 0!==globalThis.process.versions.node,isMobile:!1,isDesktop:!1,isStandalone:!1,isWebview:/; ?wv|applewebkit(?!.*safari)/i.test(a)},s=[[/windows nt (6\.[23]); arm/i,o.Windows,l],[/windows (?:phone|mobile|iot)(?: os)?[\/ ]?([\d.]*( se)?)/i,o.Windows,l],[/windows[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i,o.Windows,l],[/windows nt ?([\d.)]*)(?!.+xbox)/i,o.Windows,l],[/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d.;]*)/i,o.Windows,l],[/windows ce\/?([\d.]*)/i,o.Windows,l],[/[adehimnop]{4,7}\b(?:.*os (\w+) like mac|; opera)/i,o.iOS,c],[/(?:ios;fbsv|ios(?=.+ip(?:ad|hone))|ip(?:ad|hone)(?: |.+i(?:pad)?)os)[\/ ]([\w.]+)/i,o.iOS,c],[/cfnetwork\/.+darwin/i,o.iOS,c],[/mac os x ?([\w. ]*)/i,o.MacOS,c],[/(?:macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i,o.MacOS,c],[/droid ([\w.]+)\b.+(android[- ]x86)/i,o.Android],[/android\w*[-\/.; ]?([\d.]*)/i,o.Android]],m=[[/windows.+ edge\/([\w.]+)/i,r.EdgeHTML],[/arkweb\/([\w.]+)/i,r.ArkWeb],[/webkit\/537\.36.+chrome\/(?!27)([\w.]+)/i,r.Blink],[/presto\/([\w.]+)/i,r.Presto],[/webkit\/([\w.]+)/i,r.WebKit],[/trident\/([\w.]+)/i,r.Trident],[/netfront\/([\w.]+)/i,r.NetFront],[/khtml[\/ ]\(?([\w.]+)/i,r.KHTML],[/tasman[\/ ]\(?([\w.]+)/i,r.Tasman],[/rv:([\w.]{1,9})\b.+gecko/i,r.Gecko]],d=[[/\b(?:crmo|crios)\/([\w.]+)/i,i.Chrome],[/webview.+edge\/([\w.]+)/i,i.Edge],[/edg(?:e|ios|a)?\/([\w.]+)/i,i.Edge],[/opera mini\/([-\w.]+)/i,i.Opera],[/opera [mobileta]{3,6}\b.+version\/([-\w.]+)/i,i.Opera],[/opera(?:.+version\/|[\/ ]+)([\w.]+)/i,i.Opera],[/opios[\/ ]+([\w.]+)/i,i.Opera],[/\bop(?:rg)?x\/([\w.]+)/i,i.Opera],[/\bopr\/([\w.]+)/i,i.Opera],[/iemobile(?:browser|boat|jet)[\/ ]?([\d.]*)/i,i.IE],[/(?:ms|\()ie ([\w.]+)/i,i.IE],[/trident.+rv[: ]([\w.]{1,9})\b.+like gecko/i,i.IE],[/\bfocus\/([\w.]+)/i,i.Firefox],[/\bopt\/([\w.]+)/i,i.Opera],[/coast\/([\w.]+)/i,i.Opera],[/fxios\/([\w.-]+)/i,i.Firefox],[/samsungbrowser\/([\w.]+)/i,i.SamsungInternet],[/headlesschrome(?:\/([\w.]+)| )/i,i.Chrome],[/wv\).+chrome\/([\w.]+).+edgw\//i,i.Edge],[/ wv\).+(chrome)\/([\w.]+)/i,i.Chrome],[/chrome\/([\w.]+) mobile/i,i.Chrome],[/chrome\/v?([\w.]+)/i,i.Chrome],[/version\/([\w.,]+) .*mobile(?:\/\w+ | ?)safari/i,i.Safari],[/iphone .*mobile(?:\/\w+ | ?)safari/i,i.Safari],[/version\/([\w.,]+) .*safari/i,i.Safari],[/webkit.+?(?:mobile ?safari|safari)(\/[\w.]+)/i,i.Safari,"1"],[/(?:mobile|tablet);.*firefox\/([\w.-]+)/i,i.Firefox],[/mobile vr; rv:([\w.]+)\).+firefox/i,i.Firefox],[/firefox\/([\w.]+)/i,i.Firefox]];function l(o){if(void 0===o)return"";var e={"4.90":"ME","NT3.51":"NT 3.11","NT4.0":"NT 4.0","NT 5.0":"2000","NT 5.1":"XP","NT 5.2":"XP","NT 6.0":"Vista","NT 6.1":"7","NT 6.2":"8","NT 6.3":"8.1","NT 6.4":"10","NT 10.0":"10",ARM:"RT"}[o];return void 0!==e?e:o}function c(o){return void 0===o?"":o.replace(/_/g,".")}function w(o,e){return 10===o.major&&0===o.minor&&o.build>=22e3?"11":10===o.major&&0===o.minor&&o.build<22e3?"10":6===o.major&&3===o.minor?"8.1":6===o.major&&2===o.minor?"8":6===o.major&&1===o.minor?"7":6===o.major&&0===o.minor?"Vista":5===o.major&&1===o.minor||5===o.major&&2===o.minor?"XP":5===o.major&&0===o.minor?"2000":4===o.major&&90===o.minor?"ME":4===o.major&&0===o.minor?"NT 4.0":3===o.major&&51===o.minor?"NT 3.11":e}function u(o,e){return"function"==typeof e?e(o):"string"==typeof e?e:void 0===o?"":o}function b(o){var e=o.split(".");return{major:parseInt(e[0]||"0"),minor:parseInt(e[1]||"0"),build:parseInt(e[2]||"0")}}(void 0!==globalThis.process&&void 0!==globalThis.process.versions&&void 0!==globalThis.process.versions.electron||/ electron\//i.test(a))&&(t.crossPlatformFramework=n.Electron),void 0!==globalThis.navigator&&"ReactNative"===globalThis.navigator.product&&(t.crossPlatformFramework=n.ReactNative);for(var f=0;f<s.length;f++){var g=(j=s[f])[0],v=j[1],p=j[2];if(null!==(k=t.userAgent.match(g))){t.os=v,t.osVersion=u(k[1],p);break}}t.os===o.iOS&&0===function(o,e){for(var r=o.split("."),i=e.split("."),n=Math.max(r.length,i.length),a=0;a<n;a++){var t=void 0,s=void 0;if((t=a<r.length?parseInt(r[a],10):0)>(s=a<i.length?parseInt(i[a],10):0))return 1;if(t<s)return-1}return 0}(t.osVersion,"18.6")&&(null!==(E=/\) Version\/([\d.]+)/.exec(t.userAgent))&&parseInt(E[1].substring(0,2),10)>=26&&(t.osVersion=E[1]));for(f=0;f<m.length;f++){g=(j=m[f])[0];var h=j[1];p=j[2];if(null!==(k=t.userAgent.match(g))){t.engine=h,t.engineVersion=u(k[1],p);break}}for(f=0;f<d.length;f++){g=(j=d[f])[0];var j,k,T=j[1];p=j[2];if(null!==(k=t.userAgent.match(g))){t.browser=T,t.browserVersion=u(k[1],p);break}}if(t.crossPlatformFramework===n.ReactNative)try{v=(V=require("react-native").Platform).OS;var E=b(S=""+V.Version);switch(v){case"android":t.os=o.Android,t.osVersion=function(o,e){return o.major>=36?"16":35===o.major?"15":34===o.major?"14":33===o.major?"13":32===o.major?"12.1":31===o.major?"12":30===o.major?"11":29===o.major?"10":28===o.major?"9":27===o.major?"8.1":26===o.major?"8.0":25===o.major?"7.1":24===o.major?"7.0":23===o.major?"6.0":22===o.major?"5.1":21===o.major?"5.0":20===o.major||19===o.major?"4.4":18===o.major?"4.3":17===o.major?"4.2":16===o.major?"4.1":15===o.major?"4.0.3":14===o.major?"4.0":13===o.major?"3.2":12===o.major?"3.1":11===o.major?"3.0":10===o.major?"2.3.3":9===o.major?"2.3":8===o.major?"2.2":7===o.major?"2.1":6===o.major?"2.0.1":5===o.major?"2.0":4===o.major?"1.6":3===o.major?"1.5":2===o.major?"1.1":1===o.major?"1.0":e}(E,S);break;case"ios":t.os=o.iOS,t.osVersion=S;break;case"windows":t.os=o.Windows,t.osVersion=w(E,S);break;case"macos":t.os=o.MacOS,t.osVersion=S}}catch(o){}if(t.isNode)try{var S,V=(v=require("os")).platform();E=b(S=v.release());switch(V){case"win32":t.os=o.Windows,t.osVersion=w(E,S);break;case"darwin":t.os=o.MacOS,t.osVersion=function(o,e){return o.major>=24?o.major-9+"."+o.minor+"."+o.build:23===o.major?"14."+o.minor+"."+o.build:22===o.major?"13."+o.minor+"."+o.build:21===o.major?"12."+o.minor+"."+o.build:20===o.major?"11."+o.minor+"."+o.build:19===o.major?"10.15."+o.minor:18===o.major?"10.14."+o.minor:17===o.major?"10.13."+o.minor:16===o.major?"10.12."+o.minor:15===o.major?"10.11."+o.minor:14===o.major?"10.10."+o.minor:13===o.major?"10.9."+o.minor:o.major>=5&&o.major<=12?"10."+(o.major-4)+"."+o.minor:e}(E,S);break;case"android":t.os=o.Android,t.osVersion=S;break;case"linux":/android/i.test(S)&&(t.os=o.Android,t.osVersion=S)}}catch(o){}void 0!==globalThis.document&&globalThis.document.addEventListener("deviceready",(function(){if(t.crossPlatformFramework=n.Cordova,t.os===o.Unknown&&void 0!==globalThis.device){switch(globalThis.device.platform){case"Android":t.os=o.Android;break;case"iOS":t.os=o.iOS}t.osVersion=globalThis.device.version}}),!1),void 0!==navigator.userAgentData&&void 0!==navigator.userAgentData.getHighEntropyValues&&navigator.userAgentData.getHighEntropyValues(["brands","fullVersionList","mobile","model","platform","platformVersion","architecture","formFactors","bitness","uaFullVersion","wow64"]).then((function(e){for(var r,i=e.fullVersionList||e.brands||[],n=e.platformVersion,a=0;a<i.length;a++){var s=null==(r=i[a])?{brand:"",version:""}:"string"==typeof r?{brand:r,version:""}:{brand:r.brand,version:r.version},m=s.brand,d=s.version;/not.a.brand/i.test(m)||"Chromium"===m&&(t.engineVersion=d)}"string"==typeof n&&(t.os===o.Windows&&parseInt(n.replace(/[^\d.]/g,"").split(".")[0],10)>=13?t.osVersion="11":t.osVersion=n)})),t.device=t.os===o.iOS||t.os===o.Android?e.Mobile:t.os===o.Windows||t.os===o.MacOS?e.Desktop:e.Unknown,t.isMobile=t.device===e.Mobile,t.isDesktop=t.device===e.Desktop,t.isStandalone=function(e){return"matchMedia"in globalThis&&(e===o.iOS?"standalone"in navigator&&!!navigator.standalone:globalThis.matchMedia("(display-mode: standalone)").matches)}(t.os);var x=/iemobile/i.test(t.userAgent),A=/windows phone/i.test(t.userAgent),O=null;function N(){return x?"msapplication-navbutton-color":A?"msapplication-TileColor":"theme-color"}function M(){return null!==O&&O.isConnected?O:O=globalThis.document.querySelector('meta[name="'+N()+'"]')}return{installed:!1,name:"Theme",module:{get value(){return(o=M())&&o.getAttribute("content")||void 0;var o},set value(o){var e;void 0===o?(e=M())&&(e.remove(),O=null):function(o){var e=M();null===e&&(e=function(){var o=globalThis.document.createElement("meta");return o.setAttribute("name",N()),globalThis.document.head.prepend(o),O=o}());e.setAttribute("content",o)}(o)}},Constants:{},Errors:{}}}));
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).Theme=o()}(this,(function(){"use strict";var e,o,i,r,n;!function(e){e.Unknown="Unknown",e.Android="Android",e.iOS="iOS",e.Windows="Windows",e.MacOS="MacOS"}(e||(e={})),function(e){e.Unknown="Unknown",e.Mobile="Mobile",e.Desktop="Desktop"}(o||(o={})),function(e){e.Unknown="Unknown",e.EdgeHTML="EdgeHTML",e.ArkWeb="ArkWeb",e.Blink="Blink",e.Presto="Presto",e.WebKit="WebKit",e.Trident="Trident",e.NetFront="NetFront",e.KHTML="KHTML",e.Tasman="Tasman",e.Gecko="Gecko"}(i||(i={})),function(e){e.Unknown="Unknown",e.Chrome="Chrome",e.Safari="Safari",e.Edge="Edge",e.Firefox="Firefox",e.Opera="Opera",e.IE="IE",e.SamsungInternet="SamsungInternet"}(r||(r={})),function(e){e.Unknown="Unknown",e.ReactNative="ReactNative",e.Electron="Electron",e.Cordova="Cordova"}(n||(n={}));var a=void 0!==globalThis.navigator&&"string"==typeof globalThis.navigator.userAgent?globalThis.navigator.userAgent:"",t={os:{name:e.Unknown,version:""},engine:{name:i.Unknown,version:""},browser:{name:r.Unknown,version:""},crossPlatformFramework:n.Unknown,userAgent:a,get network(){return function(){var o={isOnline:null,effectiveType:null,type:null,downlink:null,rtt:null,saveData:null};if(void 0!==globalThis.navigator){void 0!==globalThis.navigator.onLine&&(o.isOnline=globalThis.navigator.onLine);var i=globalThis.navigator.connection||globalThis.navigator.mozConnection||globalThis.navigator.webkitConnection;void 0!==i&&(void 0!==i.effectiveType&&(o.effectiveType=i.effectiveType),void 0!==i.type&&(o.type=i.type),void 0!==i.downlink&&(o.downlink=i.downlink),void 0!==i.rtt&&(o.rtt=i.rtt),void 0!==i.saveData&&(o.saveData=i.saveData))}if(t.isNode){try{for(var r=require("os").networkInterfaces(),n=Object.keys(r),a=0;a<n.length;a++){for(var s=r[n[a]],l=0;l<s.length;l++){var m=s[l];m.internal||"IPv4"!==m.family||(o.isOnline=!0)}if(o.isOnline)break}}catch(e){}try{var d=require("child_process");if(t.os.name===e.Windows){try{(c=d.execSync("netsh wlan show interfaces",{encoding:"utf8",timeout:5e3})).includes("State")&&c.includes("connected")&&(o.type="wifi")}catch(e){}if(null===o.type)try{(c=d.execSync("ipconfig",{encoding:"utf8",timeout:5e3})).includes("Ethernet adapter")&&(o.type="ethernet")}catch(e){}null===o.type&&(o.type="other")}else if(t.os.name===e.MacOS)try{var c=d.execSync("networksetup -listallhardwareports",{encoding:"utf8",timeout:5e3}),u=d.execSync("route -n get default | grep interface",{encoding:"utf8",timeout:5e3});u.includes("en0")&&c.includes("Wi-Fi")?o.type="wifi":u.includes("en")||c.includes("Ethernet")?o.type="ethernet":o.type="other"}catch(e){o.type="other"}}catch(e){}}return o}()},get device(){return this.os.name===e.iOS||this.os.name===e.Android?o.Mobile:this.os.name===e.Windows||this.os.name===e.MacOS?o.Desktop:o.Unknown},get renderer(){return function(){if(void 0===globalThis.document)return"";var e=globalThis.document.createElement("canvas");if("function"!=typeof e.getContext)return"";var o=e.getContext("webgl2")||e.getContext("experimental-webgl")||e.getContext("webgl");if(null===o)return"";if(o instanceof WebGLRenderingContext||"getParameter"in o&&"function"==typeof o.getParameter){var i=o.getExtension("WEBGL_debug_renderer_info");return null===i?o.getParameter(o.RENDERER):o.getParameter(i.UNMASKED_RENDERER_WEBGL)}return""}()},get isMobile(){return this.device===o.Mobile},get isDesktop(){return this.device===o.Desktop},get isWebview(){return/; ?wv|applewebkit(?!.*safari)/i.test(this.userAgent)},get isNode(){return void 0!==globalThis.process&&void 0!==globalThis.process.versions&&void 0!==globalThis.process.versions.node},get isStandalone(){return this.os.name===e.iOS?"standalone"in globalThis.navigator&&!!globalThis.navigator.standalone:"matchMedia"in globalThis&&globalThis.matchMedia("(display-mode: standalone)").matches}},s=[[/windows nt (6\.[23]); arm/i,e.Windows,c],[/windows (?:phone|mobile|iot)(?: os)?[\/ ]?([\d.]*( se)?)/i,e.Windows,c],[/windows[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i,e.Windows,c],[/windows nt ?([\d.)]*)(?!.+xbox)/i,e.Windows,c],[/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d.;]*)/i,e.Windows,c],[/windows ce\/?([\d.]*)/i,e.Windows,c],[/[adehimnop]{4,7}\b(?:.*os (\w+) like mac|; opera)/i,e.iOS,u],[/(?:ios;fbsv|ios(?=.+ip(?:ad|hone))|ip(?:ad|hone)(?: |.+i(?:pad)?)os)[\/ ]([\w.]+)/i,e.iOS,u],[/cfnetwork\/.+darwin/i,e.iOS,u],[/mac os x ?([\w. ]*)/i,e.MacOS,u],[/(?:macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i,e.MacOS,u],[/droid ([\w.]+)\b.+(android[- ]x86)/i,e.Android],[/android\w*[-\/.; ]?([\d.]*)/i,e.Android]],l=[[/windows.+ edge\/([\w.]+)/i,i.EdgeHTML],[/arkweb\/([\w.]+)/i,i.ArkWeb],[/webkit\/537\.36.+chrome\/(?!27)([\w.]+)/i,i.Blink],[/presto\/([\w.]+)/i,i.Presto],[/webkit\/([\w.]+)/i,i.WebKit],[/trident\/([\w.]+)/i,i.Trident],[/netfront\/([\w.]+)/i,i.NetFront],[/khtml[\/ ]\(?([\w.]+)/i,i.KHTML],[/tasman[\/ ]\(?([\w.]+)/i,i.Tasman],[/rv:([\w.]{1,9})\b.+gecko/i,i.Gecko]],m=[[/\b(?:crmo|crios)\/([\w.]+)/i,r.Chrome],[/webview.+edge\/([\w.]+)/i,r.Edge],[/edg(?:e|ios|a)?\/([\w.]+)/i,r.Edge],[/opera mini\/([-\w.]+)/i,r.Opera],[/opera [mobileta]{3,6}\b.+version\/([-\w.]+)/i,r.Opera],[/opera(?:.+version\/|[\/ ]+)([\w.]+)/i,r.Opera],[/opios[\/ ]+([\w.]+)/i,r.Opera],[/\bop(?:rg)?x\/([\w.]+)/i,r.Opera],[/\bopr\/([\w.]+)/i,r.Opera],[/iemobile(?:browser|boat|jet)[\/ ]?([\d.]*)/i,r.IE],[/(?:ms|\()ie ([\w.]+)/i,r.IE],[/trident.+rv[: ]([\w.]{1,9})\b.+like gecko/i,r.IE],[/\bfocus\/([\w.]+)/i,r.Firefox],[/\bopt\/([\w.]+)/i,r.Opera],[/coast\/([\w.]+)/i,r.Opera],[/fxios\/([\w.-]+)/i,r.Firefox],[/samsungbrowser\/([\w.]+)/i,r.SamsungInternet],[/headlesschrome(?:\/([\w.]+)| )/i,r.Chrome],[/wv\).+chrome\/([\w.]+).+edgw\//i,r.Edge],[/ wv\).+(chrome)\/([\w.]+)/i,r.Chrome],[/chrome\/([\w.]+) mobile/i,r.Chrome],[/chrome\/v?([\w.]+)/i,r.Chrome],[/version\/([\w.,]+) .*mobile(?:\/\w+ | ?)safari/i,r.Safari],[/iphone .*mobile(?:\/\w+ | ?)safari/i,r.Safari],[/version\/([\w.,]+) .*safari/i,r.Safari],[/webkit.+?(?:mobile ?safari|safari)(\/[\w.]+)/i,r.Safari,"1"],[/(?:mobile|tablet);.*firefox\/([\w.-]+)/i,r.Firefox],[/mobile vr; rv:([\w.]+)\).+firefox/i,r.Firefox],[/firefox\/([\w.]+)/i,r.Firefox]],d={"Google Chrome":"Chrome","Microsoft Edge":"Edge","Microsoft Edge WebView2":"Edge WebView2","Android WebView":"Chrome WebView",HeadlessChrome:"Chrome Headless",OperaMobile:"Opera Mobi"};function c(e){if(void 0===e)return"";var o={"4.90":"ME","NT3.51":"NT 3.11","NT4.0":"NT 4.0","NT 5.0":"2000","NT 5.1":"XP","NT 5.2":"XP","NT 6.0":"Vista","NT 6.1":"7","NT 6.2":"8","NT 6.3":"8.1","NT 6.4":"10","NT 10.0":"10",ARM:"RT"}[e];return void 0!==o?o:e}function u(e){return void 0===e?"":e.replace(/_/g,".")}function v(e,o){return 10===e.major&&0===e.minor&&e.build>=22e3?"11":10===e.major&&0===e.minor&&e.build<22e3?"10":6===e.major&&3===e.minor?"8.1":6===e.major&&2===e.minor?"8":6===e.major&&1===e.minor?"7":6===e.major&&0===e.minor?"Vista":5===e.major&&1===e.minor||5===e.major&&2===e.minor?"XP":5===e.major&&0===e.minor?"2000":4===e.major&&90===e.minor?"ME":4===e.major&&0===e.minor?"NT 4.0":3===e.major&&51===e.minor?"NT 3.11":o}function w(e,o){return e.major>=24?e.major-9+"."+e.minor+"."+e.build:23===e.major?"14."+e.minor+"."+e.build:22===e.major?"13."+e.minor+"."+e.build:21===e.major?"12."+e.minor+"."+e.build:20===e.major?"11."+e.minor+"."+e.build:19===e.major?"10.15."+e.minor:18===e.major?"10.14."+e.minor:17===e.major?"10.13."+e.minor:16===e.major?"10.12."+e.minor:15===e.major?"10.11."+e.minor:14===e.major?"10.10."+e.minor:13===e.major?"10.9."+e.minor:e.major>=5&&e.major<=12?"10."+(e.major-4)+"."+e.minor:o}function g(e,o){return e.major>=36?"16":35===e.major?"15":34===e.major?"14":33===e.major?"13":32===e.major?"12.1":31===e.major?"12":30===e.major?"11":29===e.major?"10":28===e.major?"9":27===e.major?"8.1":26===e.major?"8.0":25===e.major?"7.1":24===e.major?"7.0":23===e.major?"6.0":22===e.major?"5.1":21===e.major?"5.0":20===e.major||19===e.major?"4.4":18===e.major?"4.3":17===e.major?"4.2":16===e.major?"4.1":15===e.major?"4.0.3":14===e.major?"4.0":13===e.major?"3.2":12===e.major?"3.1":11===e.major?"3.0":10===e.major?"2.3.3":9===e.major?"2.3":8===e.major?"2.2":7===e.major?"2.1":6===e.major?"2.0.1":5===e.major?"2.0":4===e.major?"1.6":3===e.major?"1.5":2===e.major?"1.1":1===e.major?"1.0":o}function b(e,o){return"function"==typeof o?o(e):"string"==typeof o?o:void 0===e?"":e}function f(e){var o=e.split(".");return{major:parseInt(o[0]||"0"),minor:parseInt(o[1]||"0"),build:parseInt(o[2]||"0")}}function h(){if(t.crossPlatformFramework=n.Cordova,void 0!==globalThis.device)switch(globalThis.device.platform){case"Android":t.os={name:e.Android,version:globalThis.device.version};break;case"iOS":t.os={name:e.iOS,version:globalThis.device.version}}}!function(){(void 0!==globalThis.process&&void 0!==globalThis.process.versions&&void 0!==globalThis.process.versions.electron||/ electron\//i.test(a))&&(t.crossPlatformFramework=n.Electron),void 0!==globalThis.navigator&&"ReactNative"===globalThis.navigator.product&&(t.crossPlatformFramework=n.ReactNative);for(var i=0;i<s.length;i++){var c=(k=s[i])[0],u=k[1],p=k[2];if(null!==(y=t.userAgent.match(c))){t.os={name:u,version:b(y[1],p)};break}}var T;for(t.os.name===e.iOS&&0===function(e,o){for(var i=e.split("."),r=o.split("."),n=Math.max(i.length,r.length),a=0;a<n;a++){var t=void 0,s=void 0;if((t=a<i.length?parseInt(i[a],10):0)>(s=a<r.length?parseInt(r[a],10):0))return 1;if(t<s)return-1}return 0}(t.os.version,"18.6")&&null!==(O=/\) Version\/([\d.]+)/.exec(t.userAgent))&&parseInt(O[1].substring(0,2),10)>=26&&(t.os.version=O[1]),i=0;i<l.length;i++){c=(k=l[i])[0];var j=k[1];p=k[2];if(null!==(y=t.userAgent.match(c))){t.engine={name:j,version:b(y[1],p)};break}}for(i=0;i<m.length;i++){c=(k=m[i])[0];var k,y,E=k[1];p=k[2];if(null!==(y=t.userAgent.match(c))){t.browser={name:E,version:b(y[1],p)};break}}if(t.crossPlatformFramework===n.ReactNative)try{u=(x=require("react-native").Platform).OS;var O=f(S=""+x.Version);switch(u){case"android":t.os={name:e.Android,version:g(O,S)};break;case"ios":t.os={name:e.iOS,version:S};break;case"windows":t.os={name:e.Windows,version:v(O,S)};break;case"macos":t.os={name:e.MacOS,version:S}}}catch(e){}if(t.isNode)try{var S,x=(u=require("os")).platform();O=f(S=u.release());switch(x){case"win32":t.os={name:e.Windows,version:v(O,S)};break;case"darwin":t.os={name:e.MacOS,version:w(O,S)};break;case"android":t.os={name:e.Android,version:S};break;case"linux":/android/i.test(S)&&(t.os={name:e.Android,version:S})}}catch(e){}void 0!==globalThis.document&&(void 0!==globalThis.device?h():globalThis.document.addEventListener("deviceready",h,!1)),T=globalThis.navigator,void 0!==globalThis.navigator&&void 0!==T.userAgentData&&void 0!==T.userAgentData.getHighEntropyValues&&globalThis.navigator.userAgentData.getHighEntropyValues(["brands","fullVersionList","mobile","model","platform","platformVersion","architecture","formFactors","bitness","uaFullVersion","wow64"]).then((function(i){for(var n,a=i.fullVersionList||i.brands||[],s=i.platformVersion,l=i.platform,m=t.browser.name,c=null,u=0;u<a.length;u++){var v=null==(n=a[u])?{brand:"",version:""}:"string"==typeof n?{brand:n,version:""}:{brand:n.brand,version:n.version},w=v.version,g=v.brand;/not.a.brand/i.test(g)||((null===c||/Chrom/.test(c)&&"Chromium"!==g||"Edge"===c&&/WebView2/.test(g))&&(g=d[g]||g,null!==(c=m)&&!/Chrom/.test(c)&&/Chrom/.test(g)||("Chrome"===(m=g)||"Chrome WebView"===m||"Chrome Headless"===m?t.browser.name=r.Chrome:"Edge"===m||"Edge WebView2"===m?t.browser.name=r.Edge:"Opera Mobi"===m&&(t.browser.name=r.Opera),t.browser.version=w),c=g),"Chromium"===g&&(t.engine.version=w))}"string"==typeof s&&(t.os.name===e.Windows?t.os.version=parseInt(s.split(".")[0],10)>=13?"11":"10":t.os.version=s),"string"==typeof l&&(/android/i.test(l)?t.os.name=e.Android:/ios|iphone|ipad/i.test(l)?t.os.name=e.iOS:/windows|win32/i.test(l)?t.os.name=e.Windows:/macos|macintel/i.test(l)&&(t.os.name=e.MacOS)),!0===i.mobile&&(t.device=o.Mobile)}))}();var p=/iemobile/i.test(t.userAgent),T=/windows phone/i.test(t.userAgent),j=null;function k(){return p?"msapplication-navbutton-color":T?"msapplication-TileColor":"theme-color"}function y(){return null!==j&&j.isConnected?j:j=globalThis.document.querySelector('meta[name="'+k()+'"]')}return{installed:!1,name:"Theme",module:{get value(){return(e=y())&&e.getAttribute("content")||void 0;var e},set value(e){var o;void 0===e?(o=y())&&(o.remove(),j=null):function(e){var o=y();null===o&&(o=function(){var e=globalThis.document.createElement("meta");return e.setAttribute("name",k()),globalThis.document.head.prepend(e),j=e}());o.setAttribute("content",e)}(e)}},Constants:{},Errors:{}}}));
@@ -5,8 +5,18 @@ declare global {
5
5
  interface Navigator {
6
6
  userAgent?: string;
7
7
  userAgentData?: UserAgentData;
8
+ connection?: NavigatorConnection;
9
+ mozConnection?: NavigatorConnection;
10
+ webkitConnection?: NavigatorConnection;
8
11
  }
9
12
  }
13
+ interface NavigatorConnection {
14
+ effectiveType?: 'slow-2g' | '2g' | '3g' | '4g';
15
+ type?: 'bluetooth' | 'cellular' | 'ethernet' | 'none' | 'wifi' | 'wimax' | 'other';
16
+ downlink?: number;
17
+ rtt?: number;
18
+ saveData?: boolean;
19
+ }
10
20
  interface CordovaDevice {
11
21
  platform: string;
12
22
  version: string;
@@ -20,6 +30,8 @@ interface UserAgentDataValues {
20
30
  brands?: UserAgentDataBrand[];
21
31
  fullVersionList?: UserAgentDataBrand[];
22
32
  platformVersion?: string | null | undefined;
33
+ platform?: string | null | undefined;
34
+ mobile?: boolean;
23
35
  }
24
36
  interface UserAgentData {
25
37
  getHighEntropyValues?(hints: string[]): Promise<UserAgentDataValues>;