Mojolicious-Plugin-RevealJS

 view release on metacpan or  search on metacpan

share/public/revealjs/README.md  view on Meta::CPAN

	fragments: true,

	// Flags whether to include the current fragment in the URL,
	// so that reloading brings you to the same fragment position
	fragmentInURL: false,

	// Flags if the presentation is running in an embedded mode,
	// i.e. contained within a limited portion of the screen
	embedded: false,

	// Flags if we should show a help overlay when the questionmark
	// key is pressed
	help: true,

	// Flags if speaker notes should be visible to all viewers
	showNotes: false,

	// Global override for autoplaying embedded media (video/audio/iframe)
	// - null: Media will only autoplay if data-autoplay is present
	// - true: All media will autoplay, regardless of individual setting
	// - false: No media will autoplay, regardless of individual setting

share/public/revealjs/README.md  view on Meta::CPAN

	// presenting each slide. This is used to show a pacing timer in the
	// speaker view
	defaultTiming: 120,

	// Enable slide navigation via mouse wheel
	mouseWheel: false,

	// Hides the address bar on mobile devices
	hideAddressBar: true,

	// Opens links in an iframe preview overlay
	// Add `data-preview-link` and `data-preview-link="false"` to customise each link
	// individually
	previewLinks: false,

	// Transition style
	transition: 'slide', // none/fade/slide/convex/concave/zoom

	// Transition speed
	transitionSpeed: 'default', // default/fast/slow

share/public/revealjs/README.md  view on Meta::CPAN

Reveal.nextFragment();

// Randomize the order of slides
Reveal.shuffle();

// Toggle presentation states, optionally pass true/false to force on/off
Reveal.toggleOverview();
Reveal.togglePause();
Reveal.toggleAutoSlide();

// Shows a help overlay with keyboard shortcuts, optionally pass true/false
// to force on/off
Reveal.toggleHelp();

// Change a config value at runtime
Reveal.configure({ controls: true });

// Returns the present configuration options
Reveal.getConfig();

// Fetch the current scale of the presentation

share/public/revealjs/README.md  view on Meta::CPAN

```javascript
Reveal.addKeyBinding( binding, callback );
Reveal.removeKeyBinding( keyCode );
```

For example

```javascript
// The binding parameter provides the following properties
//      keyCode: the keycode for binding to the callback
//          key: the key label to show in the help overlay
//  description: the description of the action to show in the help overlay
Reveal.addKeyBinding( { keyCode: 84, key: 'T', description: 'Start timer' }, function() {
	// start timer
} )

// The binding parameter can also be a direct keycode without providing the help description
Reveal.addKeyBinding( 82, function() {
	// reset timer
} )
```

This allows plugins to add key bindings directly to Reveal so they can

* make use of Reveal's pre-processing logic for key handling (for example, ignoring key presses when paused); and
* be included in the help overlay (optional)

### Slide Changed Event

A `slidechanged` event is fired each time the slide is changed (regardless of state). The event object holds the index values of the current slide as well as a reference to the previous and current slide HTML nodes.

