根据paths展开文件夹
// 根据paths展开文件夹
function expandFolderByPaths(paths, box) {
// 遍历 paths 并展开对应的文件夹
paths.forEach(async path => {
// 将路径按 / 分割,获取每个层级的 node-id
const parts = path.split('/');
const folderIds = parts.slice(1, -1); // 最后一个是文件,不需要展开
// 逐层查找并展开文件夹
for(const nodeId of folderIds){
// 查找对应的 DOM 节点
const selector = `[data-node-id="${nodeId}"]`;
let listItem = (box || document).querySelector(selector);
if(!listItem) return;
// 找到展开按钮
const toggle = listItem.querySelector('.b3-list-item__toggle');
// 如果元素有子元素且未展开,则点击展开
if (toggle && !toggle.classList.contains('fn__hidden')) {
// 模拟点击展开
const arrow = toggle.querySelector('.b3-list-item__arrow');
if (arrow && !arrow.classList.contains('b3-list-item__arrow--open')) {
toggle.click();
//等待列表展开
try {
await whenElementExist(()=>listItem?.nextElementSibling && listItem?.nextElementSibling?.matches('ul'), box);
} catch(e) {
return;
}
}
}
}
});
}