/* 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);