/* global React */ (function () { const { useState } = React; const T = window.SC_T; function SitesDetail({ sites }) { const [expandedIdx, setExpandedIdx] = useState(null); if (sites.length === 0) return
Сайты пока не обработаны
; return (
{sites.map((site, i) => (
setExpandedIdx(expandedIdx === i ? null : i)} style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '9px 12px', cursor: 'pointer', background: expandedIdx === i ? T.accentSoft : T.surface }} > e.stopPropagation()} style={{ flex: 1, fontSize: 12.5, color: T.accent, fontWeight: 500, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', textDecoration: 'none' }}> {site.url} {site.phrases.length} фраз {window.SC_Icon.chevron(11)}
{expandedIdx === i && site.phrases.length > 0 && (
{site.phrases.map((p, j) =>
{p}
)}
)}
))}
); } function PhrasesDetail({ phrases, emptyText }) { if (phrases.length === 0) return
{emptyText || 'Фразы ещё не собраны'}
; return (
{phrases.map((p, i) => (
{p}
))}
); } function RunningScreen({ activeStep, currentAction, stats, liveItems, wordstatCount, sitesList, suggestPhrases, wordstatPhrases }) { const [activeTab, setActiveTab] = useState('phrases'); return (
{currentAction || 'Подготовка...'}
{stats.wordstatTotal > 0 && (
{stats.phrases} / {stats.wordstatTotal}
)}
setActiveTab('phrases')} /> 0 ? () => setActiveTab('sites') : undefined} /> 0 ? () => setActiveTab('suggest') : undefined} /> 0 ? () => setActiveTab('wordstat') : undefined} />
{activeTab === 'phrases' && ( <>
Поток фраз в реальном времени
{liveItems.length > 0 ? (
{liveItems.slice(-7).map((item, i) => (
{item.phrase}
))}
) : (
Ожидаем первые фразы...
)} )} {activeTab === 'sites' &&
} {activeTab === 'suggest' &&
} {activeTab === 'wordstat' &&
}
); } window.RunningScreen = RunningScreen; })();