native-fn 1.0.74 → 1.0.75

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 +1 -1
@@ -281,21 +281,43 @@ var CrossPlatformFramework;
281
281
  var USER_AGENT = typeof globalThis.navigator !== 'undefined' && typeof globalThis.navigator.userAgent === 'string' ? globalThis.navigator.userAgent : '';
282
282
 
283
283
  var Platform = {
284
- device: Devices.Unknown,
285
- os: OS.Unknown,
286
- engine: Engines.Unknown,
287
- browser: Browsers.Unknown,
284
+ os: { name: OS.Unknown, version: '' },
285
+ engine: { name: Engines.Unknown, version: '' },
286
+ browser: { name: Browsers.Unknown, version: '' },
288
287
  crossPlatformFramework: CrossPlatformFramework.Unknown,
289
- osVersion: '',
290
- engineVersion: '',
291
- browserVersion: '',
292
- renderer: getRenderer(),
293
288
  userAgent: USER_AGENT,
294
- isNode: typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined,
295
- isMobile: false,
296
- isDesktop: false,
297
- isStandalone: false,
298
- isWebview: /; ?wv|applewebkit(?!.*safari)/i.test(USER_AGENT),
289
+ get network() {
290
+ return getNetwork();
291
+ },
292
+ get device() {
293
+ if (this.os.name === OS.iOS || this.os.name === OS.Android)
294
+ return Devices.Mobile;
295
+ if (this.os.name === OS.Windows || this.os.name === OS.MacOS)
296
+ return Devices.Desktop;
297
+ return Devices.Unknown;
298
+ },
299
+ get renderer() {
300
+ return getRenderer();
301
+ },
302
+ get isMobile() {
303
+ return this.device === Devices.Mobile;
304
+ },
305
+ get isDesktop() {
306
+ return this.device === Devices.Desktop;
307
+ },
308
+ get isWebview() {
309
+ return /; ?wv|applewebkit(?!.*safari)/i.test(this.userAgent);
310
+ },
311
+ get isNode() {
312
+ return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined;
313
+ },
314
+ get isStandalone() {
315
+ if (this.os.name === OS.iOS)
316
+ return 'standalone' in globalThis.navigator && !!globalThis.navigator.standalone;
317
+ if (!('matchMedia' in globalThis))
318
+ return false;
319
+ return globalThis.matchMedia('(display-mode: standalone)').matches;
320
+ },
299
321
  };
