aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDougal J. Sutherland <dougal@gmail.com>2019-01-31 18:28:38 +0000
committerDougal J. Sutherland <dougal@gmail.com>2019-01-31 18:28:38 +0000
commit43d1c711078c94253770b3656b97dc67fc85f4c7 (patch)
treeabfbbe2c778386aff644e05dbcbc5a4f66334a78
parentaa8be6829cae09ffe0332120fc0007383d49d65c (diff)
downloadperl-software-in-gnu-guix-43d1c711078c94253770b3656b97dc67fc85f4c7.tar
perl-software-in-gnu-guix-43d1c711078c94253770b3656b97dc67fc85f4c7.tar.gz
allow custom slide numbering functions
-rw-r--r--js/reveal.js60
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] );