// Phase 2.1 — визуальный редизайн ch2 (Электромагнитные явления): // 1. Hero: новый p8-hero с electric theme, lightning SVG watermark. // 2. Section watermarks: тематические SVG в каждой
. // 3. IV-6 stubs для §12-31 (20 параграфов). 'use strict'; const fs = require('fs'); const path = require('path'); const DST = path.join(__dirname, '..', '..', 'frontend', 'textbooks', 'physics_8_ch2.html'); let h = fs.readFileSync(DST, 'utf8'); // === 1. Replace .hdr block with p8-hero === const LIGHTNING_WM = ``; const NEW_HERO = `
${LIGHTNING_WM}
0.5 А
Глава 2 · 20 параграфов

Электромагнитные явления

Заряд, ток, цепь, магнитное поле. Конструируйте цепи из компонентов, перемещайте заряды, наблюдайте за искрами и полями.
К физике 8
`; const oldHdrRegex = /
[\s\S]*?<\/header>/; if (h.match(oldHdrRegex)) { h = h.replace(oldHdrRegex, NEW_HERO); console.log('Hero replaced'); } // === 2. Live meter скрипт (ток 0.5 → 2 → 1.2 → 0.8 → 1.5 А) === const METER_SCRIPT = ` `; if (!h.includes('P8 hero meter')) { h = h.replace('', METER_SCRIPT + '\n'); console.log('Meter animation added'); } // === 3. Section watermarks === const SEC_SYMBOLS = { p12: '', // 2 заряда p13: '', // проводник p14: '', // индукция p15: '', // заряд центр p16: '', // атом p17: '', // силовые линии p18: 'U', // напряжение p19: '', // батарея p20: '', // I=q/t p21: '', // цепь p22: 'Ω', // Ом p23: '', // ρl/S зигзаг p24: '', // последовательно p25: '', // параллельно p26: 'P', // мощность p27: '', // энергия p28: 'NS', // магнит p29: '', // силовые линии магн p30: '', // компас p31: '' // электромагнит }; let secWmInjected = 0; for (const pid of Object.keys(SEC_SYMBOLS)) { const symbol = SEC_SYMBOLS[pid]; const secOpenRegex = new RegExp(`(]+id="sec-${pid}"[^>]*>)`); if (h.match(secOpenRegex) && !h.includes(`p8-sec-wm-${pid}`)) { const wmDiv = ``; h = h.replace(secOpenRegex, '$1\n ' + wmDiv); secWmInjected++; } } console.log('Section watermarks injected:', secWmInjected); // === 4. IV-6 stubs для §12-31 === let stubsAdded = 0; for (let n = 12; n <= 31; n++) { const pid = 'p' + n; const stubHtml = ` /* IV6 — flagship интерактив (заглушка Phase 2, наполнение в Phase 2.${n}) */ h += '
' +'
IV-6
Новый интерактив §${n}
' +'
Готовится: интерактивная визуализация с drag-and-drop для углубления темы. Скоро будет доступна.
' +'
' +'' +'
Phase 2.${n} — coming soon
' +'
' +'
'; `; const marker = `box.innerHTML = h + secNavFor('${pid}') + readButton('${pid}');`; if (!h.includes(`Новый интерактив §${n}`) && h.includes(marker)) { h = h.replace(marker, stubHtml.trim() + '\n\n ' + marker); stubsAdded++; } } console.log('IV-6 stubs added:', stubsAdded); fs.writeFileSync(DST, h); console.log('ch2 final size:', h.length); const scripts = [...h.matchAll(/