UNPKG

storybook-addon-useragent

Version:
2 lines 4.07 kB
var p="useragent",o={WINDOWS:"Windows",MACINTOSH:"Macintosh",LINUX:"Linux",ANDROID:"Android",IOS:"iOS"},a={X64:"x64",X86:"x86",ARM64:"arm64",ARM:"arm"},f={Chrome:"Chrome",Chromium:"Chromium",Edge:"Edge",Brave:"Brave",Opera:"Opera",Firefox:"Firefox",Safari:"Safari","Internet Explorer":"Internet Explorer"},n={MOBILE:/Mobile|Android|iPhone|iPad|iPod/i,ARCH_INFO:/\((.*?)\)/,DEVICE_MODEL:{APPLE:/iPhone|iPad|iPod|MacBook|MacBook Pro|MacBook Air|iMac|Mac Pro/i,MOBILE:/Android|Windows Phone|BlackBerry|Nexus|Pixel|Galaxy/i,PHONE_BRANDS:/Xiaomi|Huawei|Sony|LG|OnePlus|OPPO|vivo|Realme|Motorola/i,PC_BRANDS:/Lenovo|Asus|Acer|Dell|HP|Surface/i},BROWSER:/(Chrome|Chromium|Edge|Brave|Opera)\/(\d+\.\d+)|(Firefox)\/(\d+\.\d+)|(Version)\/(\d+\.\d+).*Safari|(MSIE|Trident)\/(\d+\.\d+)/i,PLATFORM_VERSION:{WINDOWS:/Windows NT (\d+\.\d+)/i,MACOS:/Mac OS X (\d+[._]\d+(?:[._]\d+)?)/i,IOS:/iPhone OS (\d+[._]\d+(?:[._]\d+)?)/i,ANDROID:/Android (\d+(?:\.\d+(?:\.\d+)?)?)/i},BITNESS:{WIN64:/Win64|x64|WOW64/i,X86_64:/x86_64/i,ARM64:/aarch64/i,I686:/i686|i386/i,ARM32:/armv\d+[^6]/i}};var R="userAgent";function c(e){if(/Windows/i.test(e))return o.WINDOWS;if(/Android/i.test(e))return o.ANDROID;if(/iPhone|iPad|iPod/i.test(e))return o.IOS;if(/Macintosh/i.test(e))return o.MACINTOSH;if(/Linux/i.test(e))return o.LINUX}function A(e,r){if(r||(r=c(e)),!r)return;let t;switch(r){case o.WINDOWS:return t=e.match(n.PLATFORM_VERSION.WINDOWS),t?.[1];case o.MACINTOSH:return t=e.match(n.PLATFORM_VERSION.MACOS),t?.[1]?t[1].replace(/_/g,"."):void 0;case o.IOS:return t=e.match(n.PLATFORM_VERSION.IOS),t?.[1]?t[1].replace(/_/g,"."):void 0;case o.ANDROID:return t=e.match(n.PLATFORM_VERSION.ANDROID),t?.[1];default:return}}function I(e){if(n.BITNESS.WIN64.test(e)||n.BITNESS.X86_64.test(e)||n.BITNESS.ARM64.test(e))return "64";if(n.BITNESS.I686.test(e)||n.BITNESS.ARM32.test(e))return "32";let r=c(e);if(r===o.MACINTOSH||r===o.IOS)return "64";if(r===o.ANDROID){let t=A(e,r);if(t)return parseInt(t.split(".")[0],10)>=5?"64":"32"}}function P(e){let r=n.ARCH_INFO.exec(e);if(!r?.[1])return;let t=r[1];if(t.includes(a.X64))return a.X64;if(t.includes(a.X86))return a.X86;if(t.includes(a.ARM64))return a.ARM64;if(t.includes(a.ARM))return a.ARM}function E(e){for(let r of Object.values(n.DEVICE_MODEL)){let t=r.exec(e);if(t?.[0])return t[0]}}function S(e){return c(e)!==o.WINDOWS?false:/WOW64/i.test(e)}function B(e){return e in f}function b(e){let r=[],t=e.match(n.BROWSER);if(!t)return r;if(t[1]&&t[2]){let s=t[1],i=t[2];B(s)?r.push({brand:f[s],version:i}):r.push({brand:"Chromium",version:i});}return t[3]&&t[4]&&r.push({brand:f.Firefox,version:t[4]}),t[5]&&t[6]&&r.push({brand:f.Safari,version:t[6]}),t[7]&&t[8]&&r.push({brand:f["Internet Explorer"],version:t[8]}),r}async function w(e){let r=b(e),t=n.MOBILE.test(e),s=c(e),i=P(e),d=E(e),M=A(e,s),N=I(e),x=S(e),l={userAgent:e,mobile:t,platform:s,architecture:i,model:d,platformVersion:M||"0",bitness:N||"64",wow64:x};return l.brands=r,l.fullVersionList=r,l}var h=false,y="",u,m=0;function v(){h||typeof window>"u"||(h=true,y=window.navigator.userAgent,u=window.navigator);}async function T(e){if(typeof window>"u"||!u)return;let r=++m,t;if(u.userAgentData)try{let i=await w(e);if(r!==m)return;t={...u.userAgentData,...i,getHighEntropyValues:async()=>i};}catch(i){console.warn("Failed to parse userAgent for userAgentData:",i);}if(r!==m)return;let s=new Proxy(u,{get(i,d){return d==="userAgent"?e:d==="userAgentData"&&t?t:Reflect.get(i,d)}});if(typeof window.Navigator=="function")try{Object.defineProperty(window,"navigator",{value:s,configurable:!0,writable:!0});}catch(i){console.warn("Unable to replace navigator object with proxy:",i);try{Object.defineProperty(window.navigator,"userAgent",{get:()=>e,configurable:!0});}catch(d){console.warn("All UA spoofing methods failed:",d);}}}async function O(e){typeof window>"u"||(v(),await T(e||y));}function g(e){return e?.[p]??""}var W={loaders:[async({args:e})=>(await O(g(e)),{})],initialGlobals:{[R]:false}},Z=W;export{Z as default};//# sourceMappingURL=preview.js.map //# sourceMappingURL=preview.js.map