diff --git a/packages/claviature/Claviature.jsx b/packages/claviature/Claviature.jsx
new file mode 100644
index 00000000..50dd2cfd
--- /dev/null
+++ b/packages/claviature/Claviature.jsx
@@ -0,0 +1,29 @@
+import { createSignal, For } from 'solid-js';
+import { customElement } from 'solid-element';
+import { getClaviature } from 'claviature';
+import { Dynamic } from 'solid-js/web';
+
+customElement('strudel-claviature', { someProp: 'one', otherProp: 'two' }, (props, { element }) => {
+ const svg = getClaviature({
+ options: {
+ range: ['A1', 'C4'],
+ colorize: [{ keys: ['C3', 'E3', 'G3'], color: 'yellow' }],
+ },
+ });
+ const [activeNotes, setActiveNotes] = createSignal([]);
+ return (
+
+
+
+ );
+});
diff --git a/packages/claviature/index.mjs b/packages/claviature/index.mjs
new file mode 100644
index 00000000..281c6ab8
--- /dev/null
+++ b/packages/claviature/index.mjs
@@ -0,0 +1 @@
+export * from './Claviature.jsx';
diff --git a/packages/claviature/package.json b/packages/claviature/package.json
new file mode 100644
index 00000000..01ae8100
--- /dev/null
+++ b/packages/claviature/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@strudel/claviature",
+ "version": "1.0.1",
+ "description": "Claviature component for Strudel",
+ "main": "dist/index.mjs",
+ "type": "module",
+ "publishConfig": {
+ "main": "dist/index.mjs"
+ },
+ "scripts": {
+ "build": "vite build",
+ "watch": "vite build --watch",
+ "prepublishOnly": "npm run build"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/tidalcycles/strudel.git"
+ },
+ "keywords": [
+ "titdalcycles",
+ "strudel",
+ "pattern",
+ "livecoding",
+ "algorave"
+ ],
+ "author": "Felix Roos ",
+ "license": "AGPL-3.0-or-later",
+ "bugs": {
+ "url": "https://github.com/tidalcycles/strudel/issues"
+ },
+ "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "dependencies": {
+ "@strudel/core": "workspace:*",
+ "claviature": "^0.1.0",
+ "solid-element": "^1.8.0",
+ "solid-js": "^1.8.15",
+ "vite-plugin-solid": "^2.10.1"
+ },
+ "devDependencies": {
+ "vite": "^5.0.10"
+ }
+}
diff --git a/packages/claviature/vite.config.js b/packages/claviature/vite.config.js
new file mode 100644
index 00000000..4ed5702c
--- /dev/null
+++ b/packages/claviature/vite.config.js
@@ -0,0 +1,20 @@
+import { defineConfig } from 'vite';
+import { dependencies } from './package.json';
+import { resolve } from 'path';
+import solid from 'vite-plugin-solid';
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [solid()],
+ build: {
+ lib: {
+ entry: resolve(__dirname, 'index.mjs'),
+ formats: ['es'],
+ fileName: (ext) => ({ es: 'index.mjs' })[ext],
+ },
+ rollupOptions: {
+ external: [...Object.keys(dependencies)],
+ },
+ target: 'esnext',
+ },
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4b31cc8b..9cd9fb87 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -96,7 +96,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
examples/headless-repl:
dependencies:
@@ -106,7 +106,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
examples/minimal-repl:
dependencies:
@@ -128,7 +128,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
examples/superdough:
dependencies:
@@ -138,7 +138,29 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
+
+ packages/claviature:
+ dependencies:
+ '@strudel/core':
+ specifier: workspace:*
+ version: link:../core
+ claviature:
+ specifier: ^0.1.0
+ version: 0.1.0
+ solid-element:
+ specifier: ^1.8.0
+ version: 1.8.0(solid-js@1.8.15)
+ solid-js:
+ specifier: ^1.8.15
+ version: 1.8.15
+ vite-plugin-solid:
+ specifier: ^2.10.1
+ version: 2.10.1(solid-js@1.8.15)(vite@5.0.11)
+ devDependencies:
+ vite:
+ specifier: ^5.0.10
+ version: 5.0.11(@types/node@20.10.6)
packages/codemirror:
dependencies:
@@ -193,7 +215,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/core:
dependencies:
@@ -203,7 +225,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
vitest:
specifier: ^1.1.0
version: 1.1.0(@vitest/ui@1.1.0)
@@ -222,7 +244,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/desktopbridge:
dependencies:
@@ -249,7 +271,7 @@ importers:
version: 5.8.1
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/midi:
dependencies:
@@ -265,7 +287,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/mini:
dependencies:
@@ -278,7 +300,7 @@ importers:
version: 3.0.2
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
vitest:
specifier: ^1.1.0
version: 1.1.0(@vitest/ui@1.1.0)
@@ -297,7 +319,7 @@ importers:
version: 5.8.1
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/repl:
dependencies:
@@ -337,7 +359,7 @@ importers:
version: 5.12.0
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/serial:
dependencies:
@@ -347,7 +369,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/soundfonts:
dependencies:
@@ -369,7 +391,7 @@ importers:
version: 3.3.2
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/superdough:
dependencies:
@@ -379,7 +401,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/tonal:
dependencies:
@@ -398,7 +420,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
vitest:
specifier: ^1.1.0
version: 1.1.0(@vitest/ui@1.1.0)
@@ -423,7 +445,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
vitest:
specifier: ^1.1.0
version: 1.1.0(@vitest/ui@1.1.0)
@@ -451,7 +473,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/webaudio:
dependencies:
@@ -464,7 +486,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
packages/xen:
dependencies:
@@ -474,7 +496,7 @@ importers:
devDependencies:
vite:
specifier: ^5.0.10
- version: 5.0.10(@types/node@20.10.6)
+ version: 5.0.10
vitest:
specifier: ^1.1.0
version: 1.1.0(@vitest/ui@1.1.0)
@@ -523,6 +545,9 @@ importers:
'@nanostores/react':
specifier: ^0.7.1
version: 0.7.1(nanostores@0.9.5)(react@18.2.0)
+ '@strudel/claviature':
+ specifier: workspace:*
+ version: link:../packages/claviature
'@strudel/codemirror':
specifier: workspace:*
version: link:../packages/codemirror
@@ -1081,6 +1106,13 @@ packages:
'@babel/types': 7.23.6
dev: true
+ /@babel/helper-module-imports@7.18.6:
+ resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.6
+ dev: false
+
/@babel/helper-module-imports@7.22.15:
resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
engines: {node: '>=6.9.0'}
@@ -2382,6 +2414,7 @@ packages:
cpu: [arm64]
os: [android]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/android-arm@0.19.11:
@@ -2398,6 +2431,7 @@ packages:
cpu: [arm]
os: [android]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/android-x64@0.19.11:
@@ -2414,6 +2448,7 @@ packages:
cpu: [x64]
os: [android]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/darwin-arm64@0.19.11:
@@ -2430,6 +2465,7 @@ packages:
cpu: [arm64]
os: [darwin]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/darwin-x64@0.19.11:
@@ -2446,6 +2482,7 @@ packages:
cpu: [x64]
os: [darwin]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/freebsd-arm64@0.19.11:
@@ -2462,6 +2499,7 @@ packages:
cpu: [arm64]
os: [freebsd]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/freebsd-x64@0.19.11:
@@ -2478,6 +2516,7 @@ packages:
cpu: [x64]
os: [freebsd]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-arm64@0.19.11:
@@ -2494,6 +2533,7 @@ packages:
cpu: [arm64]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-arm@0.19.11:
@@ -2510,6 +2550,7 @@ packages:
cpu: [arm]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-ia32@0.19.11:
@@ -2526,6 +2567,7 @@ packages:
cpu: [ia32]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-loong64@0.19.11:
@@ -2542,6 +2584,7 @@ packages:
cpu: [loong64]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-mips64el@0.19.11:
@@ -2558,6 +2601,7 @@ packages:
cpu: [mips64el]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-ppc64@0.19.11:
@@ -2574,6 +2618,7 @@ packages:
cpu: [ppc64]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-riscv64@0.19.11:
@@ -2590,6 +2635,7 @@ packages:
cpu: [riscv64]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-s390x@0.19.11:
@@ -2606,6 +2652,7 @@ packages:
cpu: [s390x]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/linux-x64@0.19.11:
@@ -2622,6 +2669,7 @@ packages:
cpu: [x64]
os: [linux]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/netbsd-x64@0.19.11:
@@ -2638,6 +2686,7 @@ packages:
cpu: [x64]
os: [netbsd]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/openbsd-x64@0.19.11:
@@ -2654,6 +2703,7 @@ packages:
cpu: [x64]
os: [openbsd]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/sunos-x64@0.19.11:
@@ -2670,6 +2720,7 @@ packages:
cpu: [x64]
os: [sunos]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/win32-arm64@0.19.11:
@@ -2686,6 +2737,7 @@ packages:
cpu: [arm64]
os: [win32]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/win32-ia32@0.19.11:
@@ -2702,6 +2754,7 @@ packages:
cpu: [ia32]
os: [win32]
requiresBuild: true
+ dev: true
optional: true
/@esbuild/win32-x64@0.19.11:
@@ -2718,6 +2771,7 @@ packages:
cpu: [x64]
os: [win32]
requiresBuild: true
+ dev: true
optional: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
@@ -5346,8 +5400,8 @@ packages:
tsconfck: 3.0.0(typescript@5.3.3)
unist-util-visit: 5.0.0
vfile: 6.0.1
- vite: 5.0.10(@types/node@20.10.6)
- vitefu: 0.2.5(vite@5.0.10)
+ vite: 5.0.11(@types/node@20.10.6)
+ vitefu: 0.2.5(vite@5.0.11)
which-pm: 2.1.1
yargs-parser: 21.1.1
zod: 3.22.4
@@ -5424,6 +5478,19 @@ packages:
resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==}
dev: false
+ /babel-plugin-jsx-dom-expressions@0.37.17(@babel/core@7.23.7):
+ resolution: {integrity: sha512-1bv8rOTzs6TR3DVyVZ7ElxyPEhnS556FMWRIsB3gBPfkn/cSKaLvXLGk+X1lvI+SzcUo4G+UcmJrn3vr1ig8mQ==}
+ peerDependencies:
+ '@babel/core': ^7.20.12
+ dependencies:
+ '@babel/core': 7.23.7
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.7)
+ '@babel/types': 7.23.6
+ html-entities: 2.3.3
+ validate-html-nesting: 1.2.2
+ dev: false
+
/babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7):
resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==}
peerDependencies:
@@ -5460,6 +5527,15 @@ packages:
- supports-color
dev: true
+ /babel-preset-solid@1.8.15(@babel/core@7.23.7):
+ resolution: {integrity: sha512-P2yOQbB7Hn/m4YvpXV6ExHIMcgNWXWXcvY4kJzG3yqAB3hKS58OZRsvJ7RObsZWqXRvZTITBIwnpK0BMGu+ZIQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.23.7
+ babel-plugin-jsx-dom-expressions: 0.37.17(@babel/core@7.23.7)
+ dev: false
+
/bail@2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
@@ -6069,6 +6145,10 @@ packages:
dot-prop: 5.3.0
dev: true
+ /component-register@0.8.3:
+ resolution: {integrity: sha512-/0u8ov0WPWi2FL78rgB9aFOcfY8pJT4jP/l9NTOukGNLVQ6hk35sEJE1RkEnNQU3yk48Qr7HlDQjRQKEVfgeWg==}
+ dev: false
+
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@@ -6828,6 +6908,7 @@ packages:
'@esbuild/win32-arm64': 0.19.5
'@esbuild/win32-ia32': 0.19.5
'@esbuild/win32-x64': 0.19.5
+ dev: true
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
@@ -8085,6 +8166,10 @@ packages:
lru-cache: 10.1.0
dev: true
+ /html-entities@2.3.3:
+ resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
+ dev: false
+
/html-escaper@3.0.3:
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
@@ -8607,6 +8692,11 @@ packages:
call-bind: 1.0.5
dev: true
+ /is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
+ engines: {node: '>=12.13'}
+ dev: false
+
/is-wsl@2.2.0:
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
engines: {node: '>=8'}
@@ -9573,6 +9663,13 @@ packages:
yargs-parser: 20.2.9
dev: true
+ /merge-anything@5.1.7:
+ resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
+ engines: {node: '>=12.13'}
+ dependencies:
+ is-what: 4.1.16
+ dev: false
+
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -12138,6 +12235,20 @@ packages:
randombytes: 2.1.0
dev: true
+ /seroval-plugins@1.0.4(seroval@1.0.4):
+ resolution: {integrity: sha512-DQ2IK6oQVvy8k+c2V5x5YCtUa/GGGsUwUBNN9UqohrZ0rWdUapBFpNMYP1bCyRHoxOJjdKGl+dieacFIpU/i1A==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ seroval: ^1.0
+ dependencies:
+ seroval: 1.0.4
+ dev: false
+
+ /seroval@1.0.4:
+ resolution: {integrity: sha512-qQs/N+KfJu83rmszFQaTxcoJoPn6KNUruX4KmnmyD0oZkUoiNvJ1rpdYKDf4YHM05k+HOgCxa3yvf15QbVijGg==}
+ engines: {node: '>=10'}
+ dev: false
+
/server-destroy@1.0.1:
resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==}
@@ -12340,6 +12451,34 @@ packages:
smart-buffer: 4.2.0
dev: true
+ /solid-element@1.8.0(solid-js@1.8.15):
+ resolution: {integrity: sha512-DG8HBCej5kNExUiFbVG8OFZojMGcLF8keXdGLEcHXBYtJ7zhm+a8HJnl5lfmBlTYGRk4ApgoBvlwH1ibg7quaQ==}
+ peerDependencies:
+ solid-js: ^1.8.0
+ dependencies:
+ component-register: 0.8.3
+ solid-js: 1.8.15
+ dev: false
+
+ /solid-js@1.8.15:
+ resolution: {integrity: sha512-d0QP/efr3UVcwGgWVPveQQ0IHOH6iU7yUhc2piy8arNG8wxKmvUy1kFxyF8owpmfCWGB87usDKMaVnsNYZm+Vw==}
+ dependencies:
+ csstype: 3.1.1
+ seroval: 1.0.4
+ seroval-plugins: 1.0.4(seroval@1.0.4)
+ dev: false
+
+ /solid-refresh@0.6.3(solid-js@1.8.15):
+ resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
+ peerDependencies:
+ solid-js: ^1.3
+ dependencies:
+ '@babel/generator': 7.23.6
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/types': 7.23.6
+ solid-js: 1.8.15
+ dev: false
+
/sort-array@4.1.5:
resolution: {integrity: sha512-Ya4peoS1fgFN42RN1REk2FgdNOeLIEMKFGJvs7VTP3OklF8+kl2SkpVliZ4tk/PurWsrWRsdNdU+tgyOBkB9sA==}
engines: {node: '>=10'}
@@ -13455,6 +13594,10 @@ packages:
hasBin: true
dev: true
+ /validate-html-nesting@1.2.2:
+ resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
+ dev: false
+
/validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
dependencies:
@@ -13565,7 +13708,29 @@ packages:
- supports-color
dev: true
- /vite@5.0.10(@types/node@20.10.6):
+ /vite-plugin-solid@2.10.1(solid-js@1.8.15)(vite@5.0.11):
+ resolution: {integrity: sha512-kfVdNLWaJqaJVL52U6iCCKNW/nXE7bS1VVGOWPGllOkJfcNILymVSY0LCBLSnyy0iYnRtrXpiHm14rMuzeC7CA==}
+ peerDependencies:
+ '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
+ solid-js: ^1.7.2
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ peerDependenciesMeta:
+ '@testing-library/jest-dom':
+ optional: true
+ dependencies:
+ '@babel/core': 7.23.7
+ '@types/babel__core': 7.20.5
+ babel-preset-solid: 1.8.15(@babel/core@7.23.7)
+ merge-anything: 5.1.7
+ solid-js: 1.8.15
+ solid-refresh: 0.6.3(solid-js@1.8.15)
+ vite: 5.0.11(@types/node@20.10.6)
+ vitefu: 0.2.5(vite@5.0.11)
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /vite@5.0.10:
resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -13593,12 +13758,12 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 20.10.6
esbuild: 0.19.5
postcss: 8.4.32
rollup: 4.9.2
optionalDependencies:
fsevents: 2.3.3
+ dev: true
/vite@5.0.11(@types/node@20.10.6):
resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==}
@@ -13629,13 +13794,13 @@ packages:
optional: true
dependencies:
'@types/node': 20.10.6
- esbuild: 0.19.5
+ esbuild: 0.19.11
postcss: 8.4.32
rollup: 4.9.2
optionalDependencies:
fsevents: 2.3.3
- /vitefu@0.2.5(vite@5.0.10):
+ /vitefu@0.2.5(vite@5.0.11):
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
@@ -13643,7 +13808,7 @@ packages:
vite:
optional: true
dependencies:
- vite: 5.0.10(@types/node@20.10.6)
+ vite: 5.0.11(@types/node@20.10.6)
/vitest@1.1.0(@vitest/ui@1.1.0):
resolution: {integrity: sha512-oDFiCrw7dd3Jf06HoMtSRARivvyjHJaTxikFxuqJjO76U436PqlVw1uLn7a8OSPrhSfMGVaRakKpA2lePdw79A==}
diff --git a/website/package.json b/website/package.json
index af100889..13bef75d 100644
--- a/website/package.json
+++ b/website/package.json
@@ -24,6 +24,7 @@
"@heroicons/react": "^2.1.1",
"@nanostores/persistent": "^0.9.1",
"@nanostores/react": "^0.7.1",
+ "@strudel/claviature": "workspace:*",
"@strudel/codemirror": "workspace:*",
"@strudel/core": "workspace:*",
"@strudel/csound": "workspace:*",
diff --git a/website/src/repl/util.mjs b/website/src/repl/util.mjs
index 397e2801..2d809ad6 100644
--- a/website/src/repl/util.mjs
+++ b/website/src/repl/util.mjs
@@ -81,6 +81,7 @@ export function loadModules() {
import('@strudel/serial'),
import('@strudel/soundfonts'),
import('@strudel/csound'),
+ import('@strudel/claviature'),
];
if (isTauri()) {
modules = modules.concat([