Skip to content
Snippets Groups Projects
client.js 1.92 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	// 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',
    
    		socket.emit( 'fragmentchanged', fragmentData );
    
    	} );
    
    	// Fires when slide is changed
    
    	Reveal.addEventListener( 'slidechanged', function( event ) {
    
    		var nextindexh,
    			nextindexv,
    			slideElement = event.currentSlide,
    			notesElement = slideElement.querySelector( 'aside.notes' );
    
    		if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
    
    			nextindexh = event.indexh;
    			nextindexv = event.indexv + 1;
    		} else {
    			nextindexh = event.indexh + 1;
    			nextindexv = 0;
    		}
    
    			indexh : event.indexh,
    			indexv : event.indexv,
    			nextindexh : nextindexh,
    			nextindexv : nextindexv,
    
    			socketId : socketId,
    
    		// Look for notes defined in a slide attribute
    		if( slideElement.hasAttribute( 'data-notes' ) ) {
    			messageData.notes = slideElement.getAttribute( 'data-notes' );
    		}
    
    		// Look for notes defined in an aside element
    		if( notesElement ) {
    			messageData.notes = notesElement.innerHTML;
    			messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
    		}
    
    		socket.emit( 'slidechanged', messageData );