import { createElement, createRender, onDestroy } from "../lib/skeleton/index.js"; import rxjs, { effect, onClick } from "../lib/rx.js"; import ajax from "../lib/ajax.js"; import assert from "../lib/assert.js"; import { fromHref, toHref } from "../lib/skeleton/router.js"; import { qs, qsa, safe } from "../lib/dom.js"; import { forwardURLParams } from "../lib/path.js"; import { settingsGet, settingsSave } from "../lib/store.js"; import { get as getConfig } from "../model/config.js"; import { loadCSS } from "../helpers/loader.js"; import t from "../locales/index.js"; import cache from "../pages/filespage/cache.js"; import { hooks, mv as mv$ } from "../pages/filespage/model_files.js"; import { extractPath, isDir, isNativeFileUpload } from "../pages/filespage/helper.js"; import { mv as mvVL, withVirtualLayer } from "../pages/filespage/model_virtual_layer.js"; import { getCurrentPath } from "../pages/viewerpage/common.js"; import { generateSkeleton } from "./skeleton.js"; const state = { scrollTop: 0, $cache: null }; const mv = (from, to) => withVirtualLayer( mv$(from, to), mvVL(from, to), ); export default async function ctrlSidebar(render, { nRestart = 0 }) { if (!shouldDisplay()) return; const $sidebar = render(createElement(`