Files
education/frontend/node_modules/.cache/babel-loader/23872d74f725ba60d4ef924c91360087.json
T

1 line
19 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\utils\\adaptive.js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\utils\\adaptive.js","mtime":1787567871570},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\babel.config.js","mtime":1787567871334},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLk1JTl9TQ0FMRSA9IGV4cG9ydHMuTUFYX1NDQUxFID0gZXhwb3J0cy5ERUZBVUxUX0RFU0lHTl9XSURUSCA9IHZvaWQgMDsKZXhwb3J0cy5pbml0QWRhcHRpdmUgPSBpbml0QWRhcHRpdmU7Ci8qKg0KICog5YWo5bGA6KeG5Y+j562J5q+U57yp5pS+IOKAlOKAlCDorqnmlbTkuKrns7vnu5/lnKjkuI3lkIzlpKflsI/lsY/luZXvvIjmoYzpnaIgMTI4MH40S++8ieS4i+W4g+WxgOS4jeW0qeWhjOOAgg0KICoNCiAqIOWOn+eQhu+8mg0KICogICDku6UgREVTSUdOX1dJRFRI77yIMTkyMO+8ieS4uuiuvuiuoeWfuuWHhuWuveW6puOAguWwhuinhuWPo+WuveW6puS4juiuvuiuoeWuveeahOavlOWAvOS9nOS4uue8qeaUvuWAjeaVsO+8jA0KICogICDkvZznlKjliLDmlofmoaPmoLnoioLngrkgPGh0bWw+IOeahCB6b29tIOS4iu+8mg0KICogICAgIC0g6KeG5Y+jIDwg6K6+6K6h5a6977yI5aaCIDEyODDvvInvvJp6b29tIDwgMe+8jOaVtOS9k+etieavlOe8qeWwj++8jOmBv+WFjeeqhOWxj+W4g+WxgOiiq+aSkeegtO+8mw0KICogICAgIC0g6KeG5Y+jID0g6K6+6K6h5a6977yIMTkyMO+8ie+8mnpvb20gPSAx77yM5Y6f55SfIDE6MSDmmL7npLrvvJsNCiAqICAgICAtIOinhuWPoyA+IOiuvuiuoeWuve+8iOWmgiA0SyAzODQw77yJ77yaem9vbSA9IDLvvIzmlbTkvZPnrYnmr5TmlL7lpKfvvIzlpKflsY/kuI3lho3nlZnnmb0v5a2X5bCP44CCDQogKiAgIOe8qeaUvuWAjeaVsOiiq+mZkOWItuWcqCBNSU5fU0NBTEUgfiBNQVhfU0NBTEUg5LmL6Ze077yMTUFYX1NDQUxFPTIg5oGw5aW96KaG55uWIDRL77yIMzg0MC8xOTIw77yJ44CCDQogKg0KICogICDph4fnlKggem9vbSDmjILlnKggZG9jdW1lbnRFbGVtZW50IOS4iu+8jOWPr+imhuebluWMheaLrCBFbGVtZW50IFVJIOaMgui9veWIsCBib2R5IOeahA0KICogICDlvLnnqpcv5o+Q56S6L+S4i+aLiemAieaLqeWcqOWGheeahOaJgOacieWGheWuue+8jOS/neivgeaVtOWll+eVjOmdouS4gOiHtOe8qeaUvuOAgeS4jeWhjOmZt+OAgg0KICoNCiAqIOWFvOWuueaAp++8mg0KICogICAtIHpvb23vvJpDaHJvbWUvRWRnZS9TYWZhcmkvT3BlcmEg5YWo57O744CBRmlyZWZveCAxMjYrKDIwMjQtMDUg6LW3KeOAgQ0KICogICAgIOS7peWPiuWbveWGheW4uOingSBDaHJvbWl1bSDlhoXmoLjmtY/op4jlmajvvIgzNjAvUVEv5b6u5L+h562J77yJ5Z2H5pSv5oyB77ybDQogKiAgIC0g5pys5pa55qGI5a+55LiN5pSv5oyBIHpvb20g55qE5pen5rWP6KeI5Zmo77yI5aaCIDIwMjQg5YmN55qEIEZpcmVmb3jvvInlgZrog73lipvmjqLmtYvvvIwNCiAqICAgICDoh6rliqjpmY3nuqfkuLogdHJhbnNmb3JtOiBzY2FsZSgpIOWbnumAgO+8jOS/neivgeS4jeW0qeWhjOOAgeWPr+ato+W4uOS9v+eUqOOAgg0KICovCgp2YXIgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKdmFyIERFRkFVTFRfREVTSUdOX1dJRFRIID0gZXhwb3J0cy5ERUZBVUxUX0RFU0lHTl9XSURUSCA9IDE5MjA7Ci8vIOacgOWwj+e8qeaUvuWAjeaVsO+8muaegeeqhOinhuWPo+eahOWuieWFqOS4i+mZkO+8jOmBv+WFjeaWh+Wtl+i/h+Wwjy/luIPlsYDlvILluLgKdmFyIE1JTl9TQ0FMRSA9IGV4cG9ydHMuTUlOX1NDQUxFID0gMC41OwovLyDmnIDlpKfnvKnmlL7lgI3mlbDvvJoyIOWvueW6lCA0S++8iDM4NDAvMTkyMD0y77yJ77yM5pu06auY5YiG6L6o546H5Lmf5bCB6aG25Zyo5q2k77yM6YG/5YWN6L+H5bqm5pS+5aSnCnZhciBNQVhfU0NBTEUgPSBleHBvcnRzLk1BWF9TQ0FMRSA9IDI7CgovKioNCiAqIOaOoua1i+W9k+WJjea1j+iniOWZqOaYr+WQpuaUr+aMgSBDU1Mgem9vbSDlsZ7mgKfjgIINCiAqIOeOsOS7oyBDaHJvbWl1bS9TYWZhcmkvRmlyZWZveCjiiaUxMjYpIOi/lOWbniB0cnVl77yb5penIEZpcmVmb3goPDEyNikg6L+U5ZueIGZhbHNl44CCDQogKiBAcmV0dXJucyB7Ym9vbGVhbn0NCiAqLwpmdW5jdGlvbiBpc1pvb21TdXBwb3J0ZWQoKSB7CiAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgZWwuc3R5bGUuem9vbSA9ICcwLjUnOwogIC8vIOiDveivu+WbniAiMC41IiDor7TmmI7mtY/op4jlmajnnJ/mraPmlK/mjIEKICByZXR1cm4gZWwuc3R5bGUuem9vbSA9PT0gJzAuNSc7Cn0KCi8qKg0KICog5Yid5aeL5YyW5YWo5bGA6Ieq6YCC5bqU44CC5Y+v5Zyo5Lu75oSP5YWl5Y+j6LCD55So77yM6YeN5aSN6LCD55So5bmC562J44CCDQogKiBAcGFyYW0ge251bWJlcn0gW2Rlc2lnbldpZHRoXSDorr7orqHln7rlh4blrr3luqbvvIzpu5jorqQgMTkyMA0KICovCmZ1bmN0aW9uIGluaXRBZGFwdGl2ZSgpIHsKICB2YXIgZGVzaWduV2lkdGggPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IERFRkFVTFRfREVTSUdOX1dJRFRIOwogIGlmIChpbml0aWFsaXplZCkgewogICAgcmV0dXJuOwogIH0KICBpbml0aWFsaXplZCA9IHRydWU7CiAgdmFyIHVzZVpvb20gPSBpc1pvb21TdXBwb3J0ZWQoKTsKCiAgLy8gckFGIOW4p+Wvuem9kOiKgua1ge+8muaKiuWQjOS4gOW4p+WGheWkmuasoSByZXNpemUg5ZCI5bm25Li65LiA5qyhCiAgdmFyIHJhZklkID0gbnVsbDsKICAvLyDnnJ/lrp7lhpnlhaXoioLmtYEgKyDlsL7pmo/lhZzlupXvvJrmi5bmi70v6K6+5aSH5qih5ouf5pyf6Ze0IHJlc2l6ZSDpq5jpopHop6blj5HvvIwKICAvLyDoi6Xmr4/luKfpg73lhpkgaHRtbC56b29tIOS8muW8uuWItuaVtOmhtemHjeaOkivph43nu5jlr7zoh7TljaHpob/vvIzlm6DmraTpmZDliLbnnJ/lrp7lhpnlhaXpopHnjocKICB2YXIgbGFzdEFwcGxpZWRTY2FsZSA9IC0xOwogIHZhciBsYXN0V3JpdGVBdCA9IDA7CiAgdmFyIHRyYWlsaW5nVGltZXIgPSBudWxsOwogIHZhciBXUklURV9NSU5fSU5URVJWQUwgPSAxMDA7IC8vIG1zCgogIGZ1bmN0aW9uIGNvbXB1dGVTY2FsZSgpIHsKICAgIHZhciByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgdmFyIHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgcm9vdCAmJiByb290LmNsaWVudFdpZHRoIHx8IGRlc2lnbldpZHRoOwogICAgdmFyIHJhdGlvID0gd2lkdGggLyBkZXNpZ25XaWR0aDsKICAgIC8vIOaUtuaVm+WIsCBbTUlOX1NDQUxFLCBNQVhfU0NBTEVd77yM6KeE6YG/5p6B56uv5a696auY55qE5byC5bi45q+U5L6LCiAgICByZXR1cm4gTWF0aC5taW4oTUFYX1NDQUxFLCBNYXRoLm1heChNSU5fU0NBTEUsIHJhdGlvKSk7CiAgfQogIGZ1bmN0aW9uIHdyaXRlU2NhbGUoc2NhbGUpIHsKICAgIHZhciByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgaWYgKCFyb290KSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIC8vIOWAvOacquWPmOWMlu+8mui3s+i/h++8jOmBv+WFjeWGl+S9meeahOagt+W8j+WkseaViC/mlbTpobXph43mjpIKICAgIGlmIChNYXRoLmFicyhzY2FsZSAtIGxhc3RBcHBsaWVkU2NhbGUpIDwgMWUtNCkgewogICAgICByZXR1cm47CiAgICB9CiAgICBsYXN0QXBwbGllZFNjYWxlID0gc2NhbGU7CiAgICBpZiAoc2NhbGUgPT09IDEpIHsKICAgICAgY2xlYXJTY2FsZShyb290KTsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKHVzZVpvb20pIHsKICAgICAgLy8g6aaW6YCJ77yaem9vbSDlj4LkuI7luIPlsYDorqHnrpfvvIzop4bop4nkuI7ljaDkvY3kuIDoh7TvvIzmnIDlubPmu5EKICAgICAgcm9vdC5zdHlsZS56b29tID0gU3RyaW5nKHNjYWxlKTsKICAgICAgLy8g5rOo5YWl57yp5pS+5LiO6YCG57yp5pS+5Y+Y6YeP77ya6YCG57yp5pS+55So5LqO5oqK5oyC5YiwIGJvZHkg55qEIEVsZW1lbnQg5rWu5bGC6L+Y5Y6f5Li6IDE6Me+8jAogICAgICAvLyDku6XmirXmtoggem9vbSDlr7kgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IOWdkOagh+mAoOaIkOeahOS6jOasoee8qeaUvu+8iOWQpuWImeS4i+aLieahhuS9jee9rumUmeS5se+8iQogICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLWFkYXB0aXZlLXNjYWxlJywgU3RyaW5nKHNjYWxlKSk7CiAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tYWRhcHRpdmUtc2NhbGUtaW52JywgU3RyaW5nKDEgLyBzY2FsZSkpOwogICAgfSBlbHNlIHsKICAgICAgLy8g5Zue6YCA77yadHJhbnNmb3JtIOS7heW9seWTjeinhuinie+8m+WwhuW4g+WxgOWuveW6puWbuuWumuS4uuiuvuiuoeWuveW5tuS7juW3puS4iuinkue8qeaUvu+8jAogICAgICAvLyDkvb/lhbbpk7rmu6Hop4blj6PkuJTkuI3mlLnlj5jlhoXpg6jnu5PmnoTvvIzml6fmtY/op4jlmajkuZ/og73mraPluLjkvb/nlKgKICAgICAgcm9vdC5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSAndG9wIGxlZnQnOwogICAgICByb290LnN0eWxlLndpZHRoID0gIiIuY29uY2F0KGRlc2lnbldpZHRoLCAicHgiKTsKICAgICAgcm9vdC5zdHlsZS50cmFuc2Zvcm0gPSAic2NhbGUoIi5jb25jYXQoc2NhbGUsICIpIik7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNsZWFyU2NhbGUocm9vdCkgewogICAgaWYgKHVzZVpvb20pIHsKICAgICAgcm9vdC5zdHlsZS56b29tID0gJyc7CiAgICAgIHJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tYWRhcHRpdmUtc2NhbGUnKTsKICAgICAgcm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1hZGFwdGl2ZS1zY2FsZS1pbnYnKTsKICAgIH0gZWxzZSB7CiAgICAgIHJvb3Quc3R5bGUudHJhbnNmb3JtID0gJyc7CiAgICAgIHJvb3Quc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gJyc7CiAgICAgIHJvb3Quc3R5bGUud2lkdGggPSAnJzsKICAgIH0KICB9CgogIC8qKiDnq4vljbPorqHnrpflubblhpnlhaXkuIDmrKHvvIjluKblgLzlj5jljJblrojljavvvIkgKi8KICBmdW5jdGlvbiBhcHBseU5vdygpIHsKICAgIGxhc3RXcml0ZUF0ID0gRGF0ZS5ub3coKTsKICAgIHdyaXRlU2NhbGUoY29tcHV0ZVNjYWxlKCkpOwogIH0KICBmdW5jdGlvbiBvblJlc2l6ZSgpIHsKICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHsKICAgICAgcmV0dXJuOyAvLyDlkI7lj7DmoIfnrb7kuI3miafooYzvvIzpgb/lhY3ml6DosJPlvIDplIAKICAgIH0KICAgIGlmIChyYWZJZCkgewogICAgICByZXR1cm47IC8vIOacrOW4p+WGheW3suacieW+heaJp+ihjOS7u+WKoe+8jOWQiOW5tgogICAgfQogICAgcmFmSWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsKICAgICAgcmFmSWQgPSBudWxsOwogICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciBub3cgPSBEYXRlLm5vdygpOwogICAgICBpZiAodHJhaWxpbmdUaW1lcikgewogICAgICAgIGNsZWFyVGltZW91dCh0cmFpbGluZ1RpbWVyKTsKICAgICAgfQogICAgICAvLyDot53kuIrmrKHnnJ/lrp7lhpnlhaXlt7LotoXov4fpmIjlgLzmiY3nq4vljbPlhpnlhaXvvIzlhbbkvZnmg4XlhrXpnaDlsL7pmo/lhZzlupXvvIzpgb/lhY3mu6HluKfmlbTpobXph43mjpIKICAgICAgaWYgKG5vdyAtIGxhc3RXcml0ZUF0ID49IFdSSVRFX01JTl9JTlRFUlZBTCkgewogICAgICAgIGFwcGx5Tm93KCk7CiAgICAgIH0KICAgICAgLy8g5bC+6ZqP77ya5ouW5ou9L+aUueWPmOWwuuWvuOWBnOS4i+WQju+8jOehruS/neiQveWIsOacgOe7iOeql+WPo+WwuuWvuAogICAgICB0cmFpbGluZ1RpbWVyID0gc2V0VGltZW91dChhcHBseU5vdywgV1JJVEVfTUlOX0lOVEVSVkFMKTsKICAgIH0pOwogIH0KICBmdW5jdGlvbiBvblZpc2liaWxpdHlDaGFuZ2UoKSB7CiAgICBpZiAoIWRvY3VtZW50LmhpZGRlbikgewogICAgICAvLyDku47lkI7lj7DliIflm57ml7booaXnrpfkuIDmrKEKICAgICAgaWYgKHRyYWlsaW5nVGltZXIpIHsKICAgICAgICBjbGVhclRpbWVvdXQodHJhaWxpbmdUaW1lcik7CiAgICAgIH0KICAgICAgYXBwbHlOb3coKTsKICAgIH0KICB9CgogIC8vIOmmluasoe+8mua4suafk+WJjeWQjOatpeW6lOeUqOS4gOasoe+8jOmBv+WFjemmluW4p+mXqueDgQogIGFwcGx5Tm93KCk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKTsKICAvLyDku47lkI7lj7DmoIfnrb7liIflm57mnaXml7bvvIzoi6XmnJ/pl7Tnqpflj6PlsLrlr7jlj5jljJbvvIjlm6AgaGlkZGVuIOiiq+i3s+i/h++8iemcgOihpeeul+S4gOasoQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2liaWxpdHlDaGFuZ2UpOwp9"},{"version":3,"names":["initialized","DEFAULT_DESIGN_WIDTH","exports","MIN_SCALE","MAX_SCALE","isZoomSupported","el","document","createElement","style","zoom","initAdaptive","designWidth","arguments","length","undefined","useZoom","rafId","lastAppliedScale","lastWriteAt","trailingTimer","WRITE_MIN_INTERVAL","computeScale","root","documentElement","width","window","innerWidth","clientWidth","ratio","Math","min","max","writeScale","scale","abs","clearScale","String","setProperty","transformOrigin","concat","transform","removeProperty","applyNow","Date","now","onResize","hidden","requestAnimationFrame","clearTimeout","setTimeout","onVisibilityChange","addEventListener"],"sources":["C:/Users/Admin/Desktop/education/frontend/src/utils/adaptive.js"],"sourcesContent":["/**\r\n * 全局视口等比缩放 —— 让整个系统在不同大小屏幕(桌面 1280~4K)下布局不崩塌。\r\n *\r\n * 原理:\r\n * 以 DESIGN_WIDTH(1920)为设计基准宽度。将视口宽度与设计宽的比值作为缩放倍数,\r\n * 作用到文档根节点 <html> 的 zoom 上:\r\n * - 视口 < 设计宽(如 1280):zoom < 1,整体等比缩小,避免窄屏布局被撑破;\r\n * - 视口 = 设计宽(1920):zoom = 1,原生 1:1 显示;\r\n * - 视口 > 设计宽(如 4K 3840):zoom = 2,整体等比放大,大屏不再留白/字小。\r\n * 缩放倍数被限制在 MIN_SCALE ~ MAX_SCALE 之间,MAX_SCALE=2 恰好覆盖 4K(3840/1920)。\r\n *\r\n * 采用 zoom 挂在 documentElement 上,可覆盖包括 Element UI 挂载到 body 的\r\n * 弹窗/提示/下拉选择在内的所有内容,保证整套界面一致缩放、不塌陷。\r\n *\r\n * 兼容性:\r\n * - zoom:Chrome/Edge/Safari/Opera 全系、Firefox 126+(2024-05 起)、\r\n * 以及国内常见 Chromium 内核浏览器(360/QQ/微信等)均支持;\r\n * - 本方案对不支持 zoom 的旧浏览器(如 2024 前的 Firefox)做能力探测,\r\n * 自动降级为 transform: scale() 回退,保证不崩塌、可正常使用。\r\n */\r\n\r\nlet initialized = false\r\n\r\nexport const DEFAULT_DESIGN_WIDTH = 1920\r\n// 最小缩放倍数:极窄视口的安全下限,避免文字过小/布局异常\r\nexport const MIN_SCALE = 0.5\r\n// 最大缩放倍数:2 对应 4K(3840/1920=2),更高分辨率也封顶在此,避免过度放大\r\nexport const MAX_SCALE = 2\r\n\r\n/**\r\n * 探测当前浏览器是否支持 CSS zoom 属性。\r\n * 现代 Chromium/Safari/Firefox(≥126) 返回 true;旧 Firefox(<126) 返回 false。\r\n * @returns {boolean}\r\n */\r\nfunction isZoomSupported() {\r\n const el = document.createElement('div')\r\n el.style.zoom = '0.5'\r\n // 能读回 \"0.5\" 说明浏览器真正支持\r\n return el.style.zoom === '0.5'\r\n}\r\n\r\n/**\r\n * 初始化全局自适应。可在任意入口调用,重复调用幂等。\r\n * @param {number} [designWidth] 设计基准宽度,默认 1920\r\n */\r\nexport function initAdaptive(designWidth = DEFAULT_DESIGN_WIDTH) {\r\n if (initialized) {\r\n return\r\n }\r\n initialized = true\r\n\r\n const useZoom = isZoomSupported()\r\n\r\n // rAF 帧对齐节流:把同一帧内多次 resize 合并为一次\r\n let rafId = null\r\n // 真实写入节流 + 尾随兜底:拖拽/设备模拟期间 resize 高频触发,\r\n // 若每帧都写 html.zoom 会强制整页重排+重绘导致卡顿,因此限制真实写入频率\r\n let lastAppliedScale = -1\r\n let lastWriteAt = 0\r\n let trailingTimer = null\r\n const WRITE_MIN_INTERVAL = 100 // ms\r\n\r\n function computeScale() {\r\n const root = document.documentElement\r\n const width = window.innerWidth || (root && root.clientWidth) || designWidth\r\n const ratio = width / designWidth\r\n // 收敛到 [MIN_SCALE, MAX_SCALE],规避极端宽高的异常比例\r\n return Math.min(MAX_SCALE, Math.max(MIN_SCALE, ratio))\r\n }\r\n\r\n function writeScale(scale) {\r\n const root = document.documentElement\r\n if (!root) {\r\n return\r\n }\r\n // 值未变化:跳过,避免冗余的样式失效/整页重排\r\n if (Math.abs(scale - lastAppliedScale) < 1e-4) {\r\n return\r\n }\r\n lastAppliedScale = scale\r\n\r\n if (scale === 1) {\r\n clearScale(root)\r\n return\r\n }\r\n\r\n if (useZoom) {\r\n // 首选:zoom 参与布局计算,视觉与占位一致,最平滑\r\n root.style.zoom = String(scale)\r\n // 注入缩放与逆缩放变量:逆缩放用于把挂到 body 的 Element 浮层还原为 1:1,\r\n // 以抵消 zoom 对 getBoundingClientRect 坐标造成的二次缩放(否则下拉框位置错乱)\r\n root.style.setProperty('--adaptive-scale', String(scale))\r\n root.style.setProperty('--adaptive-scale-inv', String(1 / scale))\r\n } else {\r\n // 回退:transform 仅影响视觉;将布局宽度固定为设计宽并从左上角缩放,\r\n // 使其铺满视口且不改变内部结构,旧浏览器也能正常使用\r\n root.style.transformOrigin = 'top left'\r\n root.style.width = `${designWidth}px`\r\n root.style.transform = `scale(${scale})`\r\n }\r\n }\r\n\r\n function clearScale(root) {\r\n if (useZoom) {\r\n root.style.zoom = ''\r\n root.style.removeProperty('--adaptive-scale')\r\n root.style.removeProperty('--adaptive-scale-inv')\r\n } else {\r\n root.style.transform = ''\r\n root.style.transformOrigin = ''\r\n root.style.width = ''\r\n }\r\n }\r\n\r\n /** 立即计算并写入一次(带值变化守卫) */\r\n function applyNow() {\r\n lastWriteAt = Date.now()\r\n writeScale(computeScale())\r\n }\r\n\r\n function onResize() {\r\n if (document.hidden) {\r\n return // 后台标签不执行,避免无谓开销\r\n }\r\n if (rafId) {\r\n return // 本帧内已有待执行任务,合并\r\n }\r\n rafId = window.requestAnimationFrame(() => {\r\n rafId = null\r\n if (document.hidden) {\r\n return\r\n }\r\n const now = Date.now()\r\n if (trailingTimer) {\r\n clearTimeout(trailingTimer)\r\n }\r\n // 距上次真实写入已超过阈值才立即写入,其余情况靠尾随兜底,避免满帧整页重排\r\n if (now - lastWriteAt >= WRITE_MIN_INTERVAL) {\r\n applyNow()\r\n }\r\n // 尾随:拖拽/改变尺寸停下后,确保落到最终窗口尺寸\r\n trailingTimer = setTimeout(applyNow, WRITE_MIN_INTERVAL)\r\n })\r\n }\r\n\r\n function onVisibilityChange() {\r\n if (!document.hidden) {\r\n // 从后台切回时补算一次\r\n if (trailingTimer) {\r\n clearTimeout(trailingTimer)\r\n }\r\n applyNow()\r\n }\r\n }\r\n\r\n // 首次:渲染前同步应用一次,避免首帧闪烁\r\n applyNow()\r\n window.addEventListener('resize', onResize)\r\n // 从后台标签切回来时,若期间窗口尺寸变化(因 hidden 被跳过)需补算一次\r\n document.addEventListener('visibilitychange', onVisibilityChange)\r\n}"],"mappings":"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","ignoreList":[]}]}