files/reveal.js/plugin/notes-server/client.js in reveal-ck-0.5.1 vs files/reveal.js/plugin/notes-server/client.js in reveal-ck-0.6.0
- old
+ new
@@ -1,57 +1,60 @@
(function() {
+
// don't emit events from inside the previews themselves
- if ( window.location.search.match( /receiver/gi ) ) { return; }
+ 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);
+ var socket = io.connect( window.location.origin ),
+ socketId = Math.random().toString().slice( 2 );
- // Fires when a fragment is shown
- Reveal.addEventListener( 'fragmentshown', function( event ) {
- var fragmentData = {
- fragment : 'next',
- socketId : socketId
- };
- socket.emit('fragmentchanged', fragmentData);
- } );
+ console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId );
- // Fires when a fragment is hidden
- Reveal.addEventListener( 'fragmenthidden', function( event ) {
- var fragmentData = {
- fragment : 'previous',
- socketId : 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()
};
- socket.emit('fragmentchanged', fragmentData);
- } );
- // Fires when slide is changed
- Reveal.addEventListener( 'slidechanged', function( event ) {
- var nextindexh;
- var nextindexv;
- var slideElement = event.currentSlide;
+ // Look for notes defined in a slide attribute
+ if( slideElement.hasAttribute( 'data-notes' ) ) {
+ messageData.notes = slideElement.getAttribute( 'data-notes' );
+ }
- if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') {
- nextindexh = event.indexh;
- nextindexv = event.indexv + 1;
- } else {
- nextindexh = event.indexh + 1;
- nextindexv = 0;
+ // Look for notes defined in an aside element
+ if( notesElement ) {
+ messageData.notes = notesElement.innerHTML;
+ messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
}
- 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( 'statechanged', messageData );
- };
+ }
- socket.emit('slidechanged', slideData);
+ // When a new notes window connects, post our current state
+ socket.on( 'connect', function( data ) {
+ post();
} );
+
+ // 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();
+
}());