diff --git a/website/src/repl/Repl.jsx b/website/src/repl/Repl.jsx
index 75ef0278..384e78d3 100644
--- a/website/src/repl/Repl.jsx
+++ b/website/src/repl/Repl.jsx
@@ -157,9 +157,9 @@ export function Repl({ embedded = false }) {
const handleTogglePlay = async () => editorRef.current?.toggle();
- // payload = {reset?: boolean, code?: string, evaluate?: boolean, patternID?: string }
+ // payload = {reset?: boolean, code?: string, evaluate?: boolean, pattern?: string }
const handleUpdate = async (payload) => {
- const { reset = false, code = null, evaluate = true, patternID = null } = payload;
+ const { reset = false, code = null, evaluate = true, pattern = null } = payload;
if (reset) {
clearCanvas();
@@ -167,9 +167,9 @@ export function Repl({ embedded = false }) {
editorRef.current.repl.setCps(1);
await prebake(); // declare default samples
}
- if (code != null) {
+ if (code != null && pattern != null) {
editorRef.current.setCode(code);
- setViewingPattern(patternID);
+ setViewingPattern(pattern);
}
if (evaluate) {
editorRef.current.evaluate();
diff --git a/website/src/repl/panel/PatternsTab.jsx b/website/src/repl/panel/PatternsTab.jsx
index a5ded1f0..b5439220 100644
--- a/website/src/repl/panel/PatternsTab.jsx
+++ b/website/src/repl/panel/PatternsTab.jsx
@@ -1,13 +1,13 @@
import { DocumentDuplicateIcon, PencilSquareIcon, TrashIcon } from '@heroicons/react/20/solid';
-import { useMemo } from 'react';
+
import {
clearUserPatterns,
deletePattern,
- duplicatePattern,
+ createDuplicatePattern,
exportPatterns,
- getUserPattern,
+ addUserPattern,
importPatterns,
- newUserPattern,
+ createNewUserPattern,
renamePattern,
useActivePattern,
useViewingPattern,
@@ -55,9 +55,14 @@ export function PatternsTab({ context }) {
const activePattern = useActivePattern();
const viewingPattern = useViewingPattern();
// const isExample = useMemo(() => activePattern && !!tunes[activePattern], [activePattern]);
- const onPatternClick = (key, data) => {
+ const onPatternClick = (pattern, data) => {
// display selected pattern code in the window
- context.handleUpdate({ patternID: key, code: data.code, evaluate: false });
+ context.handleUpdate({ pattern, code: data.code, evaluate: false });
+ };
+
+ const addPattern = ({ pattern, code }) => {
+ addUserPattern(pattern, { code });
+ context.handleUpdate({ code, pattern, evaluate: false });
};
const examplePatterns = {};
@@ -76,7 +81,11 @@ export function PatternsTab({ context }) {
{/* */}
)}
-