window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
+
// No need for updating the notes in case of fragment changes
if ( data.notes !== undefined) {
if( data.markdown ) {
}
}
- // Showing and hiding fragments
- if( data.fragment === 'next' ) {
- currentSlide.contentWindow.Reveal.nextFragment();
- }
- else if( data.fragment === 'prev' ) {
- currentSlide.contentWindow.Reveal.prevFragment();
- }
- else {
- // Update the note slides
- currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv );
- nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
- }
+ // Update the note slides
+ currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv, data.indexf );
+ nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
}, false );
var notesPopup = window.open( jsFileLocation + 'notes.html', 'reveal.js - Notes', 'width=1120,height=850' );
// Fires when slide is changed
- Reveal.addEventListener( 'slidechanged', function( event ) {
- post('slidechanged');
- } );
+ Reveal.addEventListener( 'slidechanged', post );
// Fires when a fragment is shown
- Reveal.addEventListener( 'fragmentshown', function( event ) {
- post('fragmentshown');
- } );
+ Reveal.addEventListener( 'fragmentshown', post );
// Fires when a fragment is hidden
- Reveal.addEventListener( 'fragmenthidden', function( event ) {
- post('fragmenthidden');
- } );
+ Reveal.addEventListener( 'fragmenthidden', post );
/**
* Posts the current slide data to the notes window
- *
- * @param {String} eventType Expecting 'slidechanged', 'fragmentshown'
- * or 'fragmenthidden' set in the events above to define the needed
- * slideDate.
*/
- function post( eventType ) {
+ function post() {
var slideElement = Reveal.getCurrentSlide(),
+ slideIndices = Reveal.getIndices(),
messageData;
- if( eventType === 'slidechanged' ) {
- var notes = slideElement.querySelector( 'aside.notes' ),
- indexh = Reveal.getIndices().h,
- indexv = Reveal.getIndices().v,
- nextindexh,
- nextindexv;
+ var notes = slideElement.querySelector( 'aside.notes' ),
+ nextindexh,
+ nextindexv;
- if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
- nextindexh = indexh;
- nextindexv = indexv + 1;
- } else {
- nextindexh = indexh + 1;
- nextindexv = 0;
- }
-
- messageData = {
- notes : notes ? notes.innerHTML : '',
- indexh : indexh,
- indexv : indexv,
- nextindexh : nextindexh,
- nextindexv : nextindexv,
- markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false
- };
- }
- else if( eventType === 'fragmentshown' ) {
- messageData = {
- fragment : 'next'
- };
- }
- else if( eventType === 'fragmenthidden' ) {
- messageData = {
- fragment : 'prev'
- };
+ if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
+ nextindexh = slideIndices.h;
+ nextindexv = slideIndices.v + 1;
+ } else {
+ nextindexh = slideIndices.h + 1;
+ nextindexv = 0;
}
+ messageData = {
+ notes : notes ? notes.innerHTML : '',
+ indexh : slideIndices.h,
+ indexv : slideIndices.v,
+ indexf : slideIndices.f,
+ nextindexh : nextindexh,
+ nextindexv : nextindexv,
+ markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false
+ };
+
notesPopup.postMessage( JSON.stringify( messageData ), '*' );
}
// Navigate to the current slide when the notes are loaded
notesPopup.addEventListener( 'load', function( event ) {
- post('slidechanged');
+ post();
}, false );
}