diff options
author | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-04-27 14:46:49 +0200 |
---|---|---|
committer | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-04-27 14:47:02 +0200 |
commit | eea437f4be92bafbe96d5276233d4fdff7b5f814 (patch) | |
tree | 95c3d337dd640b160a252c1dc044e9ab0a774078 | |
parent | 1623b3782efe7b57846ad7fb66fc50d1c8f041ea (diff) | |
download | fosdem-2018-presentation-eea437f4be92bafbe96d5276233d4fdff7b5f814.tar fosdem-2018-presentation-eea437f4be92bafbe96d5276233d4fdff7b5f814.tar.gz |
new api method: getBackgroundSlide
-rw-r--r-- | js/reveal.js | 48 | ||||
-rw-r--r-- | test/test.js | 8 |
2 files changed, 45 insertions, 11 deletions
diff --git a/js/reveal.js b/js/reveal.js index 5dc6856..55642e2 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -2286,7 +2286,7 @@ var Reveal = (function(){ element.removeAttribute( 'data-src' ); } ); - // Media elements with multiple <source>s + // Media elements with <source> children toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( media ) { var sources = 0; @@ -2634,6 +2634,38 @@ var Reveal = (function(){ } + function getSlide( x, y ) { + + var horizontalSlide = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR )[ x ]; + var verticalSlides = horizontalSlide && horizontalSlide.querySelectorAll( 'section' ); + + if( typeof y === 'number' ) { + return verticalSlides ? verticalSlides[ y ] : undefined; + } + + return horizontalSlide; + + } + + /** + * Returns the background element for the given slide. + * All slides, even the ones with no background properties + * defined, have a background element so this never returns + * null. + */ + function getSlideBackground( x, y ) { + + var horizontalBackground = document.querySelectorAll( '.backgrounds>.slide-background' )[ x ]; + var verticalBackgrounds = horizontalBackground && horizontalBackground.querySelectorAll( '.slide-background' ); + + if( typeof y === 'number' ) { + return verticalBackgrounds ? verticalBackgrounds[ y ] : undefined; + } + + return horizontalBackground; + + } + /** * Retrieves the current state of the presentation as * an object. This state can then be restored at any @@ -3720,17 +3752,11 @@ var Reveal = (function(){ getTotalSlides: getTotalSlides, - // Returns the slide at the specified index, y is optional - getSlide: function( x, y ) { - var horizontalSlide = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR )[ x ]; - var verticalSlides = horizontalSlide && horizontalSlide.querySelectorAll( 'section' ); - - if( typeof y !== 'undefined' ) { - return verticalSlides ? verticalSlides[ y ] : undefined; - } + // Returns the slide element at the specified index + getSlide: getSlide, - return horizontalSlide; - }, + // Returns the slide background element at the specified index + getSlideBackground: getSlideBackground, // Returns the previous slide element, may be null getPreviousSlide: function() { diff --git a/test/test.js b/test/test.js index 93a3d61..30b5c75 100644 --- a/test/test.js +++ b/test/test.js @@ -109,6 +109,14 @@ Reveal.addEventListener( 'ready', function() { strictEqual( Reveal.getSlide( 100 ), undefined, 'returns undefined when slide can\'t be found' ); }); + test( 'Reveal.getSlideBackground', function() { + var firstBackground = document.querySelector( '.reveal .backgrounds>.slide-background:first-child' ); + + equal( Reveal.getSlideBackground( 0 ), firstBackground, 'gets correct first background' ); + + strictEqual( Reveal.getSlideBackground( 100 ), undefined, 'returns undefined when background can\'t be found' ); + }); + test( 'Reveal.getPreviousSlide/getCurrentSlide', function() { Reveal.slide( 0, 0 ); Reveal.slide( 1, 0 ); |