import { DocumentDuplicateIcon, PencilSquareIcon, TrashIcon } from '@heroicons/react/20/solid'; import { clearUserPatterns, deletePattern, createDuplicatePattern, exportPatterns, addUserPattern, importPatterns, createNewUserPattern, renamePattern, useActivePattern, useViewingPattern, useSettings, } from '../../settings.mjs'; import * as tunes from '../tunes.mjs'; function classNames(...classes) { return classes.filter(Boolean).join(' '); } function PatternButton({ showOutline, onClick, label, showHiglight }) { return ( {label} ); } function PatternButtons({ patterns, activePattern, onClick, viewingPattern }) { return (
{Object.entries(patterns).map(([key, data]) => ( onClick(key, data)} /> ))}
); } export function PatternsTab({ context }) { const { userPatterns } = useSettings(); const activePattern = useActivePattern(); const viewingPattern = useViewingPattern(); const onPatternClick = (pattern, data) => { // display selected pattern code in the window context.handleUpdate({ pattern, code: data.code, evaluate: false }); }; const addPattern = ({ pattern, code }) => { addUserPattern(pattern, { code }); context.handleUpdate({ code, pattern, evaluate: false }); }; const examplePatterns = {}; Object.entries(tunes).forEach(([key, code]) => (examplePatterns[key] = { code })); const isExample = examplePatterns[viewingPattern] != null; return (
{viewingPattern && (

{viewingPattern}

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

Examples

); }