300
322
  var OS_RESOLVER_MAP = [
301
323
  [/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
@@ -355,6 +377,14 @@ var BROWSER_RESOLVER_MAP = [
355
377
  [/mobile vr; rv:([\w.]+)\).+firefox/i, Browsers.Firefox],
356
378
  [/firefox\/([\w.]+)/i, Browsers.Firefox],
357
379
  ];
380
+ var HIGH_ENTROPY_BRAND_NAME_MAP = {
381
+ 'Google Chrome': 'Chrome',
382
+ 'Microsoft Edge': 'Edge',
383
+ 'Microsoft Edge WebView2': 'Edge WebView2',
384
+ 'Android WebView': 'Chrome WebView',
385
+ 'HeadlessChrome': 'Chrome Headless',
386
+ 'OperaMobile': 'Opera Mobi',
387
+ };
358
388
  function resolveWindowsVersion(string) {
359
389
  if (string === undefined)
360
390
  return '';
@@ -529,6 +559,33 @@ function normalizeBrand(entry) {
529
559
  return { brand: entry, version: '' };
530
560
  return { brand: entry.brand, version: entry.version };
531
561
  }
562
+ function getSemanticVersion(string) {
563
+ var parts = string.split('.');
564
+ return {
565
+ major: parseInt(parts[0] || '0'),
566
+ minor: parseInt(parts[1] || '0'),
567
+ build: parseInt(parts[2] || '0')
568
+ };
569
+ }
570
+ function parseOSFromCordova() {
571
+ Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
572
+ if (typeof globalThis.device !== 'undefined') {
573
+ switch (globalThis.device.platform) {
574
+ case 'Android':
575
+ Platform.os = {
576
+ name: OS.Android,
577
+ version: globalThis.device.version,
578
+ };
579
+ break;
580
+ case 'iOS':
581
+ Platform.os = {
582
+ name: OS.iOS,
583
+ version: globalThis.device.version,
584
+ };
585
+ break;
586
+ }
587
+ }
588
+ }
532
589
  function getRenderer() {
533
590
  if (typeof globalThis.document === 'undefined')
534
591
  return '';
@@ -549,171 +606,293 @@ function getRenderer() {
549
606
  return '';
550
607
  }
551
608
  }
552
- function getIsStandalone(os) {
553
- if (!('matchMedia' in globalThis))
554
- return false;
555
- if (os === OS.iOS)
556
- return 'standalone' in navigator && !!navigator.standalone;
557
- return globalThis.matchMedia('(display-mode: standalone)').matches;
558
- }
559
- function getSemanticVersion(string) {
560
- var parts = string.split('.');
561
- return {
562
- major: parseInt(parts[0] || '0'),
563
- minor: parseInt(parts[1] || '0'),
564
- build: parseInt(parts[2] || '0')
609
+ function getNetwork() {
610
+ var network = {
611
+ isOnline: null,
612
+ effectiveType: null,
613
+ type: null,
614
+ downlink: null,
615
+ rtt: null,
616
+ saveData: null,
565
617
  };
566
- }
567
- if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT))) {
568
- Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
569
- }
570
- if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative') {
571
- Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
572
- }
573
- for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
574
- var map = OS_RESOLVER_MAP[i];
575
- var regexp = map[0];
576
- var os = map[1];
577
- var resolver = map[2];
578
- var matched = Platform.userAgent.match(regexp);
579
- if (matched !== null) {
580
- Platform.os = os;
581
- Platform.osVersion = resolveVersion(matched[1], resolver);
582
- break;
618
+ if (typeof globalThis.navigator !== 'undefined') {
619
+ if (typeof globalThis.navigator.onLine !== 'undefined')
620
+ network.isOnline = globalThis.navigator.onLine;
621
+ var connection = globalThis.navigator.connection || globalThis.navigator.mozConnection || globalThis.navigator.webkitConnection;
622
+ if (typeof connection !== 'undefined') {
623
+ if (typeof connection.effectiveType !== 'undefined')
624
+ network.effectiveType = connection.effectiveType;
625
+ if (typeof connection.type !== 'undefined')
626
+ network.type = connection.type;
627
+ if (typeof connection.downlink !== 'undefined')
628
+ network.downlink = connection.downlink;
629
+ if (typeof connection.rtt !== 'undefined')
630
+ network.rtt = connection.rtt;
631
+ if (typeof connection.saveData !== 'undefined')
632
+ network.saveData = connection.saveData;
633
+ }
583
634
  }
584
- }
585
- if (Platform.os === OS.iOS && compareVersion(Platform.osVersion, '18.6') === 0) {
586
- var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
587
- if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
588
- Platform.osVersion = version[1];
589
- }
590
- for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
591
- var map = ENGINE_RESOLVER_MAP[i];
592
- var regexp = map[0];
593
- var engine = map[1];
594
- var resolver = map[2];
595
- var matched = Platform.userAgent.match(regexp);
596
- if (matched !== null) {
597
- Platform.engine = engine;
598
- Platform.engineVersion = resolveVersion(matched[1], resolver);
599
- break;
635
+ if (Platform.isNode) {
636
+ try {
637
+ var os = require('os');
638
+ var networkInterfaces = os.networkInterfaces();
639
+ var networkInterfaceNames = Object.keys(networkInterfaces);
640
+ for (var i = 0; i < networkInterfaceNames.length; i++) {
641
+ var name_1 = networkInterfaceNames[i];
642
+ var networkInterface = networkInterfaces[name_1];
643
+ for (var j = 0; j < networkInterface.length; j++) {
644
+ var address = networkInterface[j];
645
+ if (!address.internal && address.family === 'IPv4')
646
+ network.isOnline = true;
647
+ }
648
+ if (network.isOnline)
649
+ break;
650
+ }
651
+ }
652
+ catch (_) {
653
+ }
654
+ try {
655
+ var childProcess = require('child_process');
656
+ if (Platform.os.name === OS.Windows) {
657
+ try {
658
+ var output = childProcess.execSync('netsh wlan show interfaces', { encoding: 'utf8', timeout: 5000 });
659
+ if (output.includes('State') && output.includes('connected'))
660
+ network.type = 'wifi';
661
+ }
662
+ catch (_) {
663
+ }
664
+ if (network.type === null) {
665
+ try {
666
+ var output = childProcess.execSync('ipconfig', { encoding: 'utf8', timeout: 5000 });
667
+ if (output.includes('Ethernet adapter'))
668
+ network.type = 'ethernet';
669
+ }
670
+ catch (_) {
671
+ }
672
+ }
673
+ if (network.type === null)
674
+ network.type = 'other';
675
+ }
676
+ else if (Platform.os.name === OS.MacOS) {
677
+ try {
678
+ var output = childProcess.execSync('networksetup -listallhardwareports', { encoding: 'utf8', timeout: 5000 });
679
+ var activeInterface = childProcess.execSync('route -n get default | grep interface', { encoding: 'utf8', timeout: 5000 });
680
+ if (activeInterface.includes('en0') && output.includes('Wi-Fi'))
681
+ network.type = 'wifi';
682
+ else if (activeInterface.includes('en') || output.includes('Ethernet'))
683
+ network.type = 'ethernet';
684
+ else
685
+ network.type = 'other';
686
+ }
687
+ catch (_) {
688
+ network.type = 'other';
689
+ }
690
+ }
691
+ }
692
+ catch (_) {
693
+ }
600
694
  }
695
+ return network;
601
696
  }
