- thumbnails: compile the project stylesheet once per rebuild and feed it
into the layout sandbox, compose each tile like the runtime does
(<section data-ps-slide> around the slide), and show example HTML on
the global tile instead of another real slide's content.
- worker: less compiles off the main thread in less-worker; a side-effect
module shims window/document and disables the browser build's page
auto-init, and compilation falls back inline if the worker can't start.
- code-to-element: wrap styles[] entries in <style> blocks - raw CSS text
in the iframe head fell into <body> and rendered as literal garbage.
Less now lives in <style> tags alongside the slide HTML, so there is one
editor buffer and no separate stylesheet tab.
- compile.ts extracts every <style> tag in the deck (global slide first,
then each slide in order) into one project stylesheet, strips the raw tags
from the markup so uncompiled Less never reaches the DOM, and compiles that
source once per slide with :thisSlide resolving to the slide being compiled.
- editor.ts is back to a single buffer; the CSS/LESS workers still highlight,
validate and complete the Less inside the tag.
- thumbnails render markup with style tags removed, exactly like the
presentation does.
- src/slides/compile.ts compiles a project into runtime-ready slides.
:thisSlide is resolved to each slide's own selector before Less runs,
so output is deterministic and never depends on which slide is visible.
- src/slides/runtime.ts mounts every slide once and moves them through
idle -> entering -> current -> leaving via a data-ps-state attribute;
CSS owns the animation, JS only owns the lifecycle. Rapid input
coalesces into a single settle instead of a queue of stale operations.
Arrow/space/Home/End keys, plus history integration: back/forward step
through slides and a reload restores the slide you were on.
- The editor gained two buffers: HTML slides and the project Less. The
preview and the presentation are the same runtime (present = fullscreen
of the same stage), and broken Less keeps the last good preview while
reporting the error.
Adds `less` (the authoring language) and `@types/less`.