123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- (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 ),
- 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' );
- var messageData = {
- 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( 'statechanged', messageData );
- }
- // When a new notes window connects, post our current state
- socket.on( 'new-subscriber', function( data ) {
- post();
- } );
- // When the state changes from inside of the speaker view
- socket.on( 'statechanged-speaker', function( data ) {
- Reveal.setState( data.state );
- } );
- // 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();
- }());
|