diff options
author | Dougal J. Sutherland <dougal@gmail.com> | 2019-01-31 18:28:38 +0000 |
---|---|---|
committer | Dougal J. Sutherland <dougal@gmail.com> | 2019-01-31 18:28:38 +0000 |
commit | 43d1c711078c94253770b3656b97dc67fc85f4c7 (patch) | |
tree | abfbbe2c778386aff644e05dbcbc5a4f66334a78 /js | |
parent | aa8be6829cae09ffe0332120fc0007383d49d65c (diff) | |
download | perl-software-in-gnu-guix-43d1c711078c94253770b3656b97dc67fc85f4c7.tar perl-software-in-gnu-guix-43d1c711078c94253770b3656b97dc67fc85f4c7.tar.gz |
allow custom slide numbering functions
Diffstat (limited to 'js')
-rw-r--r-- | js/reveal.js | 60 |
1 files changed, 34 insertions, 26 deletions
diff --git a/js/reveal.js b/js/reveal.js index 08ece7f..240dc42 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -3257,40 +3257,48 @@ * "h/v": horizontal / vertical slide number * "c": flattened slide number * "c/t": flattened slide number / total slides + * + * Alternatively, config.slideNumber can be a function returning a + * three-element array with arguments to formatSlideNumber(). */ function updateSlideNumber() { // Update slide number if enabled if( config.slideNumber && dom.slideNumber ) { - var value = []; + var value; var format = 'h.v'; - // Check if a custom number format is available - if( typeof config.slideNumber === 'string' ) { - format = config.slideNumber; - } - - // If there are ONLY vertical slides in this deck, always use - // a flattened slide number - if( !/c/.test( format ) && dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ).length === 1 ) { - format = 'c'; - } - - switch( format ) { - case 'c': - value.push( getSlidePastCount() + 1 ); - break; - case 'c/t': - value.push( getSlidePastCount() + 1, '/', getTotalSlides() ); - break; - case 'h/v': - value.push( indexh + 1 ); - if( isVerticalSlide() ) value.push( '/', indexv + 1 ); - break; - default: - value.push( indexh + 1 ); - if( isVerticalSlide() ) value.push( '.', indexv + 1 ); + if ( typeof config.slideNumber === 'function' ) { + value = config.slideNumber(); + } else { + // Check if a custom number format is available + if( typeof config.slideNumber === 'string' ) { + format = config.slideNumber; + } + + // If there are ONLY vertical slides in this deck, always use + // a flattened slide number + if( !/c/.test( format ) && dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ).length === 1 ) { + format = 'c'; + } + + value = []; + switch( format ) { + case 'c': + value.push( getSlidePastCount() + 1 ); + break; + case 'c/t': + value.push( getSlidePastCount() + 1, '/', getTotalSlides() ); + break; + case 'h/v': + value.push( indexh + 1 ); + if( isVerticalSlide() ) value.push( '/', indexv + 1 ); + break; + default: + value.push( indexh + 1 ); + if( isVerticalSlide() ) value.push( '.', indexv + 1 ); + } } dom.slideNumber.innerHTML = formatSlideNumber( value[0], value[1], value[2] ); |