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
+ };
566
+ break;
567
+ case 'windows':
568
+ Platform.os = {
569
+ name: OS.Windows,
570
+ version: resolveSemanticWindowsVersion(version, release),
571
+ };
475
572
  break;
476
- case 'iOS':
477
- Platform.os = OS.iOS;
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;
499
- }
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;
581
+ catch (_) {
505
582
  }
506
- });
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
+ }
620
+ }
621
+ catch (_) {
622
+ }
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 Fullscreen = {
514
693
  get enabled() {
@@ -603,7 +782,7 @@
603
782
  throw new Error();
604
783
  return allWindows[0];
605
784
  }
606
- if (Platform.os === OS.iOS) {
785
+ if (Platform.os.name === OS.iOS) {
607
786
  var video = globalThis.document.querySelector('video');
608
787
  if (video === null)
609
788
  throw new Error();
@@ -684,7 +863,7 @@
684
863
  if (typeof globalThis.document !== 'undefined')
685
864
  globalThis.document.addEventListener(errorEvents[i], emitError, false);
686
865
  }
687
- if (OS.iOS === Platform.os) {
866
+ if (Platform.os.name === OS.iOS) {
688
867
  bridgeIOSVideoEvents();
689
868
  if (typeof globalThis.MutationObserver !== 'undefined') {
690
869
  var observer = new MutationObserver(function () {
@@ -720,7 +899,7 @@
720
899
  }
721
900
  }
722
901
  if (api === null) {
723
- if (OS.iOS !== Platform.os)
902
+ if (Platform.os.name !== OS.iOS)
724
903
  return false;
725
904
  var videos = globalThis.document.querySelectorAll('video');
726
905
  for (var i = 0; i < videos.length; i++) {
@@ -744,7 +923,7 @@
744
923
  var allWindows = electron.BrowserWindow.getAllWindows();
745
924
  for (var i = 0; i < allWindows.length; i++) {
746
925
  var currentWindow = allWindows[i];
747
- if (currentWindow.isFullScreen() || (Platform.os === OS.MacOS && typeof currentWindow.isSimpleFullScreen === 'function' && currentWindow.isSimpleFullScreen()))
926
+ if (currentWindow.isFullScreen() || (Platform.os.name === OS.MacOS && typeof currentWindow.isSimpleFullScreen === 'function' && currentWindow.isSimpleFullScreen()))
748
927
  return currentWindow;
749
928
  }
750
929
  return null;
@@ -802,7 +981,7 @@
802
981
  resolve();
803
982
  })
804
983
  .catch(function () {
805
- if (OS.iOS !== Platform.os) {
984
+ if (Platform.os.name !== OS.iOS) {
806
985
  reject();
807
986
  return;
808
987
  }
@@ -816,7 +995,7 @@
816
995
  }
817
996
  }
818
997
  catch (error) {
819
- if (OS.iOS !== Platform.os) {
998
+ if (Platform.os.name !== OS.iOS) {
820
999
  reject();
821
1000
  return;
822
1001
  }
@@ -824,7 +1003,7 @@
824
1003
  }
825
1004
  }
826
1005
  function fallbackToIOSVideo() {
827
- if (OS.iOS === Platform.os && target.tagName.toUpperCase() === 'VIDEO') {
1006
+ if (Platform.os.name === OS.iOS && target.tagName.toUpperCase() === 'VIDEO') {
828
1007
  var video = target;
829
1008
  if (video.webkitSupportsFullscreen && typeof video.webkitEnterFullscreen === 'function') {
830
1009
  lastIOSVideo = video;
@@ -880,7 +1059,7 @@
880
1059
  }
881
1060
  }
882
1061
  }
883
- if (OS.iOS === Platform.os && lastIOSVideo !== null) {
1062
+ if (Platform.os.name === OS.iOS && lastIOSVideo !== null) {
884
1063
  if (typeof lastIOSVideo.webkitExitFullscreen === 'function' && lastIOSVideo.webkitDisplayingFullscreen === true) {
885
1064
  lastIOSVideo.webkitExitFullscreen();
886
1065
  lastIOSVideo = null;