import { DocumentDuplicateIcon, PencilSquareIcon, TrashIcon } from '@heroicons/react/20/solid'; import { useMemo } from 'react'; import { clearUserPatterns, deleteActivePattern, duplicateActivePattern, exportPatterns, getUserPattern, importPatterns, newUserPattern, renameActivePattern, setActivePattern, useActivePattern, useSettings, } from '../../settings.mjs'; import * as tunes from '../tunes.mjs'; function classNames(...classes) { return classes.filter(Boolean).join(' '); } function PatternButton({ isActive, onClick, label }) { return ( {label} ); } function PatternButtons({ patterns, activePattern, onClick }) { return (
{Object.entries(patterns).map(([key, data]) => ( onClick(key, data)} /> ))}
); } export function PatternsTab({ context }) { const { userPatterns } = useSettings(); const activePattern = useActivePattern(); const isExample = useMemo(() => activePattern && !!tunes[activePattern], [activePattern]); const onPatternClick = (key, data) => { const { code } = data; setActivePattern(key); context.handleUpdate({ code, evaluate: false }); }; const examplePatterns = {}; Object.entries(tunes).forEach(([key, code]) => (examplePatterns[key] = { code })); return (
{activePattern && (

{activePattern}

{!isExample && ( )} {!isExample && ( )}
)}

Examples

); }