{"version":3,"file":"AiCodeMigrator-CzHe92BD.js","sources":["../../components/features/AiCodeMigrator.tsx"],"sourcesContent":["\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport { migrateCodeStream } from '../../services/index.ts';\nimport { ArrowPathIcon } from '../icons.tsx';\nimport { LoadingSpinner } from '../shared/index.tsx';\nimport { MarkdownRenderer } from '../shared/index.tsx';\n\nconst languages = ['SASS', 'CSS', 'JavaScript', 'TypeScript', 'Python', 'Go', 'React', 'Vue', 'Angular', 'Tailwind CSS'];\n\nconst exampleCode = `// SASS\n$primary-color: #333;\n\nbody {\n color: $primary-color;\n font-family: sans-serif;\n}`;\n\nexport const AiCodeMigrator: React.FC<{ inputCode?: string, fromLang?: string, toLang?: string }> = ({ inputCode: initialCode, fromLang: initialFrom, toLang: initialTo }) => {\n const [inputCode, setInputCode] = useState(initialCode || exampleCode);\n const [outputCode, setOutputCode] = useState('');\n const [fromLang, setFromLang] = useState(initialFrom || 'SASS');\n const [toLang, setToLang] = useState(initialTo || 'CSS');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState('');\n\n const handleMigrate = useCallback(async (code: string, from: string, to: string) => {\n if (!code.trim()) {\n setError('Please enter some code to migrate.');\n return;\n }\n setIsLoading(true);\n setError('');\n setOutputCode('');\n try {\n const stream = migrateCodeStream(code, from, to);\n let fullResponse = '';\n for await (const chunk of stream) {\n fullResponse += chunk;\n setOutputCode(fullResponse);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to migrate code: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (initialCode && initialFrom && initialTo) {\n setInputCode(initialCode);\n setFromLang(initialFrom);\n setToLang(initialTo);\n handleMigrate(initialCode, initialFrom, initialTo);\n }\n }, [initialCode, initialFrom, initialTo, handleMigrate]);\n\n const LanguageSelector: React.FC<{ value: string, onChange: (val: string) => void }> = ({ value, onChange }) => (\n \n );\n\n return (\n
\n
\n

AI Code Migrator

\n

Translate code between languages, frameworks, and syntax styles.

\n
\n
\n
\n
\n
\n \n \n
\n setInputCode(e.target.value)}\n placeholder=\"Paste your source code here...\"\n className=\"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm\"\n />\n
\n
\n
\n \n \n
\n
\n {isLoading &&
}\n {error &&

{error}

}\n {outputCode && !isLoading && }\n {!isLoading && !outputCode && !error &&
Migrated code will appear here.
}\n
\n
\n
\n handleMigrate(inputCode, fromLang, toLang)}\n disabled={isLoading}\n className=\"btn-primary mt-4 w-full max-w-sm mx-auto flex items-center justify-center px-6 py-3\"\n >\n {isLoading ? : 'Migrate Code'}\n \n
\n
\n );\n};"],"names":["languages","exampleCode","AiCodeMigrator","initialCode","initialFrom","initialTo","inputCode","setInputCode","useState","outputCode","setOutputCode","fromLang","setFromLang","toLang","setToLang","isLoading","setIsLoading","error","setError","handleMigrate","useCallback","code","from","to","stream","migrateCodeStream","fullResponse","chunk","err","errorMessage","useEffect","LanguageSelector","value","onChange","jsx","e","lang","jsxs","ArrowPathIcon","LoadingSpinner","MarkdownRenderer"],"mappings":"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"}