github.com/mweagle/Sparta@v1.15.0/docs_source/static/presentations/reveal.js-3.9.2/plugin/notes-server/client.js (about)

     1  (function() {
     2  
     3  	// don't emit events from inside the previews themselves
     4  	if( window.location.search.match( /receiver/gi ) ) { return; }
     5  
     6  	var socket = io.connect( window.location.origin ),
     7  		socketId = Math.random().toString().slice( 2 );
     8  
     9  	console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId );
    10  
    11  	window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId );
    12  
    13  	/**
    14  	 * Posts the current slide data to the notes window
    15  	 */
    16  	function post() {
    17  
    18  		var slideElement = Reveal.getCurrentSlide(),
    19  			notesElement = slideElement.querySelector( 'aside.notes' );
    20  
    21  		var messageData = {
    22  			notes: '',
    23  			markdown: false,
    24  			socketId: socketId,
    25  			state: Reveal.getState()
    26  		};
    27  
    28  		// Look for notes defined in a slide attribute
    29  		if( slideElement.hasAttribute( 'data-notes' ) ) {
    30  			messageData.notes = slideElement.getAttribute( 'data-notes' );
    31  		}
    32  
    33  		// Look for notes defined in an aside element
    34  		if( notesElement ) {
    35  			messageData.notes = notesElement.innerHTML;
    36  			messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
    37  		}
    38  
    39  		socket.emit( 'statechanged', messageData );
    40  
    41  	}
    42  
    43  	// When a new notes window connects, post our current state
    44  	socket.on( 'new-subscriber', function( data ) {
    45  		post();
    46  	} );
    47  
    48  	// When the state changes from inside of the speaker view
    49  	socket.on( 'statechanged-speaker', function( data ) {
    50  		Reveal.setState( data.state );
    51  	} );
    52  
    53  	// Monitor events that trigger a change in state
    54  	Reveal.addEventListener( 'slidechanged', post );
    55  	Reveal.addEventListener( 'fragmentshown', post );
    56  	Reveal.addEventListener( 'fragmenthidden', post );
    57  	Reveal.addEventListener( 'overviewhidden', post );
    58  	Reveal.addEventListener( 'overviewshown', post );
    59  	Reveal.addEventListener( 'paused', post );
    60  	Reveal.addEventListener( 'resumed', post );
    61  
    62  	// Post the initial state
    63  	post();
    64  
    65  }());