# Код диаграммы Виггерса грузится при подходе к экрану

Issue #425. Продолжение #408 и #413.

## Зачем

После пресета фибрилляции желудочков (#424) на самой тяжёлой странице статьи (`en/disease/aortic-stenosis/`) запас бюджета JS — 109 байт из 100 КБ gzip. Следующий пресет или новая функция монитора бюджет превысят.

## Что меняется

- Код рисования диаграммы Виггерса (`heart-clock/wiggers-canvas.ts`) грузится через `import()`, когда холст диаграммы оказывается в 200 px от экрана (`IntersectionObserver`).
- Холст получает свой размер сразу, поэтому вёрстка не прыгает. До загрузки кода холст пустой; заголовок, легенда и текстовое описание под ним видны сразу.
- Высота диаграммы `wiggersHeight` переезжает в `ecg-canvas.ts`, который и так грузится вместе с монитором. Иначе её импорт тянул бы весь код диаграммы.
- Если код не загрузился, холст остаётся пустым, а текстовое описание остаётся на месте.
- В ФЖ (`hasPulse` = false) диаграммы нет, поэтому её код не грузится.
- `scripts/js-budget.ts` считает `wiggers-canvas` загружаемым по требованию. Как и для остальных таких модулей, бюджет падает, если страница грузит его сразу.

## Результат

Запас на `en/disease/aortic-stenosis/` вырос со 109 до 875 байт.

## Проверки

- e2e: код диаграммы загружается после прокрутки к ней, и на холсте появляются пиксели. Существующие тесты проверяют размеры холстов и axe.
- Юнит-тест бюджета: `wiggers-canvas.*.js` считается загружаемым по требованию, а `ecg-canvas.*.js` — нет.
