OverlayScrollbars 2.16.0 焦点修复
overlayscrollbars@2.16.0.patch 通过 pnpm-workspace.yaml 的 patchedDependencies 安装,覆盖 ESM / CommonJS 四个包入口;依赖固定为 2.16.0,避免范围升级绕过补丁。
- viewport 与 target 相同时,子节点已在原容器内,跳过重复 append,避免输入失焦和动画重启。
- 初始化和销毁只在焦点确实改变后恢复焦点,不重复聚焦仍处于激活状态的输入框。
- 默认创建包装层以及 viewport 与 target 不同的模式保留原有结构初始化和必要的焦点恢复。
官网集成位于 .vitepress/theme/components/SiteScrollbars.vue:body、菜单等复用自身 viewport;侧栏使用固定 .VPSidebar 外框和独立 .nav viewport,保留 padding: false;表格和代码块继续分别使用现有 table / pre。补丁不改这些模式、不改侧栏回弹和 Logo 下沿轨道布局,并保留移动菜单的 body 滚动锁同步。
安装和构建使用 package.json 固定的 pnpm@11.25.0(Node.js >= 22.13),执行 pnpm install --frozen-lockfile、pnpm build。源码必须同时包含补丁、workspace 配置和锁文件;官网发布 dist/ 静态产物,补丁已进入构建后的 JavaScript,静态部署端无需再安装依赖。
EdgeOne 通过根目录 edgeone.json 使用 Node.js 22.21.1,并在安装和构建时显式调用 pnpm@11.25.0,输出目录为 dist。现有补丁配置和锁文件由 pnpm 11 管理,不应依赖云端预装的 pnpm 版本,也不要用 --no-frozen-lockfile 绕过检查。后续调整 pnpm 版本时,同步更新 package.json 与 edgeone.json,并重新验证冻结安装和构建。
升级 OverlayScrollbars 时须重新核对四个入口的结构初始化与焦点恢复实现,更新精确依赖版本、补丁及锁文件;不要仅修改版本号。回归自身 viewport、独立现有 viewport 和默认包装层三种模式,检查输入焦点、子节点顺序、侧栏回弹/轨道位置、代码复制、表格横向滚动和移动菜单滚动锁。