(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); } ); }());