602
- for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
603
- var map = BROWSER_RESOLVER_MAP[i];
604
- var regexp = map[0];
605
- var browser = map[1];
606
- var resolver = map[2];
607
- var matched = Platform.userAgent.match(regexp);
608
- if (matched !== null) {
609
- Platform.browser = browser;
610
- Platform.browserVersion = resolveVersion(matched[1], resolver);
611
- break;
612
- }
697
+ function canUseHighEntropyValues(navigator) {
698
+ return typeof globalThis.navigator !== 'undefined' && typeof navigator.userAgentData !== 'undefined' && typeof navigator.userAgentData.getHighEntropyValues !== 'undefined';
613
699
  }
614
- if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
615
- try {
616
- var reactNative = require('react-native');
617
- var platform = reactNative.Platform;
618
- var os = platform.OS;
619
- var release = '' + platform.Version;
620
- var version = getSemanticVersion(release);
621
- switch (os) {
622
- case 'android':
623
- Platform.os = OS.Android;
624
- Platform.osVersion = resolveSemanticAndroidVersion(version, release);
625
- break;
626
- case 'ios':
627
- Platform.os = OS.iOS;
628
- Platform.osVersion = release;
629
- break;
630
- case 'windows':
631
- Platform.os = OS.Windows;
632
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
633
- break;
634
- case 'macos':
635
- Platform.os = OS.MacOS;
636
- Platform.osVersion = release;
637
- break;
700
+ function init() {
701
+ if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT)))
702
+ Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
703
+ if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative')
704
+ Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
705
+ for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
706
+ var map = OS_RESOLVER_MAP[i];
707
+ var regexp = map[0];
708
+ var os = map[1];
709
+ var resolver = map[2];
710
+ var matched = Platform.userAgent.match(regexp);
711
+ if (matched !== null) {
712
+ Platform.os = {
713
+ name: os,
714
+ version: resolveVersion(matched[1], resolver),
715
+ };
716
+ break;
638
717
  }
639
718
  }
