aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHakim El Hattab <hakim.elhattab@gmail.com>2016-03-20 17:57:52 +0100
committerHakim El Hattab <hakim.elhattab@gmail.com>2016-03-20 17:57:52 +0100
commit2625a9292eae1c13c609eabd6d71eef825b55c92 (patch)
tree014bc4e194dbcf40f4ab087b498ade4b584d40da
parent0dbdd8a3667e043f3f67dc1ffdb654067b592919 (diff)
downloadperl-software-in-gnu-guix-2625a9292eae1c13c609eabd6d71eef825b55c92.tar
perl-software-in-gnu-guix-2625a9292eae1c13c609eabd6d71eef825b55c92.tar.gz
add 'shuffle' config value and API method #1506 #1089
-rw-r--r--README.md6
-rw-r--r--js/reveal.js27
2 files changed, 33 insertions, 0 deletions
diff --git a/README.md b/README.md
index 80bf31d..af1d6d7 100644
--- a/README.md
+++ b/README.md
@@ -152,6 +152,9 @@ Reveal.initialize({
// Change the presentation direction to be RTL
rtl: false,
+ // Randomizes the order of slides each time the presentation loads
+ shuffle: false,
+
// Turns fragments on and off globally
fragments: true,
@@ -382,6 +385,9 @@ Reveal.next();
Reveal.prevFragment();
Reveal.nextFragment();
+// Randomize the order of slides
+Reveal.shuffle();
+
// Toggle presentation states, optionally pass true/false to force on/off
Reveal.toggleOverview();
Reveal.togglePause();
diff --git a/js/reveal.js b/js/reveal.js
index 7454535..575214e 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -81,6 +81,9 @@
// Change the presentation direction to be RTL
rtl: false,
+ // Randomizes the order of slides each time the presentation loads
+ shuffle: false,
+
// Turns fragments on and off globally
fragments: true,
@@ -898,6 +901,10 @@
dom.progress.style.display = config.progress ? 'block' : 'none';
dom.slideNumber.style.display = config.slideNumber && !isPrintingPDF() ? 'block' : 'none';
+ if( config.shuffle ) {
+ shuffle();
+ }
+
if( config.rtl ) {
dom.wrapper.classList.add( 'rtl' );
}
@@ -2330,6 +2337,23 @@
}
/**
+ * Randomly shuffles all slides in the deck.
+ */
+ function shuffle() {
+
+ var slides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
+
+ slides.forEach( function( slide ) {
+
+ // Insert this slide next to another random slide. This may
+ // cause the slide to insert before itself but that's fine.
+ dom.slides.insertBefore( slide, slides[ Math.floor( Math.random() * slides.length ) ] );
+
+ } );
+
+ }
+
+ /**
* Updates one dimension of slides by showing the slide
* with the specified index.
*
@@ -4579,6 +4603,9 @@
// Forces an update in slide layout
layout: layout,
+ // Randomizes the order of slides
+ shuffle: shuffle,
+
// Returns an object with the available routes as booleans (left/right/top/bottom)
availableRoutes: availableRoutes,