Merge branch 'dev' into patch-1
This commit is contained in:
commit
d5662a203e
|
@ -227,7 +227,7 @@ body {
|
||||||
bottom: 12px;
|
bottom: 12px;
|
||||||
right: 12px;
|
right: 12px;
|
||||||
left: auto;
|
left: auto;
|
||||||
z-index: 1;
|
z-index: 11;
|
||||||
color: #000;
|
color: #000;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
font-size: 10px; }
|
font-size: 10px; }
|
||||||
|
@ -312,7 +312,8 @@ body {
|
||||||
transform: rotate(90deg); }
|
transform: rotate(90deg); }
|
||||||
.reveal .controls .navigate-down {
|
.reveal .controls .navigate-down {
|
||||||
right: 3.2em;
|
right: 3.2em;
|
||||||
bottom: 0;
|
bottom: -1.4em;
|
||||||
|
padding-bottom: 1.4em;
|
||||||
-webkit-transform: translateY(10px);
|
-webkit-transform: translateY(10px);
|
||||||
transform: translateY(10px); }
|
transform: translateY(10px); }
|
||||||
.reveal .controls .navigate-down .controls-arrow {
|
.reveal .controls .navigate-down .controls-arrow {
|
||||||
|
@ -395,18 +396,18 @@ body {
|
||||||
right: auto; }
|
right: auto; }
|
||||||
.reveal .controls[data-controls-layout="edges"] .navigate-left {
|
.reveal .controls[data-controls-layout="edges"] .navigate-left {
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 8px;
|
left: 0.8em;
|
||||||
margin-top: -1.8em; }
|
margin-top: -1.8em; }
|
||||||
.reveal .controls[data-controls-layout="edges"] .navigate-right {
|
.reveal .controls[data-controls-layout="edges"] .navigate-right {
|
||||||
top: 50%;
|
top: 50%;
|
||||||
right: 8px;
|
right: 0.8em;
|
||||||
margin-top: -1.8em; }
|
margin-top: -1.8em; }
|
||||||
.reveal .controls[data-controls-layout="edges"] .navigate-up {
|
.reveal .controls[data-controls-layout="edges"] .navigate-up {
|
||||||
top: 8px;
|
top: 0.8em;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -1.8em; }
|
margin-left: -1.8em; }
|
||||||
.reveal .controls[data-controls-layout="edges"] .navigate-down {
|
.reveal .controls[data-controls-layout="edges"] .navigate-down {
|
||||||
bottom: 8px;
|
bottom: -0.3em;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -1.8em; } }
|
margin-left: -1.8em; } }
|
||||||
|
|
||||||
|
@ -1453,9 +1454,16 @@ body {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
vertical-align: top; }
|
vertical-align: top; }
|
||||||
|
|
||||||
.reveal .hljs[data-line-numbers]:not([data-line-numbers=""]) tr:not(.highlight-line) {
|
.reveal .hljs.has-highlights tr:not(.highlight-line) {
|
||||||
opacity: 0.4; }
|
opacity: 0.4; }
|
||||||
|
|
||||||
|
.reveal .hljs:not(:first-child).fragment {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box; }
|
||||||
|
|
||||||
/*********************************************
|
/*********************************************
|
||||||
* ROLLING LINKS
|
* ROLLING LINKS
|
||||||
*********************************************/
|
*********************************************/
|
||||||
|
|
|
@ -263,7 +263,7 @@ $controlsArrowAngleActive: 36deg;
|
||||||
bottom: $spacing;
|
bottom: $spacing;
|
||||||
right: $spacing;
|
right: $spacing;
|
||||||
left: auto;
|
left: auto;
|
||||||
z-index: 1;
|
z-index: 11;
|
||||||
color: #000;
|
color: #000;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
@ -355,7 +355,8 @@ $controlsArrowAngleActive: 36deg;
|
||||||
|
|
||||||
.navigate-down {
|
.navigate-down {
|
||||||
right: $controlArrowSpacing + $controlArrowSize/2;
|
right: $controlArrowSpacing + $controlArrowSize/2;
|
||||||
bottom: 0;
|
bottom: -$controlArrowSpacing;
|
||||||
|
padding-bottom: $controlArrowSpacing;
|
||||||
transform: translateY( 10px );
|
transform: translateY( 10px );
|
||||||
|
|
||||||
.controls-arrow {
|
.controls-arrow {
|
||||||
|
@ -452,7 +453,7 @@ $controlsArrowAngleActive: 36deg;
|
||||||
// Edge aligned controls layout
|
// Edge aligned controls layout
|
||||||
@media screen and (min-width: 500px) {
|
@media screen and (min-width: 500px) {
|
||||||
|
|
||||||
$spacing: 8px;
|
$spacing: 0.8em;
|
||||||
|
|
||||||
.reveal .controls[data-controls-layout="edges"] {
|
.reveal .controls[data-controls-layout="edges"] {
|
||||||
& {
|
& {
|
||||||
|
@ -489,7 +490,7 @@ $controlsArrowAngleActive: 36deg;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navigate-down {
|
.navigate-down {
|
||||||
bottom: $spacing;
|
bottom: $spacing - $controlArrowSpacing + 0.3em;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -$controlArrowSize/2;
|
margin-left: -$controlArrowSize/2;
|
||||||
}
|
}
|
||||||
|
@ -1590,10 +1591,18 @@ $controlsArrowAngleActive: 36deg;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reveal .hljs[data-line-numbers]:not([data-line-numbers=""]) tr:not(.highlight-line) {
|
.reveal .hljs.has-highlights tr:not(.highlight-line) {
|
||||||
opacity: 0.4;
|
opacity: 0.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reveal .hljs:not(:first-child).fragment {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************
|
/*********************************************
|
||||||
* ROLLING LINKS
|
* ROLLING LINKS
|
||||||
|
|
|
@ -241,7 +241,7 @@
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2>Pretty Code</h2>
|
<h2>Pretty Code</h2>
|
||||||
<pre><code class="hljs" data-trim data-line-numbers="4,8-11">
|
<pre><code class="hljs" data-trim data-line-numbers="4|9|4,8-11">
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
|
|
||||||
function Example() {
|
function Example() {
|
||||||
|
@ -412,7 +412,7 @@ Reveal.addEventListener( 'customevent', function() {
|
||||||
dependencies: [
|
dependencies: [
|
||||||
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
||||||
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
||||||
{ src: 'plugin/highlight/highlight.js', async: true },
|
{ src: 'plugin/highlight/highlight.js' },
|
||||||
{ src: 'plugin/search/search.js', async: true },
|
{ src: 'plugin/search/search.js', async: true },
|
||||||
{ src: 'plugin/zoom-js/zoom.js', async: true },
|
{ src: 'plugin/zoom-js/zoom.js', async: true },
|
||||||
{ src: 'plugin/notes/notes.js', async: true }
|
{ src: 'plugin/notes/notes.js', async: true }
|
||||||
|
|
|
@ -37,11 +37,12 @@
|
||||||
// - https://github.com/hakimel/reveal.js#configuration
|
// - https://github.com/hakimel/reveal.js#configuration
|
||||||
// - https://github.com/hakimel/reveal.js#dependencies
|
// - https://github.com/hakimel/reveal.js#dependencies
|
||||||
Reveal.initialize({
|
Reveal.initialize({
|
||||||
|
hash: true,
|
||||||
dependencies: [
|
dependencies: [
|
||||||
{ src: 'plugin/markdown/marked.js' },
|
{ src: 'plugin/markdown/marked.js' },
|
||||||
{ src: 'plugin/markdown/markdown.js' },
|
{ src: 'plugin/markdown/markdown.js' },
|
||||||
{ src: 'plugin/notes/notes.js', async: true },
|
{ src: 'plugin/highlight/highlight.js' },
|
||||||
{ src: 'plugin/highlight/highlight.js', async: true }
|
{ src: 'plugin/notes/notes.js', async: true }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
177
js/reveal.js
177
js/reveal.js
|
@ -1217,6 +1217,8 @@
|
||||||
if( data.backgroundColor ) element.style.backgroundColor = data.backgroundColor;
|
if( data.backgroundColor ) element.style.backgroundColor = data.backgroundColor;
|
||||||
if( data.backgroundTransition ) element.setAttribute( 'data-background-transition', data.backgroundTransition );
|
if( data.backgroundTransition ) element.setAttribute( 'data-background-transition', data.backgroundTransition );
|
||||||
|
|
||||||
|
if( slide.hasAttribute( 'data-preload' ) ) element.setAttribute( 'data-preload', '' );
|
||||||
|
|
||||||
// Background image options are set on the content wrapper
|
// Background image options are set on the content wrapper
|
||||||
if( data.backgroundSize ) contentElement.style.backgroundSize = data.backgroundSize;
|
if( data.backgroundSize ) contentElement.style.backgroundSize = data.backgroundSize;
|
||||||
if( data.backgroundRepeat ) contentElement.style.backgroundRepeat = data.backgroundRepeat;
|
if( data.backgroundRepeat ) contentElement.style.backgroundRepeat = data.backgroundRepeat;
|
||||||
|
@ -1276,7 +1278,11 @@
|
||||||
|
|
||||||
// Check if the requested method can be found
|
// Check if the requested method can be found
|
||||||
if( data.method && typeof Reveal[data.method] === 'function' ) {
|
if( data.method && typeof Reveal[data.method] === 'function' ) {
|
||||||
Reveal[data.method].apply( Reveal, data.args );
|
var result = Reveal[data.method].apply( Reveal, data.args );
|
||||||
|
|
||||||
|
// Dispatch a postMessage event with the returned value from
|
||||||
|
// our method invocation for getter functions
|
||||||
|
dispatchPostMessage( 'callback', { method: data.method, result: result } );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, false );
|
}, false );
|
||||||
|
@ -1447,8 +1453,8 @@
|
||||||
keyboardShortcuts['↓ , J'] = 'Navigate down';
|
keyboardShortcuts['↓ , J'] = 'Navigate down';
|
||||||
}
|
}
|
||||||
|
|
||||||
keyboardShortcuts['Home , ⌘/CTRL ←'] = 'First slide';
|
keyboardShortcuts['Home , Shift ←'] = 'First slide';
|
||||||
keyboardShortcuts['End , ⌘/CTRL →'] = 'Last slide';
|
keyboardShortcuts['End , Shift →'] = 'Last slide';
|
||||||
keyboardShortcuts['B , .'] = 'Pause';
|
keyboardShortcuts['B , .'] = 'Pause';
|
||||||
keyboardShortcuts['F'] = 'Fullscreen';
|
keyboardShortcuts['F'] = 'Fullscreen';
|
||||||
keyboardShortcuts['ESC, O'] = 'Slide overview';
|
keyboardShortcuts['ESC, O'] = 'Slide overview';
|
||||||
|
@ -1981,8 +1987,25 @@
|
||||||
|
|
||||||
// If we're in an iframe, post each reveal.js event to the
|
// If we're in an iframe, post each reveal.js event to the
|
||||||
// parent window. Used by the notes plugin
|
// parent window. Used by the notes plugin
|
||||||
|
dispatchPostMessage( type );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dispatched a postMessage of the given type from our window.
|
||||||
|
*/
|
||||||
|
function dispatchPostMessage( type, data ) {
|
||||||
|
|
||||||
if( config.postMessageEvents && window.parent !== window.self ) {
|
if( config.postMessageEvents && window.parent !== window.self ) {
|
||||||
window.parent.postMessage( JSON.stringify({ namespace: 'reveal', eventName: type, state: getState() }), '*' );
|
var message = {
|
||||||
|
namespace: 'reveal',
|
||||||
|
eventName: type,
|
||||||
|
state: getState()
|
||||||
|
};
|
||||||
|
|
||||||
|
extend( message, data );
|
||||||
|
|
||||||
|
window.parent.postMessage( JSON.stringify( message ), '*' );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2243,10 +2266,12 @@
|
||||||
transformSlides( { layout: '' } );
|
transformSlides( { layout: '' } );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Prefer zoom for scaling up so that content remains crisp.
|
// Zoom Scaling
|
||||||
// Don't use zoom to scale down since that can lead to shifts
|
// Content remains crisp no matter how much we scale. Side
|
||||||
// in text layout/line breaks.
|
// effects are minor differences in text layout and iframe
|
||||||
if( scale > 1 && features.zoom ) {
|
// viewports changing size. A 200x200 iframe viewport in a
|
||||||
|
// 2x zoomed presentation ends up having a 400x400 viewport.
|
||||||
|
if( scale > 1 && features.zoom && window.devicePixelRatio < 2 ) {
|
||||||
dom.slides.style.zoom = scale;
|
dom.slides.style.zoom = scale;
|
||||||
dom.slides.style.left = '';
|
dom.slides.style.left = '';
|
||||||
dom.slides.style.top = '';
|
dom.slides.style.top = '';
|
||||||
|
@ -2254,7 +2279,10 @@
|
||||||
dom.slides.style.right = '';
|
dom.slides.style.right = '';
|
||||||
transformSlides( { layout: '' } );
|
transformSlides( { layout: '' } );
|
||||||
}
|
}
|
||||||
// Apply scale transform as a fallback
|
// Transform Scaling
|
||||||
|
// Content layout remains the exact same when scaled up.
|
||||||
|
// Side effect is content becoming blurred, especially with
|
||||||
|
// high scale values on ldpi screens.
|
||||||
else {
|
else {
|
||||||
dom.slides.style.zoom = '';
|
dom.slides.style.zoom = '';
|
||||||
dom.slides.style.left = '50%';
|
dom.slides.style.left = '50%';
|
||||||
|
@ -3039,11 +3067,11 @@
|
||||||
syncBackground( slide );
|
syncBackground( slide );
|
||||||
syncFragments( slide );
|
syncFragments( slide );
|
||||||
|
|
||||||
|
loadSlide( slide );
|
||||||
|
|
||||||
updateBackground();
|
updateBackground();
|
||||||
updateNotes();
|
updateNotes();
|
||||||
|
|
||||||
loadSlide( slide );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3309,7 +3337,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flag if there are ANY vertical slides, anywhere in the deck
|
// Flag if there are ANY vertical slides, anywhere in the deck
|
||||||
if( dom.wrapper.querySelectorAll( '.slides>section>section' ).length ) {
|
if( hasVerticalSlides() ) {
|
||||||
dom.wrapper.classList.add( 'has-vertical-slides' );
|
dom.wrapper.classList.add( 'has-vertical-slides' );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -3317,7 +3345,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flag if there are ANY horizontal slides, anywhere in the deck
|
// Flag if there are ANY horizontal slides, anywhere in the deck
|
||||||
if( dom.wrapper.querySelectorAll( '.slides>section' ).length > 1 ) {
|
if( hasHorizontalSlides() ) {
|
||||||
dom.wrapper.classList.add( 'has-horizontal-slides' );
|
dom.wrapper.classList.add( 'has-horizontal-slides' );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -3599,7 +3627,7 @@
|
||||||
// Stop content inside of previous backgrounds
|
// Stop content inside of previous backgrounds
|
||||||
if( previousBackground ) {
|
if( previousBackground ) {
|
||||||
|
|
||||||
stopEmbeddedContent( previousBackground );
|
stopEmbeddedContent( previousBackground, { unloadIframes: !shouldPreload( previousBackground ) } );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3778,6 +3806,7 @@
|
||||||
background.style.display = 'block';
|
background.style.display = 'block';
|
||||||
|
|
||||||
var backgroundContent = slide.slideBackgroundContentElement;
|
var backgroundContent = slide.slideBackgroundContentElement;
|
||||||
|
var backgroundIframe = slide.getAttribute( 'data-background-iframe' );
|
||||||
|
|
||||||
// If the background contains media, load it
|
// If the background contains media, load it
|
||||||
if( background.hasAttribute( 'data-loaded' ) === false ) {
|
if( background.hasAttribute( 'data-loaded' ) === false ) {
|
||||||
|
@ -3786,8 +3815,7 @@
|
||||||
var backgroundImage = slide.getAttribute( 'data-background-image' ),
|
var backgroundImage = slide.getAttribute( 'data-background-image' ),
|
||||||
backgroundVideo = slide.getAttribute( 'data-background-video' ),
|
backgroundVideo = slide.getAttribute( 'data-background-video' ),
|
||||||
backgroundVideoLoop = slide.hasAttribute( 'data-background-video-loop' ),
|
backgroundVideoLoop = slide.hasAttribute( 'data-background-video-loop' ),
|
||||||
backgroundVideoMuted = slide.hasAttribute( 'data-background-video-muted' ),
|
backgroundVideoMuted = slide.hasAttribute( 'data-background-video-muted' );
|
||||||
backgroundIframe = slide.getAttribute( 'data-background-iframe' );
|
|
||||||
|
|
||||||
// Images
|
// Images
|
||||||
if( backgroundImage ) {
|
if( backgroundImage ) {
|
||||||
|
@ -3828,14 +3856,7 @@
|
||||||
iframe.setAttribute( 'mozallowfullscreen', '' );
|
iframe.setAttribute( 'mozallowfullscreen', '' );
|
||||||
iframe.setAttribute( 'webkitallowfullscreen', '' );
|
iframe.setAttribute( 'webkitallowfullscreen', '' );
|
||||||
|
|
||||||
// Only load autoplaying content when the slide is shown to
|
|
||||||
// avoid having it play in the background
|
|
||||||
if( /autoplay=(1|true|yes)/gi.test( backgroundIframe ) ) {
|
|
||||||
iframe.setAttribute( 'data-src', backgroundIframe );
|
iframe.setAttribute( 'data-src', backgroundIframe );
|
||||||
}
|
|
||||||
else {
|
|
||||||
iframe.setAttribute( 'src', backgroundIframe );
|
|
||||||
}
|
|
||||||
|
|
||||||
iframe.style.width = '100%';
|
iframe.style.width = '100%';
|
||||||
iframe.style.height = '100%';
|
iframe.style.height = '100%';
|
||||||
|
@ -3846,6 +3867,19 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Start loading preloadable iframes
|
||||||
|
var backgroundIframeElement = backgroundContent.querySelector( 'iframe[data-src]' );
|
||||||
|
if( backgroundIframeElement ) {
|
||||||
|
|
||||||
|
// Check if this iframe is eligible to be preloaded
|
||||||
|
if( shouldPreload( background ) && !/autoplay=(1|true|yes)/gi.test( backgroundIframe ) ) {
|
||||||
|
if( backgroundIframeElement.getAttribute( 'src' ) !== backgroundIframe ) {
|
||||||
|
backgroundIframeElement.setAttribute( 'src', backgroundIframe );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3865,6 +3899,11 @@
|
||||||
var background = getSlideBackground( slide );
|
var background = getSlideBackground( slide );
|
||||||
if( background ) {
|
if( background ) {
|
||||||
background.style.display = 'none';
|
background.style.display = 'none';
|
||||||
|
|
||||||
|
// Unload any background iframes
|
||||||
|
toArray( background.querySelectorAll( 'iframe[src]' ) ).forEach( function( element ) {
|
||||||
|
element.removeAttribute( 'src' );
|
||||||
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset lazy-loaded media elements with src attributes
|
// Reset lazy-loaded media elements with src attributes
|
||||||
|
@ -4433,6 +4472,43 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of all horizontal slides in the deck. Each
|
||||||
|
* vertical stack is included as one horizontal slide in the
|
||||||
|
* resulting array.
|
||||||
|
*/
|
||||||
|
function getHorizontalSlides() {
|
||||||
|
|
||||||
|
return toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all vertical slides that exist within this deck.
|
||||||
|
*/
|
||||||
|
function getVerticalSlides() {
|
||||||
|
|
||||||
|
return toArray( dom.wrapper.querySelectorAll( '.slides>section>section' ) );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if there are at least two horizontal slides.
|
||||||
|
*/
|
||||||
|
function hasHorizontalSlides() {
|
||||||
|
|
||||||
|
return getHorizontalSlides().length > 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if there are at least two vertical slides.
|
||||||
|
*/
|
||||||
|
function hasVerticalSlides() {
|
||||||
|
|
||||||
|
return getVerticalSlides().length > 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array of objects where each object represents the
|
* Returns an array of objects where each object represents the
|
||||||
* attributes on its respective slide.
|
* attributes on its respective slide.
|
||||||
|
@ -5116,8 +5192,8 @@
|
||||||
|
|
||||||
// Whitelist specific modified + keycode combinations
|
// Whitelist specific modified + keycode combinations
|
||||||
var prevSlideShortcut = event.shiftKey && event.keyCode === 32;
|
var prevSlideShortcut = event.shiftKey && event.keyCode === 32;
|
||||||
var firstSlideShortcut = ( event.metaKey || event.ctrlKey ) && keyCode === 37;
|
var firstSlideShortcut = event.shiftKey && keyCode === 37;
|
||||||
var lastSlideShortcut = ( event.metaKey || event.ctrlKey ) && keyCode === 39;
|
var lastSlideShortcut = event.shiftKey && keyCode === 39;
|
||||||
|
|
||||||
// Prevent all other events when a modifier is pressed
|
// Prevent all other events when a modifier is pressed
|
||||||
var unusedModifier = !prevSlideShortcut && !firstSlideShortcut && !lastSlideShortcut &&
|
var unusedModifier = !prevSlideShortcut && !firstSlideShortcut && !lastSlideShortcut &&
|
||||||
|
@ -5144,6 +5220,10 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use linear navigation if we're configured to OR if
|
||||||
|
// the presentation is one-dimensional
|
||||||
|
var useLinearMode = config.navigationMode === 'linear' || !hasHorizontalSlides() || !hasVerticalSlides();
|
||||||
|
|
||||||
var triggered = false;
|
var triggered = false;
|
||||||
|
|
||||||
// 1. User defined key bindings
|
// 1. User defined key bindings
|
||||||
|
@ -5216,7 +5296,7 @@
|
||||||
if( firstSlideShortcut ) {
|
if( firstSlideShortcut ) {
|
||||||
slide( 0 );
|
slide( 0 );
|
||||||
}
|
}
|
||||||
else if( !isOverview() && config.navigationMode === 'linear' ) {
|
else if( !isOverview() && useLinearMode ) {
|
||||||
navigatePrev();
|
navigatePrev();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -5228,7 +5308,7 @@
|
||||||
if( lastSlideShortcut ) {
|
if( lastSlideShortcut ) {
|
||||||
slide( Number.MAX_VALUE );
|
slide( Number.MAX_VALUE );
|
||||||
}
|
}
|
||||||
else if( !isOverview() && config.navigationMode === 'linear' ) {
|
else if( !isOverview() && useLinearMode ) {
|
||||||
navigateNext();
|
navigateNext();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -5237,7 +5317,7 @@
|
||||||
}
|
}
|
||||||
// K, UP
|
// K, UP
|
||||||
else if( keyCode === 75 || keyCode === 38 ) {
|
else if( keyCode === 75 || keyCode === 38 ) {
|
||||||
if( !isOverview() && config.navigationMode === 'linear' ) {
|
if( !isOverview() && useLinearMode ) {
|
||||||
navigatePrev();
|
navigatePrev();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -5246,7 +5326,7 @@
|
||||||
}
|
}
|
||||||
// J, DOWN
|
// J, DOWN
|
||||||
else if( keyCode === 74 || keyCode === 40 ) {
|
else if( keyCode === 74 || keyCode === 40 ) {
|
||||||
if( !isOverview() && config.navigationMode === 'linear' ) {
|
if( !isOverview() && useLinearMode ) {
|
||||||
navigateNext();
|
navigateNext();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -5356,20 +5436,50 @@
|
||||||
|
|
||||||
if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
||||||
touch.captured = true;
|
touch.captured = true;
|
||||||
|
if( config.navigationMode === 'linear' ) {
|
||||||
|
if( config.rtl ) {
|
||||||
|
navigateNext();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
navigatePrev();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
navigateLeft();
|
navigateLeft();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
||||||
touch.captured = true;
|
touch.captured = true;
|
||||||
|
if( config.navigationMode === 'linear' ) {
|
||||||
|
if( config.rtl ) {
|
||||||
|
navigatePrev();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
navigateNext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
navigateRight();
|
navigateRight();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if( deltaY > touch.threshold ) {
|
else if( deltaY > touch.threshold ) {
|
||||||
touch.captured = true;
|
touch.captured = true;
|
||||||
|
if( config.navigationMode === 'linear' ) {
|
||||||
|
navigatePrev();
|
||||||
|
}
|
||||||
|
else {
|
||||||
navigateUp();
|
navigateUp();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if( deltaY < -touch.threshold ) {
|
else if( deltaY < -touch.threshold ) {
|
||||||
touch.captured = true;
|
touch.captured = true;
|
||||||
|
if( config.navigationMode === 'linear' ) {
|
||||||
|
navigateNext();
|
||||||
|
}
|
||||||
|
else {
|
||||||
navigateDown();
|
navigateDown();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If we're embedded, only block touch events if they have
|
// If we're embedded, only block touch events if they have
|
||||||
// triggered an action
|
// triggered an action
|
||||||
|
@ -5905,6 +6015,15 @@
|
||||||
// Returns the speaker notes string for a slide, or null
|
// Returns the speaker notes string for a slide, or null
|
||||||
getSlideNotes: getSlideNotes,
|
getSlideNotes: getSlideNotes,
|
||||||
|
|
||||||
|
// Returns an array with all horizontal/vertical slides in the deck
|
||||||
|
getHorizontalSlides: getHorizontalSlides,
|
||||||
|
getVerticalSlides: getVerticalSlides,
|
||||||
|
|
||||||
|
// Checks if the presentation contains two or more
|
||||||
|
// horizontal/vertical slides
|
||||||
|
hasHorizontalSlides: hasHorizontalSlides,
|
||||||
|
hasVerticalSlides: hasVerticalSlides,
|
||||||
|
|
||||||
// Returns the previous slide element, may be null
|
// Returns the previous slide element, may be null
|
||||||
getPreviousSlide: function() {
|
getPreviousSlide: function() {
|
||||||
return previousSlide;
|
return previousSlide;
|
||||||
|
|
225
package-lock.json
generated
225
package-lock.json
generated
|
@ -53,9 +53,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.9.2",
|
"version": "6.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz",
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.1.tgz",
|
||||||
"integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==",
|
"integrity": "sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fast-deep-equal": "^2.0.1",
|
"fast-deep-equal": "^2.0.1",
|
||||||
|
@ -712,9 +712,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"combined-stream": {
|
"combined-stream": {
|
||||||
"version": "1.0.7",
|
"version": "1.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
|
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"delayed-stream": "~1.0.0"
|
"delayed-stream": "~1.0.0"
|
||||||
|
@ -1988,9 +1988,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"fstream": {
|
"fstream": {
|
||||||
"version": "1.0.11",
|
"version": "1.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
|
||||||
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
|
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"graceful-fs": "^4.1.2",
|
"graceful-fs": "^4.1.2",
|
||||||
|
@ -3281,30 +3281,12 @@
|
||||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
|
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"lodash.assign": {
|
|
||||||
"version": "4.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
|
|
||||||
"integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"lodash.clonedeep": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
|
||||||
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"lodash.isfinite": {
|
"lodash.isfinite": {
|
||||||
"version": "3.3.2",
|
"version": "3.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
|
||||||
"integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=",
|
"integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"lodash.mergewith": {
|
|
||||||
"version": "4.6.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
|
|
||||||
"integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"loud-rejection": {
|
"loud-rejection": {
|
||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
|
||||||
|
@ -3431,18 +3413,18 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"mime-db": {
|
"mime-db": {
|
||||||
"version": "1.38.0",
|
"version": "1.40.0",
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
|
||||||
"integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==",
|
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"mime-types": {
|
"mime-types": {
|
||||||
"version": "2.1.22",
|
"version": "2.1.24",
|
||||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
|
||||||
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
|
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"mime-db": "~1.38.0"
|
"mime-db": "1.40.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
|
@ -3559,9 +3541,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"nan": {
|
"nan": {
|
||||||
"version": "2.12.1",
|
"version": "2.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
|
||||||
"integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==",
|
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"nanomatch": {
|
"nanomatch": {
|
||||||
|
@ -3609,45 +3591,6 @@
|
||||||
"which": "1"
|
"which": "1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"balanced-match": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
|
||||||
"version": "1.1.11",
|
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"balanced-match": "^1.0.0",
|
|
||||||
"concat-map": "0.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"glob": {
|
|
||||||
"version": "7.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
|
||||||
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"fs.realpath": "^1.0.0",
|
|
||||||
"inflight": "^1.0.4",
|
|
||||||
"inherits": "2",
|
|
||||||
"minimatch": "^3.0.4",
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"path-is-absolute": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"minimatch": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"semver": {
|
"semver": {
|
||||||
"version": "5.3.0",
|
"version": "5.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
|
||||||
|
@ -3673,9 +3616,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node-sass": {
|
"node-sass": {
|
||||||
"version": "4.11.0",
|
"version": "4.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz",
|
||||||
"integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==",
|
"integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"async-foreach": "^0.1.3",
|
"async-foreach": "^0.1.3",
|
||||||
|
@ -3685,59 +3628,16 @@
|
||||||
"get-stdin": "^4.0.1",
|
"get-stdin": "^4.0.1",
|
||||||
"glob": "^7.0.3",
|
"glob": "^7.0.3",
|
||||||
"in-publish": "^2.0.0",
|
"in-publish": "^2.0.0",
|
||||||
"lodash.assign": "^4.2.0",
|
"lodash": "^4.17.11",
|
||||||
"lodash.clonedeep": "^4.3.2",
|
|
||||||
"lodash.mergewith": "^4.6.0",
|
|
||||||
"meow": "^3.7.0",
|
"meow": "^3.7.0",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^0.5.1",
|
||||||
"nan": "^2.10.0",
|
"nan": "^2.13.2",
|
||||||
"node-gyp": "^3.8.0",
|
"node-gyp": "^3.8.0",
|
||||||
"npmlog": "^4.0.0",
|
"npmlog": "^4.0.0",
|
||||||
"request": "^2.88.0",
|
"request": "^2.88.0",
|
||||||
"sass-graph": "^2.2.4",
|
"sass-graph": "^2.2.4",
|
||||||
"stdout-stream": "^1.4.0",
|
"stdout-stream": "^1.4.0",
|
||||||
"true-case-path": "^1.0.2"
|
"true-case-path": "^1.0.2"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"balanced-match": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
|
||||||
"version": "1.1.11",
|
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"balanced-match": "^1.0.0",
|
|
||||||
"concat-map": "0.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"glob": {
|
|
||||||
"version": "7.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
|
||||||
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"fs.realpath": "^1.0.0",
|
|
||||||
"inflight": "^1.0.4",
|
|
||||||
"inherits": "2",
|
|
||||||
"minimatch": "^3.0.4",
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"path-is-absolute": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"minimatch": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nopt": {
|
"nopt": {
|
||||||
|
@ -4229,9 +4129,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"psl": {
|
"psl": {
|
||||||
"version": "1.1.31",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
|
"resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
|
||||||
"integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
|
"integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"punycode": {
|
"punycode": {
|
||||||
|
@ -4572,47 +4472,6 @@
|
||||||
"lodash": "^4.0.0",
|
"lodash": "^4.0.0",
|
||||||
"scss-tokenizer": "^0.2.3",
|
"scss-tokenizer": "^0.2.3",
|
||||||
"yargs": "^7.0.0"
|
"yargs": "^7.0.0"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"balanced-match": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
|
||||||
"version": "1.1.11",
|
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"balanced-match": "^1.0.0",
|
|
||||||
"concat-map": "0.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"glob": {
|
|
||||||
"version": "7.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
|
||||||
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"fs.realpath": "^1.0.0",
|
|
||||||
"inflight": "^1.0.4",
|
|
||||||
"inherits": "2",
|
|
||||||
"minimatch": "^3.0.4",
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"path-is-absolute": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"minimatch": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scss-tokenizer": {
|
"scss-tokenizer": {
|
||||||
|
@ -5248,13 +5107,13 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"tar": {
|
"tar": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
|
||||||
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
|
"integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"block-stream": "*",
|
"block-stream": "*",
|
||||||
"fstream": "^1.0.2",
|
"fstream": "^1.0.12",
|
||||||
"inherits": "2"
|
"inherits": "2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -5379,26 +5238,10 @@
|
||||||
"glob": "^7.1.2"
|
"glob": "^7.1.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"balanced-match": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
|
||||||
"version": "1.1.11",
|
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"balanced-match": "^1.0.0",
|
|
||||||
"concat-map": "0.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"glob": {
|
"glob": {
|
||||||
"version": "7.1.3",
|
"version": "7.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
|
||||||
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fs.realpath": "^1.0.0",
|
"fs.realpath": "^1.0.0",
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
"grunt-sass": "^3.0.2",
|
"grunt-sass": "^3.0.2",
|
||||||
"grunt-zip": "~0.17.1",
|
"grunt-zip": "~0.17.1",
|
||||||
"load-grunt-tasks": "^4.0.0",
|
"load-grunt-tasks": "^4.0.0",
|
||||||
"node-sass": "^4.11.0",
|
"node-sass": "^4.12.0",
|
||||||
"mustache": "^2.3.0",
|
"mustache": "^2.3.0",
|
||||||
"socket.io": "^2.2.0"
|
"socket.io": "^2.2.0"
|
||||||
},
|
},
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -539,12 +539,17 @@
|
||||||
|
|
||||||
callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) {
|
callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) {
|
||||||
callRevealApi( 'getConfig', [], function ( config ) {
|
callRevealApi( 'getConfig', [], function ( config ) {
|
||||||
|
var totalTime = config.totalTime;
|
||||||
|
var minTimePerSlide = config.minimumTimePerSlide || 0;
|
||||||
var defaultTiming = config.defaultTiming;
|
var defaultTiming = config.defaultTiming;
|
||||||
if (defaultTiming == null) {
|
if ((defaultTiming == null) && (totalTime == null)) {
|
||||||
callback(null);
|
callback(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Setting totalTime overrides defaultTiming
|
||||||
|
if (totalTime) {
|
||||||
|
defaultTiming = 0;
|
||||||
|
}
|
||||||
var timings = [];
|
var timings = [];
|
||||||
for ( var i in slideAttributes ) {
|
for ( var i in slideAttributes ) {
|
||||||
var slide = slideAttributes[ i ];
|
var slide = slideAttributes[ i ];
|
||||||
|
@ -559,7 +564,22 @@
|
||||||
}
|
}
|
||||||
timings.push(timing);
|
timings.push(timing);
|
||||||
}
|
}
|
||||||
|
if ( totalTime ) {
|
||||||
|
// After we've allocated time to individual slides, we summarize it and
|
||||||
|
// subtract it from the total time
|
||||||
|
var remainingTime = totalTime - timings.reduce( function(a, b) { return a + b; }, 0 );
|
||||||
|
// The remaining time is divided by the number of slides that have 0 seconds
|
||||||
|
// allocated at the moment, giving the average time-per-slide on the remaining slides
|
||||||
|
var remainingSlides = (timings.filter( function(x) { return x == 0 }) ).length
|
||||||
|
var timePerSlide = Math.round( remainingTime / remainingSlides, 0 )
|
||||||
|
// And now we replace every zero-value timing with that average
|
||||||
|
timings = timings.map( function(x) { return (x==0 ? timePerSlide : x) } );
|
||||||
|
}
|
||||||
|
var slidesUnderMinimum = timings.filter( function(x) { return (x < minTimePerSlide) } ).length
|
||||||
|
if ( slidesUnderMinimum ) {
|
||||||
|
message = "The pacing time for " + slidesUnderMinimum + " slide(s) is under the configured minimum of " + minTimePerSlide + " seconds. Check the data-timing attribute on individual slides, or consider increasing the totalTime or minimumTimePerSlide configuration options (or removing some slides).";
|
||||||
|
alert(message);
|
||||||
|
}
|
||||||
callback( timings );
|
callback( timings );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
104
test/test-iframe-backgrounds.html
Normal file
104
test/test-iframe-backgrounds.html
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
|
||||||
|
<title>reveal.js - Test Iframe Backgrounds</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/reveal.css">
|
||||||
|
<link rel="stylesheet" href="qunit-2.5.0.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="overflow: auto;">
|
||||||
|
|
||||||
|
<div id="qunit"></div>
|
||||||
|
<div id="qunit-fixture"></div>
|
||||||
|
|
||||||
|
<div class="reveal" style="display: none;">
|
||||||
|
|
||||||
|
<div class="slides">
|
||||||
|
|
||||||
|
<section data-background-iframe="#1">1</section>
|
||||||
|
<section data-background-iframe="#2">2</section>
|
||||||
|
<section data-background-iframe="#3" data-preload>3</section>
|
||||||
|
<section data-background-iframe="#4">4</section>
|
||||||
|
<section data-background-iframe="#5">5</section>
|
||||||
|
<section data-background-iframe="#6">6</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="../js/reveal.js"></script>
|
||||||
|
<script src="qunit-2.5.0.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
Reveal.addEventListener( 'ready', function() {
|
||||||
|
|
||||||
|
function getIframe( index ) {
|
||||||
|
return document.querySelectorAll( '.slide-background' )[index].querySelector( 'iframe' );
|
||||||
|
}
|
||||||
|
|
||||||
|
QUnit.module( 'Iframe' );
|
||||||
|
|
||||||
|
QUnit.test( 'Using default settings', function( assert ) {
|
||||||
|
|
||||||
|
Reveal.slide(0);
|
||||||
|
assert.strictEqual( getIframe(1).hasAttribute( 'src' ), false, 'not preloaded when within viewDistance' );
|
||||||
|
|
||||||
|
Reveal.slide(1);
|
||||||
|
assert.strictEqual( getIframe(1).hasAttribute( 'src' ), true, 'loaded when slide becomes visible' );
|
||||||
|
|
||||||
|
Reveal.slide(0);
|
||||||
|
assert.strictEqual( getIframe(1).hasAttribute( 'src' ), false, 'unloaded when slide becomes invisible' );
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test( 'Using data-preload', function( assert ) {
|
||||||
|
|
||||||
|
Reveal.slide(1);
|
||||||
|
assert.strictEqual( getIframe(2).hasAttribute( 'src' ), true, 'preloaded within viewDistance' );
|
||||||
|
assert.strictEqual( getIframe(1).hasAttribute( 'src' ), true, 'loaded when slide becomes visible' );
|
||||||
|
|
||||||
|
Reveal.slide(0);
|
||||||
|
assert.strictEqual( getIframe(3).hasAttribute( 'src' ), false, 'unloads outside of viewDistance' );
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test( 'Using preloadIframes: true', function( assert ) {
|
||||||
|
|
||||||
|
Reveal.configure({ preloadIframes: true });
|
||||||
|
|
||||||
|
Reveal.slide(1);
|
||||||
|
assert.strictEqual( getIframe(0).hasAttribute( 'src' ), true, 'preloaded within viewDistance' );
|
||||||
|
assert.strictEqual( getIframe(1).hasAttribute( 'src' ), true, 'preloaded within viewDistance' );
|
||||||
|
assert.strictEqual( getIframe(2).hasAttribute( 'src' ), true, 'preloaded within viewDistance' );
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test( 'Using preloadIframes: false', function( assert ) {
|
||||||
|
|
||||||
|
Reveal.configure({ preloadIframes: false });
|
||||||
|
|
||||||
|
Reveal.slide(0);
|
||||||
|
assert.strictEqual( getIframe(1).hasAttribute( 'src' ), false, 'not preloaded within viewDistance' );
|
||||||
|
assert.strictEqual( getIframe(2).hasAttribute( 'src' ), false, 'not preloaded within viewDistance' );
|
||||||
|
|
||||||
|
Reveal.slide(1);
|
||||||
|
assert.strictEqual( getIframe(1).hasAttribute( 'src' ), true, 'loaded when slide becomes visible' );
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
} );
|
||||||
|
|
||||||
|
Reveal.initialize({
|
||||||
|
viewDistance: 3
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user