import React, { useState, useEffect, useCallback } from 'react';
import { Tone, Aggressiveness, HumanizerState, TransformationStats } from './types';
import { humanizeText } from './services/geminiService';
import { calculateStats, getAggressivenessLabel } from './utils/nlpUtils';
// --- Sub-components (outside main to avoid re-renders) ---
const StatCard = ({ label, value, unit = "" }: { label: string, value: string | number, unit?: string }) => (
({
inputText: '',
outputHovered: false,
isProcessing: false,
result: '',
error: null,
settings: {
tone: Tone.PROFESSIONAL,
aggressiveness: Aggressiveness.MEDIUM
},
stats: {
wordCount: 0,
charCount: 0,
lexicalDiversity: 0,
readabilityScore: 0
}
});
useEffect(() => {
const stats = calculateStats(state.result || state.inputText);
setState(prev => ({ ...prev, stats }));
}, [state.inputText, state.result]);
const handleHumanize = async () => {
if (!state.inputText.trim() || state.isProcessing) return;
setState(prev => ({ ...prev, isProcessing: true, error: null }));
try {
const humanized = await humanizeText(
state.inputText,
state.settings.tone,
state.settings.aggressiveness
);
setState(prev => ({ ...prev, result: humanized, isProcessing: false }));
} catch (err: any) {
setState(prev => ({ ...prev, error: err.message, isProcessing: false }));
}
};
const updateSetting = (key: 'tone' | 'aggressiveness', value: any) => {
setState(prev => ({
...prev,
settings: { ...prev.settings, [key]: value }
}));
};
return (
{label}
);
const App: React.FC = () => {
const [state, setState] = useState
{value}{unit}
{/* Header */}
{/* Main Grid */}
{/* Left Side: Controls & Input */}
{/* Stats Bar (Mobile) / Side Info */}
{/* Right Side: Editors */}
{/* Footer Info */}
);
};
export default App;
HumanizerPro
Advanced NLP engine for stylistic evasion. Injecting human entropy into algorithmic patterns.
SYSTEM STATUS: OPTIMIZED
Parameters
{/* Tone Selection */}
{/* Aggressiveness Selection */}
{Object.values(Tone).map((t) => (
))}
{Object.values(Aggressiveness).map((a) => (
))}
{/* Input Editor */}
{/* Output Editor */}
Source (AI Output)
Supports raw text only
Humanized Version
{state.isProcessing && (
)}
{state.error ? (
)}
Analyzing syntactic patterns...
{state.error}
) : state.result ? (
{state.result}
) : (
Processed output will appear here
Comentários
Postar um comentário