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