/* chem8_ch5_widgets.js — виджеты Главы 5 «Окислительно-восстановительные реакции». * Использует window.Chem8: oxStateCalc. */ (function (W) { 'use strict'; function C() { return W.Chem8 || {}; } function $(id) { return document.getElementById(id); } /* §42 — калькулятор степени окисления */ function mount_p42() { var el = $('c-ox'); if (el && !el._b && C().oxStateCalc) { el._b = 1; C().oxStateCalc(el, { formula: 'H2SO4' }); } } /* §44 — пошаговый электронный баланс (преднабор) */ var R = [ { eq: '2Mg + O₂ → 2MgO', steps: [ 'Степени окисления: Mg⁰, O₂⁰ → Mg⁺², O⁻².', 'Mg⁰ − 2e⁻ → Mg⁺² — окисление (Mg — восстановитель).', 'O₂⁰ + 4e⁻ → 2O⁻² — восстановление (O₂ — окислитель).', 'Электронный баланс: отдано 2e⁻ (×2 = 4), принято 4e⁻ → множители 2 и 1.', 'Коэффициенты: 2Mg + O₂ → 2MgO. ✓' ] }, { eq: 'Fe + CuSO₄ → FeSO₄ + Cu', steps: [ 'Меняют с.о. только Fe и Cu: Fe⁰ → Fe⁺², Cu⁺² → Cu⁰.', 'Fe⁰ − 2e⁻ → Fe⁺² — окисление (Fe — восстановитель).', 'Cu⁺² + 2e⁻ → Cu⁰ — восстановление (Cu⁺² — окислитель).', 'Отдано 2e⁻ = принято 2e⁻ → множители 1 и 1.', 'Коэффициенты: Fe + CuSO₄ → FeSO₄ + Cu. ✓' ] }, { eq: '2Na + Cl₂ → 2NaCl', steps: [ 'Na⁰ и Cl₂⁰ → Na⁺ и Cl⁻.', 'Na⁰ − 1e⁻ → Na⁺ — окисление (Na — восстановитель).', 'Cl₂⁰ + 2e⁻ → 2Cl⁻ — восстановление (Cl₂ — окислитель).', 'Баланс: 1e⁻ ×2 = 2e⁻ → множители 2 и 1.', 'Коэффициенты: 2Na + Cl₂ → 2NaCl. ✓' ] } ]; function mount_p44() { var pick = $('c-redox-pick'), out = $('c-redox-out'), bStep = $('c-redox-step'), bAll = $('c-redox-all'); if (!pick || pick._b) return; pick._b = 1; R.forEach(function (p, i) { var o = document.createElement('option'); o.value = i; o.textContent = p.eq; pick.appendChild(o); }); var cur = 0, shown = 0; function render() { var p = R[cur]; var html = '' + p.eq + '