diff --git a/package.json b/package.json
index 4d3bc7fdc..ca5c1cca4 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"@lezer/javascript": "^1.4.1",
"@lezer/lr": "^1.3.3",
"@replit/codemirror-lang-svelte": "^6.0.0",
- "@rich_harris/svelte-split-pane": "^1.0.1",
+ "@rich_harris/svelte-split-pane": "^1.0.2",
"@webcontainer/api": "^1.0.2",
"adm-zip": "^0.5.10",
"ansi-to-html": "^0.7.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7b5b7c8b2..32c554354 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,7 +17,7 @@ specifiers:
'@lezer/lr': ^1.3.3
'@playwright/test': ^1.31.2
'@replit/codemirror-lang-svelte': ^6.0.0
- '@rich_harris/svelte-split-pane': ^1.0.1
+ '@rich_harris/svelte-split-pane': ^1.0.2
'@sveltejs/adapter-vercel': 2.3.1
'@sveltejs/kit': ^1.11.0
'@sveltejs/site-kit': ^3.2.2
@@ -61,7 +61,7 @@ dependencies:
'@lezer/javascript': 1.4.1
'@lezer/lr': 1.3.3
'@replit/codemirror-lang-svelte': 6.0.0_ybny7xhlf2ysg4majw54z4nkly
- '@rich_harris/svelte-split-pane': 1.0.1_svelte@3.56.0
+ '@rich_harris/svelte-split-pane': 1.0.2_svelte@3.56.0
'@webcontainer/api': 1.0.2
adm-zip: 0.5.10
ansi-to-html: 0.7.2
@@ -730,8 +730,8 @@ packages:
'@lezer/lr': 1.3.3
dev: false
- /@rich_harris/svelte-split-pane/1.0.1_svelte@3.56.0:
- resolution: {integrity: sha512-/11fp3792qh4pXxO3XtVmIQf6SCDFKcQyyQvVOAKr8U5tG0Z4QaLEXsyOKOpeAkngqWT1dbBfjVynUXa7kb1EA==}
+ /@rich_harris/svelte-split-pane/1.0.2_svelte@3.56.0:
+ resolution: {integrity: sha512-8Qhno4kshsBFWC3MnM0++TIbyAvbiuCWXxiCA38VhCr/ZFKQcS8k9mjzWt9eynQjgkyZHejXN0j0V7ws7LV1KA==}
peerDependencies:
svelte: ^3.54.0
dependencies:
diff --git a/src/routes/tutorial/[slug]/+page.svelte b/src/routes/tutorial/[slug]/+page.svelte
index 6bb3bee4e..600a097bf 100644
--- a/src/routes/tutorial/[slug]/+page.svelte
+++ b/src/routes/tutorial/[slug]/+page.svelte
@@ -1,12 +1,10 @@
-
- {#each labels as label, index}
-
- {/each}
+
+
+
+
diff --git a/src/routes/tutorial/[slug]/ToggleButton.svelte b/src/routes/tutorial/[slug]/ToggleButton.svelte
new file mode 100644
index 000000000..f16e49a69
--- /dev/null
+++ b/src/routes/tutorial/[slug]/ToggleButton.svelte
@@ -0,0 +1,83 @@
+
+
+
+
+
+
diff --git a/src/routes/tutorial/[slug]/filetree/File.svelte b/src/routes/tutorial/[slug]/filetree/File.svelte
index e762a51cb..6b65bf25b 100644
--- a/src/routes/tutorial/[slug]/filetree/File.svelte
+++ b/src/routes/tutorial/[slug]/filetree/File.svelte
@@ -2,7 +2,7 @@
import * as context from './context.js';
import Item from './Item.svelte';
import file_icon from '$lib/icons/file.svg';
- import { selected_name, select_file, solution } from '../state.js';
+ import { selected_name, solution } from '../state.js';
/** @type {import('$lib/types').FileStub} */
export let file;
@@ -10,11 +10,11 @@
/** @type {number} */
export let depth;
- const { rename, remove, readonly } = context.get();
+ const { rename, remove, select } = context.get();
let renaming = false;
- $: can_remove = !$readonly && !$solution[file.name];
+ $: can_remove = !$solution[file.name];
/** @type {import('./ContextMenu.svelte').MenuItems} */
$: actions = can_remove
@@ -45,7 +45,7 @@
icon={file_icon}
selected={file.name === $selected_name}
{actions}
- on:click={() => select_file(file.name)}
+ on:click={() => select(file.name)}
on:edit={() => {
renaming = true;
}}
diff --git a/src/routes/tutorial/[slug]/filetree/Filetree.svelte b/src/routes/tutorial/[slug]/filetree/Filetree.svelte
index 64252c98f..e23abd1a1 100644
--- a/src/routes/tutorial/[slug]/filetree/Filetree.svelte
+++ b/src/routes/tutorial/[slug]/filetree/Filetree.svelte
@@ -1,4 +1,5 @@