diff --git a/packages/react/src/components/CodeMirror6.jsx b/packages/react/src/components/CodeMirror6.jsx
index 319fb7f7..1bcdc9ce 100644
--- a/packages/react/src/components/CodeMirror6.jsx
+++ b/packages/react/src/components/CodeMirror6.jsx
@@ -136,7 +136,7 @@ export default function CodeMirror({
return staticExtensions;
}, [keybindings]);
return (
-
+
<_CodeMirror
value={value}
theme={theme || strudelTheme}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d413286a..df59deb2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -362,6 +362,8 @@ importers:
'@docsearch/react': ^3.1.0
'@headlessui/react': ^1.7.7
'@heroicons/react': ^2.0.13
+ '@nanostores/persistent': ^0.7.0
+ '@nanostores/react': ^0.4.1
'@strudel.cycles/core': workspace:*
'@strudel.cycles/csound': workspace:*
'@strudel.cycles/midi': workspace:*
@@ -387,6 +389,7 @@ importers:
fraction.js: ^4.2.0
html-escaper: ^3.0.3
nanoid: ^4.0.0
+ nanostores: ^0.7.4
preact: ^10.7.3
react: ^18.2.0
react-dom: ^18.2.0
@@ -407,6 +410,8 @@ importers:
'@docsearch/react': 3.3.2_y6lbs4o5th67cuzjdmtw5eqh7a
'@headlessui/react': 1.7.8_biqbaboplfbrettd7655fr4n2y
'@heroicons/react': 2.0.14_react@18.2.0
+ '@nanostores/persistent': 0.7.0_nanostores@0.7.4
+ '@nanostores/react': 0.4.1_nkfnbc2tpc77iht7asm3uqwau4
'@strudel.cycles/core': link:../packages/core
'@strudel.cycles/csound': link:../packages/csound
'@strudel.cycles/midi': link:../packages/midi
@@ -430,6 +435,7 @@ importers:
canvas: 2.11.0
fraction.js: 4.2.0
nanoid: 4.0.0
+ nanostores: 0.7.4
preact: 10.11.3
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
@@ -3170,6 +3176,27 @@ packages:
- supports-color
dev: false
+ /@nanostores/persistent/0.7.0_nanostores@0.7.4:
+ resolution: {integrity: sha512-4PAInL/T1hbftZUJ0cmgdFHBMalUoq7BUXFBy7QfyMv/8X3LPTYNh/yxspL7+J+XM3UNvVI7IFRMMs6FBasjhQ==}
+ engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ nanostores: ^0.7.0
+ dependencies:
+ nanostores: 0.7.4
+ dev: false
+
+ /@nanostores/react/0.4.1_nkfnbc2tpc77iht7asm3uqwau4:
+ resolution: {integrity: sha512-lsv0CYrMxczbXtoV/mxFVEoL/uVjEjseoP89srO/5yNAOkJka+dSFS7LYyWEbuvCPO7EgbtkvRpO5V+OztKQOw==}
+ engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ nanostores: ^0.7.0
+ react: '>=18.0.0'
+ dependencies:
+ nanostores: 0.7.4
+ react: 18.2.0
+ use-sync-external-store: 1.2.0_react@18.2.0
+ dev: false
+
/@nodelib/fs.scandir/2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -9646,6 +9673,11 @@ packages:
hasBin: true
dev: false
+ /nanostores/0.7.4:
+ resolution: {integrity: sha512-MBeUVt7NBcXqh7AGT+KSr3O0X/995CZsvcP2QEMP+PXFwb07qv3Vjyq+EX0yS8f12Vv3Tn2g/BvK/OZoMhJlOQ==}
+ engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
+ dev: false
+
/napi-build-utils/1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
dev: true
@@ -12851,6 +12883,14 @@ packages:
punycode: 2.3.0
dev: true
+ /use-sync-external-store/1.2.0_react@18.2.0:
+ resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
/utf-8-validate/5.0.10:
resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
engines: {node: '>=6.14.2'}
diff --git a/website/package.json b/website/package.json
index cf73f8cb..8d85481c 100644
--- a/website/package.json
+++ b/website/package.json
@@ -21,6 +21,8 @@
"@docsearch/react": "^3.1.0",
"@headlessui/react": "^1.7.7",
"@heroicons/react": "^2.0.13",
+ "@nanostores/persistent": "^0.7.0",
+ "@nanostores/react": "^0.4.1",
"@strudel.cycles/core": "workspace:*",
"@strudel.cycles/csound": "workspace:*",
"@strudel.cycles/midi": "workspace:*",
@@ -44,6 +46,7 @@
"canvas": "^2.11.0",
"fraction.js": "^4.2.0",
"nanoid": "^4.0.0",
+ "nanostores": "^0.7.4",
"preact": "^10.7.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/website/src/components/HeadCommon.astro b/website/src/components/HeadCommon.astro
index 47929bc6..24388a20 100644
--- a/website/src/components/HeadCommon.astro
+++ b/website/src/components/HeadCommon.astro
@@ -47,37 +47,34 @@ const base = BASE_URL;