MCPcopy Create free account
hub / github.com/Sethispr/image-compressor / RenamingControl

Function RenamingControl

components/settings/RenamingControl.tsx:21–328  ·  view source on GitHub ↗
({
  pattern,
  startSequence,
  onChange,
}: {
  pattern: string;
  startSequence: number;
  onChange: (p: string, s: number) => void;
})

Source from the content-addressed store, hash-verified

19 * Offers a "Simple Mode" (buttons) and an "Advanced Mode" (text pattern).
20 */
21export const RenamingControl = ({
22 pattern,
23 startSequence,
24 onChange,
25}: {
26 pattern: string;
27 startSequence: number;
28 onChange: (p: string, s: number) => void;
29}) => {
30 // UI States: 'simple' | 'advanced'
31 // 'simple' maps to predefined methods: original, number, prefix, suffix
32 const [uiMode, setUiMode] = useState<'simple' | 'advanced'>('simple');
33
34 // Simple Mode State
35 const [method, setMethod] = useState<
36 'original' | 'number' | 'prefix' | 'suffix'
37 >('original');
38 const [inputText, setInputText] = useState('');
39
40 // Initialize state from prop on mount only
41 // This allows the UI to reflect the current settings correctly.
42 useEffect(() => {
43 if (pattern === '{o}') {
44 setMethod('original');
45 setInputText('');
46 } else if (pattern.match(/^.*-{n}$/)) {
47 setMethod('number');
48 setInputText(pattern.replace('-{n}', ''));
49 } else if (pattern.match(/^.*-{o}$/)) {
50 setMethod('prefix');
51 setInputText(pattern.replace('-{o}', ''));
52 } else if (pattern.match(/^{o}-.*$/)) {
53 setMethod('suffix');
54 setInputText(pattern.replace('{o}-', ''));
55 } else {
56 // Complex pattern detected (e.g. user manually typed one), switch to advanced mode
57 setUiMode('advanced');
58 }
59 }, []);
60
61 // When Simple Mode inputs change, calculate the new pattern and update parent
62 useEffect(() => {
63 if (uiMode !== 'simple') return;
64
65 let newPattern = '{o}';
66 const cleanText = inputText.trim();
67
68 switch (method) {
69 case 'original':
70 newPattern = '{o}';
71 break;
72 case 'number':
73 newPattern = `${cleanText || 'Image'}-{n}`;
74 break;
75 case 'prefix':
76 newPattern = `${cleanText || 'Pre'}-{o}`;
77 break;
78 case 'suffix':

Callers

nothing calls this directly

Calls 1

getPreviewFunction · 0.85

Tested by

no test coverage detected