CoolFace
Apppublic

admin08077/Githubgemini

sourceHugging Faceotherupdated 10mo agoView on Hugging Face
0likes
OneClickRefactor-C0IfP34K.js.map1 linesDownload Raw Back to assets
1{"version":3,"file":"OneClickRefactor-C0IfP34K.js","sources":["../../components/features/OneClickRefactor.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport * as Diff from 'diff';\nimport { applySpecificRefactor, refactorForPerformance, refactorForReadability, generateJsDoc, convertToFunctionalComponent } from '../../services/aiService.ts';\nimport { SparklesIcon } from '../icons.tsx';\nimport { LoadingSpinner } from '../shared/index.tsx';\n\ntype RefactorAction = 'readability' | 'performance' | 'jsdoc' | 'functional' | 'custom';\n\nconst exampleCode = `const MyComponent = ({ data }) => {\n  // A less readable component\n  let transformedData = [];\n  for (let i = 0; i < data.length; i++) {\n    if (data[i].value > 50) {\n      let item = { ...data[i], status: 'high' };\n      transformedData.push(item);\n    }\n  }\n  return (\n    <div>\n      {transformedData.map(d => <p key={d.id}>{d.name}</p>)}\n    </div>\n  );\n}`;\n\nconst DiffViewer: React.FC<{ oldCode: string, newCode: string }> = ({ oldCode, newCode }) => {\n    const diff = Diff.diffLines(oldCode, newCode);\n\n    return (\n        <pre className=\"whitespace-pre-wrap font-mono text-xs\">\n            {diff.map((part, index) => {\n                const color = part.added ? 'bg-green-500/20' : part.removed ? 'bg-red-500/20' : 'bg-transparent';\n                return <div key={index} className={color}>{part.value}</div>;\n            })}\n        </pre>\n    );\n};\n\n\nexport const OneClickRefactor: React.FC = () => {\n    const [code, setCode] = useState(exampleCode);\n    const [refactoredCode, setRefactoredCode] = useState('');\n    const [loadingAction, setLoadingAction] = useState<RefactorAction | null>(null);\n\n    const handleRefactor = useCallback(async (action: RefactorAction) => {\n        if (!code.trim()) return;\n        setLoadingAction(action);\n        setRefactoredCode('');\n\n        let stream;\n        switch(action) {\n            case 'readability':\n                stream = refactorForReadability(code);\n                break;\n            case 'performance':\n                stream = refactorForPerformance(code);\n                break;\n            case 'jsdoc':\n                stream = generateJsDoc(code);\n                break;\n            case 'functional':\n                stream = convertToFunctionalComponent(code);\n                break;\n            default:\n                setLoadingAction(null);\n                return;\n        }\n\n        try {\n            let fullResponse = '';\n            for await (const chunk of stream) {\n                fullResponse += chunk;\n                setRefactoredCode(fullResponse.replace(/^```(?:\\w+\\n)?/, '').replace(/```$/, ''));\n            }\n        } catch (e) {\n            console.error(e);\n            setRefactoredCode(`// Error during refactoring: ${e instanceof Error ? e.message : 'Unknown error'}`);\n        } finally {\n            setLoadingAction(null);\n        }\n    }, [code]);\n\n    return (\n        <div className=\"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary\">\n            <header className=\"mb-6\">\n                <h1 className=\"text-3xl font-bold flex items-center\">\n                    <SparklesIcon />\n                    <span className=\"ml-3\">One-Click Refactor</span>\n                </h1>\n                <p className=\"text-text-secondary mt-1\">Apply common refactoring patterns to your code with a single click.</p>\n            </header>\n            <div className=\"flex items-center justify-center flex-wrap gap-2 mb-4 p-4 bg-surface rounded-lg border border-border\">\n                <button onClick={() => handleRefactor('readability')} disabled={!!loadingAction} className=\"btn-primary px-3 py-1.5 text-sm\">{loadingAction === 'readability' ? <LoadingSpinner/> : 'Improve Readability'}</button>\n                <button onClick={() => handleRefactor('performance')} disabled={!!loadingAction} className=\"btn-primary px-3 py-1.5 text-sm\">{loadingAction === 'performance' ? <LoadingSpinner/> : 'Boost Performance'}</button>\n                <button onClick={() => handleRefactor('jsdoc')} disabled={!!loadingAction} className=\"btn-primary px-3 py-1.5 text-sm\">{loadingAction === 'jsdoc' ? <LoadingSpinner/> : 'Add JSDoc'}</button>\n                <button onClick={() => handleRefactor('functional')} disabled={!!loadingAction} className=\"btn-primary px-3 py-1.5 text-sm\">{loadingAction === 'functional' ? <LoadingSpinner/> : 'To Functional Component'}</button>\n            </div>\n            <div className=\"flex-grow grid grid-cols-1 lg:grid-cols-2 gap-6 min-h-0\">\n                <div className=\"flex flex-col\">\n                    <label className=\"text-sm font-medium mb-2\">Original Code</label>\n                    <textarea value={code} onChange={e => setCode(e.target.value)} className=\"flex-grow p-2 bg-surface border rounded font-mono text-xs\"/>\n                </div>\n                 <div className=\"flex flex-col\">\n                    <label className=\"text-sm font-medium mb-2\">Refactored Code</label>\n                    <div className=\"flex-grow p-2 bg-background border rounded overflow-auto\">\n                        {loadingAction ? <div className=\"flex justify-center items-center h-full\"><LoadingSpinner/></div> : <DiffViewer oldCode={code} newCode={refactoredCode} />}\n                    </div>\n                </div>\n            </div>\n        </div>\n    );\n};\n"],"names":["exampleCode","DiffViewer","oldCode","newCode","diff","Diff.diffLines","jsx","part","index","color","OneClickRefactor","code","setCode","useState","refactoredCode","setRefactoredCode","loadingAction","setLoadingAction","handleRefactor","useCallback","action","stream","refactorForReadability","refactorForPerformance","generateJsDoc","convertToFunctionalComponent","fullResponse","chunk","e","jsxs","SparklesIcon","LoadingSpinner"],"mappings":"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"}