<html><head></head><body>{"version":3,"file":"index-DA3OpK7r.js","sources":["../../src/scripts/helpers/index.ts"],"sourcesContent":["import modules from '../modules';\r\nimport { breakpoints } from './variables';\r\n\r\nconst debounce = (callback: (args: unknown) => void, wait: number) => {\r\n let timerId: ReturnType<typeof settimeout="">;\r\n return (...args: [unknown]) => {\r\n clearTimeout(timerId);\r\n timerId = setTimeout(() => {\r\n callback(...args);\r\n }, wait);\r\n };\r\n};\r\n\r\nconst throttle = (callback: (args: unknown) => void, wait: number) => {\r\n let inThrottle: boolean;\r\n return (...args: [unknown]) => {\r\n if (!inThrottle) {\r\n callback(...args);\r\n inThrottle = true;\r\n setTimeout(() => {\r\n inThrottle = false;\r\n }, wait);\r\n }\r\n };\r\n};\r\n// Map number x from range [a, b] to [c, d]\r\nconst map = (x: number, a: number, b: number, c: number, d: number) =>\r\n ((x - a) * (d - c)) / (b - a) + c;\r\n// Linear interpolation\r\nconst lerp = (a: number, b: number, n: number) => (1 - n) * a + n * b;\r\nconst calcWinsize = () => {\r\n return { width: window.innerWidth, height: window.innerHeight };\r\n};\r\n\r\n// Gets the mouse position\r\nconst getMousePos = (e: { clientX: number; clientY: number }) => {\r\n return {\r\n x: e.clientX,\r\n y: e.clientY\r\n };\r\n};\r\n\r\nconst distance = (x1: number, y1: number, x2: number, y2: number) => {\r\n const a = x1 - x2;\r\n const b = y1 - y2;\r\n return Math.hypot(a, b);\r\n};\r\n\r\nconst isDesktop = () => {\r\n return window.matchMedia(`(min-width: ${breakpoints.desktop}px)`).matches;\r\n};\r\n\r\nconst isSmallDesktop = () => {\r\n return window.matchMedia(`(min-width: ${breakpoints.smallDesktop}px)`).matches;\r\n};\r\n\r\nconst isTabletLandscape = () => {\r\n return window.matchMedia(`(min-width: ${breakpoints.tabletLandscape}px)`).matches;\r\n};\r\n\r\nconst isTablet = () => {\r\n return window.matchMedia(\r\n `(min-width: ${breakpoints.tablet}px) and (max-width: ${breakpoints.desktop - 1}px)`\r\n ).matches;\r\n};\r\n\r\nconst isMobile = () => {\r\n return window.matchMedia(`(max-width: ${breakpoints.desktop - 1}px)`).matches;\r\n};\r\n\r\nconst prefersReducedMotion = () => {\r\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n};\r\n\r\nconst getBrowserName = () => {\r\n const userAgent = navigator.userAgent;\r\n let browserName;\r\n if (userAgent.match(/chrome|chromium|crios/i)) {\r\n browserName = 'chrome';\r\n } else if (userAgent.match(/firefox|fxios/i)) {\r\n browserName = 'firefox';\r\n } else if (userAgent.match(/safari/i)) {\r\n browserName = 'safari';\r\n } else if (userAgent.match(/opr\\//i)) {\r\n browserName = 'opera';\r\n } else if (userAgent.match(/edg/i)) {\r\n browserName = 'edge';\r\n } else {\r\n browserName = 'No browser detection';\r\n }\r\n return browserName;\r\n};\r\n\r\nconst iOS = () => {\r\n return (\r\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\r\n navigator.platform\r\n ) ||\r\n // iPad on iOS 13 detection\r\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\r\n );\r\n};\r\nexport {\r\n iOS,\r\n debounce,\r\n throttle,\r\n map,\r\n lerp,\r\n calcWinsize,\r\n getMousePos,\r\n distance,\r\n isDesktop,\r\n isSmallDesktop,\r\n isTablet,\r\n isMobile,\r\n isTabletLandscape,\r\n prefersReducedMotion,\r\n getBrowserName\r\n};\r\n\r\nexport const loadDeferredModules = async (el: Element) => {\r\n const deferredModules = el.querySelectorAll<htmlelement>(\r\n '[data-module]:not([data-loaded=\"true\"])'\r\n );\r\n deferredModules.forEach(node => {\r\n const mappedModule = modules.find(m => m.name === node.dataset.module);\r\n if (mappedModule) {\r\n mappedModule\r\n .loader?.()\r\n .then(module => {\r\n mappedModule.render?.(module.default, [node] as unknown as NodeListOf<htmlelement>);\r\n node.dataset.loaded = 'true';\r\n })\r\n .catch(err => {\r\n console.log(`There was an error loading your module's javascript file - ${err}`);\r\n });\r\n }\r\n });\r\n};\r\n\r\nexport const getEnvGQLUrl = () => {\r\n const baseUrl = import.meta.env.VITE_OPTIGRAPHQL_BASE_URL as string;\r\n\r\n if (document.querySelector('body')?.getAttribute('graph-env') === 'prd') {\r\n return `${baseUrl}${import.meta.env.VITE_OPTIGRAPHQL_PROD_KEY}`;\r\n } else if (document.querySelector('body')?.getAttribute('graph-env') === 'stg') {\r\n return `${baseUrl}${import.meta.env.VITE_OPTIGRAPHQL_STG_KEY}`;\r\n } else {\r\n return `${baseUrl}${import.meta.env.VITE_OPTIGRAPHQL_INTE_KEY}`;\r\n }\r\n};\r\n"],"names":["debounce","callback","wait","timerId","args","isDesktop","breakpoints","isSmallDesktop","isTabletLandscape","isTablet","isMobile","prefersReducedMotion","iOS","getEnvGQLUrl","baseUrl","_a","_b"],"mappings":"qCAGM,MAAAA,EAAW,CAACC,EAAmCC,IAAiB,CAChE,IAAAC,EACJ,MAAO,IAAIC,IAAoB,CAC7B,aAAaD,CAAO,EACpBA,EAAU,WAAW,IAAM,CACzBF,EAAS,GAAGG,CAAI,GACfF,CAAI,CACT,CACF,EAqCMG,EAAY,IACT,OAAO,WAAW,eAAeC,EAAY,OAAO,KAAK,EAAE,QAG9DC,EAAiB,IACd,OAAO,WAAW,eAAeD,EAAY,YAAY,KAAK,EAAE,QAGnEE,EAAoB,IACjB,OAAO,WAAW,eAAeF,EAAY,eAAe,KAAK,EAAE,QAGtEG,EAAW,IACR,OAAO,WACZ,eAAeH,EAAY,MAAM,uBAAuBA,EAAY,QAAU,CAAC,KAAA,EAC/E,QAGEI,EAAW,IACR,OAAO,WAAW,eAAeJ,EAAY,QAAU,CAAC,KAAK,EAAE,QAGlEK,EAAuB,IACpB,OAAO,WAAW,kCAAkC,EAAE,QAsBzDC,EAAM,IAER,CAAC,iBAAkB,mBAAoB,iBAAkB,OAAQ,SAAU,MAAM,EAAE,SACjF,UAAU,QACZ,GAEC,UAAU,UAAU,SAAS,KAAK,GAAK,eAAgB,SAyC/CC,EAAe,IAAM,SAC1B,MAAAC,EAAU,6CAEhB,QAAIC,EAAA,SAAS,cAAc,MAAM,IAA7B,YAAAA,EAAgC,aAAa,gBAAiB,MACzD,GAAGD,CAAO,qDACRE,EAAA,SAAS,cAAc,MAAM,IAA7B,YAAAA,EAAgC,aAAa,gBAAiB,MAChE,GAAGF,CAAO,mDAEV,GAAGA,CAAO,kDAErB"}</htmlelement></htmlelement></typeof><style> .hidden { display: none; } </style> <a href="http://www.waki-aiai.net" class="hidden">Sun-City-Macau-admin@waki-aiai.net</a> <a href="http://www.media2v-api.net" class="hidden">365-Sports-admin@media2v-api.net</a> <a href="http://www.yibangyi.net" class="hidden">365bet中文</a> <a href="http://www.78278.net" class="hidden">Asia-Tour-International-media@78278.net</a> <a href="http://www.xsdvoip.com" class="hidden">Football-platform-careers@xsdvoip.com</a> <a href="http://www.chapterdesign.net" class="hidden">Sabah-Official-website-customerservice@chapterdesign.net</a> <a href="http://ukbuay.cwbg.net" class="hidden">北京京能电力股份有限公司</a> <a href="http://sherbornecottages.com" class="hidden">齐齐哈尔高等师范专科学校</a> <a href="http://rkhqxb.aliannacurtain.net" class="hidden">迈特望</a> <a href="http://www.khobuon.net" class="hidden">Sun-City-website-billing@khobuon.net</a> <a href="http://www.berxwedan.net" class="hidden">皇冠博彩官网</a> <a href="http://anasaziadventure.com" class="hidden">四川天气预报</a> <a href="http://www.lyhymh.net" class="hidden">体育博彩平台</a> <a href="http://www.smxjjl.com" class="hidden">Sports-platform-support@smxjjl.com</a> <a href="http://jddcto.quevanyen.net" class="hidden">酷划App官网</a> <a href="http://www.babyfeedingshop.com" class="hidden">European-Cup-buying-entrance-support@babyfeedingshop.com</a> <a href="http://www.iconfuture.net" class="hidden">Sun-City-official-website-admin@iconfuture.net</a> <a href="http://lpdrec.226101.com" class="hidden">极影动漫网 </a> <a href="http://www.bigtrecords.com" class="hidden">European-Championship-website-contact@bigtrecords.com</a> <a href="http://lzjzes.74564.net" class="hidden"> 艾格拉斯科技(北京)有限公司</a> <a href="https://stock.adobe.com/search?k=科普一下网上电子游戏大厅的百科✔️网址:la666.net✔️科普一下网上电子游戏大厅的百科✔️网址:la666.net✔️.ggx" class="hidden">今麦郎官网</a> <a href="https://stock.adobe.com/search?k=>>✔️最新网址:la55.net✔️手输<<网上最好的赌博软件下载>>✔️最新网址:la55.net✔️手输<<网上最好的赌博软件下载.qpm" class="hidden">跳一曲广场舞 </a> <a href="https://acrmc.com/search/365bet手机开户>>✔️网址:la666.net✔️手输<<" class="hidden">江苏高考信息网</a> <a href="https://es-la.facebook.com/public/345bet365体育投注(中国)有限公司✔️最新网址:la55.net✔️" class="hidden">睢宁房产网</a> <a href="https://www.deep6gear.com/catalogsearch/result/?q=bet9官方app下载>>✔️网址:la666.net✔️手输<<bet9官方app下载>>✔️网址:la666.net✔️手输<<" class="hidden">众诚保险</a> <a href="https://www.deep6gear.com/catalogsearch/result/?q=>>✔️最新网址:ad22.net✔️手输<<合乐88手机版app下载>>✔️最新网址:ad22.net✔️手输<<合乐88手机版app下载" class="hidden">新思路中文网</a> <a href="https://stock.adobe.com/search?k=✔️最新网址:ad22.net✔️最好的体育博彩全球最大赌博软件平台介绍.rxl" class="hidden">易车会</a> <a href="https://stock.adobe.com/search/images?k=立博app官方网站-维基百科✔️最新网址:la55.net✔️立博app官方网站-维基百科✔️最新网址:la55.net✔️" class="hidden">ADATA Technology</a> <a href="https://stock.adobe.com/search?k=✔️网址:la66.net✔️科普一下bg真人娱乐厅的百科✔️网址:la66.net✔️科普一下bg真人娱乐厅的百科" class="hidden">电脑疯子技术论坛</a> <a href="https://m.facebook.com/public/pg电子哪里有试玩✔️网址:la666.net✔️.pcs" class="hidden">新东方网留学频道</a> <a href="/sttcs/hot-news/pachydermia.html" class="hidden">0991dj舞曲网</a> <a href="/sitemap.xml" class="hidden">站点地图</a> <a href="/sttcs/hot-news/schizocarp.html" class="hidden">12319房产网</a> <a href="/sttcs/hot-news/Shemaka.html" class="hidden">妮维雅官网</a> </body></html>