diff options
Diffstat (limited to 'reveal.js-2.6.2/plugin/notes/notes.js')
-rw-r--r-- | reveal.js-2.6.2/plugin/notes/notes.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/reveal.js-2.6.2/plugin/notes/notes.js b/reveal.js-2.6.2/plugin/notes/notes.js new file mode 100644 index 0000000..9a82c3c --- /dev/null +++ b/reveal.js-2.6.2/plugin/notes/notes.js @@ -0,0 +1,78 @@ +/** + * Handles opening of and synchronization with the reveal.js + * notes window. + */ +var RevealNotes = (function() { + + function openNotes() { + var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path + jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path + var notesPopup = window.open( jsFileLocation + 'notes.html', 'reveal.js - Notes', 'width=1120,height=850' ); + + // Fires when slide is changed + Reveal.addEventListener( 'slidechanged', post ); + + // Fires when a fragment is shown + Reveal.addEventListener( 'fragmentshown', post ); + + // Fires when a fragment is hidden + Reveal.addEventListener( 'fragmenthidden', post ); + + /** + * Posts the current slide data to the notes window + */ + function post() { + var slideElement = Reveal.getCurrentSlide(), + slideIndices = Reveal.getIndices(), + messageData; + + var notes = slideElement.querySelector( 'aside.notes' ), + nextindexh, + nextindexv; + + 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(); + }, false ); + } + + // If the there's a 'notes' query set, open directly + if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) { + openNotes(); + } + + // Open the notes when the 's' key is hit + document.addEventListener( 'keydown', function( event ) { + // Disregard the event if the target is editable or a + // modifier is present + if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return; + + if( event.keyCode === 83 ) { + event.preventDefault(); + openNotes(); + } + }, false ); + + return { open: openNotes }; +})(); |