From 11ea0aa3e13e665dc882a432381c27898c86e569 Mon Sep 17 00:00:00 2001
From: Hakim El Hattab <hakim.elhattab@gmail.com>
Date: Fri, 18 Apr 2014 13:56:51 +0200
Subject: [PATCH] postmessage plugin is now part of reveal.js core

---
 js/reveal.js                      | 26 ++++++++++++++++++-
 plugin/postmessage/example.html   | 39 ----------------------------
 plugin/postmessage/postmessage.js | 42 -------------------------------
 3 files changed, 25 insertions(+), 82 deletions(-)
 delete mode 100644 plugin/postmessage/example.html
 delete mode 100644 plugin/postmessage/postmessage.js

diff --git a/js/reveal.js b/js/reveal.js
index fe499ea..57f0872 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -239,7 +239,6 @@ var Reveal = (function(){
 
 	}
 
-
     /**
      * Loads the dependencies of reveal.js. Dependencies are
      * defined via the configuration option 'dependencies'
@@ -313,6 +312,9 @@ var Reveal = (function(){
 		// Make sure we've got all the DOM elements we need
 		setupDOM();
 
+		// Listen to messages posted to this window
+		setupPostMessage();
+
 		// Resets all vertical slides so that only the first is visible
 		resetVerticalSlides();
 
@@ -551,6 +553,28 @@ var Reveal = (function(){
 
 	}
 
+	/**
+	 * Registers a listener to postMessage events, this makes it
+	 * possible to call all reveal.js API methods from another
+	 * window. For example:
+	 *
+	 * revealWindow.postMessage( JSON.stringify({
+	 *   method: 'slide',
+	 *   args: [ 2 ]
+	 * }), '*' );
+	 */
+	function setupPostMessage() {
+
+		window.addEventListener( 'message', function ( event ) {
+			var data = JSON.parse( event.data );
+			var method = Reveal[data.method];
+			if( typeof method === 'function' ) {
+				method.apply( Reveal, data.args );
+			}
+		}, false);
+
+	}
+
 	/**
 	 * Applies the configuration settings from the config
 	 * object. May be called multiple times.
diff --git a/plugin/postmessage/example.html b/plugin/postmessage/example.html
deleted file mode 100644
index cc57a7b..0000000
--- a/plugin/postmessage/example.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<html>
-	<body>
-
-		<iframe id="reveal" src="../../index.html" style="border: 0;" width="500" height="500"></iframe>
-
-		<div>
-			<input id="back" type="button" value="go back"/>
-			<input id="ahead" type="button" value="go ahead"/>
-			<input id="slideto" type="button" value="slideto 2-2"/>
-		</div>
-
-		<script>
-
-			(function (){
-
-				var back = document.getElementById( 'back' ),
-						ahead = document.getElementById( 'ahead' ),
-						slideto = document.getElementById( 'slideto' ),
-						reveal =  window.frames[0];
-
-					back.addEventListener( 'click', function () {
-						
-					reveal.postMessage( JSON.stringify({method: 'prev', args: []}), '*' );
-				}, false );
-
-				ahead.addEventListener( 'click', function (){
-					reveal.postMessage( JSON.stringify({method: 'next', args: []}), '*' );
-				}, false );
-
-				slideto.addEventListener( 'click', function (){
-					reveal.postMessage( JSON.stringify({method: 'slide', args: [2,2]}), '*' );
-				}, false );
-
-			}());
-
-		</script>
-
-	</body>
-</html>
diff --git a/plugin/postmessage/postmessage.js b/plugin/postmessage/postmessage.js
deleted file mode 100644
index d0f4140..0000000
--- a/plugin/postmessage/postmessage.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-
-	simple postmessage plugin
-
-	Useful when a reveal slideshow is inside an iframe.
-	It allows to call reveal methods from outside.
-
-	Example:
-		 var reveal =  window.frames[0];
-
-		 // Reveal.prev(); 
-		 reveal.postMessage(JSON.stringify({method: 'prev', args: []}), '*');
-		 // Reveal.next(); 
-		 reveal.postMessage(JSON.stringify({method: 'next', args: []}), '*');
-		 // Reveal.slide(2, 2); 
-		 reveal.postMessage(JSON.stringify({method: 'slide', args: [2,2]}), '*');
-
-	Add to the slideshow:
-
-		dependencies: [
-			...
-			{ src: 'plugin/postmessage/postmessage.js', async: true, condition: function() { return !!document.body.classList; } }
-		]
-
-*/
-
-(function (){
-
-	window.addEventListener( "message", function ( event ) {
-		var data = JSON.parse( event.data ),
-				method = data.method,
-				args = data.args;
-
-		if( typeof Reveal[method] === 'function' ) {
-			Reveal[method].apply( Reveal, data.args );
-		}
-	}, false);
-
-}());
-
-
-
-- 
GitLab