/** * Track F UI: volume browser, resource editor, service scale, secrets/configs * create, schedules, registry hub search, fleet env filter, stack env file. */ import { manager, Methods } from '../client/manager.js' import { showAlert, jobSpinnerHtml } from '../libs/uiUtils.js' import { presentError } from '../client/errors.js' import { confirmDialog } from './components.js' function escape(s) { return String(s ?? '') .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') } /** @type {{ name: string, path: string } | null} */ let volumeBrowseState = null /** * Open volume file browser modal. * @param {string} volumeName */ export async function openVolumeBrowser(volumeName) { const name = String(volumeName || '').trim() if (!name) return volumeBrowseState = { name, path: '/' } let modal = document.getElementById('volume-browse-modal') if (!modal) { modal = document.createElement('div') modal.id = 'volume-browse-modal' modal.className = 'modal fade' modal.tabIndex = -1 modal.innerHTML = `