Skip to content
Snippets Groups Projects
client.js 1.55 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 ),
    		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 );
    
    	/**
    	 * Posts the current slide data to the notes window
    	 */
    	function post() {
    
    		var slideElement = Reveal.getCurrentSlide(),
    
    			notesElement = slideElement.querySelector( 'aside.notes' );
    
    			notes: '',
    			markdown: false,
    			socketId: socketId,
    			state: Reveal.getState()
    
    		// 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( 'state', messageData );
    
    	}
    
    	// Monitor events that trigger a change in state
    	Reveal.addEventListener( 'slidechanged', post );
    	Reveal.addEventListener( 'fragmentshown', post );
    	Reveal.addEventListener( 'fragmenthidden', post );
    	Reveal.addEventListener( 'overviewhidden', post );
    	Reveal.addEventListener( 'overviewshown', post );
    	Reveal.addEventListener( 'paused', post );
    	Reveal.addEventListener( 'resumed', post );
    
    	// Post the initial state
    	post();