diff options
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/multiplex/client.js | 2 | ||||
-rw-r--r-- | plugin/multiplex/master.js | 62 | ||||
-rw-r--r-- | plugin/remotes/remotes.js | 10 |
3 files changed, 50 insertions, 24 deletions
diff --git a/plugin/multiplex/client.js b/plugin/multiplex/client.js index 0e0b39b..e6179f6 100644 --- a/plugin/multiplex/client.js +++ b/plugin/multiplex/client.js @@ -8,6 +8,6 @@ if (data.socketId !== socketId) { return; } if( window.location.host === 'localhost:1947' ) return; - Reveal.slide(data.indexh, data.indexv, null, 'remote'); + Reveal.slide(data.indexh, data.indexv, data.indexf, 'remote'); }); }()); diff --git a/plugin/multiplex/master.js b/plugin/multiplex/master.js index 75697d4..deb39cd 100644 --- a/plugin/multiplex/master.js +++ b/plugin/multiplex/master.js @@ -5,28 +5,46 @@ var socket = io.connect(multiplex.url); - Reveal.addEventListener( 'slidechanged', function( event ) { - var nextindexh; - var nextindexv; - var slideElement = event.currentSlide; - - if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') { - nextindexh = event.indexh; - nextindexv = event.indexv + 1; - } else { - nextindexh = event.indexh + 1; - nextindexv = 0; - } + var notify = function( slideElement, indexh, indexv, origin ) { + if( typeof origin === 'undefined' && origin !== 'remote' ) { + var nextindexh; + var nextindexv; + + var fragmentindex = Reveal.getIndices().f; + if (typeof fragmentindex == 'undefined') { + fragmentindex = 0; + } - var slideData = { - indexh : event.indexh, - indexv : event.indexv, - nextindexh : nextindexh, - nextindexv : nextindexv, - secret: multiplex.secret, - socketId : multiplex.id - }; + if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') { + nextindexh = indexh; + nextindexv = indexv + 1; + } else { + nextindexh = indexh + 1; + nextindexv = 0; + } - if( typeof event.origin === 'undefined' && event.origin !== 'remote' ) socket.emit('slidechanged', slideData); + var slideData = { + indexh : indexh, + indexv : indexv, + indexf : fragmentindex, + nextindexh : nextindexh, + nextindexv : nextindexv, + secret: multiplex.secret, + socketId : multiplex.id + }; + + socket.emit('slidechanged', slideData); + } + } + + Reveal.addEventListener( 'slidechanged', function( event ) { + notify( event.currentSlide, event.indexh, event.indexv, event.origin ); } ); -}()); + + var fragmentNotify = function( event ) { + notify( Reveal.getCurrentSlide(), Reveal.getIndices().h, Reveal.getIndices().v, event.origin ); + }; + + Reveal.addEventListener( 'fragmentshown', fragmentNotify ); + Reveal.addEventListener( 'fragmenthidden', fragmentNotify ); +}());
\ No newline at end of file diff --git a/plugin/remotes/remotes.js b/plugin/remotes/remotes.js index a1f10b8..febdf87 100644 --- a/plugin/remotes/remotes.js +++ b/plugin/remotes/remotes.js @@ -13,7 +13,15 @@ return ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch; })(); - if(!hasTouch){ + /** + * Detects if notes are enable and the current page is opened inside an /iframe + * this prevents loading Remotes.io several times + */ + var remotesAndIsNotes = (function(){ + return !(window.RevealNotes && self == top); + })(); + + if(!hasTouch && !remotesAndIsNotes){ head.ready( 'remotes.ne.min.js', function() { new Remotes("preview") .on("swipe-left", function(e){ Reveal.right(); }) |