/* chem7_svg.js — наглядные химические примитивы для учебника «Химия 7».
 *
 * Неймспейс: window.Chem7.*
 * Это ТОНКАЯ надстройка над window.Chem8 (chem8_svg.js): рендер формул и уравнений,
 * ионы переиспользуются из Chem8; здесь добавляется только то, что специфично для
 * первого курса химии 7 класса (валентность, разделение смесей, признаки реакций,
 * весы сохранения массы, горение, конструктор оксида/соли/основания, состав воздуха,
 * разложение воды, массовая доля элемента).
 *
 * Молекулярные модели (структурные / 2D / 3D) — НЕ здесь, а через biochem-core.js.
 *
 * Phase 0: переэкспортированы примитивы Chem8 (formula, ionLabel, chemEq, molarMass,
 * equationBalancer и т. п.); собственные звёздные виджеты — заглушки, наполняются в
 * фазах 1–4 (см. plans/textbooks-7/PLAN_CHEMISTRY_7.md, разд. B).
 *
 * Правила (CLAUDE.md / план):
 *  - без эмоджи, только inline SVG .ic;
 *  - в KaTeX-шаблонах двойной backslash (\\to, \\uparrow, \\downarrow);
 *  - drag/слайдеры: window-listeners + state ВЫШЕ redraw(), без setPointerCapture.
 */
(function (global) {
  'use strict';

  var C8 = global.Chem8 || {};
  function noop() { /* заглушка фазы 0 — реализуется в фазах 1–4 */ }

  var Chem7 = {
    /* ── переиспользуем примитивы Chem8 (рендер формул/уравнений/ионов, M_r) ── */
    formula:     C8.formula     || function (s) { return s; },
    ionLabel:    C8.ionLabel    || function (s) { return s; },
    chemEq:      C8.chemEq       || function (s) { return s; },
    molarMass:   C8.molarMass    || function () { return NaN; },
    elementCounts: C8.elementCounts || function () { return null; },
    arOf:        C8.arOf         || function () { return ''; },
    fmt:         C8.fmt          || function (x) { return String(x).replace('.', ','); },
    equationBalancer: C8.equationBalancer || noop,

    /* ── собственные звёздные виджеты Химии 7 (Phase 0: заглушки) ── */
    valenceBuilder:    noop,  // §9  — конструктор формулы по валентности (НОК индексов)
    elementSymbolDrill: noop, // §3  — тренажёр символ ↔ название
    atomBalance:       noop,  // §4  — «весы атомов», во сколько раз тяжелее
    mixtureSeparator:  noop,  // §2  — разделитель смесей (фильтр/выпаривание/магнит/дистилляция)
    reactionSigns:     noop,  // §10 — детектор признаков реакции
    massConservation:  noop,  // §11 — «весы сохранения массы»
    combustionSim:     noop,  // §15 — симулятор горения (вещество + O₂ → оксид)
    compoundBuilder:   noop,  // §16,22,24 — конструктор оксида/соли/основания
    airComposition:    noop,  // §13 — диаграмма состава воздуха
    waterDecomp:       noop,  // §23 — разложение воды (H₂:O₂ = 2:1)
    massFraction:      noop   // Прил.3/§8 — калькулятор массовой доли элемента
  };

  global.Chem7 = Chem7;
})(window);
