native-fn
Version:
2 lines (1 loc) • 16.7 kB
JavaScript
;var e;!function(e){e.Unknown="unknown",e.Light="light",e.Dark="dark"}(e||(e={}));var r,n,o,a,i,t=void 0!==globalThis.matchMedia?globalThis.matchMedia("(prefers-color-scheme: dark)"):{matches:!1,media:"not all",onchange:null,addListener:function(){},removeListener:function(){},addEventListener:function(){},removeEventListener:function(){},dispatchEvent:function(){return!1}},s="not all"!==t.media,l="document"in globalThis?globalThis.document.createElement("canvas").getContext("2d",{willReadFrequently:!0}):null,m=[];!function(e){e.Unknown="Unknown",e.Android="Android",e.iOS="iOS",e.Windows="Windows",e.MacOS="MacOS"}(r||(r={})),function(e){e.Unknown="Unknown",e.Mobile="Mobile",e.Desktop="Desktop"}(n||(n={})),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"}(o||(o={})),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"}(a||(a={})),function(e){e.Unknown="Unknown",e.ReactNative="ReactNative",e.Electron="Electron",e.Cordova="Cordova"}(i||(i={}));var c=void 0!==globalThis.navigator&&"string"==typeof globalThis.navigator.userAgent?globalThis.navigator.userAgent:"",d={"Google Chrome":"Chrome","Microsoft Edge":"Edge","Microsoft Edge WebView2":"Edge WebView2","Android WebView":"Chrome WebView",HeadlessChrome:"Chrome Headless",OperaMobile:"Opera Mobi"},g="loading",u=[],v=0,f={os:{name:r.Unknown,version:""},engine:{name:o.Unknown,version:""},browser:{name:a.Unknown,version:""},crossPlatformFramework:i.Unknown,userAgent:c,get readyState(){return g},get locale(){return function(){var e={language:null,languages:[],timezone:null,timezoneOffset:0};function r(e){for(var r=0;r<e.length;r++)n(e[r])}function n(r){"string"==typeof(r=A(r))&&-1===e.languages.indexOf(r)&&(null===e.language&&(e.language=r),e.languages.push(r))}if(f.crossPlatformFramework===i.ReactNative)try{var o=require("react-native").NativeModules;if(void 0!==o.SettingsManager){var a=o.SettingsManager;if(void 0!==a)if(void 0!==(s="function"==typeof a.getConstants?a.getConstants():a)&&void 0!==s.settings){var t=s.settings;"string"==typeof t.AppleLocale&&n(t.AppleLocale),Array.isArray(t.AppleLanguages)&&t.AppleLanguages.length>0&&r(t.AppleLanguages)}}if(void 0!==o.I18nManager){var s,l=o.I18nManager;if(void 0!==l)void 0!==(s="function"==typeof l.getConstants?l.getConstants():l)&&void 0!==s.localeIdentifier&&n(s.localeIdentifier)}}catch(e){}if(f.crossPlatformFramework===i.Electron)try{var m=require("electron").app;void 0!==m.getLocale&&n(m.getLocale()),void 0!==m.getSystemLocale&&n(m.getSystemLocale()),void 0!==m.getPreferredSystemLanguages&&r(m.getPreferredSystemLanguages())}catch(e){}if("undefined"!=typeof Intl){try{n(Intl.DateTimeFormat().resolvedOptions().locale)}catch(e){}try{e.timezone=Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){}}void 0!==globalThis.navigator&&(void 0!==globalThis.navigator.languages&&r(globalThis.navigator.languages),void 0!==globalThis.navigator.language&&n(globalThis.navigator.language),void 0!==globalThis.navigator.userLanguage&&n(globalThis.navigator.userLanguage),void 0!==globalThis.navigator.browserLanguage&&n(globalThis.navigator.browserLanguage),void 0!==globalThis.navigator.systemLanguage&&n(globalThis.navigator.systemLanguage));try{e.timezoneOffset=(new Date).getTimezoneOffset()}catch(e){}return e}()},get device(){return this.os.name===r.iOS||this.os.name===r.Android?n.Mobile:this.os.name===r.Windows||this.os.name===r.MacOS?n.Desktop:n.Unknown},get renderer(){return function(){if(void 0===globalThis.document)return"";var e=globalThis.document.createElement("canvas");if("function"!=typeof e.getContext)return"";var r=e.getContext("webgl2")||e.getContext("experimental-webgl")||e.getContext("webgl");if(null===r)return"";if(r instanceof WebGLRenderingContext||"getParameter"in r&&"function"==typeof r.getParameter){var n=r.getExtension("WEBGL_debug_renderer_info");return null===n?r.getParameter(r.RENDERER):r.getParameter(n.UNMASKED_RENDERER_WEBGL)}return""}()},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===r.iOS?"standalone"in globalThis.navigator&&!!globalThis.navigator.standalone:"matchMedia"in globalThis&&globalThis.matchMedia("(display-mode: standalone)").matches},onready:function(e){if("complete"===this.readyState)try{e(this)}catch(e){}else u.push(e)}};function h(e){if(void 0===e)return"";var r={"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!==r?r:e}function w(e){return void 0===e?"":e.replace(/_/g,".")}var b=[[/windows nt (6\.[23]); arm/i,r.Windows,h],[/windows (?:phone|mobile|iot)(?: os)?[\/ ]?([\d.]*( se)?)/i,r.Windows,h],[/windows[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i,r.Windows,h],[/windows nt ?([\d.)]*)(?!.+xbox)/i,r.Windows,h],[/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d.;]*)/i,r.Windows,h],[/windows ce\/?([\d.]*)/i,r.Windows,h],[/[adehimnop]{4,7}\b(?:.*os (\w+) like mac|; opera)/i,r.iOS,w],[/(?:ios;fbsv|ios(?=.+ip(?:ad|hone))|ip(?:ad|hone)(?: |.+i(?:pad)?)os)[\/ ]([\w.]+)/i,r.iOS,w],[/cfnetwork\/.+darwin/i,r.iOS,w],[/mac os x ?([\w. ]*)/i,r.MacOS,w],[/(?:macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i,r.MacOS,w],[/droid ([\w.]+)\b.+(android[- ]x86)/i,r.Android],[/android\w*[-\/.; ]?([\d.]*)/i,r.Android]],p=[[/windows.+ edge\/([\w.]+)/i,o.EdgeHTML],[/arkweb\/([\w.]+)/i,o.ArkWeb],[/webkit\/537\.36.+chrome\/(?!27)([\w.]+)/i,o.Blink],[/presto\/([\w.]+)/i,o.Presto],[/webkit\/([\w.]+)/i,o.WebKit],[/trident\/([\w.]+)/i,o.Trident],[/netfront\/([\w.]+)/i,o.NetFront],[/khtml[\/ ]\(?([\w.]+)/i,o.KHTML],[/tasman[\/ ]\(?([\w.]+)/i,o.Tasman],[/rv:([\w.]{1,9})\b.+gecko/i,o.Gecko]],k=[[/\b(?:crmo|crios)\/([\w.]+)/i,a.Chrome],[/webview.+edge\/([\w.]+)/i,a.Edge],[/edg(?:e|ios|a)?\/([\w.]+)/i,a.Edge],[/opera mini\/([-\w.]+)/i,a.Opera],[/opera [mobileta]{3,6}\b.+version\/([-\w.]+)/i,a.Opera],[/opera(?:.+version\/|[\/ ]+)([\w.]+)/i,a.Opera],[/opios[\/ ]+([\w.]+)/i,a.Opera],[/\bop(?:rg)?x\/([\w.]+)/i,a.Opera],[/\bopr\/([\w.]+)/i,a.Opera],[/iemobile(?:browser|boat|jet)[\/ ]?([\d.]*)/i,a.IE],[/(?:ms|\()ie ([\w.]+)/i,a.IE],[/trident.+rv[: ]([\w.]{1,9})\b.+like gecko/i,a.IE],[/\bfocus\/([\w.]+)/i,a.Firefox],[/\bopt\/([\w.]+)/i,a.Opera],[/coast\/([\w.]+)/i,a.Opera],[/fxios\/([\w.-]+)/i,a.Firefox],[/samsungbrowser\/([\w.]+)/i,a.SamsungInternet],[/headlesschrome(?:\/([\w.]+)| )/i,a.Chrome],[/wv\).+chrome\/([\w.]+).+edgw\//i,a.Edge],[/ wv\).+(chrome)\/([\w.]+)/i,a.Chrome],[/chrome\/([\w.]+) mobile/i,a.Chrome],[/chrome\/v?([\w.]+)/i,a.Chrome],[/version\/([\w.,]+) .*mobile(?:\/\w+ | ?)safari/i,a.Safari],[/iphone .*mobile(?:\/\w+ | ?)safari/i,a.Safari],[/version\/([\w.,]+) .*safari/i,a.Safari],[/webkit.+?(?:mobile ?safari|safari)(\/[\w.]+)/i,a.Safari,"1"],[/(?:mobile|tablet);.*firefox\/([\w.-]+)/i,a.Firefox],[/mobile vr; rv:([\w.]+)\).+firefox/i,a.Firefox],[/firefox\/([\w.]+)/i,a.Firefox]];function T(){v--,j()}function j(){if(0===v&&"loading"===g){g="complete";for(var e=0;e<u.length;e++)try{u[e](f)}catch(e){}u.length=0}}function E(e,r){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":r}function L(e,r){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:r}function y(e,r){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":r}function S(e,r){return"function"==typeof r?r(e):"string"==typeof r?r:void 0===e?"":e}function C(e){var r=e.split(".");return{major:parseInt(r[0]||"0"),minor:parseInt(r[1]||"0"),build:parseInt(r[2]||"0")}}function O(){if(f.crossPlatformFramework=i.Cordova,void 0!==globalThis.device)switch(globalThis.device.platform){case"Android":f.os={name:r.Android,version:globalThis.device.version};break;case"iOS":f.os={name:r.iOS,version:globalThis.device.version}}T()}function A(e){if(null==e)return e;if(0===e.length)return null;if("C"===(e=e.replace(/_/g,"-"))||"posix"===e.toLowerCase())return"en-US";if(-1!==e.indexOf("."))return A(e.split(".")[0]);if(-1!==e.indexOf("@"))return A(e.split("@")[0]);var r=e.split("-");return 0===r.length?null:(r[0]=r[0].toLowerCase(),r.length>1&&2===r[1].length&&(r[1]=r[1].toUpperCase()),r.length>2&&4===r[1].length&&(r[1]=r[1].charAt(0).toUpperCase()+r[1].slice(1).toLowerCase()),r.join("-"))}!function(){(void 0!==globalThis.process&&void 0!==globalThis.process.versions&&void 0!==globalThis.process.versions.electron||/ electron\//i.test(c))&&(f.crossPlatformFramework=i.Electron),void 0!==globalThis.navigator&&"ReactNative"===globalThis.navigator.product&&(f.crossPlatformFramework=i.ReactNative);for(var e=0;e<b.length;e++){var o=(m=b[e])[0],t=m[1],s=m[2];if(null!==(g=f.userAgent.match(o))){f.os={name:t,version:S(g[1],s)};break}}for(f.os.name===r.iOS&&0===function(e,r){for(var n=e.split("."),o=r.split("."),a=Math.max(n.length,o.length),i=0;i<a;i++){var t=void 0,s=void 0;if((t=i<n.length?parseInt(n[i],10):0)>(s=i<o.length?parseInt(o[i],10):0))return 1;if(t<s)return-1}return 0}(f.os.version,"18.6")&&null!==(h=/\) Version\/([\d.]+)/.exec(f.userAgent))&&parseInt(h[1].substring(0,2),10)>=26&&(f.os.version=h[1]),e=0;e<p.length;e++){o=(m=p[e])[0];var l=m[1];s=m[2];if(null!==(g=f.userAgent.match(o))){f.engine={name:l,version:S(g[1],s)};break}}for(e=0;e<k.length;e++){o=(m=k[e])[0];var m,g,u=m[1];s=m[2];if(null!==(g=f.userAgent.match(o))){f.browser={name:u,version:S(g[1],s)};break}}if(f.crossPlatformFramework===i.ReactNative)try{t=(A=require("react-native").Platform).OS;var h=C(w=""+A.Version);switch(t){case"android":f.os={name:r.Android,version:y(h,w)};break;case"ios":f.os={name:r.iOS,version:w};break;case"windows":f.os={name:r.Windows,version:E(h,w)};break;case"macos":f.os={name:r.MacOS,version:w}}}catch(e){}if(f.isNode)try{var w,A=(t=require("os")).platform();h=C(w=t.release());switch(A){case"win32":f.os={name:r.Windows,version:E(h,w)};break;case"darwin":f.os={name:r.MacOS,version:L(h,w)};break;case"android":f.os={name:r.Android,version:w};break;case"linux":/android/i.test(w)&&(f.os={name:r.Android,version:w})}}catch(e){}void 0!==globalThis.document&&(void 0!==globalThis.device?O():globalThis.document.addEventListener("deviceready",O,!1)),void 0!==globalThis.navigator&&void 0!==globalThis.navigator.userAgentData&&void 0!==globalThis.navigator.userAgentData.getHighEntropyValues&&(v++,globalThis.navigator.userAgentData.getHighEntropyValues(["brands","fullVersionList","mobile","model","platform","platformVersion","architecture","formFactors","bitness","uaFullVersion","wow64"]).then((function(e){try{for(var o=e.fullVersionList||e.brands||[],i=e.platformVersion,t=e.platform,s=f.browser.name,l=null,m=0;m<o.length;m++){var c=null==(v=o[m])?{brand:"",version:""}:"string"==typeof v?{brand:v,version:""}:{brand:v.brand,version:v.version},g=c.version,u=c.brand;/not.a.brand/i.test(u)||((null===l||/Chrom/.test(l)&&"Chromium"!==u||"Edge"===l&&/WebView2/.test(u))&&(u=d[u]||u,null!==(l=s)&&!/Chrom/.test(l)&&/Chrom/.test(u)||("Chrome"===(s=u)||"Chrome WebView"===s||"Chrome Headless"===s?f.browser.name=a.Chrome:"Edge"===s||"Edge WebView2"===s?f.browser.name=a.Edge:"Opera Mobi"===s&&(f.browser.name=a.Opera),f.browser.version=g),l=u),"Chromium"===u&&(f.engine.version=g))}"string"==typeof i&&(f.os.name===r.Windows?f.os.version=parseInt(i.split(".")[0],10)>=13?"11":"10":f.os.version=i),"string"==typeof t&&(/android/i.test(t)?f.os.name=r.Android:/ios|iphone|ipad/i.test(t)?f.os.name=r.iOS:/windows|win32/i.test(t)?f.os.name=r.Windows:/macos|macintel/i.test(t)&&(f.os.name=r.MacOS)),!0===e.mobile&&(f.device=n.Mobile)}catch(e){}finally{T()}var v}))),j()}();var M=null,I=null;function x(){var r=new Image;if(r.src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoMXYxSDB6Ii8+PC9zdmc+",null===l)return e.Light;l.drawImage(r,0,0);var n=l.getImageData(0,0,1,1).data;return(n[0]&n[1]&n[2])<255?e.Dark:e.Light}function N(){return s?t.matches?e.Dark:e.Light:e.Unknown}function W(){try{return require("electron").nativeTheme.shouldUseDarkColors?e.Dark:e.Light}catch(r){return e.Unknown}}function P(r){var n;(n=r.matches?e.Dark:e.Light)!==M&&F(M=n)}function F(e){for(var r=0;r<m.length;r++){var n=m[r];n.fn(e),n.once&&U(n)}}function U(e){var r,n=D(e);-1!==n&&m.splice(n,1),0===m.length&&(f.browser.name===a.SamsungInternet?(M=null,null!==I&&(clearInterval(I),I=null)):(r=e.capture,M=null,"function"==typeof t.removeEventListener?t.removeEventListener("change",P,r):"function"==typeof t.removeListener&&t.removeListener(P)))}function D(e){for(var r=0;r<m.length;r++)if(m[r].fn===e.fn&&m[r].capture===e.capture)return r;return-1}var R={installed:!1,name:"Appearance",module:{get value(){return f.crossPlatformFramework===i.ReactNative?function(){try{return require("react-native").Appearance.getColorScheme()||e.Unknown}catch(r){return e.Unknown}}():f.crossPlatformFramework===i.Electron?W():f.browser.name===a.SamsungInternet?x():N()},set value(e){!function(e){if(f.crossPlatformFramework===i.ReactNative)try{return void require("react-native").Appearance.setColorScheme(e)}catch(e){}if(f.crossPlatformFramework===i.Electron)try{return void(require("electron").nativeTheme.themeSource=e||"system")}catch(e){}}(e)},onchange:function(r,n){void 0===n&&(n=!1);var o={fn:r,capture:!1,once:!1};"boolean"==typeof n&&(n={capture:n});void 0!==n.capture&&(o.capture=n.capture);void 0!==n.once&&(o.once=n.once);void 0!==n.signal&&(o.signal=n.signal);if(f.crossPlatformFramework===i.ReactNative)return function(r){try{var n=require("react-native"),o=!1,a=function(n){o||(r.fn(n.colorScheme||e.Unknown),r.once&&i())},i=function(){o||(void 0!==r.signal&&r.signal.removeEventListener("abort",i),o=!0,t.remove())};if(void 0!==r.signal){if(r.signal.aborted)return function(){};r.signal.addEventListener("abort",i)}var t=n.Appearance.addChangeListener(a);return function(){t.remove()}}catch(e){}return function(){}}(o);if(f.crossPlatformFramework===i.Electron)return function(e){try{var r=require("electron").nativeTheme,n=!1,o=function(){n||(e.fn(W()),e.once&&a())},a=function(){n||(void 0!==e.signal&&e.signal.removeEventListener("abort",a),n=!0,r.removeListener("updated",o))};if(void 0!==e.signal){if(e.signal.aborted)return function(){};e.signal.addEventListener("abort",a)}return r.on("updated",o),function(){r.removeListener("updated",o)}}catch(e){}return function(){}}(o);var s=D(o);-1===s?(m.push(o),1===m.length&&(f.browser.name===a.SamsungInternet?(M=x(),I=globalThis.setInterval((function(){var e=x();e!==M&&(M=e,F(e))}),2e3)):(l=o.capture,M=N(),"function"==typeof t.addEventListener?t.addEventListener("change",P,l):"function"==typeof t.addListener&&t.addListener(P)))):m[s].once&&!o.once&&(m[s].once=!1);var l;void 0!==o.signal&&(o.signal.aborted?U(o):o.signal.addEventListener("abort",(function e(){void 0!==o.signal&&o.signal.removeEventListener("abort",e),U(o)})));return function(){U(o)}}},Constants:{Appearances:e},Errors:{}};module.exports=R;