import { DocumentDuplicateIcon, TrashIcon } from '@heroicons/react/20/solid'; import { useSettings } from '../../settings.mjs'; import { exportPatterns, importPatterns, useActivePattern, useViewingPatternData, userPattern, } from '../../user_pattern_utils.mjs'; import { useMemo } from 'react'; import { getMetadata } from '../../metadata_parser'; import { useExamplePatterns } from '../useExamplePatterns'; import { parseJSON } from '../util.mjs'; function classNames(...classes) { return classes.filter(Boolean).join(' '); } function PatternLabel({ pattern } /* : { pattern: Tables<'code'> } */) { const meta = useMemo(() => getMetadata(pattern.code), [pattern]); return ( <>{`${pattern.id}: ${ meta.title ?? pattern.hash ?? pattern.created_at != null ? new Date(pattern.created_at).toLocaleDateString() : 'unnamed' } by ${Array.isArray(meta.by) ? meta.by.join(',') : 'Anonymous'}`} ); } function PatternButton({ showOutline, onClick, pattern, showHiglight }) { return ( ); } function PatternButtons({ patterns, activePattern, onClick, started }) { const viewingPatternStore = useViewingPatternData(); const viewingPatternData = parseJSON(viewingPatternStore); const viewingPatternID = viewingPatternData.id; return (
{Object.values(patterns) .reverse() .map((pattern) => { const id = pattern.id; return ( onClick(id)} /> ); })}
); } function ActionButton({ children, onClick, label, labelIsHidden }) { return ( ); } export function PatternsTab({ context }) { const activePattern = useActivePattern(); const viewingPatternStore = useViewingPatternData(); const viewingPatternData = parseJSON(viewingPatternStore); const { userPatterns } = useSettings(); const examplePatterns = useExamplePatterns(); const collections = examplePatterns.collections; const updateCodeWindow = (patternData, reset = false) => { context.handleUpdate(patternData, reset); }; const viewingPatternID = viewingPatternData?.id; const viewingIDIsValid = userPattern.isValidID(viewingPatternID); const isUserPattern = userPatterns[viewingPatternID] != null; return (
{viewingIDIsValid && (

{`${viewingPatternID}`}

{ const { data } = userPattern.duplicate(viewingPatternData); updateCodeWindow(data); }} labelIsHidden > {isUserPattern && ( { const { data } = userPattern.delete(viewingPatternID); updateCodeWindow({ ...data, collection: userPattern.collection }); }} labelIsHidden > )}
)} updateCodeWindow({ ...userPatterns[id], collection: userPattern.collection }, false)} patterns={userPatterns} started={context.started} activePattern={activePattern} viewingPatternID={viewingPatternID} />
{ const { data } = userPattern.createAndAddToDB(); updateCodeWindow(data); }} /> { const { data } = userPattern.clearAll(); updateCodeWindow(data); }} />
{Array.from(collections.keys()).map((collection) => { const patterns = collections.get(collection); return (

{collection}

updateCodeWindow({ ...patterns[id], collection }, false)} started={context.started} patterns={patterns} activePattern={activePattern} />
); })}
); }