Ленивая загрузка
Проблема
Реальная CLM-презентация — это 40–80 слайдов, часто с видео. Если держать их все в DOM сразу, память WebView на планшете кончается, и приложение вылетает.
Решение
SlideStore держит в DOM только окно: текущий слайд и preload соседей с каждой стороны (по умолчанию 1). При навигации дальние слайды выгружаются — их компоненты получают disconnectedCallback и освобождают ресурсы. Метаданные (id, заголовок) читаются из HTML заранее, без монтажа, через инертный <template> — поэтому точки навигации и порядок известны всегда.
дек из 6 слайдов, preload = 1
позиция 0: [0][1] ← в DOM 2
позиция 3: [2][3][4] ← в DOM 3, слайды 0,1 выгружены
позиция 5: [4][5] ← в DOM 2Глубину окна задаёт "preload" в deck.json. Это значение сохраняется внутри .pulse и действует одинаково в студии и офлайн-Viewer.
Проверено тестом
tests/SlideStore.test.mjs подтверждает, что за проход по всему деку из 6 слайдов пик составляет 3 слайда в DOM, а не 6 — порядок и токены персонализации при этом сохраняются.
npm test
# ✔ окно монтирует центр ± preload и выгружает дальние
# ✔ пик слайдов в DOM ограничен окном (3 из 6)
# ✔ preload=0 держит только текущий слайд