/
spirzen
/
it-knowledge-base
Обзор
Документация
Войти
/
spirzen
/
it-knowledge-base
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/components/DeveloperExamPlay.jsx
47 строк
1 KB
Spirzen
New architecture
09 июн 2026, 01:54
09 июн 2026, 01:54
2b4da8b
Код
Авторство
О чём код?
import React, {useEffect, useMemo, useState} from 'react'; import BrowserOnly from '@docusaurus/BrowserOnly'; import ExternalPlayEmbed from './ExternalPlayEmbed'; import {extractExamQuestions, getArticleElement} from './shared/articleExtract'; import {demoLoadingFallback} from './shared/demoFallback'; const LEVEL_TITLES = { junior: 'Junior', middle: 'Middle', senior: 'Senior', }; function DeveloperExamPlayInner({level = 'junior'}) { const [embedData, setEmbedData] = useState(null); useEffect(() => { const timer = window.setTimeout(() => { const article = getArticleElement(); const {sections, questions} = extractExamQuestions(article); setEmbedData({sections, questions}); }, 320); return () => window.clearTimeout(timer); }, []); const title = useMemo( () => `Экзамен · ${LEVEL_TITLES[level] ?? level}`, [level], ); return ( <ExternalPlayEmbed example="lab/developer-exam-play" title={title} minHeight={480} playProps={{level}} embedData={embedData ?? undefined} /> ); } export default function DeveloperExamPlay(props) { return ( <BrowserOnly fallback={demoLoadingFallback('Загрузка экзамена…')}> {() => <DeveloperExamPlayInner {...props} />} </BrowserOnly> ); }