|
@@ -84,6 +84,10 @@
|
|
// Enable the slide overview mode
|
|
// Enable the slide overview mode
|
|
overview: true,
|
|
overview: true,
|
|
|
|
|
|
|
|
+ // Enable/disable user specified layouts (like css-grid)
|
|
|
|
+ // (basically prevents all the display & height/width calculations)
|
|
|
|
+ disableLayout: false,
|
|
|
|
+
|
|
// Vertical centering of slides
|
|
// Vertical centering of slides
|
|
center: true,
|
|
center: true,
|
|
|
|
|
|
@@ -1853,76 +1857,80 @@
|
|
|
|
|
|
if( dom.wrapper && !isPrintingPDF() ) {
|
|
if( dom.wrapper && !isPrintingPDF() ) {
|
|
|
|
|
|
- var size = getComputedSlideSize();
|
|
|
|
|
|
+ if( !config.disableLayout ) {
|
|
|
|
|
|
- // Layout the contents of the slides
|
|
|
|
- layoutSlideContents( config.width, config.height );
|
|
|
|
|
|
+ var size = getComputedSlideSize();
|
|
|
|
|
|
- dom.slides.style.width = size.width + 'px';
|
|
|
|
- dom.slides.style.height = size.height + 'px';
|
|
|
|
|
|
+ // Layout the contents of the slides
|
|
|
|
+ layoutSlideContents( config.width, config.height );
|
|
|
|
|
|
- // Determine scale of content to fit within available space
|
|
|
|
- scale = Math.min( size.presentationWidth / size.width, size.presentationHeight / size.height );
|
|
|
|
|
|
+ dom.slides.style.width = size.width + 'px';
|
|
|
|
+ dom.slides.style.height = size.height + 'px';
|
|
|
|
|
|
- // Respect max/min scale settings
|
|
|
|
- scale = Math.max( scale, config.minScale );
|
|
|
|
- scale = Math.min( scale, config.maxScale );
|
|
|
|
|
|
+ // Determine scale of content to fit within available space
|
|
|
|
+ scale = Math.min( size.presentationWidth / size.width, size.presentationHeight / size.height );
|
|
|
|
|
|
- // Don't apply any scaling styles if scale is 1
|
|
|
|
- if( scale === 1 ) {
|
|
|
|
- dom.slides.style.zoom = '';
|
|
|
|
- dom.slides.style.left = '';
|
|
|
|
- dom.slides.style.top = '';
|
|
|
|
- dom.slides.style.bottom = '';
|
|
|
|
- dom.slides.style.right = '';
|
|
|
|
- transformSlides( { layout: '' } );
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- // Prefer zoom for scaling up so that content remains crisp.
|
|
|
|
- // Don't use zoom to scale down since that can lead to shifts
|
|
|
|
- // in text layout/line breaks.
|
|
|
|
- if( scale > 1 && features.zoom ) {
|
|
|
|
- dom.slides.style.zoom = scale;
|
|
|
|
|
|
+ // Respect max/min scale settings
|
|
|
|
+ scale = Math.max( scale, config.minScale );
|
|
|
|
+ scale = Math.min( scale, config.maxScale );
|
|
|
|
+
|
|
|
|
+ // Don't apply any scaling styles if scale is 1
|
|
|
|
+ if( scale === 1 ) {
|
|
|
|
+ dom.slides.style.zoom = '';
|
|
dom.slides.style.left = '';
|
|
dom.slides.style.left = '';
|
|
dom.slides.style.top = '';
|
|
dom.slides.style.top = '';
|
|
dom.slides.style.bottom = '';
|
|
dom.slides.style.bottom = '';
|
|
dom.slides.style.right = '';
|
|
dom.slides.style.right = '';
|
|
transformSlides( { layout: '' } );
|
|
transformSlides( { layout: '' } );
|
|
}
|
|
}
|
|
- // Apply scale transform as a fallback
|
|
|
|
else {
|
|
else {
|
|
- dom.slides.style.zoom = '';
|
|
|
|
- dom.slides.style.left = '50%';
|
|
|
|
- dom.slides.style.top = '50%';
|
|
|
|
- dom.slides.style.bottom = 'auto';
|
|
|
|
- dom.slides.style.right = 'auto';
|
|
|
|
- transformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +')' } );
|
|
|
|
|
|
+ // Prefer zoom for scaling up so that content remains crisp.
|
|
|
|
+ // Don't use zoom to scale down since that can lead to shifts
|
|
|
|
+ // in text layout/line breaks.
|
|
|
|
+ if( scale > 1 && features.zoom ) {
|
|
|
|
+ dom.slides.style.zoom = scale;
|
|
|
|
+ dom.slides.style.left = '';
|
|
|
|
+ dom.slides.style.top = '';
|
|
|
|
+ dom.slides.style.bottom = '';
|
|
|
|
+ dom.slides.style.right = '';
|
|
|
|
+ transformSlides( { layout: '' } );
|
|
|
|
+ }
|
|
|
|
+ // Apply scale transform as a fallback
|
|
|
|
+ else {
|
|
|
|
+ dom.slides.style.zoom = '';
|
|
|
|
+ dom.slides.style.left = '50%';
|
|
|
|
+ dom.slides.style.top = '50%';
|
|
|
|
+ dom.slides.style.bottom = 'auto';
|
|
|
|
+ dom.slides.style.right = 'auto';
|
|
|
|
+ transformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +')' } );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- // Select all slides, vertical and horizontal
|
|
|
|
- var slides = toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) );
|
|
|
|
|
|
+ // Select all slides, vertical and horizontal
|
|
|
|
+ var slides = toArray( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) );
|
|
|
|
|
|
- for( var i = 0, len = slides.length; i < len; i++ ) {
|
|
|
|
- var slide = slides[ i ];
|
|
|
|
|
|
+ for( var i = 0, len = slides.length; i < len; i++ ) {
|
|
|
|
+ var slide = slides[ i ];
|
|
|
|
|
|
- // Don't bother updating invisible slides
|
|
|
|
- if( slide.style.display === 'none' ) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
|
|
+ // Don't bother updating invisible slides
|
|
|
|
+ if( slide.style.display === 'none' ) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
|
|
- if( config.center || slide.classList.contains( 'center' ) ) {
|
|
|
|
- // Vertical stacks are not centred since their section
|
|
|
|
- // children will be
|
|
|
|
- if( slide.classList.contains( 'stack' ) ) {
|
|
|
|
- slide.style.top = 0;
|
|
|
|
|
|
+ if( config.center || slide.classList.contains( 'center' ) ) {
|
|
|
|
+ // Vertical stacks are not centred since their section
|
|
|
|
+ // children will be
|
|
|
|
+ if( slide.classList.contains( 'stack' ) ) {
|
|
|
|
+ slide.style.top = 0;
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ slide.style.top = Math.max( ( size.height - slide.scrollHeight ) / 2, 0 ) + 'px';
|
|
|
|
+ }
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
- slide.style.top = Math.max( ( size.height - slide.scrollHeight ) / 2, 0 ) + 'px';
|
|
|
|
|
|
+ slide.style.top = '';
|
|
}
|
|
}
|
|
- }
|
|
|
|
- else {
|
|
|
|
- slide.style.top = '';
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|