mirror of
https://github.com/hakimel/reveal.js.git
synced 2025-08-13 01:54:21 +02:00
add support for responsively activating reader mode via
This commit is contained in:
@@ -276,6 +276,10 @@ export default {
|
||||
// Only applies to presentations in reader mode.
|
||||
readerScrollSnap: 'proximity',
|
||||
|
||||
// Responsively activate the reader mode when we reach the specified
|
||||
// width (in pixels)
|
||||
readerActivationWidth: null,
|
||||
|
||||
// The maximum number of pages a single slide can expand onto when printing
|
||||
// to PDF, unlimited by default
|
||||
pdfMaxPagesPerSlide: Number.POSITIVE_INFINITY,
|
||||
|
@@ -14,6 +14,8 @@ export default class Reader {
|
||||
this.active = false;
|
||||
this.activatedCallbacks = [];
|
||||
|
||||
this.onScroll = this.onScroll.bind( this );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,7 +34,7 @@ export default class Reader {
|
||||
const slides = queryAll( this.Reveal.getRevealElement(), SLIDES_SELECTOR );
|
||||
|
||||
viewportElement.classList.add( 'loading-scroll-mode', 'reveal-reader' );
|
||||
viewportElement.addEventListener( 'scroll', this.onScroll.bind( this ) );
|
||||
viewportElement.addEventListener( 'scroll', this.onScroll );
|
||||
|
||||
let presentationBackground;
|
||||
if( viewportElement ) {
|
||||
@@ -113,7 +115,11 @@ export default class Reader {
|
||||
|
||||
this.active = false;
|
||||
|
||||
this.Reveal.getViewportElement().classList.remove( 'reveal-reader' );
|
||||
const viewportElement = this.Reveal.getViewportElement();
|
||||
|
||||
viewportElement.removeEventListener( 'scroll', this.onScroll );
|
||||
viewportElement.classList.remove( 'reveal-reader' );
|
||||
|
||||
this.Reveal.getSlidesElement().innerHTML = this.slideHTMLBeforeActivation;
|
||||
this.Reveal.sync();
|
||||
|
||||
|
12
js/reveal.js
12
js/reveal.js
@@ -999,6 +999,18 @@ export default function( revealElement, options ) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Responsively turn on the reader mode if there is an activation
|
||||
// width configured. Ignore if we're configured to always be in
|
||||
// reader mode.
|
||||
if( typeof config.readerActivationWidth === 'number' && config.view !== 'reader' ) {
|
||||
if( size.presentationWidth < config.readerActivationWidth ) {
|
||||
if( !reader.isActive() ) reader.activate();
|
||||
}
|
||||
else {
|
||||
if( reader.isActive() ) reader.deactivate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dom.viewport.style.setProperty( '--slide-scale', scale );
|
||||
|
Reference in New Issue
Block a user