更新压缩机制,提高前缀缓存命中率,优化UI渲染机制,提高帧数

This commit is contained in:
minorQAQ committed 2026-08-25 10:13:50 +08:00
1 parent 6131c2563e
commit 0ce72f74f1
175 files changed
+7621 -2611

No files matched your search

+31 -21
View File
@@ -188,27 +188,8 @@ function initSidebarResize() {
let startX = 0;
let startW = 0;
handle.addEventListener("mousedown", (e) => {
e.preventDefault();
if (appRoot && appRoot.classList.contains("sidebar-collapsed")) return;
dragging = true;
startX = e.clientX;
startW = sidebar.getBoundingClientRect().width;
// 拖动时禁用 transition 以保证流畅
sidebar.style.transition = "none";
document.body.style.cursor = "col-resize";
document.body.style.userSelect = "none";
});
window.addEventListener("mousemove", (e) => {
if (!dragging) return;
const dx = e.clientX - startX;
let newW = startW + dx;
newW = Math.max(SIDEBAR_MIN_W, Math.min(SIDEBAR_MAX_W, newW));
document.documentElement.style.setProperty("--sidebar-w", newW + "px");
});
window.addEventListener("mouseup", () => {
/** 结束拖拽并复位全部副作用(鼠标在窗口外松开 / 失焦时也会被调用) */
function endDrag() {
if (!dragging) return;
dragging = false;
// 恢复 transition
@@ -218,7 +199,36 @@ function initSidebarResize() {
// 保存宽度
const finalW = sidebar.getBoundingClientRect().width;
try { localStorage.setItem(STORAGE_SIDEBAR_W, String(Math.round(finalW))); } catch { /* ignore */ }
}
// Pointer Events + setPointerCapture:拖拽期间事件由 handle 捕获,
// 鼠标移到窗口外/焦点丢失时仍能收到 pointerup,不会残留拖拽状态
handle.addEventListener("pointerdown", (e) => {
if (e.button !== 0) return; // 仅主键
if (appRoot && appRoot.classList.contains("sidebar-collapsed")) return;
e.preventDefault();
dragging = true;
startX = e.clientX;
startW = sidebar.getBoundingClientRect().width;
try { handle.setPointerCapture(e.pointerId); } catch { /* ignore */ }
// 拖动时禁用 transition 以保证流畅
sidebar.style.transition = "none";
document.body.style.cursor = "col-resize";
document.body.style.userSelect = "none";
});
handle.addEventListener("pointermove", (e) => {
if (!dragging) return;
const dx = e.clientX - startX;
let newW = startW + dx;
newW = Math.max(SIDEBAR_MIN_W, Math.min(SIDEBAR_MAX_W, newW));
document.documentElement.style.setProperty("--sidebar-w", newW + "px");
});
handle.addEventListener("pointerup", endDrag);
handle.addEventListener("pointercancel", endDrag);
// 兜底:失焦(如拖拽中点开其他窗口)时复位,避免 cursor/user-select 残留
window.addEventListener("blur", endDrag);
}
initSidebarResize();