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}
/>
{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}
/>
);
})}
);
}