Skip to content

Commit

Permalink
Add autoplay URL parameter trigger.
Browse files Browse the repository at this point in the history
Resolves impress#720
  • Loading branch information
mrf345 committed Mar 26, 2020
1 parent d3c467b commit bb2dbe8
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 4 deletions.
14 changes: 13 additions & 1 deletion src/lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,17 @@
return byId( window.location.hash.replace( /^#\/?/, "" ) );
};

// `getUrlParamValue` return a given URL parameter value if it exists
// `undefined` if it doesn't exist
var getUrlParamValue = function( parameter ) {
var chunk = window.location.search.split( parameter + '=' )[ 1 ];
var value = chunk && chunk.split( '&' )[ 0 ];

if ( value ) {
return value;
}
}

// Throttling function calls, by Remy Sharp
// http://remysharp.com/2010/07/21/throttling-function-calls/
var throttle = function( fn, delay ) {
Expand Down Expand Up @@ -85,7 +96,8 @@
getElementFromHash: getElementFromHash,
throttle: throttle,
toNumber: toNumber,
triggerEvent: triggerEvent
triggerEvent: triggerEvent,
getUrlParamValue: getUrlParamValue
};
roots[ rootId ] = lib;
return lib;
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ rather require the user to invoke them somehow. For example:
* The *navigation* plugin waits for the user to press some keys, arrows, page
down, page up, space or tab.
* The *autoplay* plugin looks for the HTML attribute `data-autoplay` to see
whether it should do its thing.
whether it should do its thing. It can also be triggered with a URL GET parameter
`?impress-autoplay=5` *5 is the waiting duration*.
* The *toolbar* plugin looks for a `<div>` element to become visible.

Extra addons
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/autoplay/autoplay.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,10 @@
// Element attributes starting with "data-", become available under
// element.dataset. In addition hyphenized words become camelCased.
var data = root.dataset;
var autoplay = util.getUrlParamValue( 'impress-autoplay' ) || data.autoplay;

if ( data.autoplay ) {
autoplayDefault = util.toNumber( data.autoplay, 0 );
if ( autoplay ) {
autoplayDefault = util.toNumber( autoplay, 0 );
}

var toolbar = document.querySelector( "#impress-toolbar" );
Expand Down

0 comments on commit bb2dbe8

Please sign in to comment.