welcome
You have found strudel, a new live coding platform to write dynamic music
diff --git a/website/src/repl/components/useLogger.jsx b/website/src/repl/components/useLogger.jsx
index fdd56606d..4a87ac075 100644
--- a/website/src/repl/components/useLogger.jsx
+++ b/website/src/repl/components/useLogger.jsx
@@ -21,7 +21,7 @@ function getUpdatedLog(log, event) {
} else {
log = log.concat([{ message, type, id, data }]);
}
- return log.slice(-20);
+ return log.slice(-40);
}
export function useLogger() {
diff --git a/website/src/settings.mjs b/website/src/settings.mjs
index 65c142683..7c0ec25ff 100644
--- a/website/src/settings.mjs
+++ b/website/src/settings.mjs
@@ -2,6 +2,7 @@ import { persistentMap } from '@nanostores/persistent';
import { useStore } from '@nanostores/react';
import { register } from '@strudel/core';
import { isUdels } from './repl/util.mjs';
+import { computed } from 'nanostores';
export const audioEngineTargets = {
webaudio: 'webaudio',
@@ -38,6 +39,7 @@ export const defaultSettings = {
latestCode: '',
isZen: false,
soundsFilter: soundFilterType.ALL,
+ referenceTag: 'all',
patternFilter: 'community',
// panelPosition: window.innerWidth > 1000 ? 'right' : 'bottom', //FIX: does not work on astro
panelPosition: 'right',
@@ -63,11 +65,7 @@ const settings_key = `strudel-settings${instance > 0 ? instance : ''}`;
export const settingsMap = persistentMap(settings_key, defaultSettings);
-export const parseBoolean = (booleanlike) => ([true, 'true'].includes(booleanlike) ? true : false);
-
-export function useSettings() {
- const state = useStore(settingsMap);
-
+export const $settings = computed(settingsMap, (state) => {
const userPatterns = JSON.parse(state.userPatterns);
Object.keys(userPatterns).forEach((key) => {
const data = userPatterns[key];
@@ -104,6 +102,12 @@ export function useSettings() {
? true
: parseBoolean(state.patternAutoStart),
};
+});
+
+export const parseBoolean = (booleanlike) => ([true, 'true'].includes(booleanlike) ? true : false);
+
+export function useSettings() {
+ return useStore($settings);
}
export const setActiveFooter = (tab) => settingsMap.setKey('activeFooter', tab);
diff --git a/website/src/user_pattern_utils.mjs b/website/src/user_pattern_utils.mjs
index f087c69e0..8c452ee8d 100644
--- a/website/src/user_pattern_utils.mjs
+++ b/website/src/user_pattern_utils.mjs
@@ -1,4 +1,4 @@
-import { atom } from 'nanostores';
+import { atom, computed } from 'nanostores';
import { useStore } from '@nanostores/react';
import { logger } from '@strudel/core';
import { nanoid } from 'nanoid';
@@ -36,12 +36,9 @@ export let $viewingPatternData = sessionAtom('viewingPatternData', {
created_at: Date.now(),
});
-export const getViewingPatternData = () => {
- return parseJSON($viewingPatternData.get());
-};
-export const useViewingPatternData = () => {
- return useStore($viewingPatternData);
-};
+const $viewingPatterns = computed($viewingPatternData, (state) => parseJSON(state));
+export const useViewingPatternData = () => useStore($viewingPatterns);
+export const getViewingPatternData = () => $viewingPatterns.get();
export const setViewingPatternData = (data) => {
$viewingPatternData.set(JSON.stringify(data));