feat: restore Wolai workspace navigation and assets
This commit is contained in:
@@ -46,6 +46,7 @@ export const createSidebarTreeLiveApplyRuntime = (dependencies = {}) => {
|
||||
var fileTreeVisibleHydrateTimer = 0;
|
||||
var fileTreeVisibleHydrateQueued = false;
|
||||
var fileTreeCommandBatchRefreshParents = new Map();
|
||||
var fileTreeRevealRequests = new Map();
|
||||
var FILETREE_VISIBLE_EXPANDED_HYDRATE_MAX = 20;
|
||||
var FILETREE_VISIBLE_EXPANDED_HYDRATE_BATCH = 2;
|
||||
var FILETREE_EXPANSION_STORAGE_KEY = 'mnote.localFileTree.expandedRelativePaths.v1';
|
||||
@@ -1795,32 +1796,46 @@ export const createSidebarTreeLiveApplyRuntime = (dependencies = {}) => {
|
||||
ensureFileTreeLazyCacheScope();
|
||||
var relativePath = normalizeFileTreeRelativePath(input.relativePath || input.relative_path || '');
|
||||
var rowId = String(input.rowId || input.row_id || '').trim();
|
||||
var parentChain = fileTreeParentChainForRelativePath(relativePath);
|
||||
for (var index = 0; index < parentChain.length; index += 1) {
|
||||
var parentRelativePath = parentChain[index];
|
||||
var parentRow = fileTreeRowByRelativePath(parentRelativePath);
|
||||
if (!(parentRow instanceof HTMLElement)) continue;
|
||||
var button = parentRow.querySelector('[data-rust-action="toggle"]');
|
||||
await getFileTreeChildren(parentRelativePath);
|
||||
renderCachedFileTreeChildren(parentRow, button, parentRelativePath);
|
||||
setTreeRowExpanded(parentRow, button, true);
|
||||
}
|
||||
var targetRow = rowId
|
||||
? document.querySelector('#sidebar-file-tree-root .tree-row[data-shell-mode="filetree"][data-row-id="' + cssEscape(rowId) + '"]')
|
||||
: null;
|
||||
if (!(targetRow instanceof HTMLElement) && relativePath) {
|
||||
targetRow = fileTreeRowByRelativePath(relativePath);
|
||||
}
|
||||
if (!(targetRow instanceof HTMLElement)) return false;
|
||||
var targetRowId = String(targetRow.getAttribute('data-row-id') || rowId || '').trim();
|
||||
if (targetRowId) {
|
||||
fileTreeViewState.selectedRowIds = new Set([targetRowId]);
|
||||
fileTreeViewState.focusedRowId = targetRowId;
|
||||
fileTreeViewState.activeRowId = targetRowId;
|
||||
}
|
||||
reprojectFileTreeSelectionState();
|
||||
try { targetRow.scrollIntoView({ block: 'nearest' }); } catch (_) {}
|
||||
return true;
|
||||
var requestKey = [rootUri, currentFileTreeScope(), relativePath, rowId].join('\n');
|
||||
if (fileTreeRevealRequests.has(requestKey)) return fileTreeRevealRequests.get(requestKey);
|
||||
var request = (async function() {
|
||||
var parentChain = fileTreeParentChainForRelativePath(relativePath);
|
||||
for (var index = 0; index < parentChain.length; index += 1) {
|
||||
var parentRelativePath = parentChain[index];
|
||||
var parentRow = fileTreeRowByRelativePath(parentRelativePath);
|
||||
if (!(parentRow instanceof HTMLElement)) continue;
|
||||
var button = parentRow.querySelector('[data-rust-action="toggle"]');
|
||||
var childrenLoaded = parentRow.getAttribute('data-filetree-children-loaded') === 'true';
|
||||
var expanded = parentRow.getAttribute('aria-expanded') === 'true';
|
||||
if (!childrenLoaded) {
|
||||
await getFileTreeChildren(parentRelativePath);
|
||||
renderCachedFileTreeChildren(parentRow, button, parentRelativePath);
|
||||
}
|
||||
if (!expanded) {
|
||||
setTreeRowExpanded(parentRow, button, true);
|
||||
}
|
||||
}
|
||||
var targetRow = rowId
|
||||
? document.querySelector('#sidebar-file-tree-root .tree-row[data-shell-mode="filetree"][data-row-id="' + cssEscape(rowId) + '"]')
|
||||
: null;
|
||||
if (!(targetRow instanceof HTMLElement) && relativePath) {
|
||||
targetRow = fileTreeRowByRelativePath(relativePath);
|
||||
}
|
||||
if (!(targetRow instanceof HTMLElement)) return false;
|
||||
var targetRowId = String(targetRow.getAttribute('data-row-id') || rowId || '').trim();
|
||||
if (targetRowId) {
|
||||
fileTreeViewState.selectedRowIds = new Set([targetRowId]);
|
||||
fileTreeViewState.focusedRowId = targetRowId;
|
||||
fileTreeViewState.activeRowId = targetRowId;
|
||||
}
|
||||
reprojectFileTreeSelectionState();
|
||||
try { targetRow.scrollIntoView({ block: 'nearest' }); } catch (_) {}
|
||||
return true;
|
||||
})().finally(function() {
|
||||
fileTreeRevealRequests.delete(requestKey);
|
||||
});
|
||||
fileTreeRevealRequests.set(requestKey, request);
|
||||
return request;
|
||||
}
|
||||
|
||||
function toggleChildren(row, button) {
|
||||
|
||||
Reference in New Issue
Block a user