merge in support for stepped fragments in notes window
This commit is contained in:
		| @@ -132,6 +132,8 @@ Reveal.up(); | |||||||
| Reveal.down(); | Reveal.down(); | ||||||
| Reveal.prev(); | Reveal.prev(); | ||||||
| Reveal.next(); | Reveal.next(); | ||||||
|  | Reveal.prevFragment(); | ||||||
|  | Reveal.nextFragment(); | ||||||
| Reveal.toggleOverview(); | Reveal.toggleOverview(); | ||||||
|  |  | ||||||
| // Retrieves the previous and current slide elements | // Retrieves the previous and current slide elements | ||||||
|   | |||||||
| @@ -261,6 +261,10 @@ function linkify( selector ) { | |||||||
| 							<li class="fragment"><em>of view</em></li> | 							<li class="fragment"><em>of view</em></li> | ||||||
| 							<li class="fragment"><strong>fragments</strong></li> | 							<li class="fragment"><strong>fragments</strong></li> | ||||||
| 						</ol> | 						</ol> | ||||||
|  |  | ||||||
|  | 						<aside class="notes"> | ||||||
|  | 							This slide has fragments which are also stepped through in the notes window. | ||||||
|  | 						</aside> | ||||||
| 					</section> | 					</section> | ||||||
| 					<section> | 					<section> | ||||||
| 						<h2>Fragment Styles</h2> | 						<h2>Fragment Styles</h2> | ||||||
|   | |||||||
| @@ -1324,6 +1324,8 @@ var Reveal = (function(){ | |||||||
| 		down: navigateDown, | 		down: navigateDown, | ||||||
| 		prev: navigatePrev, | 		prev: navigatePrev, | ||||||
| 		next: navigateNext, | 		next: navigateNext, | ||||||
|  | 		prevFragment: previousFragment, | ||||||
|  | 		nextFragment: nextFragment, | ||||||
|  |  | ||||||
| 		// Deprecated aliases | 		// Deprecated aliases | ||||||
| 		navigateTo: slide, | 		navigateTo: slide, | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							| @@ -76,7 +76,7 @@ if(am>ac.threshold&&Math.abs(am)>Math.abs(al)){ac.handled=true;B();}else{if(am<- | |||||||
| u();}else{if(al<-ac.threshold){ac.handled=true;F();}}}}aq.preventDefault();}}}else{if(navigator.userAgent.match(/android/gi)){aq.preventDefault();}}}function W(al){ac.handled=false; | u();}else{if(al<-ac.threshold){ac.handled=true;F();}}}}aq.preventDefault();}}}else{if(navigator.userAgent.match(/android/gi)){aq.preventDefault();}}}function W(al){ac.handled=false; | ||||||
| }function o(al){clearTimeout(z);z=setTimeout(function(){var am=al.detail||-al.wheelDelta;if(am>0){x();}else{Z();}},100);}function ai(am){var al=Array.prototype.slice.call(document.querySelectorAll(l)).length; | }function o(al){clearTimeout(z);z=setTimeout(function(){var am=al.detail||-al.wheelDelta;if(am>0){x();}else{Z();}},100);}function ai(am){var al=Array.prototype.slice.call(document.querySelectorAll(l)).length; | ||||||
| var an=Math.floor((am.clientX/f.wrapper.offsetWidth)*al);a(an);}function w(al){J();}function C(al){if(L()){al.preventDefault();ae();m=this.getAttribute("data-index-h"); | var an=Math.floor((am.clientX/f.wrapper.offsetWidth)*al);a(an);}function w(al){J();}function C(al){if(L()){al.preventDefault();ae();m=this.getAttribute("data-index-h"); | ||||||
| e=this.getAttribute("data-index-v");a();}}return{initialize:i,slide:a,left:B,right:j,up:u,down:F,prev:Z,next:x,navigateTo:a,navigateLeft:B,navigateRight:j,navigateUp:u,navigateDown:F,navigatePrev:Z,navigateNext:x,toggleOverview:X,addEventListeners:E,removeEventListeners:U,getIndices:M,getPreviousSlide:function(){return y; | e=this.getAttribute("data-index-v");a();}}return{initialize:i,slide:a,left:B,right:j,up:u,down:F,prev:Z,next:x,prevFragment:Q,nextFragment:v,navigateTo:a,navigateLeft:B,navigateRight:j,navigateUp:u,navigateDown:F,navigatePrev:Z,navigateNext:x,toggleOverview:X,addEventListeners:E,removeEventListeners:U,getIndices:M,getPreviousSlide:function(){return y; | ||||||
| },getCurrentSlide:function(){return G;},getQueryHash:function(){var al={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(am){al[am.split("=").shift()]=am.split("=").pop(); | },getCurrentSlide:function(){return G;},getQueryHash:function(){var al={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(am){al[am.split("=").shift()]=am.split("=").pop(); | ||||||
| });return al;},addEventListener:function(am,an,al){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).addEventListener(am,an,al); | });return al;},addEventListener:function(am,an,al){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).addEventListener(am,an,al); | ||||||
| }},removeEventListener:function(am,an,al){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).removeEventListener(am,an,al); | }},removeEventListener:function(am,an,al){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).removeEventListener(am,an,al); | ||||||
|   | |||||||
| @@ -109,45 +109,30 @@ | |||||||
|  |  | ||||||
| 					window.addEventListener( 'message', function( event ) { | 					window.addEventListener( 'message', function( event ) { | ||||||
| 						var data = JSON.parse( event.data ); | 						var data = JSON.parse( event.data ); | ||||||
|  | 						// No need for updating the notes in case of fragment changes | ||||||
|  | 						if ( data.notes !== undefined) { | ||||||
| 							if( data.markdown ) { | 							if( data.markdown ) { | ||||||
| 								notes.innerHTML = (new Showdown.converter()).makeHtml( data.notes ); | 								notes.innerHTML = (new Showdown.converter()).makeHtml( data.notes ); | ||||||
| 							} | 							} | ||||||
| 							else { | 							else { | ||||||
| 								notes.innerHTML = data.notes; | 								notes.innerHTML = data.notes; | ||||||
| 							} | 							} | ||||||
|  | 						} | ||||||
| 						// Kill the slide listeners while responding to the event |  | ||||||
| 						removeSlideListeners(); |  | ||||||
|  |  | ||||||
| 						// Update the note slides | 						// Update the note slides | ||||||
| 						currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv ); | 						currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv ); | ||||||
| 						nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv ); | 						nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv ); | ||||||
|  |  | ||||||
| 						// Resume listening on the next cycle | 						// Showing and hiding fragments | ||||||
| 						setTimeout( addSlideListeners, 1 ); | 						if( data.fragment === 'next' ) { | ||||||
|  | 							currentSlide.contentWindow.Reveal.nextFragment(); | ||||||
|  | 						} | ||||||
|  | 						else if( data.fragment === 'prev' ) { | ||||||
|  | 							currentSlide.contentWindow.Reveal.prevFragment(); | ||||||
|  | 						} | ||||||
|  |  | ||||||
| 					}, false ); | 					}, false ); | ||||||
|  |  | ||||||
| 					function addSlideListeners() { |  | ||||||
| 						currentSlide.contentWindow.Reveal.addEventListener( 'slidechanged', onNotesSlideChange, false ); |  | ||||||
| 						nextSlide.contentWindow.Reveal.addEventListener( 'slidechanged', onNotesSlideChange, false ); |  | ||||||
| 					} |  | ||||||
|  |  | ||||||
| 					function removeSlideListeners() { |  | ||||||
| 						currentSlide.contentWindow.Reveal.removeEventListener( 'slidechanged', onNotesSlideChange, false ); |  | ||||||
| 						nextSlide.contentWindow.Reveal.removeEventListener( 'slidechanged', onNotesSlideChange, false ); |  | ||||||
| 					} |  | ||||||
|  |  | ||||||
| 					function onNotesSlideChange( event ) { |  | ||||||
| 						window.opener.postMessage( JSON.stringify({ |  | ||||||
| 							indexh : event.indexh, |  | ||||||
| 							indexv : event.indexv |  | ||||||
| 						}), '*' ); |  | ||||||
| 					} |  | ||||||
|  |  | ||||||
| 					addSlideListeners(); |  | ||||||
|  |  | ||||||
| 				})( window ); | 				})( window ); | ||||||
|  |  | ||||||
| 			}, false ); | 			}, false ); | ||||||
|   | |||||||
| @@ -7,11 +7,34 @@ var RevealNotes = (function() { | |||||||
| 	function openNotes() { | 	function openNotes() { | ||||||
| 		var notesPopup = window.open( 'plugin/notes/notes.html', 'reveal.js - Notes', 'width=1120,height=850' ); | 		var notesPopup = window.open( 'plugin/notes/notes.html', 'reveal.js - Notes', 'width=1120,height=850' ); | ||||||
|  |  | ||||||
| 		Reveal.addEventListener( 'slidechanged', post ); | 		// Fires when slide is changed | ||||||
|  | 		Reveal.addEventListener( 'slidechanged', function( event ) { | ||||||
|  | 			post('slidechanged'); | ||||||
|  | 		} ); | ||||||
|  |  | ||||||
| 		// Posts the current slide data to the notes window | 		// Fires when a fragment is shown | ||||||
| 		function post() { | 		Reveal.addEventListener( 'fragmentshown', function( event ) { | ||||||
|  | 			post('fragmentshown'); | ||||||
|  | 		} ); | ||||||
|  |  | ||||||
|  | 		// Fires when a fragment is hidden | ||||||
|  | 		Reveal.addEventListener( 'fragmenthidden', function( event ) { | ||||||
|  | 			post('fragmenthidden'); | ||||||
|  | 		} ); | ||||||
|  |  | ||||||
|  | 		/** | ||||||
|  | 		 * 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 ) { | ||||||
| 			var slideElement = Reveal.getCurrentSlide(), | 			var slideElement = Reveal.getCurrentSlide(), | ||||||
|  | 				messageData; | ||||||
|  |  | ||||||
|  | 			if( eventType === 'slidechanged' ) { | ||||||
|  | 				var notes = slideElement.querySelector( 'aside.notes' ), | ||||||
| 					indexh = Reveal.getIndices().h, | 					indexh = Reveal.getIndices().h, | ||||||
| 					indexv = Reveal.getIndices().v, | 					indexv = Reveal.getIndices().v, | ||||||
| 					nextindexh, | 					nextindexh, | ||||||
| @@ -25,9 +48,7 @@ var RevealNotes = (function() { | |||||||
| 					nextindexv = 0; | 					nextindexv = 0; | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 			var notes = slideElement.querySelector( 'aside.notes' ); | 				messageData = { | ||||||
|  |  | ||||||
| 			var slideData = { |  | ||||||
| 					notes : notes ? notes.innerHTML : '', | 					notes : notes ? notes.innerHTML : '', | ||||||
| 					indexh : indexh, | 					indexh : indexh, | ||||||
| 					indexv : indexv, | 					indexv : indexv, | ||||||
| @@ -35,26 +56,29 @@ var RevealNotes = (function() { | |||||||
| 					nextindexv : nextindexv, | 					nextindexv : nextindexv, | ||||||
| 					markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false | 					markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false | ||||||
| 				}; | 				}; | ||||||
|  | 			} | ||||||
| 			notesPopup.postMessage( JSON.stringify( slideData ), '*' ); | 			else if( eventType === 'fragmentshown' ) { | ||||||
|  | 				messageData = { | ||||||
|  | 					fragment : 'next' | ||||||
|  | 				}; | ||||||
|  | 			} | ||||||
|  | 			else if( eventType === 'fragmenthidden' ) { | ||||||
|  | 				messageData = { | ||||||
|  | 					fragment : 'prev' | ||||||
|  | 				}; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 		// The main presentation is kept in sync when navigating the | 			notesPopup.postMessage( JSON.stringify( messageData ), '*' ); | ||||||
| 		// note slides so that the popup may be used as a remote |  | ||||||
| 		window.addEventListener( 'message', function( event ) { |  | ||||||
| 			var data = JSON.parse( event.data ); |  | ||||||
|  |  | ||||||
| 			if( data && typeof data.indexh === 'number' && typeof data.indexv === 'number' ) { |  | ||||||
| 				Reveal.slide( data.indexh, data.indexv ); |  | ||||||
| 		} | 		} | ||||||
| 		} ); |  | ||||||
|  |  | ||||||
| 		// Navigate to the current slide when the notes are loaded | 		// Navigate to the current slide when the notes are loaded | ||||||
| 		notesPopup.addEventListener( 'load', post, false ); | 		notesPopup.addEventListener( 'load', function( event ) { | ||||||
|  | 			post('slidechanged'); | ||||||
|  | 		}, false ); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// If the there's a 'notes' query set, open directly | 	// If the there's a 'notes' query set, open directly | ||||||
| 	if( window.location.search.match(/(\?|\&)notes/gi ) !== null ) { | 	if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) { | ||||||
| 		openNotes(); | 		openNotes(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -70,5 +94,5 @@ var RevealNotes = (function() { | |||||||
| 		} | 		} | ||||||
| 	}, false ); | 	}, false ); | ||||||
|  |  | ||||||
| 	return { open: openNotes } | 	return { open: openNotes }; | ||||||
| })(); | })(); | ||||||
		Reference in New Issue
	
	Block a user