From a87daf3d21b14cda8527c4ee04645c46cdad0144 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 22 Jan 2026 01:31:23 +0100 Subject: [PATCH] fix: patterns tab performance --- website/src/repl/components/panel/PatternsTab.jsx | 9 ++++----- website/src/user_pattern_utils.mjs | 11 ++++------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/website/src/repl/components/panel/PatternsTab.jsx b/website/src/repl/components/panel/PatternsTab.jsx index 3423c57ab..44b280fb3 100644 --- a/website/src/repl/components/panel/PatternsTab.jsx +++ b/website/src/repl/components/panel/PatternsTab.jsx @@ -53,8 +53,7 @@ function PatternButton({ showOutline, onClick, pattern, showHiglight }) { } function PatternButtons({ patterns, activePattern, onClick, started }) { - const viewingPatternStore = useViewingPatternData(); - const viewingPatternData = parseJSON(viewingPatternStore); + const viewingPatternData = useViewingPatternData(); const viewingPatternID = viewingPatternData.id; return (
@@ -83,8 +82,8 @@ const updateCodeWindow = (context, patternData, reset = false) => { export function PatternsTab({ context }) { const [search, setSearch] = useState(''); const activePattern = useActivePattern(); - const viewingPatternStore = useViewingPatternData(); - const viewingPatternData = parseJSON(viewingPatternStore); + const viewingPatternData = useViewingPatternData(); + const { userPatterns, patternAutoStart } = useSettings(); const viewingPatternID = viewingPatternData?.id; @@ -121,7 +120,7 @@ export function PatternsTab({ context }) { ); }), ); - }, [search, viewingPatternStore]); + }, [search, userPatterns]); const importRef = useRef(); return ( 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));