@@ -2,11 +2,13 @@ import React, { useState, useEffect } from 'react';
22import { Copy , Check , Trash2 , Wand2 , Minimize2 } from 'lucide-react' ;
33import beautify from 'js-beautify' ;
44import yaml from 'js-yaml' ;
5+ import { useNavigate } from 'react-router-dom' ;
56
6- const CodeTools = ( ) => {
7+ const CodeTools = ( { initialLanguage = 'javascript' , languageRoutes = null } ) => {
8+ const navigate = useNavigate ( ) ;
79 const [ input , setInput ] = useState ( '' ) ;
810 const [ output , setOutput ] = useState ( '' ) ;
9- const [ language , setLanguage ] = useState ( 'javascript' ) ;
11+ const [ language , setLanguage ] = useState ( initialLanguage ) ;
1012 const [ mode , setMode ] = useState ( 'beautify' ) ; // 'beautify' or 'minify'
1113 const [ spaces , setSpaces ] = useState ( 2 ) ;
1214 const [ copied , setCopied ] = useState ( false ) ;
@@ -19,6 +21,11 @@ const CodeTools = () => {
1921 { id : 'yaml' , label : 'YAML' } ,
2022 ] ;
2123
24+ useEffect ( ( ) => {
25+ setLanguage ( initialLanguage ) ;
26+ setError ( null ) ;
27+ } , [ initialLanguage ] ) ;
28+
2229 useEffect ( ( ) => {
2330 if ( ! input . trim ( ) ) {
2431 setOutput ( '' ) ;
@@ -107,6 +114,15 @@ const CodeTools = () => {
107114 setError ( null ) ;
108115 } ;
109116
117+ const handleLanguageChange = ( nextLanguage ) => {
118+ if ( languageRoutes ?. [ nextLanguage ] ) {
119+ navigate ( languageRoutes [ nextLanguage ] ) ;
120+ return ;
121+ }
122+
123+ setLanguage ( nextLanguage ) ;
124+ } ;
125+
110126 return (
111127 < div className = "flex flex-col gap-4 h-full" >
112128 < div className = "flex flex-wrap items-center justify-between gap-4 bg-slate-900/50 p-4 rounded-xl border border-slate-800" >
@@ -116,7 +132,7 @@ const CodeTools = () => {
116132 < span className = "text-sm font-medium text-slate-400" > Language:</ span >
117133 < select
118134 value = { language }
119- onChange = { ( e ) => setLanguage ( e . target . value ) }
135+ onChange = { ( e ) => handleLanguageChange ( e . target . value ) }
120136 className = "bg-slate-800 text-slate-200 text-sm font-bold rounded-lg px-3 py-1.5 border border-slate-700 focus:border-blue-500 outline-none cursor-pointer"
121137 >
122138 { LANGUAGES . map ( ( l ) => (
0 commit comments