Some libraries, like MathJax (see [#226](https://github.com/hakimel/reveal.js/issues/226#issuecomment-10261609)), get confused by the transforms and display states of slides. Often times, this can be fixed by calling their update or render function f...

```javascript
Reveal.addEventListener( 'slidechanged', function( event ) {
	// event.previousSlide, event.currentSlide, event.indexh, event.indexv

share/public/revealjs/css/reveal.css  view on Meta::CPAN

 *********************************************/
.reveal .slides section[data-transition=none],
.reveal.none .slides section:not([data-transition]) {
  -webkit-transform: none;
          transform: none;
  transition: none; }

/*********************************************
 * PAUSED MODE
 *********************************************/
.reveal .pause-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: black;
  visibility: hidden;
  opacity: 0;
  z-index: 100;
  transition: all 1s ease; }

.reveal .pause-overlay .resume-button {
  position: absolute;
  bottom: 20px;
  right: 20px;
  color: #ccc;
  border-radius: 2px;
  padding: 6px 14px;
  border: 2px solid #ccc;
  font-size: 16px;
  background: transparent;
  cursor: pointer; }
  .reveal .pause-overlay .resume-button:hover {
    color: #fff;
    border-color: #fff; }

.reveal.paused .pause-overlay {
  visibility: visible;
  opacity: 1; }

/*********************************************
 * FALLBACK
 *********************************************/
.no-transforms {
  overflow-y: auto; }

.no-transforms .reveal .slides {

share/public/revealjs/css/reveal.css  view on Meta::CPAN

/* Global transition speed settings */
.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds {
  transition-duration: 400ms; }

.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds {
  transition-duration: 1200ms; }

/*********************************************
 * LINK PREVIEW OVERLAY
 *********************************************/
.reveal .overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1000;
  background: rgba(0, 0, 0, 0.9);
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease; }

.reveal .overlay.visible {
  opacity: 1;
  visibility: visible; }

.reveal .overlay .spinner {
  position: absolute;
  display: block;
  top: 50%;
  left: 50%;
  width: 32px;
  height: 32px;
  margin: -16px 0 0 -16px;
  z-index: 10;
  background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52...
  visibility: visible;
  opacity: 0.6;
  transition: all 0.3s ease; }

.reveal .overlay header {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 40px;
  z-index: 2;
  border-bottom: 1px solid #222; }

.reveal .overlay header a {
  display: inline-block;
  width: 40px;
  height: 40px;
  line-height: 36px;
  padding: 0 10px;
  float: right;
  opacity: 0.6;
  box-sizing: border-box; }

.reveal .overlay header a:hover {
  opacity: 1; }

.reveal .overlay header a .icon {
  display: inline-block;
  width: 20px;
  height: 20px;
  background-position: 50% 50%;
  background-size: 100%;
  background-repeat: no-repeat; }

.reveal .overlay header a.close .icon {
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dp...

.reveal .overlay header a.external .icon {
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B...

.reveal .overlay .viewport {
  position: absolute;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  top: 40px;
  right: 0;
  bottom: 0;
  left: 0; }

.reveal .overlay.overlay-preview .viewport iframe {
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  border: 0;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease; }

.reveal .overlay.overlay-preview.loaded .viewport iframe {
  opacity: 1;
  visibility: visible; }

.reveal .overlay.overlay-preview.loaded .viewport-inner {
  position: absolute;
  z-index: -1;
  left: 0;
  top: 45%;
  width: 100%;
  text-align: center;
  letter-spacing: normal; }

.reveal .overlay.overlay-preview .x-frame-error {
  opacity: 0;
  transition: opacity 0.3s ease 0.3s; }

.reveal .overlay.overlay-preview.loaded .x-frame-error {
  opacity: 1; }

.reveal .overlay.overlay-preview.loaded .spinner {
  opacity: 0;
  visibility: hidden;
  -webkit-transform: scale(0.2);
          transform: scale(0.2); }

.reveal .overlay.overlay-help .viewport {
  overflow: auto;
  color: #fff; }

.reveal .overlay.overlay-help .viewport .viewport-inner {
  width: 600px;
  margin: auto;
  padding: 20px 20px 80px 20px;
  text-align: center;
  letter-spacing: normal; }

.reveal .overlay.overlay-help .viewport .viewport-inner .title {
  font-size: 20px; }

.reveal .overlay.overlay-help .viewport .viewport-inner table {
  border: 1px solid #fff;
  border-collapse: collapse;
  font-size: 16px; }

.reveal .overlay.overlay-help .viewport .viewport-inner table th,
.reveal .overlay.overlay-help .viewport .viewport-inner table td {
  width: 200px;
  padding: 14px;
  border: 1px solid #fff;
  vertical-align: middle; }

.reveal .overlay.overlay-help .viewport .viewport-inner table th {
  padding-top: 20px;
  padding-bottom: 20px; }

/*********************************************
 * PLAYBACK COMPONENT
 *********************************************/
.reveal .playback {
  position: absolute;
  left: 15px;
  bottom: 20px;

share/public/revealjs/css/reveal.scss  view on Meta::CPAN

 *********************************************/

.reveal {
	position: relative;
	width: 100%;
	height: 100%;
	overflow: hidden;
	touch-action: none;
}

// Mobile Safari sometimes overlays a header at the top
// of the page when in landscape mode. Using fixed
// positioning ensures that reveal.js reduces its height
// when this header is visible.
@media only screen and (orientation : landscape) {
	.reveal.ua-iphone {
		position: fixed;
	}
}

.reveal .slides {

share/public/revealjs/css/reveal.scss  view on Meta::CPAN

@include transition-global(none) {
	transform: none;
	transition: none;
}


/*********************************************
 * PAUSED MODE
 *********************************************/

.reveal .pause-overlay {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: black;
	visibility: hidden;
	opacity: 0;
	z-index: 100;
	transition: all 1s ease;
}

.reveal .pause-overlay .resume-button {
	position: absolute;
	bottom: 20px;
	right: 20px;
	color: #ccc;
	border-radius: 2px;
	padding: 6px 14px;
	border: 2px solid #ccc;
	font-size: 16px;
	background: transparent;
	cursor: pointer;

	&:hover {
		color: #fff;
		border-color: #fff;
	}
}

.reveal.paused .pause-overlay {
	visibility: visible;
	opacity: 1;
}


/*********************************************
 * FALLBACK
 *********************************************/

.no-transforms {

share/public/revealjs/css/reveal.scss  view on Meta::CPAN

}
.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds {
	transition-duration: 1200ms;
}


/*********************************************
 * LINK PREVIEW OVERLAY
 *********************************************/

.reveal .overlay {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 1000;
	background: rgba( 0, 0, 0, 0.9 );
	opacity: 0;
	visibility: hidden;
	transition: all 0.3s ease;
}
	.reveal .overlay.visible {
		opacity: 1;
		visibility: visible;
	}

	.reveal .overlay .spinner {
		position: absolute;
		display: block;
		top: 50%;
		left: 50%;
		width: 32px;
		height: 32px;
		margin: -16px 0 0 -16px;
		z-index: 10;
		background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52...

		visibility: visible;
		opacity: 0.6;
		transition: all 0.3s ease;
	}

	.reveal .overlay header {
		position: absolute;
		left: 0;
		top: 0;
		width: 100%;
		height: 40px;
		z-index: 2;
		border-bottom: 1px solid #222;
	}
		.reveal .overlay header a {
			display: inline-block;
			width: 40px;
			height: 40px;
			line-height: 36px;
			padding: 0 10px;
			float: right;
			opacity: 0.6;

			box-sizing: border-box;
		}
			.reveal .overlay header a:hover {
				opacity: 1;
			}
			.reveal .overlay header a .icon {
				display: inline-block;
				width: 20px;
				height: 20px;

				background-position: 50% 50%;
				background-size: 100%;
				background-repeat: no-repeat;
			}
			.reveal .overlay header a.close .icon {
				background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1...
			}
			.reveal .overlay header a.external .icon {
				background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod...
			}

	.reveal .overlay .viewport {
		position: absolute;
		display: flex;
		top: 40px;
		right: 0;
		bottom: 0;
		left: 0;
	}

	.reveal .overlay.overlay-preview .viewport iframe {
		width: 100%;
		height: 100%;
		max-width: 100%;
		max-height: 100%;
		border: 0;

		opacity: 0;
		visibility: hidden;
		transition: all 0.3s ease;
	}

	.reveal .overlay.overlay-preview.loaded .viewport iframe {
		opacity: 1;
		visibility: visible;
	}

	.reveal .overlay.overlay-preview.loaded .viewport-inner  {
		position: absolute;
		z-index: -1;
		left: 0;
		top: 45%;
		width: 100%;
		text-align: center;
		letter-spacing: normal;
	}
	.reveal .overlay.overlay-preview .x-frame-error  {
		opacity: 0;
		transition: opacity 0.3s ease 0.3s;
	}
	.reveal .overlay.overlay-preview.loaded .x-frame-error  {
		opacity: 1;
	}

	.reveal .overlay.overlay-preview.loaded .spinner {
		opacity: 0;
		visibility: hidden;
		transform: scale(0.2);
	}

	.reveal .overlay.overlay-help .viewport {
		overflow: auto;
		color: #fff;
	}

	.reveal .overlay.overlay-help .viewport .viewport-inner {
		width: 600px;
		margin: auto;
		padding: 20px 20px 80px 20px;
		text-align: center;
		letter-spacing: normal;
	}

	.reveal .overlay.overlay-help .viewport .viewport-inner .title {
		font-size: 20px;
	}

	.reveal .overlay.overlay-help .viewport .viewport-inner table {
		border: 1px solid #fff;
		border-collapse: collapse;
		font-size: 16px;
	}

	.reveal .overlay.overlay-help .viewport .viewport-inner table th,
	.reveal .overlay.overlay-help .viewport .viewport-inner table td {
		width: 200px;
		padding: 14px;
		border: 1px solid #fff;
		vertical-align: middle;
	}

	.reveal .overlay.overlay-help .viewport .viewport-inner table th {
		padding-top: 20px;
		padding-bottom: 20px;
	}



/*********************************************
 * PLAYBACK COMPONENT
 *********************************************/

share/public/revealjs/js/reveal.js  view on Meta::CPAN

			fragments: true,

			// Flags whether to include the current fragment in the URL,
			// so that reloading brings you to the same fragment position
			fragmentInURL: false,

			// Flags if the presentation is running in an embedded mode,
			// i.e. contained within a limited portion of the screen
			embedded: false,

			// Flags if we should show a help overlay when the question-mark
			// key is pressed
			help: true,

			// Flags if it should be possible to pause the presentation (blackout)
			pause: true,

			// Flags if speaker notes should be visible to all viewers
			showNotes: false,

			// Global override for autolaying embedded media (video/audio/iframe)

share/public/revealjs/js/reveal.js  view on Meta::CPAN


			// Enable slide navigation via mouse wheel
			mouseWheel: false,

			// Apply a 3D roll to links on hover
			rollingLinks: false,

			// Hides the address bar on mobile devices
			hideAddressBar: true,

			// Opens links in an iframe preview overlay
			// Add `data-preview-link` and `data-preview-link="false"` to customise each link
			// individually
			previewLinks: false,

			// Exposes the reveal.js API through window.postMessage
			postMessage: true,

			// Dispatches all reveal.js events to the parent window through postMessage
			postMessageEvents: false,

share/public/revealjs/js/reveal.js  view on Meta::CPAN


		// Slide number
		dom.slideNumber = createSingletonNode( dom.wrapper, 'div', 'slide-number', '' );

		// Element containing notes that are visible to the audience
		dom.speakerNotes = createSingletonNode( dom.wrapper, 'div', 'speaker-notes', null );
		dom.speakerNotes.setAttribute( 'data-prevent-swipe', '' );
		dom.speakerNotes.setAttribute( 'tabindex', '0' );

		// Overlay graphic which is displayed during the paused mode
		dom.pauseOverlay = createSingletonNode( dom.wrapper, 'div', 'pause-overlay', '<button class="resume-button">Resume presentation</button>' );
		dom.resumeButton = dom.pauseOverlay.querySelector( '.resume-button' );

		dom.wrapper.setAttribute( 'role', 'application' );

		// There can be multiple instances of controls throughout the page
		dom.controlsLeft = toArray( document.querySelectorAll( '.navigate-left' ) );
		dom.controlsRight = toArray( document.querySelectorAll( '.navigate-right' ) );
		dom.controlsUp = toArray( document.querySelectorAll( '.navigate-up' ) );
		dom.controlsDown = toArray( document.querySelectorAll( '.navigate-down' ) );
		dom.controlsPrev = toArray( document.querySelectorAll( '.navigate-prev' ) );

share/public/revealjs/js/reveal.js  view on Meta::CPAN


	/**
	 * Opens a preview window for the target URL.
	 *
	 * @param {string} url - url for preview iframe src
	 */
	function showPreview( url ) {

		closeOverlay();

		dom.overlay = document.createElement( 'div' );
		dom.overlay.classList.add( 'overlay' );
		dom.overlay.classList.add( 'overlay-preview' );
		dom.wrapper.appendChild( dom.overlay );

		dom.overlay.innerHTML = [
			'<header>',
				'<a class="close" href="#"><span class="icon"></span></a>',
				'<a class="external" href="'+ url +'" target="_blank"><span class="icon"></span></a>',
			'</header>',
			'<div class="spinner"></div>',
			'<div class="viewport">',
				'<iframe src="'+ url +'"></iframe>',
				'<small class="viewport-inner">',
					'<span class="x-frame-error">Unable to load iframe. This is likely due to the site\'s policy (x-frame-options).</span>',
				'</small>',
			'</div>'
		].join('');

		dom.overlay.querySelector( 'iframe' ).addEventListener( 'load', function( event ) {
			dom.overlay.classList.add( 'loaded' );
		}, false );

		dom.overlay.querySelector( '.close' ).addEventListener( 'click', function( event ) {
			closeOverlay();
			event.preventDefault();
		}, false );

		dom.overlay.querySelector( '.external' ).addEventListener( 'click', function( event ) {
			closeOverlay();
		}, false );

		setTimeout( function() {
			dom.overlay.classList.add( 'visible' );
		}, 1 );

	}

	/**
	 * Open or close help overlay window.
	 *
	 * @param {Boolean} [override] Flag which overrides the
	 * toggle logic and forcibly sets the desired state. True means
	 * help is open, false means it's closed.
	 */
	function toggleHelp( override ){

		if( typeof override === 'boolean' ) {
			override ? showHelp() : closeOverlay();
		}
		else {
			if( dom.overlay ) {
				closeOverlay();
			}
			else {
				showHelp();
			}
		}
	}

	/**
	 * Opens an overlay window with help material.
	 */
	function showHelp() {

		if( config.help ) {

			closeOverlay();

			dom.overlay = document.createElement( 'div' );
			dom.overlay.classList.add( 'overlay' );
			dom.overlay.classList.add( 'overlay-help' );
			dom.wrapper.appendChild( dom.overlay );

			var html = '<p class="title">Keyboard Shortcuts</p><br/>';

			html += '<table><th>KEY</th><th>ACTION</th>';
			for( var key in keyboardShortcuts ) {
				html += '<tr><td>' + key + '</td><td>' + keyboardShortcuts[ key ] + '</td></tr>';
			}

			// Add custom key bindings that have associated descriptions
			for( var binding in registeredKeyBindings ) {
				if( registeredKeyBindings[binding].key && registeredKeyBindings[binding].description ) {
					html += '<tr><td>' + registeredKeyBindings[binding].key + '</td><td>' + registeredKeyBindings[binding].description + '</td></tr>';
				}
			}

			html += '</table>';

			dom.overlay.innerHTML = [
				'<header>',
					'<a class="close" href="#"><span class="icon"></span></a>',
				'</header>',
				'<div class="viewport">',
					'<div class="viewport-inner">'+ html +'</div>',
				'</div>'
			].join('');

			dom.overlay.querySelector( '.close' ).addEventListener( 'click', function( event ) {
				closeOverlay();
				event.preventDefault();
			}, false );

			setTimeout( function() {
				dom.overlay.classList.add( 'visible' );
			}, 1 );

		}

	}

	/**
	 * Closes any currently open overlay.
	 */
	function closeOverlay() {

		if( dom.overlay ) {
			dom.overlay.parentNode.removeChild( dom.overlay );
			dom.overlay = null;
		}

	}

	/**
	 * Applies JavaScript-controlled layout rules to the
	 * presentation.
	 */
	function layout() {

share/public/revealjs/js/reveal.js  view on Meta::CPAN


		}

		// If the input resulted in a triggered action we should prevent
		// the browsers default behavior
		if( triggered ) {
			event.preventDefault && event.preventDefault();
		}
		// ESC or O key
		else if ( ( event.keyCode === 27 || event.keyCode === 79 ) && features.transforms3d ) {
			if( dom.overlay ) {
				closeOverlay();
			}
			else {
				toggleOverview();
			}

			event.preventDefault && event.preventDefault();
		}

		// If auto-sliding is enabled we need to cue up

share/public/revealjs/js/reveal.js  view on Meta::CPAN

					slide( h, v );
				}

			}
		}

	}

	/**
	 * Handles clicks on links that are set to preview in the
	 * iframe overlay.
	 *
	 * @param {object} event
	 */
	function onPreviewLinkClicked( event ) {

		if( event.currentTarget && event.currentTarget.hasAttribute( 'href' ) ) {
			var url = event.currentTarget.getAttribute( 'href' );
			if( url ) {
				showPreview( url );
				event.preventDefault();

share/public/revealjs/js/reveal.js  view on Meta::CPAN


		// Randomizes the order of slides
		shuffle: shuffle,

		// Returns an object with the available routes as booleans (left/right/top/bottom)
		availableRoutes: availableRoutes,

		// Returns an object with the available fragments as booleans (prev/next)
		availableFragments: availableFragments,

		// Toggles a help overlay with keyboard shortcuts
		toggleHelp: toggleHelp,

		// Toggles the overview mode on/off
		toggleOverview: toggleOverview,

		// Toggles the "black screen" mode on/off
		togglePause: togglePause,

		// Toggles the auto slide mode on/off
		toggleAutoSlide: toggleAutoSlide,

share/public/revealjs/js/reveal.js  view on Meta::CPAN

		addKeyBinding: addKeyBinding,

		// Removes a custom key binding
		removeKeyBinding: removeKeyBinding,

		// Programatically triggers a keyboard event
		triggerKey: function( keyCode ) {
			onDocumentKeyDown( { keyCode: keyCode } );
		},

		// Registers a new shortcut to include in the help overlay
		registerKeyboardShortcut: function( key, value ) {
			keyboardShortcuts[key] = value;
		}
	};

	return Reveal;

}));

share/public/revealjs/plugin/highlight/highlight.js  view on Meta::CPAN

			// re-highlight when focus is lost (for edited code)
			element.addEventListener( 'focusout', function( event ) {
				hljs.highlightBlock( event.currentTarget );
			}, false );
		}
	}
})();
// END CUSTOM REVEAL.JS INTEGRATION

/*! highlight.js v9.11.0 | BSD3 License | git.io/hljslicense */
!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.r...
c:[{cN:"comment",b:/\(\*/,e:/\*\)/},e.ASM,e.QSM,e.CNM,{b:/\{/,e:/\}/,i:/:/}]}});hljs.registerLanguage("roboconf",function(a){var e="[a-zA-Z-_][^\\n{]+\\{",n={cN:"attribute",b:/[a-zA-Z-_]+/,e:/\s*:/,eE:!0,starts:{e:";",r:0,c:[{cN:"variable",b:/\.[a-zA...

share/public/revealjs/plugin/notes-server/notes.html  view on Meta::CPAN

			}

			#current-slide .label,
			#upcoming-slide .label {
				position: absolute;
				top: 10px;
				left: 10px;
				z-index: 2;
			}

			.overlay-element {
				height: 34px;
				line-height: 34px;
				padding: 0 10px;
				text-shadow: none;
				background: rgba( 220, 220, 220, 0.8 );
				color: #222;
				font-size: 14px;
			}

			.overlay-element.interactive:hover {
				background: rgba( 220, 220, 220, 1 );
			}

			#current-slide {
				position: absolute;
				width: 60%;
				height: 100%;
				top: 0;
				left: 0;
				padding-right: 0;

share/public/revealjs/plugin/notes-server/notes.html  view on Meta::CPAN

				height: 100%;
				font-size: 1.25em;
			}

		</style>
	</head>

	<body>

		<div id="current-slide"></div>
		<div id="upcoming-slide"><span class="overlay-element label">Upcoming</span></div>
		<div id="speaker-controls">
			<div class="speaker-controls-time">
				<h4 class="label">Time <span class="reset-button">Click to Reset</span></h4>
				<div class="clock">
					<span class="clock-value">0:00 AM</span>
				</div>
				<div class="timer">
					<span class="hours-value">00</span><span class="minutes-value">:00</span><span class="seconds-value">:00</span>
				</div>
				<div class="clear"></div>
			</div>

			<div class="speaker-controls-notes hidden">
				<h4 class="label">Notes</h4>
				<div class="value"></div>
			</div>
		</div>
		<div id="speaker-layout" class="overlay-element interactive">
			<span class="speaker-layout-label"></span>
			<select class="speaker-layout-dropdown"></select>
		</div>

		<script src="/socket.io/socket.io.js"></script>
		<script src="/plugin/markdown/marked.js"></script>

		<script>
		(function() {

share/public/revealjs/plugin/notes/notes.html  view on Meta::CPAN

				z-index: 20;
				padding: 30% 20% 20% 20%;
				font-size: 18px;
				color: #222;
				background: #fff;
				text-align: center;
				box-sizing: border-box;
				line-height: 1.4;
			}

			.overlay-element {
				height: 34px;
				line-height: 34px;
				padding: 0 10px;
				text-shadow: none;
				background: rgba( 220, 220, 220, 0.8 );
				color: #222;
				font-size: 14px;
			}

			.overlay-element.interactive:hover {
				background: rgba( 220, 220, 220, 1 );
			}

			#current-slide {
				position: absolute;
				width: 60%;
				height: 100%;
				top: 0;
				left: 0;
				padding-right: 0;

share/public/revealjs/plugin/notes/notes.html  view on Meta::CPAN

			}

		</style>
	</head>

	<body>

		<div id="connection-status">Loading speaker view...</div>

		<div id="current-slide"></div>
		<div id="upcoming-slide"><span class="overlay-element label">Upcoming</span></div>
		<div id="speaker-controls">
			<div class="speaker-controls-time">
				<h4 class="label">Time <span class="reset-button">Click to Reset</span></h4>
				<div class="clock">
					<span class="clock-value">0:00 AM</span>
				</div>
				<div class="timer">
					<span class="hours-value">00</span><span class="minutes-value">:00</span><span class="seconds-value">:00</span>
				</div>
				<div class="clear"></div>

share/public/revealjs/plugin/notes/notes.html  view on Meta::CPAN

				<div class="pacing" style="display: none">
					<span class="hours-value">00</span><span class="minutes-value">:00</span><span class="seconds-value">:00</span>
				</div>
			</div>

			<div class="speaker-controls-notes hidden">
				<h4 class="label">Notes</h4>
				<div class="value"></div>
			</div>
		</div>
		<div id="speaker-layout" class="overlay-element interactive">
			<span class="speaker-layout-label"></span>
			<select class="speaker-layout-dropdown"></select>
		</div>

		<script src="../../plugin/markdown/marked.js"></script>
		<script>

			(function() {

				var notes,



( run in 0.298 second using v1.01-cache-2.11-cpan-26ccb49234f )