Every reveal.js gap closed in Kadal Deck 0.11

Kadal Deck borrowed a lot from reveal.js: sections and vertical stacks, fragments, data-background-*, auto-animate, and option names like controls, hash and slideNumber. So npx kadal-deck import reveal ./my-talk has always converted a reveal.js deck closely. Converting it closely is still not the same as the deck behaving the way it did. At 0.10.1 we audited 164 reveal.js features and options in 27 areas against the engine. 23 were missing and 31 only partly worked, 54 in all. 0.11.0 closed 52 of them in 23 pull requests, and 0.11.2 closes the last two. What changed Options that did nothing now work. center, shuffle, fragments: false, embedded and ?embedded, pdfMaxPagesPerSlide, deck-wide lineNumbers, visibility: uncounted and autoAnimateRestart were accepted before but had no effect. Imported decks keep their look. reveal's twelve themes ship as @kadal/theme-reveal, the r-* layout classes have CSS, numeric keyCodes map, and a fence written ```js [1-2|3] steps through

Every reveal.js gap closed in Kadal Deck 0.11

Kadal Deck borrowed a lot from reveal.js: sections and vertical stacks, fragments,
data-background-*, auto-animate, and option names like controls, hash and slideNumber. So
npx kadal-deck import reveal ./my-talk has always converted a reveal.js deck closely. Converting it
closely is still not the same as the deck behaving the way it did.

At 0.10.1 we audited 164 reveal.js features and options in 27 areas against the engine. 23 were
missing and 31 only partly worked, 54 in all. 0.11.0 closed 52 of them in 23 pull requests, and
0.11.2 closes the last two.

What changed

  • Options that did nothing now work. center, shuffle, fragments: false, embedded and ?embedded, pdfMaxPagesPerSlide, deck-wide lineNumbers, visibility: uncounted and autoAnimateRestart were accepted before but had no effect.
  • Imported decks keep their look. reveal's twelve themes ship as @kadal/theme-reveal, the r-* layout classes have CSS, numeric keyCodes map, and a fence written ```js [1-2|3] steps through the same lines.
  • Scripts written for reveal.js work. The deck emits reveal's events (slidechanged, fragmentshown, overviewshown, and since 0.11.2 autoanimate) and answers reveal's postMessage calls, so a page that frames a reveal.js deck can drive a Kadal one the same way.
  • Maths written for MathJax. Kadal renders maths with KaTeX at build time. A deck written for MathJax 2, 3 or 4 now imports with its macros carried into KaTeX, and anything only MathJax can do, such as \require, is listed in the import report.

Try it on a deck of yours

npx kadal-deck import reveal ./my-reveal-talk
cd my-reveal-talk-kadal && npx kadal-deck dev

The importer leaves the original deck alone and writes a report of anything it couldn't carry over.
The guide covers the rest: https://deck.kadal.cc/docs/coming-from-reveal/

What stays different is the source format. A Kadal deck is one MDX file built by Vite, with a presenter
view, phone remote and live room built in. If you hit a reveal.js deck that still imports wrongly,
tell us on GitHub: https://github.com/kadalcc/deck/issues

Share