From b3721618747ed5137fdd9530a9a1e340367d1ca5 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Fri, 4 Nov 2022 20:58:36 +0100 Subject: [PATCH] update vite in react package --- package-lock.json | 491 +++++++++---------- packages/midi/midi.mjs | 5 +- packages/react/dist/index.cjs.js | 4 +- packages/react/dist/index.es.js | 787 +++++++++++-------------------- packages/react/dist/style.css | 2 +- packages/react/package.json | 2 +- packages/react/src/App.jsx | 2 + repl/package-lock.json | 12 +- 8 files changed, 535 insertions(+), 770 deletions(-) diff --git a/package-lock.json b/package-lock.json index 71efd0cc..79500705 100644 --- a/package-lock.json +++ b/package-lock.json @@ -624,10 +624,26 @@ "w3c-keyname": "^2.2.4" } }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/linux-loong64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", - "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", "cpu": [ "loong64" ], @@ -4621,9 +4637,9 @@ } }, "node_modules/esbuild": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", - "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", "dev": true, "hasInstallScript": true, "bin": { @@ -4633,33 +4649,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/linux-loong64": "0.14.53", - "esbuild-android-64": "0.14.53", - "esbuild-android-arm64": "0.14.53", - "esbuild-darwin-64": "0.14.53", - "esbuild-darwin-arm64": "0.14.53", - "esbuild-freebsd-64": "0.14.53", - "esbuild-freebsd-arm64": "0.14.53", - "esbuild-linux-32": "0.14.53", - "esbuild-linux-64": "0.14.53", - "esbuild-linux-arm": "0.14.53", - "esbuild-linux-arm64": "0.14.53", - "esbuild-linux-mips64le": "0.14.53", - "esbuild-linux-ppc64le": "0.14.53", - "esbuild-linux-riscv64": "0.14.53", - "esbuild-linux-s390x": "0.14.53", - "esbuild-netbsd-64": "0.14.53", - "esbuild-openbsd-64": "0.14.53", - "esbuild-sunos-64": "0.14.53", - "esbuild-windows-32": "0.14.53", - "esbuild-windows-64": "0.14.53", - "esbuild-windows-arm64": "0.14.53" + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" } }, "node_modules/esbuild-android-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", - "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", "cpu": [ "x64" ], @@ -4673,9 +4690,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", - "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", "cpu": [ "arm64" ], @@ -4689,9 +4706,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", - "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", "cpu": [ "x64" ], @@ -4705,9 +4722,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", - "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", "cpu": [ "arm64" ], @@ -4721,9 +4738,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", - "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", "cpu": [ "x64" ], @@ -4737,9 +4754,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", - "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", "cpu": [ "arm64" ], @@ -4753,9 +4770,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", - "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", "cpu": [ "ia32" ], @@ -4769,9 +4786,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", - "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", "cpu": [ "x64" ], @@ -4785,9 +4802,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", - "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", "cpu": [ "arm" ], @@ -4801,9 +4818,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", - "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", "cpu": [ "arm64" ], @@ -4817,9 +4834,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", - "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", "cpu": [ "mips64el" ], @@ -4833,9 +4850,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", - "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", "cpu": [ "ppc64" ], @@ -4849,9 +4866,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", - "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", "cpu": [ "riscv64" ], @@ -4865,9 +4882,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", - "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", "cpu": [ "s390x" ], @@ -4881,9 +4898,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", - "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", "cpu": [ "x64" ], @@ -4897,9 +4914,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", - "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", "cpu": [ "x64" ], @@ -4913,9 +4930,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", - "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", "cpu": [ "x64" ], @@ -4929,9 +4946,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", - "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", "cpu": [ "ia32" ], @@ -4945,9 +4962,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", - "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", "cpu": [ "x64" ], @@ -4961,9 +4978,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", - "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", "cpu": [ "arm64" ], @@ -10048,9 +10065,9 @@ } }, "node_modules/rollup": { - "version": "2.77.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", - "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -11677,21 +11694,21 @@ "dev": true }, "node_modules/vite": { - "version": "2.9.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.9.tgz", - "integrity": "sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.2.tgz", + "integrity": "sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==", "dev": true, "dependencies": { - "esbuild": "^0.14.27", - "postcss": "^8.4.13", - "resolve": "^1.22.0", - "rollup": "^2.59.0" + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": ">=12.2.0" + "node": "^14.18.0 || >=16.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" @@ -11699,7 +11716,9 @@ "peerDependencies": { "less": "*", "sass": "*", - "stylus": "*" + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" }, "peerDependenciesMeta": { "less": { @@ -11710,6 +11729,12 @@ }, "stylus": { "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true } } }, @@ -11790,47 +11815,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/vitest/node_modules/vite": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", - "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", - "dev": true, - "dependencies": { - "esbuild": "^0.14.47", - "postcss": "^8.4.14", - "resolve": "^1.22.1", - "rollup": "^2.75.6" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -12454,11 +12438,11 @@ "@types/react-dom": "^17.0.2", "@vitejs/plugin-react": "^1.3.0", "autoprefixer": "^10.4.7", - "postcss": "^8.4.13", + "postcss": "^8.4.18", "react": "^17.0.2", "react-dom": "^17.0.2", "tailwindcss": "^3.0.24", - "vite": "^2.9.9" + "vite": "^3.2.2" }, "peerDependencies": { "react": "^17.0.2", @@ -13077,10 +13061,17 @@ "w3c-keyname": "^2.2.4" } }, + "@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "dev": true, + "optional": true + }, "@esbuild/linux-loong64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", - "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", "dev": true, "optional": true }, @@ -14403,12 +14394,12 @@ "@uiw/react-codemirror": "^4.12.4", "@vitejs/plugin-react": "^1.3.0", "autoprefixer": "^10.4.7", - "postcss": "^8.4.13", + "postcss": "^8.4.18", "react": "^17.0.2", "react-dom": "^17.0.2", "react-hook-inview": "^4.5.0", "tailwindcss": "^3.0.24", - "vite": "^2.9.9" + "vite": "^3.2.2" }, "dependencies": { "@uiw/react-codemirror": { @@ -16512,171 +16503,172 @@ } }, "esbuild": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", - "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", "dev": true, "requires": { - "@esbuild/linux-loong64": "0.14.53", - "esbuild-android-64": "0.14.53", - "esbuild-android-arm64": "0.14.53", - "esbuild-darwin-64": "0.14.53", - "esbuild-darwin-arm64": "0.14.53", - "esbuild-freebsd-64": "0.14.53", - "esbuild-freebsd-arm64": "0.14.53", - "esbuild-linux-32": "0.14.53", - "esbuild-linux-64": "0.14.53", - "esbuild-linux-arm": "0.14.53", - "esbuild-linux-arm64": "0.14.53", - "esbuild-linux-mips64le": "0.14.53", - "esbuild-linux-ppc64le": "0.14.53", - "esbuild-linux-riscv64": "0.14.53", - "esbuild-linux-s390x": "0.14.53", - "esbuild-netbsd-64": "0.14.53", - "esbuild-openbsd-64": "0.14.53", - "esbuild-sunos-64": "0.14.53", - "esbuild-windows-32": "0.14.53", - "esbuild-windows-64": "0.14.53", - "esbuild-windows-arm64": "0.14.53" + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" } }, "esbuild-android-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", - "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", - "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", - "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", - "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", - "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", - "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", - "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", - "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", - "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", - "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", - "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", - "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", - "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", - "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", - "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", - "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", - "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", - "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", - "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.53", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", - "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", "dev": true, "optional": true }, @@ -20062,12 +20054,12 @@ "@uiw/react-codemirror": "^4.12.4", "@vitejs/plugin-react": "^1.3.0", "autoprefixer": "^10.4.7", - "postcss": "^8.4.13", + "postcss": "^8.4.18", "react": "^17.0.2", "react-dom": "^17.0.2", "react-hook-inview": "^4.5.0", "tailwindcss": "^3.0.24", - "vite": "^2.9.9" + "vite": "^3.2.2" }, "dependencies": { "@uiw/react-codemirror": { @@ -20584,9 +20576,9 @@ } }, "rollup": { - "version": "2.77.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", - "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -21868,16 +21860,16 @@ } }, "vite": { - "version": "2.9.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.9.tgz", - "integrity": "sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.2.tgz", + "integrity": "sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==", "dev": true, "requires": { - "esbuild": "^0.14.27", + "esbuild": "^0.15.9", "fsevents": "~2.3.2", - "postcss": "^8.4.13", - "resolve": "^1.22.0", - "rollup": "^2.59.0" + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" } }, "vitest": { @@ -21911,19 +21903,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "vite": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", - "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", - "dev": true, - "requires": { - "esbuild": "^0.14.47", - "fsevents": "~2.3.2", - "postcss": "^8.4.14", - "resolve": "^1.22.1", - "rollup": "^2.75.6" - } } } }, diff --git a/packages/midi/midi.mjs b/packages/midi/midi.mjs index a9cf4df1..41247dbf 100644 --- a/packages/midi/midi.mjs +++ b/packages/midi/midi.mjs @@ -5,12 +5,11 @@ This program is free software: you can redistribute it and/or modify it under th */ import { isNote } from 'tone'; -import _WebMidi from 'webmidi'; +import * as _WebMidi from 'webmidi'; import { Pattern, isPattern } from '@strudel.cycles/core'; import { Tone } from '@strudel.cycles/tone'; - // if you use WebMidi from outside of this package, make sure to import that instance: -export const WebMidi = _WebMidi; +export const { WebMidi } = _WebMidi; export function enableWebMidi() { return new Promise((resolve, reject) => { diff --git a/packages/react/dist/index.cjs.js b/packages/react/dist/index.cjs.js index 2acdb6b7..94d525a9 100644 --- a/packages/react/dist/index.cjs.js +++ b/packages/react/dist/index.cjs.js @@ -1,3 +1,3 @@ -"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var t=require("react"),ee=require("@uiw/react-codemirror"),E=require("@codemirror/view"),A=require("@codemirror/state"),te=require("@codemirror/lang-javascript"),l=require("@lezer/highlight"),ae=require("@uiw/codemirror-themes"),re=require("react-hook-inview"),oe=require("@strudel.cycles/eval"),p=require("@strudel.cycles/tone"),B=require("@strudel.cycles/core"),se=require("@strudel.cycles/webaudio"),M=require("@strudel.cycles/midi");function U(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var d=U(t),ne=U(ee),ce=ae.createTheme({theme:"dark",settings:{background:"#222",foreground:"#75baff",caret:"#ffcc00",selection:"rgba(128, 203, 196, 0.5)",selectionMatch:"#036dd626",lineHighlight:"#8a91991a",gutterBackground:"transparent",gutterForeground:"#676e95"},styles:[{tag:l.tags.keyword,color:"#c792ea"},{tag:l.tags.operator,color:"#89ddff"},{tag:l.tags.special(l.tags.variableName),color:"#eeffff"},{tag:l.tags.typeName,color:"#f07178"},{tag:l.tags.atom,color:"#f78c6c"},{tag:l.tags.number,color:"#ff5370"},{tag:l.tags.definition(l.tags.variableName),color:"#82aaff"},{tag:l.tags.string,color:"#c3e88d"},{tag:l.tags.special(l.tags.string),color:"#f07178"},{tag:l.tags.comment,color:"#7d8799"},{tag:l.tags.variableName,color:"#f07178"},{tag:l.tags.tagName,color:"#ff5370"},{tag:l.tags.bracket,color:"#a2a1a4"},{tag:l.tags.meta,color:"#ffcb6b"},{tag:l.tags.attributeName,color:"#c792ea"},{tag:l.tags.propertyName,color:"#c792ea"},{tag:l.tags.className,color:"#decb6b"},{tag:l.tags.invalid,color:"#ffffff"}]});const O=A.StateEffect.define(),ie=A.StateField.define({create(){return E.Decoration.none},update(e,o){try{for(let s of o.effects)if(s.is(O))if(s.value){const i=E.Decoration.mark({attributes:{style:"background-color: #FFCA2880"}});e=E.Decoration.set([i.range(0,o.newDoc.length)])}else e=E.Decoration.set([]);return e}catch(s){return console.warn("flash error",s),e}},provide:e=>E.EditorView.decorations.from(e)}),$=e=>{e.dispatch({effects:O.of(!0)}),setTimeout(()=>{e.dispatch({effects:O.of(!1)})},200)},L=A.StateEffect.define(),le=A.StateField.define({create(){return E.Decoration.none},update(e,o){try{for(let s of o.effects)if(s.is(L)){const i=s.value.map(u=>(u.context.locations||[]).map(({start:n,end:m})=>{const a=u.context.color||"#FFCA28";let f=o.newDoc.line(n.line).from+n.column,r=o.newDoc.line(m.line).from+m.column;const v=o.newDoc.length;return f>v||r>v?void 0:E.Decoration.mark({attributes:{style:`outline: 1.5px solid ${a};`}}).range(f,r)})).flat().filter(Boolean)||[];e=E.Decoration.set(i,!0)}return e}catch{return E.Decoration.set([])}},provide:e=>E.EditorView.decorations.from(e)}),ue=[te.javascript(),ce,le,ie];function K({value:e,onChange:o,onViewChanged:s,onSelectionChange:i,options:u,editorDidMount:n}){const m=t.useCallback(r=>{o?.(r)},[o]),a=t.useCallback(r=>{s?.(r)},[s]),f=t.useCallback(r=>{r.selectionSet&&i&&i?.(r.state.selection)},[i]);return d.default.createElement(d.default.Fragment,null,d.default.createElement(ne.default,{value:e,onChange:m,onCreateEditor:a,onUpdate:f,extensions:ue}))}function Q(e){const{onEvent:o,onQuery:s,onSchedule:i,ready:u=!0,onDraw:n}=e,[m,a]=t.useState(!1),f=1,r=()=>Math.floor(p.Tone.getTransport().seconds/f),v=(w=r())=>{const R=new B.TimeSpan(w,w+1),k=s?.(new B.State(R))||[];i?.(k,w);const T=R.begin.valueOf();p.Tone.getTransport().cancel(T);const N=(w+1)*f-.5,C=Math.max(p.Tone.getTransport().seconds,N)+.1;p.Tone.getTransport().schedule(()=>{v(w+1)},C),k?.filter(h=>h.part.begin.equals(h.whole?.begin)).forEach(h=>{p.Tone.getTransport().schedule(S=>{o(S,h,p.Tone.getContext().currentTime),p.Tone.Draw.schedule(()=>{n?.(S,h)},S)},h.part.begin.valueOf())})};t.useEffect(()=>{u&&v()},[o,i,s,n,u]);const y=async()=>{a(!0),await p.Tone.start(),p.Tone.getTransport().start("+0.1")},b=()=>{p.Tone.getTransport().pause(),a(!1)};return{start:y,stop:b,onEvent:o,started:m,setStarted:a,toggle:()=>m?b():y(),query:v,activeCycle:r}}function J(e){return t.useEffect(()=>(window.addEventListener("message",e),()=>window.removeEventListener("message",e)),[e]),t.useCallback(o=>window.postMessage(o,"*"),[])}let de=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);const fe=e=>encodeURIComponent(btoa(e));function G({tune:e,autolink:o=!0,onEvent:s,onDraw:i}){const u=t.useMemo(()=>de(),[]),[n,m]=t.useState(e),[a,f]=t.useState(),[r,v]=t.useState(""),[y,b]=t.useState(),[W,w]=t.useState(!1),[R,k]=t.useState(""),[T,N]=t.useState(),C=t.useMemo(()=>n!==a||y,[n,a,y]),h=t.useCallback(g=>v(c=>c+`${c?` +"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react"),ee=require("@uiw/react-codemirror"),E=require("@codemirror/view"),A=require("@codemirror/state"),te=require("@codemirror/lang-javascript"),l=require("@lezer/highlight"),oe=require("@uiw/codemirror-themes"),ae=require("react-hook-inview"),se=require("@strudel.cycles/eval"),p=require("@strudel.cycles/tone"),B=require("@strudel.cycles/core"),ne=require("@strudel.cycles/webaudio"),M=require("@strudel.cycles/midi"),U=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},d=U(t),re=U(ee),ce=oe.createTheme({theme:"dark",settings:{background:"#222",foreground:"#75baff",caret:"#ffcc00",selection:"rgba(128, 203, 196, 0.5)",selectionMatch:"#036dd626",lineHighlight:"#8a91991a",gutterBackground:"transparent",gutterForeground:"#676e95"},styles:[{tag:l.tags.keyword,color:"#c792ea"},{tag:l.tags.operator,color:"#89ddff"},{tag:l.tags.special(l.tags.variableName),color:"#eeffff"},{tag:l.tags.typeName,color:"#f07178"},{tag:l.tags.atom,color:"#f78c6c"},{tag:l.tags.number,color:"#ff5370"},{tag:l.tags.definition(l.tags.variableName),color:"#82aaff"},{tag:l.tags.string,color:"#c3e88d"},{tag:l.tags.special(l.tags.string),color:"#f07178"},{tag:l.tags.comment,color:"#7d8799"},{tag:l.tags.variableName,color:"#f07178"},{tag:l.tags.tagName,color:"#ff5370"},{tag:l.tags.bracket,color:"#a2a1a4"},{tag:l.tags.meta,color:"#ffcb6b"},{tag:l.tags.attributeName,color:"#c792ea"},{tag:l.tags.propertyName,color:"#c792ea"},{tag:l.tags.className,color:"#decb6b"},{tag:l.tags.invalid,color:"#ffffff"}]});const O=A.StateEffect.define(),ie=A.StateField.define({create(){return E.Decoration.none},update(e,s){try{for(let n of s.effects)if(n.is(O))if(n.value){const i=E.Decoration.mark({attributes:{style:"background-color: #FFCA2880"}});e=E.Decoration.set([i.range(0,s.newDoc.length)])}else e=E.Decoration.set([]);return e}catch(n){return console.warn("flash error",n),e}},provide:e=>E.EditorView.decorations.from(e)}),$=e=>{e.dispatch({effects:O.of(!0)}),setTimeout(()=>{e.dispatch({effects:O.of(!1)})},200)},L=A.StateEffect.define(),le=A.StateField.define({create(){return E.Decoration.none},update(e,s){try{for(let n of s.effects)if(n.is(L)){const i=n.value.map(u=>(u.context.locations||[]).map(({start:r,end:m})=>{const o=u.context.color||"#FFCA28";let f=s.newDoc.line(r.line).from+r.column,a=s.newDoc.line(m.line).from+m.column;const y=s.newDoc.length;return f>y||a>y?void 0:E.Decoration.mark({attributes:{style:`outline: 1.5px solid ${o};`}}).range(f,a)})).flat().filter(Boolean)||[];e=E.Decoration.set(i,!0)}return e}catch{return E.Decoration.set([])}},provide:e=>E.EditorView.decorations.from(e)}),ue=[te.javascript(),ce,le,ie];function K({value:e,onChange:s,onViewChanged:n,onSelectionChange:i,options:u,editorDidMount:r}){const m=t.useCallback(a=>{s?.(a)},[s]),o=t.useCallback(a=>{n?.(a)},[n]),f=t.useCallback(a=>{a.selectionSet&&i&&i?.(a.state.selection)},[i]);return d.default.createElement(d.default.Fragment,null,d.default.createElement(re.default,{value:e,onChange:m,onCreateEditor:o,onUpdate:f,extensions:ue}))}function Q(e){const{onEvent:s,onQuery:n,onSchedule:i,ready:u=!0,onDraw:r}=e,[m,o]=t.useState(!1),f=1,a=()=>Math.floor(p.Tone.getTransport().seconds/f),y=(w=a())=>{const R=new B.TimeSpan(w,w+1),k=n?.(new B.State(R))||[];i?.(k,w);const T=R.begin.valueOf();p.Tone.getTransport().cancel(T);const N=(w+1)*f-.5,C=Math.max(p.Tone.getTransport().seconds,N)+.1;p.Tone.getTransport().schedule(()=>{y(w+1)},C),k?.filter(h=>h.part.begin.equals(h.whole?.begin)).forEach(h=>{p.Tone.getTransport().schedule(S=>{s(S,h,p.Tone.getContext().currentTime),p.Tone.Draw.schedule(()=>{r?.(S,h)},S)},h.part.begin.valueOf())})};t.useEffect(()=>{u&&y()},[s,i,n,r,u]);const v=async()=>{o(!0),await p.Tone.start(),p.Tone.getTransport().start("+0.1")},b=()=>{p.Tone.getTransport().pause(),o(!1)};return{start:v,stop:b,onEvent:s,started:m,setStarted:o,toggle:()=>m?b():v(),query:y,activeCycle:a}}function J(e){return t.useEffect(()=>(window.addEventListener("message",e),()=>window.removeEventListener("message",e)),[e]),t.useCallback(s=>window.postMessage(s,"*"),[])}let de=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);const fe=e=>encodeURIComponent(btoa(e));function G({tune:e,autolink:s=!0,onEvent:n,onDraw:i}){const u=t.useMemo(()=>de(),[]),[r,m]=t.useState(e),[o,f]=t.useState(),[a,y]=t.useState(""),[v,b]=t.useState(),[W,w]=t.useState(!1),[R,k]=t.useState(""),[T,N]=t.useState(),C=t.useMemo(()=>r!==o||v,[r,o,v]),h=t.useCallback(g=>y(c=>c+`${c?` -`:""}${g}`),[]),S=t.useMemo(()=>{if(a&&!a.includes("strudel disable-highlighting"))return(g,c)=>i?.(g,c,a)},[a,i]),H=t.useMemo(()=>a&&a.includes("strudel hide-header"),[a]),_=t.useMemo(()=>a&&a.includes("strudel hide-console"),[a]),q=Q({onDraw:S,onEvent:t.useCallback((g,c,Z)=>{try{s?.(c),c.context.logs?.length&&c.context.logs.forEach(h);const{onTrigger:x=se.webaudioOutputTrigger}=c.context;x(g,c,Z,1)}catch(x){console.warn(x),x.message="unplayable event: "+x?.message,h(x.message)}},[s,h]),onQuery:t.useCallback(g=>{try{return T?.query(g)||[]}catch(c){return console.warn(c),c.message="query error: "+c.message,b(c),[]}},[T]),onSchedule:t.useCallback((g,c)=>Y(g),[]),ready:!!T&&!!a}),z=J(({data:{from:g,type:c}})=>{c==="start"&&g!==u&&(q.setStarted(!1),f(void 0))}),V=t.useCallback(async(g=n)=>{if(a&&!C){b(void 0),q.start();return}try{w(!0);const c=await oe.evaluate(g);q.start(),z({type:"start",from:u}),N(()=>c.pattern),o&&(window.location.hash="#"+encodeURIComponent(btoa(n))),k(fe(n)),b(void 0),f(g),w(!1)}catch(c){c.message="evaluation error: "+c.message,console.warn(c),b(c)}},[a,C,n,q,o,u,z]),Y=(g,c)=>{g.length};return{hideHeader:H,hideConsole:_,pending:W,code:n,setCode:m,pattern:T,error:y,cycle:q,setPattern:N,dirty:C,log:r,togglePlay:()=>{q.started?q.stop():V()},setActiveCode:f,activateCode:V,activeCode:a,pushLog:h,hash:R}}function P(...e){return e.filter(Boolean).join(" ")}let F=[],j;function X({view:e,pattern:o,active:s}){t.useEffect(()=>{if(e)if(o&&s){let u=function(){try{const n=p.Tone.getTransport().seconds,a=[Math.max(j||n,n-1/10),n+1/60];j=n+1/60,F=F.filter(r=>r.whole.end>n);const f=o.queryArc(...a).filter(r=>r.hasOnset());F=F.concat(f),e.dispatch({effects:L.of(F)})}catch{e.dispatch({effects:L.of([])})}i=requestAnimationFrame(u)},i=requestAnimationFrame(u);return()=>{cancelAnimationFrame(i)}}else F=[],e.dispatch({effects:L.of([])})},[o,s,e])}const ge="_container_3i85k_1",me="_header_3i85k_5",he="_buttons_3i85k_9",be="_button_3i85k_9",pe="_buttonDisabled_3i85k_17",ve="_error_3i85k_21",ye="_body_3i85k_25";var D={container:ge,header:me,buttons:he,button:be,buttonDisabled:pe,error:ve,body:ye};function I({type:e}){return d.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"sc-h-5 sc-w-5",viewBox:"0 0 20 20",fill:"currentColor"},{refresh:d.default.createElement("path",{fillRule:"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z",clipRule:"evenodd"}),play:d.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"}),pause:d.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}[e])}function we({tune:e,hideOutsideView:o=!1,init:s,onEvent:i,enableKeyboard:u}){const{code:n,setCode:m,pattern:a,activeCode:f,activateCode:r,evaluateOnly:v,error:y,cycle:b,dirty:W,togglePlay:w,stop:R}=G({tune:e,autolink:!1,onEvent:i});t.useEffect(()=>{s&&v()},[e,s]);const[k,T]=t.useState(),[N,C]=re.useInView({threshold:.01}),h=t.useRef(),S=t.useMemo(()=>((C||!o)&&(h.current=!0),C||h.current),[C,o]);return X({view:k,pattern:a,active:b.started&&!f?.includes("strudel disable-highlighting")}),t.useLayoutEffect(()=>{if(u){const H=async _=>{(_.ctrlKey||_.altKey)&&(_.code==="Enter"?(_.preventDefault(),$(k),await r()):_.code==="Period"&&(b.stop(),_.preventDefault()))};return window.addEventListener("keydown",H,!0),()=>window.removeEventListener("keydown",H,!0)}},[u,a,n,r,b,k]),d.default.createElement("div",{className:D.container,ref:N},d.default.createElement("div",{className:D.header},d.default.createElement("div",{className:D.buttons},d.default.createElement("button",{className:P(D.button,b.started?"sc-animate-pulse":""),onClick:()=>w()},d.default.createElement(I,{type:b.started?"pause":"play"})),d.default.createElement("button",{className:P(W?D.button:D.buttonDisabled),onClick:()=>r()},d.default.createElement(I,{type:"refresh"}))),y&&d.default.createElement("div",{className:D.error},y.message)),d.default.createElement("div",{className:D.body},S&&d.default.createElement(K,{value:n,onChange:m,onViewChanged:T})))}function Me(e){const{ready:o,connected:s,disconnected:i}=e,[u,n]=t.useState(!0),[m,a]=t.useState(M.WebMidi?.outputs||[]);return t.useEffect(()=>{M.enableWebMidi().then(()=>{M.WebMidi.addListener("connected",r=>{a([...M.WebMidi.outputs]),s?.(M.WebMidi,r)}),M.WebMidi.addListener("disconnected",r=>{a([...M.WebMidi.outputs]),i?.(M.WebMidi,r)}),o?.(M.WebMidi),n(!1)}).catch(r=>{if(r){console.error(r),console.warn("Web Midi could not be enabled..");return}})},[o,s,i,m]),{loading:u,outputs:m,outputByName:r=>M.WebMidi.getOutputByName(r)}}exports.CodeMirror=K;exports.MiniRepl=we;exports.cx=P;exports.flash=$;exports.useCycle=Q;exports.useHighlighting=X;exports.usePostMessage=J;exports.useRepl=G;exports.useWebMidi=Me; +`:""}${g}`),[]),S=t.useMemo(()=>{if(o&&!o.includes("strudel disable-highlighting"))return(g,c)=>i?.(g,c,o)},[o,i]),H=t.useMemo(()=>o&&o.includes("strudel hide-header"),[o]),_=t.useMemo(()=>o&&o.includes("strudel hide-console"),[o]),q=Q({onDraw:S,onEvent:t.useCallback((g,c,Z)=>{try{n?.(c),c.context.logs?.length&&c.context.logs.forEach(h);const{onTrigger:x=ne.webaudioOutputTrigger}=c.context;x(g,c,Z,1)}catch(x){console.warn(x),x.message="unplayable event: "+x?.message,h(x.message)}},[n,h]),onQuery:t.useCallback(g=>{try{return T?.query(g)||[]}catch(c){return console.warn(c),c.message="query error: "+c.message,b(c),[]}},[T]),onSchedule:t.useCallback((g,c)=>Y(g),[]),ready:!!T&&!!o}),z=J(({data:{from:g,type:c}})=>{c==="start"&&g!==u&&(q.setStarted(!1),f(void 0))}),V=t.useCallback(async(g=r)=>{if(o&&!C){b(void 0),q.start();return}try{w(!0);const c=await se.evaluate(g);q.start(),z({type:"start",from:u}),N(()=>c.pattern),s&&(window.location.hash="#"+encodeURIComponent(btoa(r))),k(fe(r)),b(void 0),f(g),w(!1)}catch(c){c.message="evaluation error: "+c.message,console.warn(c),b(c)}},[o,C,r,q,s,u,z]),Y=(g,c)=>{g.length};return{hideHeader:H,hideConsole:_,pending:W,code:r,setCode:m,pattern:T,error:v,cycle:q,setPattern:N,dirty:C,log:a,togglePlay:()=>{q.started?q.stop():V()},setActiveCode:f,activateCode:V,activeCode:o,pushLog:h,hash:R}}function P(...e){return e.filter(Boolean).join(" ")}let F=[],j;function X({view:e,pattern:s,active:n}){t.useEffect(()=>{if(e)if(s&&n){let u=function(){try{const r=p.Tone.getTransport().seconds,o=[Math.max(j||r,r-1/10),r+1/60];j=r+1/60,F=F.filter(a=>a.whole.end>r);const f=s.queryArc(...o).filter(a=>a.hasOnset());F=F.concat(f),e.dispatch({effects:L.of(F)})}catch{e.dispatch({effects:L.of([])})}i=requestAnimationFrame(u)},i=requestAnimationFrame(u);return()=>{cancelAnimationFrame(i)}}else F=[],e.dispatch({effects:L.of([])})},[s,n,e])}const ge="_container_3i85k_1",me="_header_3i85k_5",he="_buttons_3i85k_9",be="_button_3i85k_9",pe="_buttonDisabled_3i85k_17",ye="_error_3i85k_21",ve="_body_3i85k_25",D={container:ge,header:me,buttons:he,button:be,buttonDisabled:pe,error:ye,body:ve};function I({type:e}){return d.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"sc-h-5 sc-w-5",viewBox:"0 0 20 20",fill:"currentColor"},{refresh:d.default.createElement("path",{fillRule:"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z",clipRule:"evenodd"}),play:d.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"}),pause:d.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}[e])}function we({tune:e,hideOutsideView:s=!1,init:n,onEvent:i,enableKeyboard:u}){const{code:r,setCode:m,pattern:o,activeCode:f,activateCode:a,evaluateOnly:y,error:v,cycle:b,dirty:W,togglePlay:w,stop:R}=G({tune:e,autolink:!1,onEvent:i});t.useEffect(()=>{n&&y()},[e,n]);const[k,T]=t.useState(),[N,C]=ae.useInView({threshold:.01}),h=t.useRef(),S=t.useMemo(()=>((C||!s)&&(h.current=!0),C||h.current),[C,s]);return X({view:k,pattern:o,active:b.started&&!f?.includes("strudel disable-highlighting")}),t.useLayoutEffect(()=>{if(u){const H=async _=>{(_.ctrlKey||_.altKey)&&(_.code==="Enter"?(_.preventDefault(),$(k),await a()):_.code==="Period"&&(b.stop(),_.preventDefault()))};return window.addEventListener("keydown",H,!0),()=>window.removeEventListener("keydown",H,!0)}},[u,o,r,a,b,k]),d.default.createElement("div",{className:D.container,ref:N},d.default.createElement("div",{className:D.header},d.default.createElement("div",{className:D.buttons},d.default.createElement("button",{className:P(D.button,b.started?"sc-animate-pulse":""),onClick:()=>w()},d.default.createElement(I,{type:b.started?"pause":"play"})),d.default.createElement("button",{className:P(W?D.button:D.buttonDisabled),onClick:()=>a()},d.default.createElement(I,{type:"refresh"}))),v&&d.default.createElement("div",{className:D.error},v.message)),d.default.createElement("div",{className:D.body},S&&d.default.createElement(K,{value:r,onChange:m,onViewChanged:T})))}function Me(e){const{ready:s,connected:n,disconnected:i}=e,[u,r]=t.useState(!0),[m,o]=t.useState(M.WebMidi?.outputs||[]);return t.useEffect(()=>{M.enableWebMidi().then(()=>{M.WebMidi.addListener("connected",a=>{o([...M.WebMidi.outputs]),n?.(M.WebMidi,a)}),M.WebMidi.addListener("disconnected",a=>{o([...M.WebMidi.outputs]),i?.(M.WebMidi,a)}),s?.(M.WebMidi),r(!1)}).catch(a=>{if(a){console.error(a),console.warn("Web Midi could not be enabled..");return}})},[s,n,i,m]),{loading:u,outputs:m,outputByName:a=>M.WebMidi.getOutputByName(a)}}exports.CodeMirror=K;exports.MiniRepl=we;exports.cx=P;exports.flash=$;exports.useCycle=Q;exports.useHighlighting=X;exports.usePostMessage=J;exports.useRepl=G;exports.useWebMidi=Me; diff --git a/packages/react/dist/index.es.js b/packages/react/dist/index.es.js index 143fe4dd..cc72aacf 100644 --- a/packages/react/dist/index.es.js +++ b/packages/react/dist/index.es.js @@ -1,582 +1,367 @@ -import React, { useCallback, useState, useEffect, useMemo, useRef, useLayoutEffect } from 'react'; -import _CodeMirror from '@uiw/react-codemirror'; -import { Decoration, EditorView } from '@codemirror/view'; -import { StateEffect, StateField } from '@codemirror/state'; -import { javascript } from '@codemirror/lang-javascript'; -import { tags } from '@lezer/highlight'; -import { createTheme } from '@uiw/codemirror-themes'; -import { useInView } from 'react-hook-inview'; -import { evaluate } from '@strudel.cycles/eval'; -import { Tone } from '@strudel.cycles/tone'; -import { TimeSpan, State } from '@strudel.cycles/core'; -import { webaudioOutputTrigger } from '@strudel.cycles/webaudio'; -import { WebMidi, enableWebMidi } from '@strudel.cycles/midi'; - -var strudelTheme = createTheme({ - theme: 'dark', +import d, { useCallback as C, useState as b, useEffect as S, useMemo as L, useRef as X, useLayoutEffect as Y } from "react"; +import Z from "@uiw/react-codemirror"; +import { Decoration as x, EditorView as j } from "@codemirror/view"; +import { StateEffect as K, StateField as Q } from "@codemirror/state"; +import { javascript as ee } from "@codemirror/lang-javascript"; +import { tags as i } from "@lezer/highlight"; +import { createTheme as te } from "@uiw/codemirror-themes"; +import { useInView as oe } from "react-hook-inview"; +import { evaluate as ne } from "@strudel.cycles/eval"; +import { Tone as h } from "@strudel.cycles/tone"; +import { TimeSpan as re, State as ae } from "@strudel.cycles/core"; +import { webaudioOutputTrigger as se } from "@strudel.cycles/webaudio"; +import { WebMidi as k, enableWebMidi as ce } from "@strudel.cycles/midi"; +const ie = te({ + theme: "dark", settings: { - background: '#222', - foreground: '#75baff', // whats that? - caret: '#ffcc00', - selection: 'rgba(128, 203, 196, 0.5)', - selectionMatch: '#036dd626', - lineHighlight: '#8a91991a', - gutterBackground: 'transparent', - // gutterForeground: '#8a919966', - gutterForeground: '#676e95', + background: "#222", + foreground: "#75baff", + caret: "#ffcc00", + selection: "rgba(128, 203, 196, 0.5)", + selectionMatch: "#036dd626", + lineHighlight: "#8a91991a", + gutterBackground: "transparent", + gutterForeground: "#676e95" }, styles: [ - { tag: tags.keyword, color: '#c792ea' }, - { tag: tags.operator, color: '#89ddff' }, - { tag: tags.special(tags.variableName), color: '#eeffff' }, - { tag: tags.typeName, color: '#f07178' }, - { tag: tags.atom, color: '#f78c6c' }, - { tag: tags.number, color: '#ff5370' }, - { tag: tags.definition(tags.variableName), color: '#82aaff' }, - { tag: tags.string, color: '#c3e88d' }, - { tag: tags.special(tags.string), color: '#f07178' }, - { tag: tags.comment, color: '#7d8799' }, - { tag: tags.variableName, color: '#f07178' }, - { tag: tags.tagName, color: '#ff5370' }, - { tag: tags.bracket, color: '#a2a1a4' }, - { tag: tags.meta, color: '#ffcb6b' }, - { tag: tags.attributeName, color: '#c792ea' }, - { tag: tags.propertyName, color: '#c792ea' }, - { tag: tags.className, color: '#decb6b' }, - { tag: tags.invalid, color: '#ffffff' }, - ], + { tag: i.keyword, color: "#c792ea" }, + { tag: i.operator, color: "#89ddff" }, + { tag: i.special(i.variableName), color: "#eeffff" }, + { tag: i.typeName, color: "#f07178" }, + { tag: i.atom, color: "#f78c6c" }, + { tag: i.number, color: "#ff5370" }, + { tag: i.definition(i.variableName), color: "#82aaff" }, + { tag: i.string, color: "#c3e88d" }, + { tag: i.special(i.string), color: "#f07178" }, + { tag: i.comment, color: "#7d8799" }, + { tag: i.variableName, color: "#f07178" }, + { tag: i.tagName, color: "#ff5370" }, + { tag: i.bracket, color: "#a2a1a4" }, + { tag: i.meta, color: "#ffcb6b" }, + { tag: i.attributeName, color: "#c792ea" }, + { tag: i.propertyName, color: "#c792ea" }, + { tag: i.className, color: "#decb6b" }, + { tag: i.invalid, color: "#ffffff" } + ] }); - -var style = ''; - -const setFlash = StateEffect.define(); -const flashField = StateField.define({ +const P = K.define(), le = Q.define({ create() { - return Decoration.none; + return x.none; }, - update(flash2, tr) { + update(e, n) { try { - for (let e of tr.effects) { - if (e.is(setFlash)) { - if (e.value) { - const mark = Decoration.mark({ attributes: { style: `background-color: #FFCA2880` } }); - flash2 = Decoration.set([mark.range(0, tr.newDoc.length)]); - } else { - flash2 = Decoration.set([]); - } - } - } - return flash2; - } catch (err) { - console.warn("flash error", err); - return flash2; + for (let r of n.effects) + if (r.is(P)) + if (r.value) { + const c = x.mark({ attributes: { style: "background-color: #FFCA2880" } }); + e = x.set([c.range(0, n.newDoc.length)]); + } else + e = x.set([]); + return e; + } catch (r) { + return console.warn("flash error", r), e; } }, - provide: (f) => EditorView.decorations.from(f) -}); -const flash = (view) => { - view.dispatch({ effects: setFlash.of(true) }); - setTimeout(() => { - view.dispatch({ effects: setFlash.of(false) }); + provide: (e) => j.decorations.from(e) +}), de = (e) => { + e.dispatch({ effects: P.of(!0) }), setTimeout(() => { + e.dispatch({ effects: P.of(!1) }); }, 200); -}; -const setHighlights = StateEffect.define(); -const highlightField = StateField.define({ +}, B = K.define(), ue = Q.define({ create() { - return Decoration.none; + return x.none; }, - update(highlights, tr) { + update(e, n) { try { - for (let e of tr.effects) { - if (e.is(setHighlights)) { - const marks = e.value.map( - (hap) => (hap.context.locations || []).map(({ start, end }) => { - const color = hap.context.color || "#FFCA28"; - let from = tr.newDoc.line(start.line).from + start.column; - let to = tr.newDoc.line(end.line).from + end.column; - const l = tr.newDoc.length; - if (from > l || to > l) { - return; - } - const mark = Decoration.mark({ attributes: { style: `outline: 1.5px solid ${color};` } }); - return mark.range(from, to); + for (let r of n.effects) + if (r.is(B)) { + const c = r.value.map( + (l) => (l.context.locations || []).map(({ start: a, end: m }) => { + const t = l.context.color || "#FFCA28"; + let u = n.newDoc.line(a.line).from + a.column, o = n.newDoc.line(m.line).from + m.column; + const y = n.newDoc.length; + return u > y || o > y ? void 0 : x.mark({ attributes: { style: `outline: 1.5px solid ${t};` } }).range(u, o); }) ).flat().filter(Boolean) || []; - highlights = Decoration.set(marks, true); + e = x.set(c, !0); } - } - return highlights; - } catch (err) { - return Decoration.set([]); + return e; + } catch { + return x.set([]); } }, - provide: (f) => EditorView.decorations.from(f) -}); -const extensions = [javascript(), strudelTheme, highlightField, flashField]; -function CodeMirror({ value, onChange, onViewChanged, onSelectionChange, options, editorDidMount }) { - const handleOnChange = useCallback( - (value2) => { - onChange?.(value2); + provide: (e) => j.decorations.from(e) +}), fe = [ee(), ie, ue, le]; +function me({ value: e, onChange: n, onViewChanged: r, onSelectionChange: c, options: l, editorDidMount: a }) { + const m = C( + (o) => { + n?.(o); }, - [onChange] - ); - const handleOnCreateEditor = useCallback( - (view) => { - onViewChanged?.(view); + [n] + ), t = C( + (o) => { + r?.(o); }, - [onViewChanged] - ); - const handleOnUpdate = useCallback( - (viewUpdate) => { - if (viewUpdate.selectionSet && onSelectionChange) { - onSelectionChange?.(viewUpdate.state.selection); - } + [r] + ), u = C( + (o) => { + o.selectionSet && c && c?.(o.state.selection); }, - [onSelectionChange] + [c] ); - return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(_CodeMirror, { - value, - onChange: handleOnChange, - onCreateEditor: handleOnCreateEditor, - onUpdate: handleOnUpdate, - extensions + return /* @__PURE__ */ d.createElement(d.Fragment, null, /* @__PURE__ */ d.createElement(Z, { + value: e, + onChange: m, + onCreateEditor: t, + onUpdate: u, + extensions: fe })); } - -/* -useCycle.mjs - -Copyright (C) 2022 Strudel contributors - see -This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -*/ - -/* export declare interface UseCycleProps { - onEvent: ToneEventCallback; - onQuery?: (state: State) => Hap[]; - onSchedule?: (events: Hap[], cycle: number) => void; - onDraw?: ToneEventCallback; - ready?: boolean; // if false, query will not be called on change props -} */ - -// function useCycle(props: UseCycleProps) { -function useCycle(props) { - // onX must use useCallback! - const { onEvent, onQuery, onSchedule, ready = true, onDraw } = props; - const [started, setStarted] = useState(false); - const cycleDuration = 1; - const activeCycle = () => Math.floor(Tone.getTransport().seconds / cycleDuration); - - // pull events with onQuery + count up to next cycle - const query = (cycle = activeCycle()) => { - const timespan = new TimeSpan(cycle, cycle + 1); - const events = onQuery?.(new State(timespan)) || []; - onSchedule?.(events, cycle); - // cancel events after current query. makes sure no old events are player for rescheduled cycles - // console.log('schedule', cycle); - // query next cycle in the middle of the current - const cancelFrom = timespan.begin.valueOf(); - Tone.getTransport().cancel(cancelFrom); - // const queryNextTime = (cycle + 1) * cycleDuration - 0.1; - const queryNextTime = (cycle + 1) * cycleDuration - 0.5; - - // if queryNextTime would be before current time, execute directly (+0.1 for safety that it won't miss) - const t = Math.max(Tone.getTransport().seconds, queryNextTime) + 0.1; - Tone.getTransport().schedule(() => { - query(cycle + 1); - }, t); - - // schedule events for next cycle - events - ?.filter((event) => event.part.begin.equals(event.whole?.begin)) - .forEach((event) => { - Tone.getTransport().schedule((time) => { - onEvent(time, event, Tone.getContext().currentTime); - Tone.Draw.schedule(() => { - // do drawing or DOM manipulation here - onDraw?.(time, event); - }, time); - }, event.part.begin.valueOf()); - }); +function ge(e) { + const { onEvent: n, onQuery: r, onSchedule: c, ready: l = !0, onDraw: a } = e, [m, t] = b(!1), u = 1, o = () => Math.floor(h.getTransport().seconds / u), y = (v = o()) => { + const O = new re(v, v + 1), M = r?.(new ae(O)) || []; + c?.(M, v); + const _ = O.begin.valueOf(); + h.getTransport().cancel(_); + const R = (v + 1) * u - 0.5, E = Math.max(h.getTransport().seconds, R) + 0.1; + h.getTransport().schedule(() => { + y(v + 1); + }, E), M?.filter((g) => g.part.begin.equals(g.whole?.begin)).forEach((g) => { + h.getTransport().schedule((D) => { + n(D, g, h.getContext().currentTime), h.Draw.schedule(() => { + a?.(D, g); + }, D); + }, g.part.begin.valueOf()); + }); }; - - useEffect(() => { - ready && query(); - }, [onEvent, onSchedule, onQuery, onDraw, ready]); - - const start = async () => { - setStarted(true); - await Tone.start(); - Tone.getTransport().start('+0.1'); + S(() => { + l && y(); + }, [n, c, r, a, l]); + const w = async () => { + t(!0), await h.start(), h.getTransport().start("+0.1"); + }, p = () => { + h.getTransport().pause(), t(!1); }; - const stop = () => { - Tone.getTransport().pause(); - setStarted(false); - }; - const toggle = () => (started ? stop() : start()); return { - start, - stop, - onEvent, - started, - setStarted, - toggle, - query, - activeCycle, + start: w, + stop: p, + onEvent: n, + started: m, + setStarted: t, + toggle: () => m ? p() : w(), + query: y, + activeCycle: o }; } - -/* -usePostMessage.mjs - -Copyright (C) 2022 Strudel contributors - see -This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -*/ - -function usePostMessage(listener) { - useEffect(() => { - window.addEventListener('message', listener); - return () => window.removeEventListener('message', listener); - }, [listener]); - return useCallback((data) => window.postMessage(data, '*'), []); +function pe(e) { + return S(() => (window.addEventListener("message", e), () => window.removeEventListener("message", e)), [e]), C((n) => window.postMessage(n, "*"), []); } +let he = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1); +const be = (e) => encodeURIComponent(btoa(e)); +function ye({ tune: e, autolink: n = !0, onEvent: r, onDraw: c }) { + const l = L(() => he(), []), [a, m] = b(e), [t, u] = b(), [o, y] = b(""), [w, p] = b(), [q, v] = b(!1), [O, M] = b(""), [_, R] = b(), E = L(() => a !== t || w, [a, t, w]), g = C((f) => y((s) => s + `${s ? ` -/* -useRepl.mjs - -Copyright (C) 2022 Strudel contributors - see -This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -*/ - -let s4 = () => { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); -}; -const generateHash = (code) => encodeURIComponent(btoa(code)); - -function useRepl({ tune, autolink = true, onEvent, onDraw: onDrawProp }) { - const id = useMemo(() => s4(), []); - const [code, setCode] = useState(tune); - const [activeCode, setActiveCode] = useState(); - const [log, setLog] = useState(''); - const [error, setError] = useState(); - const [pending, setPending] = useState(false); - const [hash, setHash] = useState(''); - const [pattern, setPattern] = useState(); - const dirty = useMemo(() => code !== activeCode || error, [code, activeCode, error]); - const pushLog = useCallback((message) => setLog((log) => log + `${log ? '\n\n' : ''}${message}`), []); - - // below block allows disabling the highlighting by including "strudel disable-highlighting" in the code (as comment) - const onDraw = useMemo(() => { - if (activeCode && !activeCode.includes('strudel disable-highlighting')) { - return (time, event) => onDrawProp?.(time, event, activeCode); - } - }, [activeCode, onDrawProp]); - - const hideHeader = useMemo(() => activeCode && activeCode.includes('strudel hide-header'), [activeCode]); - const hideConsole = useMemo(() => activeCode && activeCode.includes('strudel hide-console'), [activeCode]); - // cycle hook to control scheduling - const cycle = useCycle({ - onDraw, - onEvent: useCallback( - (time, event, currentTime) => { +` : ""}${f}`), []), D = L(() => { + if (t && !t.includes("strudel disable-highlighting")) + return (f, s) => c?.(f, s, t); + }, [t, c]), z = L(() => t && t.includes("strudel hide-header"), [t]), N = L(() => t && t.includes("strudel hide-console"), [t]), F = ge({ + onDraw: D, + onEvent: C( + (f, s, J) => { try { - onEvent?.(event); - if (event.context.logs?.length) { - event.context.logs.forEach(pushLog); - } - const { onTrigger = webaudioOutputTrigger } = event.context; - onTrigger(time, event, currentTime, 1 /* cps */); - } catch (err) { - console.warn(err); - err.message = 'unplayable event: ' + err?.message; - pushLog(err.message); // not with setError, because then we would have to setError(undefined) on next playable event + r?.(s), s.context.logs?.length && s.context.logs.forEach(g); + const { onTrigger: A = se } = s.context; + A(f, s, J, 1); + } catch (A) { + console.warn(A), A.message = "unplayable event: " + A?.message, g(A.message); } }, - [onEvent, pushLog], + [r, g] ), - onQuery: useCallback( - (state) => { + onQuery: C( + (f) => { try { - return pattern?.query(state) || []; - } catch (err) { - console.warn(err); - err.message = 'query error: ' + err.message; - setError(err); - return []; + return _?.query(f) || []; + } catch (s) { + return console.warn(s), s.message = "query error: " + s.message, p(s), []; } }, - [pattern], + [_] ), - onSchedule: useCallback((_events, cycle) => logCycle(_events), []), - ready: !!pattern && !!activeCode, - }); - - const broadcast = usePostMessage(({ data: { from, type } }) => { - if (type === 'start' && from !== id) { - // console.log('message', from, type); - cycle.setStarted(false); - setActiveCode(undefined); - } - }); - - const activateCode = useCallback( - async (_code = code) => { - if (activeCode && !dirty) { - setError(undefined); - cycle.start(); + onSchedule: C((f, s) => G(f), []), + ready: !!_ && !!t + }), V = pe(({ data: { from: f, type: s } }) => { + s === "start" && f !== l && (F.setStarted(!1), u(void 0)); + }), I = C( + async (f = a) => { + if (t && !E) { + p(void 0), F.start(); return; } try { - setPending(true); - const parsed = await evaluate(_code); - cycle.start(); - broadcast({ type: 'start', from: id }); - setPattern(() => parsed.pattern); - if (autolink) { - window.location.hash = '#' + encodeURIComponent(btoa(code)); - } - setHash(generateHash(code)); - setError(undefined); - setActiveCode(_code); - setPending(false); - } catch (err) { - err.message = 'evaluation error: ' + err.message; - console.warn(err); - setError(err); + v(!0); + const s = await ne(f); + F.start(), V({ type: "start", from: l }), R(() => s.pattern), n && (window.location.hash = "#" + encodeURIComponent(btoa(a))), M(be(a)), p(void 0), u(f), v(!1); + } catch (s) { + s.message = "evaluation error: " + s.message, console.warn(s), p(s); } }, - [activeCode, dirty, code, cycle, autolink, id, broadcast], - ); - // logs events of cycle - const logCycle = (_events, cycle) => { - if (_events.length) ; + [t, E, a, F, n, l, V] + ), G = (f, s) => { + f.length; }; - - const togglePlay = () => { - if (!cycle.started) { - activateCode(); - } else { - cycle.stop(); - } - }; - return { - hideHeader, - hideConsole, - pending, - code, - setCode, - pattern, - error, - cycle, - setPattern, - dirty, - log, - togglePlay, - setActiveCode, - activateCode, - activeCode, - pushLog, - hash, + hideHeader: z, + hideConsole: N, + pending: q, + code: a, + setCode: m, + pattern: _, + error: w, + cycle: F, + setPattern: R, + dirty: E, + log: o, + togglePlay: () => { + F.started ? F.stop() : I(); + }, + setActiveCode: u, + activateCode: I, + activeCode: t, + pushLog: g, + hash: O }; } - -/* -cx.js - -Copyright (C) 2022 Strudel contributors - see -This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -*/ - -function cx(...classes) { - // : Array - return classes.filter(Boolean).join(' '); +function W(...e) { + return e.filter(Boolean).join(" "); } - -let highlights = []; // actively highlighted events -let lastEnd; - -function useHighlighting({ view, pattern, active }) { - useEffect(() => { - if (view) { - if (pattern && active) { - let frame = requestAnimationFrame(updateHighlights); - - function updateHighlights() { +let H = [], U; +function we({ view: e, pattern: n, active: r }) { + S(() => { + if (e) + if (n && r) { + let l = function() { try { - const audioTime = Tone.getTransport().seconds; - // force min framerate of 10 fps => fixes crash on tab refocus, where lastEnd could be far away - // see https://github.com/tidalcycles/strudel/issues/108 - const begin = Math.max(lastEnd || audioTime, audioTime - 1 / 10); - const span = [begin, audioTime + 1 / 60]; - lastEnd = audioTime + 1 / 60; - highlights = highlights.filter((hap) => hap.whole.end > audioTime); // keep only highlights that are still active - const haps = pattern.queryArc(...span).filter((hap) => hap.hasOnset()); - highlights = highlights.concat(haps); // add potential new onsets - view.dispatch({ effects: setHighlights.of(highlights) }); // highlight all still active + new active haps - } catch (err) { - // console.log('error in updateHighlights', err); - view.dispatch({ effects: setHighlights.of([]) }); + const a = h.getTransport().seconds, t = [Math.max(U || a, a - 1 / 10), a + 1 / 60]; + U = a + 1 / 60, H = H.filter((o) => o.whole.end > a); + const u = n.queryArc(...t).filter((o) => o.hasOnset()); + H = H.concat(u), e.dispatch({ effects: B.of(H) }); + } catch { + e.dispatch({ effects: B.of([]) }); } - frame = requestAnimationFrame(updateHighlights); - } - + c = requestAnimationFrame(l); + }, c = requestAnimationFrame(l); return () => { - cancelAnimationFrame(frame); + cancelAnimationFrame(c); }; - } else { - highlights = []; - view.dispatch({ effects: setHighlights.of([]) }); - } - } - }, [pattern, active, view]); + } else + H = [], e.dispatch({ effects: B.of([]) }); + }, [n, r, e]); } - -var tailwind = ''; - -const container = "_container_3i85k_1"; -const header = "_header_3i85k_5"; -const buttons = "_buttons_3i85k_9"; -const button = "_button_3i85k_9"; -const buttonDisabled = "_buttonDisabled_3i85k_17"; -const error = "_error_3i85k_21"; -const body = "_body_3i85k_25"; -var styles = { - container: container, - header: header, - buttons: buttons, - button: button, - buttonDisabled: buttonDisabled, - error: error, - body: body +const ve = "_container_3i85k_1", Ee = "_header_3i85k_5", ke = "_buttons_3i85k_9", Ce = "_button_3i85k_9", Me = "_buttonDisabled_3i85k_17", _e = "_error_3i85k_21", Ne = "_body_3i85k_25", T = { + container: ve, + header: Ee, + buttons: ke, + button: Ce, + buttonDisabled: Me, + error: _e, + body: Ne }; - -function Icon({ type }) { - return /* @__PURE__ */ React.createElement("svg", { +function $({ type: e }) { + return /* @__PURE__ */ d.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "sc-h-5 sc-w-5", viewBox: "0 0 20 20", fill: "currentColor" }, { - refresh: /* @__PURE__ */ React.createElement("path", { + refresh: /* @__PURE__ */ d.createElement("path", { fillRule: "evenodd", d: "M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z", clipRule: "evenodd" }), - play: /* @__PURE__ */ React.createElement("path", { + play: /* @__PURE__ */ d.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z", clipRule: "evenodd" }), - pause: /* @__PURE__ */ React.createElement("path", { + pause: /* @__PURE__ */ d.createElement("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z", clipRule: "evenodd" }) - }[type]); + }[e]); } - -function MiniRepl({ tune, hideOutsideView = false, init, onEvent, enableKeyboard }) { - const { code, setCode, pattern, activeCode, activateCode, evaluateOnly, error, cycle, dirty, togglePlay, stop } = useRepl({ - tune, - autolink: false, - onEvent +function Ve({ tune: e, hideOutsideView: n = !1, init: r, onEvent: c, enableKeyboard: l }) { + const { code: a, setCode: m, pattern: t, activeCode: u, activateCode: o, evaluateOnly: y, error: w, cycle: p, dirty: q, togglePlay: v, stop: O } = ye({ + tune: e, + autolink: !1, + onEvent: c }); - useEffect(() => { - init && evaluateOnly(); - }, [tune, init]); - const [view, setView] = useState(); - const [ref, isVisible] = useInView({ + S(() => { + r && y(); + }, [e, r]); + const [M, _] = b(), [R, E] = oe({ threshold: 0.01 - }); - const wasVisible = useRef(); - const show = useMemo(() => { - if (isVisible || !hideOutsideView) { - wasVisible.current = true; - } - return isVisible || wasVisible.current; - }, [isVisible, hideOutsideView]); - useHighlighting({ view, pattern, active: cycle.started && !activeCode?.includes("strudel disable-highlighting") }); - useLayoutEffect(() => { - if (enableKeyboard) { - const handleKeyPress = async (e) => { - if (e.ctrlKey || e.altKey) { - if (e.code === "Enter") { - e.preventDefault(); - flash(view); - await activateCode(); - } else if (e.code === "Period") { - cycle.stop(); - e.preventDefault(); - } - } + }), g = X(), D = L(() => ((E || !n) && (g.current = !0), E || g.current), [E, n]); + return we({ view: M, pattern: t, active: p.started && !u?.includes("strudel disable-highlighting") }), Y(() => { + if (l) { + const z = async (N) => { + (N.ctrlKey || N.altKey) && (N.code === "Enter" ? (N.preventDefault(), de(M), await o()) : N.code === "Period" && (p.stop(), N.preventDefault())); }; - window.addEventListener("keydown", handleKeyPress, true); - return () => window.removeEventListener("keydown", handleKeyPress, true); + return window.addEventListener("keydown", z, !0), () => window.removeEventListener("keydown", z, !0); } - }, [enableKeyboard, pattern, code, activateCode, cycle, view]); - return /* @__PURE__ */ React.createElement("div", { - className: styles.container, - ref - }, /* @__PURE__ */ React.createElement("div", { - className: styles.header - }, /* @__PURE__ */ React.createElement("div", { - className: styles.buttons - }, /* @__PURE__ */ React.createElement("button", { - className: cx(styles.button, cycle.started ? "sc-animate-pulse" : ""), - onClick: () => togglePlay() - }, /* @__PURE__ */ React.createElement(Icon, { - type: cycle.started ? "pause" : "play" - })), /* @__PURE__ */ React.createElement("button", { - className: cx(dirty ? styles.button : styles.buttonDisabled), - onClick: () => activateCode() - }, /* @__PURE__ */ React.createElement(Icon, { + }, [l, t, a, o, p, M]), /* @__PURE__ */ d.createElement("div", { + className: T.container, + ref: R + }, /* @__PURE__ */ d.createElement("div", { + className: T.header + }, /* @__PURE__ */ d.createElement("div", { + className: T.buttons + }, /* @__PURE__ */ d.createElement("button", { + className: W(T.button, p.started ? "sc-animate-pulse" : ""), + onClick: () => v() + }, /* @__PURE__ */ d.createElement($, { + type: p.started ? "pause" : "play" + })), /* @__PURE__ */ d.createElement("button", { + className: W(q ? T.button : T.buttonDisabled), + onClick: () => o() + }, /* @__PURE__ */ d.createElement($, { type: "refresh" - }))), error && /* @__PURE__ */ React.createElement("div", { - className: styles.error - }, error.message)), /* @__PURE__ */ React.createElement("div", { - className: styles.body - }, show && /* @__PURE__ */ React.createElement(CodeMirror, { - value: code, - onChange: setCode, - onViewChanged: setView + }))), w && /* @__PURE__ */ d.createElement("div", { + className: T.error + }, w.message)), /* @__PURE__ */ d.createElement("div", { + className: T.body + }, D && /* @__PURE__ */ d.createElement(me, { + value: a, + onChange: m, + onViewChanged: _ }))); } - -/* -useWebMidi.js - -Copyright (C) 2022 Strudel contributors - see -This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -*/ - -function useWebMidi(props) { - const { ready, connected, disconnected } = props; - const [loading, setLoading] = useState(true); - const [outputs, setOutputs] = useState(WebMidi?.outputs || []); - useEffect(() => { - enableWebMidi() - .then(() => { - // Reacting when a new device becomes available - WebMidi.addListener('connected', (e) => { - setOutputs([...WebMidi.outputs]); - connected?.(WebMidi, e); - }); - // Reacting when a device becomes unavailable - WebMidi.addListener('disconnected', (e) => { - setOutputs([...WebMidi.outputs]); - disconnected?.(WebMidi, e); - }); - ready?.(WebMidi); - setLoading(false); - }) - .catch((err) => { - if (err) { - console.error(err); - //throw new Error("Web Midi could not be enabled..."); - console.warn('Web Midi could not be enabled..'); - return; - } - }); - }, [ready, connected, disconnected, outputs]); - const outputByName = (name) => WebMidi.getOutputByName(name); - return { loading, outputs, outputByName }; +function Ie(e) { + const { ready: n, connected: r, disconnected: c } = e, [l, a] = b(!0), [m, t] = b(k?.outputs || []); + return S(() => { + ce().then(() => { + k.addListener("connected", (o) => { + t([...k.outputs]), r?.(k, o); + }), k.addListener("disconnected", (o) => { + t([...k.outputs]), c?.(k, o); + }), n?.(k), a(!1); + }).catch((o) => { + if (o) { + console.error(o), console.warn("Web Midi could not be enabled.."); + return; + } + }); + }, [n, r, c, m]), { loading: l, outputs: m, outputByName: (o) => k.getOutputByName(o) }; } - -export { CodeMirror, MiniRepl, cx, flash, useCycle, useHighlighting, usePostMessage, useRepl, useWebMidi }; +export { + me as CodeMirror, + Ve as MiniRepl, + W as cx, + de as flash, + ge as useCycle, + we as useHighlighting, + pe as usePostMessage, + ye as useRepl, + Ie as useWebMidi +}; diff --git a/packages/react/dist/style.css b/packages/react/dist/style.css index 41602289..ba86df52 100644 --- a/packages/react/dist/style.css +++ b/packages/react/dist/style.css @@ -1 +1 @@ -.cm-editor{background-color:transparent!important;height:100%;z-index:11;font-size:16px}.cm-theme-light{width:100%}.cm-line>*{background:#00000095}*,:before,:after{--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sc-h-5{height:1.25rem}.sc-w-5{width:1.25rem}@keyframes sc-pulse{50%{opacity:.5}}.sc-animate-pulse{animation:sc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}._container_3i85k_1{overflow:hidden;border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(34 34 34 / var(--tw-bg-opacity))}._header_3i85k_5{display:flex;justify-content:space-between;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}._buttons_3i85k_9{display:flex}._button_3i85k_9{display:flex;width:4rem;cursor:pointer;align-items:center;justify-content:center;border-right-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}._button_3i85k_9:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}._buttonDisabled_3i85k_17{display:flex;width:4rem;cursor:pointer;cursor:not-allowed;align-items:center;justify-content:center;--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}._error_3i85k_21{padding:.25rem;text-align:right;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}._body_3i85k_25{position:relative;overflow:auto} +.cm-editor{background-color:transparent!important;height:100%;z-index:11;font-size:16px}.cm-theme-light{width:100%}.cm-line>*{background:#00000095}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sc-h-5{height:1.25rem}.sc-w-5{width:1.25rem}@keyframes sc-pulse{50%{opacity:.5}}.sc-animate-pulse{animation:sc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}._container_3i85k_1{overflow:hidden;border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(34 34 34 / var(--tw-bg-opacity))}._header_3i85k_5{display:flex;justify-content:space-between;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}._buttons_3i85k_9{display:flex}._button_3i85k_9{display:flex;width:4rem;cursor:pointer;align-items:center;justify-content:center;border-right-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}._button_3i85k_9:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}._buttonDisabled_3i85k_17{display:flex;width:4rem;cursor:pointer;cursor:not-allowed;align-items:center;justify-content:center;--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}._error_3i85k_21{padding:.25rem;text-align:right;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}._body_3i85k_25{position:relative;overflow:auto} diff --git a/packages/react/package.json b/packages/react/package.json index f9487246..0c0c2087 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -58,6 +58,6 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "tailwindcss": "^3.0.24", - "vite": "^2.9.9" + "vite": "^3.2.2" } } diff --git a/packages/react/src/App.jsx b/packages/react/src/App.jsx index 7cec6382..f9542529 100644 --- a/packages/react/src/App.jsx +++ b/packages/react/src/App.jsx @@ -2,8 +2,10 @@ import React from 'react'; import { MiniRepl } from './components/MiniRepl'; import 'tailwindcss/tailwind.css'; import { evalScope } from '@strudel.cycles/eval'; +import { controls } from '@strudel.cycles/core'; evalScope( + controls, import('@strudel.cycles/core'), import('@strudel.cycles/tone'), import('@strudel.cycles/tonal'), diff --git a/repl/package-lock.json b/repl/package-lock.json index ba6a8611..f377a5cc 100644 --- a/repl/package-lock.json +++ b/repl/package-lock.json @@ -780,9 +780,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001341", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", - "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "version": "1.0.30001430", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz", + "integrity": "sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg==", "dev": true, "funding": [ { @@ -3130,9 +3130,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001341", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", - "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "version": "1.0.30001430", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz", + "integrity": "sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg==", "dev": true }, "chalk": {