640
- catch (_) {
719
+ if (Platform.os.name === OS.iOS && compareVersion(Platform.os.version, '18.6') === 0) {
720
+ var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
721
+ if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
722
+ Platform.os.version = version[1];
641
723
  }
642
- }
643
- if (Platform.isNode) {
644
- try {
645
- var os = require('os');
646
- var platform = os.platform();
647
- var release = os.release();
648
- var version = getSemanticVersion(release);
649
- switch (platform) {
650
- case 'win32':
651
- Platform.os = OS.Windows;
652
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
653
- break;
654
- case 'darwin':
655
- Platform.os = OS.MacOS;
656
- Platform.osVersion = resolveSemanticDarwinVersion(version, release);
657
- break;
658
- case 'android':
659
- Platform.os = OS.Android;
660
- Platform.osVersion = release;
661
- break;
662
- case 'linux':
663
- if (/android/i.test(release)) {
664
- Platform.os = OS.Android;
665
- Platform.osVersion = release;
666
- }
667
- break;
724
+ for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
725
+ var map = ENGINE_RESOLVER_MAP[i];
726
+ var regexp = map[0];
727
+ var engine = map[1];
728
+ var resolver = map[2];
729
+ var matched = Platform.userAgent.match(regexp);
730
+ if (matched !== null) {
731
+ Platform.engine = {
732
+ name: engine,
733
+ version: resolveVersion(matched[1], resolver),
734
+ };
735
+ break;
668
736
  }
669
737
  }
670
- catch (_) {
738
+ for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
739
+ var map = BROWSER_RESOLVER_MAP[i];
740
+ var regexp = map[0];
741
+ var browser = map[1];
742
+ var resolver = map[2];
743
+ var matched = Platform.userAgent.match(regexp);
744
+ if (matched !== null) {
745
+ Platform.browser = {
746
+ name: browser,
747
+ version: resolveVersion(matched[1], resolver),
748
+ };
749
+ break;
750
+ }
671
751
  }
672
- }
673
- if (typeof globalThis.document !== 'undefined') {
674
- globalThis.document.addEventListener("deviceready", function () {
675
- Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
676
- if (Platform.os === OS.Unknown && typeof globalThis.device !== 'undefined') {
677
- switch (globalThis.device.platform) {
678
- case 'Android':
679
- Platform.os = OS.Android;
752
+ if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
753
+ try {
754
+ var reactNative = require('react-native');
755
+ var platform = reactNative.Platform;
756
+ var os = platform.OS;
757
+ var release = '' + platform.Version;
758
+ var version = getSemanticVersion(release);
759
+ switch (os) {
760
+ case 'android':
761
+ Platform.os = {
762
+ name: OS.Android,
763
+ version: resolveSemanticAndroidVersion(version, release),
764
+ };
765
+ break;
766
+ case 'ios':
767
+ Platform.os = {
768
+ name: OS.iOS,
769
+ version: release,
770
+ };
680
771
  break;
681
- case 'iOS':
682
- Platform.os = OS.iOS;
772
+ case 'windows':
773
+ Platform.os = {
774
+ name: OS.Windows,
775
+ version: resolveSemanticWindowsVersion(version, release),
776
+ };
777
+ break;
778
+ case 'macos':
779
+ Platform.os = {
780
+ name: OS.MacOS,
781
+ version: release,
782
+ };
683
783
  break;
684
784
  }
685
- Platform.osVersion = globalThis.device.version;
686
785
  }
687
- }, false);
688
- }
689
- if (navigator.userAgentData !== undefined && navigator.userAgentData.getHighEntropyValues !== undefined) {
690
- navigator
691
- .userAgentData
692
- .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
693
- .then(function (result) {
694
- var brands = result.fullVersionList || result.brands || [];
695
- var platformVersion = result.platformVersion;
696
- for (var i = 0; i < brands.length; i++) {
697
- var brand = normalizeBrand(brands[i]);
698
- var brandName = brand.brand;
699
- var brandVersion = brand.version;
700
- if (/not.a.brand/i.test(brandName))
701
- continue;
702
- if (brandName === "Chromium")
703
- Platform.engineVersion = brandVersion;
786
+ catch (_) {
787
+ }
788
+ finally {
789
+ }
790
+ }
791
+ if (Platform.isNode) {
792
+ try {
793
+ var os = require('os');
794
+ var platform = os.platform();
795
+ var release = os.release();
796
+ var version = getSemanticVersion(release);
797
+ switch (platform) {
798
+ case 'win32':
799
+ Platform.os = {
800
+ name: OS.Windows,
801
+ version: resolveSemanticWindowsVersion(version, release),
802
+ };
803
+ break;
804
+ case 'darwin':
805
+ Platform.os = {
806
+ name: OS.MacOS,
807
+ version: resolveSemanticDarwinVersion(version, release),
808
+ };
809
+ break;
810
+ case 'android':
811
+ Platform.os = {
812
+ name: OS.Android,
813
+ version: release,
814
+ };
815
+ break;
816
+ case 'linux':
817
+ if (/android/i.test(release)) {
818
+ Platform.os = {
819
+ name: OS.Android,
820
+ version: release,
821
+ };
822
+ }
823
+ break;
824
+ }
704
825
  }
705
- if (typeof platformVersion === 'string') {
706
- if (Platform.os === OS.Windows && parseInt(platformVersion.replace(/[^\d.]/g, '').split('.')[0], 10) >= 13)
707
- Platform.osVersion = '11';
708
- else
709
- Platform.osVersion = platformVersion;
826
+ catch (_) {
827
+ }
828
+ finally {
829
+ }
830
+ }
831
+ if (typeof globalThis.document !== 'undefined') {
832
+ if (typeof globalThis.device !== 'undefined') {
833
+ parseOSFromCordova();
710
834
  }
711
- });
835
+ else {
836
+ globalThis.document.addEventListener("deviceready", parseOSFromCordova, false);
837
+ }
838
+ }
839
+ if (canUseHighEntropyValues(globalThis.navigator)) {
840
+ globalThis
841
+ .navigator
842
+ .userAgentData
843
+ .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
844
+ .then(function (result) {
845
+ var brands = result.fullVersionList || result.brands || [];
846
+ var platformVersion = result.platformVersion;
847
+ var platform = result.platform;
848
+ var browserName = Platform.browser.name;
849
+ var prevBrandName = null;
850
+ for (var i = 0; i < brands.length; i++) {
851
+ var brand = normalizeBrand(brands[i]);
852
+ var brandVersion = brand.version;
853
+ var brandName = brand.brand;
854
+ if (/not.a.brand/i.test(brandName))
855
+ continue;
856
+ if (prevBrandName === null || (/Chrom/.test(prevBrandName) && brandName !== 'Chromium') || (prevBrandName === 'Edge' && /WebView2/.test(brandName))) {
857
+ brandName = HIGH_ENTROPY_BRAND_NAME_MAP[brandName] || brandName;
858
+ prevBrandName = browserName;
859
+ if (prevBrandName === null || /Chrom/.test(prevBrandName) || !/Chrom/.test(brandName)) {
860
+ browserName = brandName;
861
+ if (browserName === 'Chrome' || browserName === 'Chrome WebView' || browserName === 'Chrome Headless')
862
+ Platform.browser.name = Browsers.Chrome;
863
+ else if (browserName === 'Edge' || browserName === 'Edge WebView2')
864
+ Platform.browser.name = Browsers.Edge;
865
+ else if (browserName === 'Opera Mobi')
866
+ Platform.browser.name = Browsers.Opera;
867
+ Platform.browser.version = brandVersion;
868
+ }
869
+ prevBrandName = brandName;
870
+ }
871
+ if (brandName === 'Chromium')
872
+ Platform.engine.version = brandVersion;
873
+ }
874
+ if (typeof platformVersion === 'string') {
875
+ if (Platform.os.name === OS.Windows)
876
+ Platform.os.version = parseInt(platformVersion.split('.')[0], 10) >= 13 ? '11' : '10';
877
+ else
878
+ Platform.os.version = platformVersion;
879
+ }
880
+ if (typeof platform === 'string') {
881
+ if (/android/i.test(platform))
882
+ Platform.os.name = OS.Android;
883
+ else if (/ios|iphone|ipad/i.test(platform))
884
+ Platform.os.name = OS.iOS;
885
+ else if (/windows|win32/i.test(platform))
886
+ Platform.os.name = OS.Windows;
887
+ else if (/macos|macintel/i.test(platform))
888
+ Platform.os.name = OS.MacOS;
889
+ }
890
+ if (result.mobile === true)
891
+ Platform.device = Devices.Mobile;
892
+ });
893
+ }
712
894
  }
713
- Platform.device = Platform.os === OS.iOS || Platform.os === OS.Android ? Devices.Mobile : Platform.os === OS.Windows || Platform.os === OS.MacOS ? Devices.Desktop : Devices.Unknown;
714
- Platform.isMobile = Platform.device === Devices.Mobile;
715
- Platform.isDesktop = Platform.device === Devices.Desktop;
716
- Platform.isStandalone = getIsStandalone(Platform.os);
895
+ init();
717
896
 
718
897
  var Clipboard = {
719
898
  copy: copy,