From 3012f6bf7316661dde78317fba966726e0d55302 Mon Sep 17 00:00:00 2001 From: vcoppe Date: Sun, 18 Oct 2026 00:24:16 +0200 Subject: [PATCH] fixes --- .../collapsible-tree/utils.svelte.ts | 10 +++ .../lib/components/explorer/Explorer.svelte | 57 +++++++++---- .../components/explorer/ExplorerRow.svelte | 27 +++++-- .../components/explorer/ExplorerTree.svelte | 81 ++++++++----------- .../lib/components/explorer/NameInput.svelte | 8 +- .../lib/components/explorer/state.svelte.ts | 9 +++ website/src/lib/engine/workspace.test.ts | 9 +++ website/src/lib/engine/workspace.ts | 6 ++ 8 files changed, 138 insertions(+), 69 deletions(-) diff --git a/website/src/lib/components/collapsible-tree/utils.svelte.ts b/website/src/lib/components/collapsible-tree/utils.svelte.ts index 0db3193ca..047e6778d 100644 --- a/website/src/lib/components/collapsible-tree/utils.svelte.ts +++ b/website/src/lib/components/collapsible-tree/utils.svelte.ts @@ -28,6 +28,16 @@ export class CollapsibleTreeState { } return this._open[id]; } + + /** The node `from` is now `to` (it was renamed or moved): it stays open or closed, and so do the nodes in it. */ + move(from: string, to: string) { + for (const id of Object.keys(this._open)) { + if (id === from || id.startsWith(`${from}.`)) { + this._open[to + id.slice(from.length)] = this._open[id]; + delete this._open[id]; + } + } + } } /** diff --git a/website/src/lib/components/explorer/Explorer.svelte b/website/src/lib/components/explorer/Explorer.svelte index 557d8081f..573f8b8ec 100644 --- a/website/src/lib/components/explorer/Explorer.svelte +++ b/website/src/lib/components/explorer/Explorer.svelte @@ -1,16 +1,23 @@