{"version":3,"file":"ratio.mjs","sources":["../../../../packages/utils/ratio.ts"],"sourcesContent":["interface Options {\n\tratio?: {\n\t\tbase?: {\n\t\t\tpc?: number\n\t\t\tpad?: number\n\t\t\tphone?: number\n\t\t}\n\t}\n}\n\nconst ua = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase() : ''\n\nexport function setRatio(options: Options = {}) {\n\tconst ua = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase() : ''\n\tconst base = options?.ratio?.base ?? {}\n\n\tconst baseSize = /iphone|android.*mobile|windows phone|ipod/i.test(ua) ? (base.phone ?? 375) : /ipad|android(?!.*mobile)|tablet/i.test(ua) ? (base.pad ?? 1100) : (base.pc ?? 1366)\n\n\tconst updateFontSize = () => {\n\t\tif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n\t\t\tconst width = window.innerWidth || document.documentElement.clientWidth\n\t\t\tdocument.documentElement.style.fontSize = (width / baseSize) * 100 + 'px'\n\t\t}\n\t}\n\n\tupdateFontSize()\n\tif (typeof window !== 'undefined') {\n\t\twindow.addEventListener('resize', updateFontSize)\n\t}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getMedia(options: Options = {}) {\n\tconst isMobile = /iphone|android.*mobile|windows phone|ipod/i.test(ua)\n\tconst isTablet = /ipad|android(?!.*mobile)|tablet/i.test(ua)\n\n\treturn isMobile ? 'phone' : isTablet ? 'pad' : 'pc'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function setMedia(options: Options = {}) {\n\tif (typeof document === 'undefined') {\n\t\treturn\n\t}\n\tconst html = document.documentElement\n\tconst classList: string[] = []\n\n\t// 判断操作系统\n\tif (/windows/i.test(ua)) {\n\t\tclassList.push('os-windows')\n\t} else if (/macintosh|mac os x/i.test(ua)) {\n\t\tclassList.push('os-macos')\n\t} else if (/android/i.test(ua)) {\n\t\tclassList.push('os-android')\n\t} else if (/iphone|ipad|ipod/i.test(ua)) {\n\t\tclassList.push('os-ios')\n\t}\n\n\t// 判断设备类型\n\tconst media = getMedia()\n\tif (media === 'pad') {\n\t\tclassList.push('media-pad')\n\t\tclassList.push('s_pad')\n\t} else if (media === 'phone') {\n\t\tclassList.push('media-phone')\n\t\tclassList.push('s_phone')\n\t} else {\n\t\tclassList.push('media-pc')\n\t\tclassList.push('s_pc')\n\t}\n\n\t// 添加 class 到 <html>\n\thtml.className += ' ' + classList.join(' ')\n}\n\nexport function getEm() {\n\tif (typeof document === 'undefined') {\n\t\treturn 16 // 默认字体大小\n\t}\n\tconst el = document.createElement('div')\n\tel.style.width = '1em'\n\tel.style.height = '1em'\n\tel.style.position = 'absolute'\n\tdocument.body.appendChild(el)\n\tconst size = el.getBoundingClientRect().height\n\tdocument.body.removeChild(el)\n\treturn size\n}\n\nexport function commitTouchReport(detail) {\n\tif (typeof window.CustomEvent === 'function') {\n\t\t// IE11 下不支持 new CustomEvent 方法\n\t\tconst TouchReport = new CustomEvent('touchreport', {\n\t\t\tdetail: detail\n\t\t})\n\t\tdocument.dispatchEvent(TouchReport)\n\t}\n}\n"],"names":["ua"],"mappings":"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"}