diff --git a/website/src/settings.mjs b/website/src/settings.mjs index 16175efb1..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', @@ -64,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]; @@ -105,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);