| (function() { |
| // don't emit events from inside the previews themselves |
| if ( window.location.search.match( /receiver/gi ) ) { return; } |
| |
| var socket = io.connect(window.location.origin); |
| var socketId = Math.random().toString().slice(2); |
| |
| console.log('View slide notes at ' + window.location.origin + '/notes/' + socketId); |
| window.open(window.location.origin + '/notes/' + socketId, 'notes-' + socketId); |
| |
| // Fires when a fragment is shown |
| Reveal.addEventListener( 'fragmentshown', function( event ) { |
| var fragmentData = { |
| fragment : 'next', |
| socketId : socketId |
| }; |
| socket.emit('fragmentchanged', fragmentData); |
| } ); |
| |
| // Fires when a fragment is hidden |
| Reveal.addEventListener( 'fragmenthidden', function( event ) { |
| var fragmentData = { |
| fragment : 'previous', |
| socketId : socketId |
| }; |
| socket.emit('fragmentchanged', fragmentData); |
| } ); |
| |
| // Fires when slide is changed |
| 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 notes = slideElement.querySelector('aside.notes'); |
| var slideData = { |
| notes : notes ? notes.innerHTML : '', |
| indexh : event.indexh, |
| indexv : event.indexv, |
| nextindexh : nextindexh, |
| nextindexv : nextindexv, |
| socketId : socketId, |
| markdown : notes ? typeof notes.getAttribute('data-markdown') === 'string' : false |
| |
| }; |
| |
| socket.emit('slidechanged', slideData); |
| } ); |
| }()); |