# Phase 2: Тела симуляций как шаблоны + ленивый mount **Status:** ✅ Done (3f99d1b) — браузер-проверка пройдена (пользователь подтвердил: симуляции работают) **Parent plan:** [PLAN.md](./PLAN.md) **Domain:** frontend ## Objective Вынести inline-HTML тел симуляций (`
`, ~3000 строк) из lab.html в манифесты: `mount(host)` создаёт DOM лениво при первом открытии. lab.html худеет. ## Tasks - [ ] Добавить в манифест поле `mount(host)` (или `bodyHtml`) — строит/возвращает тело симуляции. - [ ] Ядро: при первом open — если тело не смонтировано, вызвать mount() в контейнер `#lab-sim`. - [ ] Перенести разметку каждого `sim-xxx` тела + его `ctrl-xxx` бара из lab.html в соответствующий модуль. - [ ] Удалить вынесенные блоки из lab.html. - [ ] Сохранить id элементов (canvas ids, ctrl ids) — на них завязаны Sim-классы. ## Files to Modify/Create - Все `frontend/js/labs/*.js` — добавить mount/bodyHtml. - `frontend/lab.html` — удалить inline тела. ## Acceptance Criteria - Все симуляции монтируются и работают. - lab.html значительно меньше (~3000 строк вынесено). - Повторное открытие не дублирует DOM. ## Notes - Theory-panel и общий sim-topbar остаются в lab.html. - KaTeX/lucide ре-инициализация после mount при необходимости. ## Review Checklist - [ ] Нет дублей DOM при повторном open - [ ] id элементов сохранены - [ ] Все тела перенесены ## Handoff to Next Phase