(http://hakim.se)",
14 | "repository": {
15 | "type": "git",
16 | "url": "git://github.com/hakimel/reveal.js.git"
17 | },
18 | "engines": {
19 | "node": ">=9.0.0"
20 | },
21 | "devDependencies": {
22 | "express": "^4.17.1",
23 | "grunt": "^1.3.0",
24 | "grunt-autoprefixer": "^3.0.0",
25 | "grunt-cli": "^1.3.2",
26 | "grunt-contrib-connect": "^2.1.0",
27 | "grunt-contrib-cssmin": "^3.0.0",
28 | "grunt-contrib-jshint": "^3.2.0",
29 | "grunt-contrib-qunit": "^3.1.0",
30 | "grunt-contrib-uglify": "^4.0.1",
31 | "grunt-contrib-watch": "^1.1.0",
32 | "grunt-sass": "^3.1.0",
33 | "grunt-zip": "^0.14.0",
34 | "load-grunt-tasks": "^5.1.0",
35 | "mustache": "^3.2.1",
36 | "node-sass": "^7.0.0",
37 | "socket.io": "^2.3.0"
38 | },
39 | "license": "MIT",
40 | "dependencies": {
41 | "gulp-sass": "^5.1.0",
42 | "npm": "^8.19.2",
43 | "shelljs": "^0.8.4"
44 | },
45 | "bugs": {
46 | "url": "https://github.com/hakimel/reveal.js/issues"
47 | },
48 | "directories": {
49 | "lib": "lib",
50 | "test": "test"
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ryuichiueda/robosys2020/ff1abcea784e69970841c6d6510a426cbce48ac2/page.jpg
--------------------------------------------------------------------------------
/plugin/markdown/example.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Markdown Demo
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
37 |
38 |
39 |
55 |
56 |
57 |
70 |
71 |
72 |
78 |
79 |
80 |
87 |
88 |
89 |
101 |
102 |
103 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
132 |
133 |
134 |
135 |
--------------------------------------------------------------------------------
/plugin/markdown/example.md:
--------------------------------------------------------------------------------
1 | # Markdown Demo
2 |
3 |
4 |
5 | ## External 1.1
6 |
7 | Content 1.1
8 |
9 | Note: This will only appear in the speaker notes window.
10 |
11 |
12 | ## External 1.2
13 |
14 | Content 1.2
15 |
16 |
17 |
18 | ## External 2
19 |
20 | Content 2.1
21 |
22 |
23 |
24 | ## External 3.1
25 |
26 | Content 3.1
27 |
28 |
29 | ## External 3.2
30 |
31 | Content 3.2
32 |
33 |
34 | ## External 3.3
35 |
36 | 
37 |
--------------------------------------------------------------------------------
/plugin/math/math.js:
--------------------------------------------------------------------------------
1 | /**
2 | * A plugin which enables rendering of math equations inside
3 | * of reveal.js slides. Essentially a thin wrapper for MathJax.
4 | *
5 | * @author Hakim El Hattab
6 | */
7 | var RevealMath = window.RevealMath || (function(){
8 |
9 | var options = Reveal.getConfig().math || {};
10 | var mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js';
11 | var config = options.config || 'TeX-AMS_HTML-full';
12 | var url = mathjax + '?config=' + config;
13 |
14 | var defaultOptions = {
15 | messageStyle: 'none',
16 | tex2jax: {
17 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ],
18 | skipTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ]
19 | },
20 | skipStartupTypeset: true
21 | };
22 |
23 | function defaults( options, defaultOptions ) {
24 |
25 | for ( var i in defaultOptions ) {
26 | if ( !options.hasOwnProperty( i ) ) {
27 | options[i] = defaultOptions[i];
28 | }
29 | }
30 |
31 | }
32 |
33 | function loadScript( url, callback ) {
34 |
35 | var head = document.querySelector( 'head' );
36 | var script = document.createElement( 'script' );
37 | script.type = 'text/javascript';
38 | script.src = url;
39 |
40 | // Wrapper for callback to make sure it only fires once
41 | var finish = function() {
42 | if( typeof callback === 'function' ) {
43 | callback.call();
44 | callback = null;
45 | }
46 | }
47 |
48 | script.onload = finish;
49 |
50 | // IE
51 | script.onreadystatechange = function() {
52 | if ( this.readyState === 'loaded' ) {
53 | finish();
54 | }
55 | }
56 |
57 | // Normal browsers
58 | head.appendChild( script );
59 |
60 | }
61 |
62 | return {
63 | init: function() {
64 |
65 | defaults( options, defaultOptions );
66 | defaults( options.tex2jax, defaultOptions.tex2jax );
67 | options.mathjax = options.config = null;
68 |
69 | loadScript( url, function() {
70 |
71 | MathJax.Hub.Config( options );
72 |
73 | // Typeset followed by an immediate reveal.js layout since
74 | // the typesetting process could affect slide height
75 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub ] );
76 | MathJax.Hub.Queue( Reveal.layout );
77 |
78 | // Reprocess equations in slides when they turn visible
79 | Reveal.addEventListener( 'slidechanged', function( event ) {
80 |
81 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] );
82 |
83 | } );
84 |
85 | } );
86 |
87 | }
88 | }
89 |
90 | })();
91 |
92 | Reveal.registerPlugin( 'math', RevealMath );
93 |
--------------------------------------------------------------------------------
/plugin/multiplex/client.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var multiplex = Reveal.getConfig().multiplex;
3 | var socketId = multiplex.id;
4 | var socket = io.connect(multiplex.url);
5 |
6 | socket.on(multiplex.id, function(data) {
7 | // ignore data from sockets that aren't ours
8 | if (data.socketId !== socketId) { return; }
9 | if( window.location.host === 'localhost:1947' ) return;
10 |
11 | Reveal.setState(data.state);
12 | });
13 | }());
14 |
--------------------------------------------------------------------------------
/plugin/multiplex/index.js:
--------------------------------------------------------------------------------
1 | var http = require('http');
2 | var express = require('express');
3 | var fs = require('fs');
4 | var io = require('socket.io');
5 | var crypto = require('crypto');
6 |
7 | var app = express();
8 | var staticDir = express.static;
9 | var server = http.createServer(app);
10 |
11 | io = io(server);
12 |
13 | var opts = {
14 | port: process.env.PORT || 1948,
15 | baseDir : __dirname + '/../../'
16 | };
17 |
18 | io.on( 'connection', function( socket ) {
19 | socket.on('multiplex-statechanged', function(data) {
20 | if (typeof data.secret == 'undefined' || data.secret == null || data.secret === '') return;
21 | if (createHash(data.secret) === data.socketId) {
22 | data.secret = null;
23 | socket.broadcast.emit(data.socketId, data);
24 | };
25 | });
26 | });
27 |
28 | [ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) {
29 | app.use('/' + dir, staticDir(opts.baseDir + dir));
30 | });
31 |
32 | app.get("/", function(req, res) {
33 | res.writeHead(200, {'Content-Type': 'text/html'});
34 |
35 | var stream = fs.createReadStream(opts.baseDir + '/index.html');
36 | stream.on('error', function( error ) {
37 | res.write('reveal.js multiplex server.
Generate token');
38 | res.end();
39 | });
40 | stream.on('readable', function() {
41 | stream.pipe(res);
42 | });
43 | });
44 |
45 | app.get("/token", function(req,res) {
46 | var ts = new Date().getTime();
47 | var rand = Math.floor(Math.random()*9999999);
48 | var secret = ts.toString() + rand.toString();
49 | res.send({secret: secret, socketId: createHash(secret)});
50 | });
51 |
52 | var createHash = function(secret) {
53 | var cipher = crypto.createCipher('blowfish', secret);
54 | return(cipher.final('hex'));
55 | };
56 |
57 | // Actually listen
58 | server.listen( opts.port || null );
59 |
60 | var brown = '\033[33m',
61 | green = '\033[32m',
62 | reset = '\033[0m';
63 |
64 | console.log( brown + "reveal.js:" + reset + " Multiplex running on port " + green + opts.port + reset );
--------------------------------------------------------------------------------
/plugin/multiplex/master.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | // Don't emit events from inside of notes windows
4 | if ( window.location.search.match( /receiver/gi ) ) { return; }
5 |
6 | var multiplex = Reveal.getConfig().multiplex;
7 |
8 | var socket = io.connect( multiplex.url );
9 |
10 | function post() {
11 |
12 | var messageData = {
13 | state: Reveal.getState(),
14 | secret: multiplex.secret,
15 | socketId: multiplex.id
16 | };
17 |
18 | socket.emit( 'multiplex-statechanged', messageData );
19 |
20 | };
21 |
22 | // post once the page is loaded, so the client follows also on "open URL".
23 | window.addEventListener( 'load', post );
24 |
25 | // Monitor events that trigger a change in state
26 | Reveal.addEventListener( 'slidechanged', post );
27 | Reveal.addEventListener( 'fragmentshown', post );
28 | Reveal.addEventListener( 'fragmenthidden', post );
29 | Reveal.addEventListener( 'overviewhidden', post );
30 | Reveal.addEventListener( 'overviewshown', post );
31 | Reveal.addEventListener( 'paused', post );
32 | Reveal.addEventListener( 'resumed', post );
33 |
34 | }());
35 |
--------------------------------------------------------------------------------
/plugin/multiplex/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "reveal-js-multiplex",
3 | "version": "1.0.0",
4 | "description": "reveal.js multiplex server",
5 | "homepage": "http://revealjs.com",
6 | "scripts": {
7 | "start": "node index.js"
8 | },
9 | "engines": {
10 | "node": "~4.1.1"
11 | },
12 | "dependencies": {
13 | "express": "~4.13.3",
14 | "grunt-cli": "~0.1.13",
15 | "mustache": "~2.2.1",
16 | "socket.io": "~1.3.7"
17 | },
18 | "license": "MIT"
19 | }
20 |
--------------------------------------------------------------------------------
/plugin/notes-server/client.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | // don't emit events from inside the previews themselves
4 | if( window.location.search.match( /receiver/gi ) ) { return; }
5 |
6 | var socket = io.connect( window.location.origin ),
7 | socketId = Math.random().toString().slice( 2 );
8 |
9 | console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId );
10 |
11 | window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId );
12 |
13 | /**
14 | * Posts the current slide data to the notes window
15 | */
16 | function post() {
17 |
18 | var slideElement = Reveal.getCurrentSlide(),
19 | notesElement = slideElement.querySelector( 'aside.notes' );
20 |
21 | var messageData = {
22 | notes: '',
23 | markdown: false,
24 | socketId: socketId,
25 | state: Reveal.getState()
26 | };
27 |
28 | // Look for notes defined in a slide attribute
29 | if( slideElement.hasAttribute( 'data-notes' ) ) {
30 | messageData.notes = slideElement.getAttribute( 'data-notes' );
31 | }
32 |
33 | // Look for notes defined in an aside element
34 | if( notesElement ) {
35 | messageData.notes = notesElement.innerHTML;
36 | messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
37 | }
38 |
39 | socket.emit( 'statechanged', messageData );
40 |
41 | }
42 |
43 | // When a new notes window connects, post our current state
44 | socket.on( 'new-subscriber', function( data ) {
45 | post();
46 | } );
47 |
48 | // When the state changes from inside of the speaker view
49 | socket.on( 'statechanged-speaker', function( data ) {
50 | Reveal.setState( data.state );
51 | } );
52 |
53 | // Monitor events that trigger a change in state
54 | Reveal.addEventListener( 'slidechanged', post );
55 | Reveal.addEventListener( 'fragmentshown', post );
56 | Reveal.addEventListener( 'fragmenthidden', post );
57 | Reveal.addEventListener( 'overviewhidden', post );
58 | Reveal.addEventListener( 'overviewshown', post );
59 | Reveal.addEventListener( 'paused', post );
60 | Reveal.addEventListener( 'resumed', post );
61 |
62 | // Post the initial state
63 | post();
64 |
65 | }());
66 |
--------------------------------------------------------------------------------
/plugin/notes-server/index.js:
--------------------------------------------------------------------------------
1 | var http = require('http');
2 | var express = require('express');
3 | var fs = require('fs');
4 | var io = require('socket.io');
5 | var Mustache = require('mustache');
6 |
7 | var app = express();
8 | var staticDir = express.static;
9 | var server = http.createServer(app);
10 |
11 | io = io(server);
12 |
13 | var opts = {
14 | port : 1947,
15 | baseDir : __dirname + '/../../'
16 | };
17 |
18 | io.on( 'connection', function( socket ) {
19 |
20 | socket.on( 'new-subscriber', function( data ) {
21 | socket.broadcast.emit( 'new-subscriber', data );
22 | });
23 |
24 | socket.on( 'statechanged', function( data ) {
25 | delete data.state.overview;
26 | socket.broadcast.emit( 'statechanged', data );
27 | });
28 |
29 | socket.on( 'statechanged-speaker', function( data ) {
30 | delete data.state.overview;
31 | socket.broadcast.emit( 'statechanged-speaker', data );
32 | });
33 |
34 | });
35 |
36 | [ 'css', 'js', 'images', 'plugin', 'lib' ].forEach( function( dir ) {
37 | app.use( '/' + dir, staticDir( opts.baseDir + dir ) );
38 | });
39 |
40 | app.get('/', function( req, res ) {
41 |
42 | res.writeHead( 200, { 'Content-Type': 'text/html' } );
43 | fs.createReadStream( opts.baseDir + '/index.html' ).pipe( res );
44 |
45 | });
46 |
47 | app.get( '/notes/:socketId', function( req, res ) {
48 |
49 | fs.readFile( opts.baseDir + 'plugin/notes-server/notes.html', function( err, data ) {
50 | res.send( Mustache.to_html( data.toString(), {
51 | socketId : req.params.socketId
52 | }));
53 | });
54 |
55 | });
56 |
57 | // Actually listen
58 | server.listen( opts.port || null );
59 |
60 | var brown = '\033[33m',
61 | green = '\033[32m',
62 | reset = '\033[0m';
63 |
64 | var slidesLocation = 'http://localhost' + ( opts.port ? ( ':' + opts.port ) : '' );
65 |
66 | console.log( brown + 'reveal.js - Speaker Notes' + reset );
67 | console.log( '1. Open the slides at ' + green + slidesLocation + reset );
68 | console.log( '2. Click on the link in your JS console to go to the notes page' );
69 | console.log( '3. Advance through your slides and your notes will advance automatically' );
70 |
--------------------------------------------------------------------------------
/plugin/notes/notes.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Handles opening of and synchronization with the reveal.js
3 | * notes window.
4 | *
5 | * Handshake process:
6 | * 1. This window posts 'connect' to notes window
7 | * - Includes URL of presentation to show
8 | * 2. Notes window responds with 'connected' when it is available
9 | * 3. This window proceeds to send the current presentation state
10 | * to the notes window
11 | */
12 | var RevealNotes = (function() {
13 |
14 | var notesPopup = null;
15 |
16 | function openNotes( notesFilePath ) {
17 |
18 | if (notesPopup && !notesPopup.closed) {
19 | notesPopup.focus();
20 | return;
21 | }
22 |
23 | if( !notesFilePath ) {
24 | var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path
25 | jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path
26 | notesFilePath = jsFileLocation + 'notes.html';
27 | }
28 |
29 | notesPopup = window.open( notesFilePath, 'reveal.js - Notes', 'width=1100,height=700' );
30 |
31 | if( !notesPopup ) {
32 | alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' );
33 | return;
34 | }
35 |
36 | /**
37 | * Connect to the notes window through a postmessage handshake.
38 | * Using postmessage enables us to work in situations where the
39 | * origins differ, such as a presentation being opened from the
40 | * file system.
41 | */
42 | function connect() {
43 | // Keep trying to connect until we get a 'connected' message back
44 | var connectInterval = setInterval( function() {
45 | notesPopup.postMessage( JSON.stringify( {
46 | namespace: 'reveal-notes',
47 | type: 'connect',
48 | url: window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search,
49 | state: Reveal.getState()
50 | } ), '*' );
51 | }, 500 );
52 |
53 | window.addEventListener( 'message', function( event ) {
54 | var data = JSON.parse( event.data );
55 | if( data && data.namespace === 'reveal-notes' && data.type === 'connected' ) {
56 | clearInterval( connectInterval );
57 | onConnected();
58 | }
59 | if( data && data.namespace === 'reveal-notes' && data.type === 'call' ) {
60 | callRevealApi( data.methodName, data.arguments, data.callId );
61 | }
62 | } );
63 | }
64 |
65 | /**
66 | * Calls the specified Reveal.js method with the provided argument
67 | * and then pushes the result to the notes frame.
68 | */
69 | function callRevealApi( methodName, methodArguments, callId ) {
70 |
71 | var result = Reveal[methodName].apply( Reveal, methodArguments );
72 | notesPopup.postMessage( JSON.stringify( {
73 | namespace: 'reveal-notes',
74 | type: 'return',
75 | result: result,
76 | callId: callId
77 | } ), '*' );
78 |
79 | }
80 |
81 | /**
82 | * Posts the current slide data to the notes window
83 | */
84 | function post( event ) {
85 |
86 | var slideElement = Reveal.getCurrentSlide(),
87 | notesElement = slideElement.querySelector( 'aside.notes' ),
88 | fragmentElement = slideElement.querySelector( '.current-fragment' );
89 |
90 | var messageData = {
91 | namespace: 'reveal-notes',
92 | type: 'state',
93 | notes: '',
94 | markdown: false,
95 | whitespace: 'normal',
96 | state: Reveal.getState()
97 | };
98 |
99 | // Look for notes defined in a slide attribute
100 | if( slideElement.hasAttribute( 'data-notes' ) ) {
101 | messageData.notes = slideElement.getAttribute( 'data-notes' );
102 | messageData.whitespace = 'pre-wrap';
103 | }
104 |
105 | // Look for notes defined in a fragment
106 | if( fragmentElement ) {
107 | var fragmentNotes = fragmentElement.querySelector( 'aside.notes' );
108 | if( fragmentNotes ) {
109 | notesElement = fragmentNotes;
110 | }
111 | else if( fragmentElement.hasAttribute( 'data-notes' ) ) {
112 | messageData.notes = fragmentElement.getAttribute( 'data-notes' );
113 | messageData.whitespace = 'pre-wrap';
114 |
115 | // In case there are slide notes
116 | notesElement = null;
117 | }
118 | }
119 |
120 | // Look for notes defined in an aside element
121 | if( notesElement ) {
122 | messageData.notes = notesElement.innerHTML;
123 | messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
124 | }
125 |
126 | notesPopup.postMessage( JSON.stringify( messageData ), '*' );
127 |
128 | }
129 |
130 | /**
131 | * Called once we have established a connection to the notes
132 | * window.
133 | */
134 | function onConnected() {
135 |
136 | // Monitor events that trigger a change in state
137 | Reveal.addEventListener( 'slidechanged', post );
138 | Reveal.addEventListener( 'fragmentshown', post );
139 | Reveal.addEventListener( 'fragmenthidden', post );
140 | Reveal.addEventListener( 'overviewhidden', post );
141 | Reveal.addEventListener( 'overviewshown', post );
142 | Reveal.addEventListener( 'paused', post );
143 | Reveal.addEventListener( 'resumed', post );
144 |
145 | // Post the initial state
146 | post();
147 |
148 | }
149 |
150 | connect();
151 |
152 | }
153 |
154 | return {
155 | init: function() {
156 |
157 | if( !/receiver/i.test( window.location.search ) ) {
158 |
159 | // If the there's a 'notes' query set, open directly
160 | if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) {
161 | openNotes();
162 | }
163 |
164 | // Open the notes when the 's' key is hit
165 | Reveal.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() {
166 | openNotes();
167 | } );
168 |
169 | }
170 |
171 | },
172 |
173 | open: openNotes
174 | };
175 |
176 | })();
177 |
178 | Reveal.registerPlugin( 'notes', RevealNotes );
179 |
--------------------------------------------------------------------------------
/plugin/print-pdf/print-pdf.js:
--------------------------------------------------------------------------------
1 | /**
2 | * phantomjs script for printing presentations to PDF.
3 | *
4 | * Example:
5 | * phantomjs print-pdf.js "http://revealjs.com?print-pdf" reveal-demo.pdf
6 | *
7 | * @author Manuel Bieh (https://github.com/manuelbieh)
8 | * @author Hakim El Hattab (https://github.com/hakimel)
9 | * @author Manuel Riezebosch (https://github.com/riezebosch)
10 | */
11 |
12 | // html2pdf.js
13 | var system = require( 'system' );
14 |
15 | var probePage = new WebPage();
16 | var printPage = new WebPage();
17 |
18 | var inputFile = system.args[1] || 'index.html?print-pdf';
19 | var outputFile = system.args[2] || 'slides.pdf';
20 |
21 | if( outputFile.match( /\.pdf$/gi ) === null ) {
22 | outputFile += '.pdf';
23 | }
24 |
25 | console.log( 'Export PDF: Reading reveal.js config [1/4]' );
26 |
27 | probePage.open( inputFile, function( status ) {
28 |
29 | console.log( 'Export PDF: Preparing print layout [2/4]' );
30 |
31 | var config = probePage.evaluate( function() {
32 | return Reveal.getConfig();
33 | } );
34 |
35 | if( config ) {
36 |
37 | printPage.paperSize = {
38 | width: Math.floor( config.width * ( 1 + config.margin ) ),
39 | height: Math.floor( config.height * ( 1 + config.margin ) ),
40 | border: 0
41 | };
42 |
43 | printPage.open( inputFile, function( status ) {
44 | console.log( 'Export PDF: Preparing pdf [3/4]')
45 | printPage.evaluate( function() {
46 | Reveal.isReady() ? window.callPhantom() : Reveal.addEventListener( 'pdf-ready', window.callPhantom );
47 | } );
48 | } );
49 |
50 | printPage.onCallback = function( data ) {
51 | // For some reason we need to "jump the queue" for syntax highlighting to work.
52 | // See: http://stackoverflow.com/a/3580132/129269
53 | setTimeout( function() {
54 | console.log( 'Export PDF: Writing file [4/4]' );
55 | printPage.render( outputFile );
56 | console.log( 'Export PDF: Finished successfully!' );
57 | phantom.exit();
58 | }, 0 );
59 | };
60 | }
61 | else {
62 |
63 | console.log( 'Export PDF: Unable to read reveal.js config. Make sure the input address points to a reveal.js page.' );
64 | phantom.exit( 1 );
65 |
66 | }
67 | } );
68 |
--------------------------------------------------------------------------------
/test/assets/external-script-a.js:
--------------------------------------------------------------------------------
1 | window.externalScriptSequence += 'A';
--------------------------------------------------------------------------------
/test/assets/external-script-b.js:
--------------------------------------------------------------------------------
1 | window.externalScriptSequence += 'B';
--------------------------------------------------------------------------------
/test/assets/external-script-c.js:
--------------------------------------------------------------------------------
1 | window.externalScriptSequence += 'C';
--------------------------------------------------------------------------------
/test/assets/external-script-d.js:
--------------------------------------------------------------------------------
1 | window.externalScriptSequence += 'D';
--------------------------------------------------------------------------------
/test/examples/assets/beeping.txt:
--------------------------------------------------------------------------------
1 | Source: https://freesound.org/people/fennelliott/sounds/379419/
2 | License: CC0 (public domain)
--------------------------------------------------------------------------------
/test/examples/assets/beeping.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ryuichiueda/robosys2020/ff1abcea784e69970841c6d6510a426cbce48ac2/test/examples/assets/beeping.wav
--------------------------------------------------------------------------------
/test/examples/assets/image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ryuichiueda/robosys2020/ff1abcea784e69970841c6d6510a426cbce48ac2/test/examples/assets/image1.png
--------------------------------------------------------------------------------
/test/examples/assets/image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ryuichiueda/robosys2020/ff1abcea784e69970841c6d6510a426cbce48ac2/test/examples/assets/image2.png
--------------------------------------------------------------------------------
/test/examples/barebones.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Barebones
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | Barebones Presentation
20 | This example contains the bare minimum includes and markup required to run a reveal.js presentation.
21 |
22 |
23 |
24 | No Theme
25 | There's no theme included, so it will fall back on browser defaults.
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/test/examples/embedded-media.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Embedded Media
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Embedded Media Test
23 |
24 |
25 |
28 |
29 |
32 |
33 |
34 | Auto-playing audio
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/test/examples/math.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Math Plugin
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | reveal.js Math Plugin
23 | A thin wrapper for MathJax
24 |
25 |
26 |
27 | The Lorenz Equations
28 |
29 | \[\begin{aligned}
30 | \dot{x} & = \sigma(y-x) \\
31 | \dot{y} & = \rho x - y - xz \\
32 | \dot{z} & = -\beta z + xy
33 | \end{aligned} \]
34 |
35 |
36 |
37 | The Cauchy-Schwarz Inequality
38 |
39 |
42 |
43 |
44 |
45 | A Cross Product Formula
46 |
47 | \[\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
48 | \mathbf{i} & \mathbf{j} & \mathbf{k} \\
49 | \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
50 | \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0
51 | \end{vmatrix} \]
52 |
53 |
54 |
55 | The probability of getting \(k\) heads when flipping \(n\) coins is
56 |
57 | \[P(E) = {n \choose k} p^k (1-p)^{ n-k} \]
58 |
59 |
60 |
61 | An Identity of Ramanujan
62 |
63 | \[ \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} =
64 | 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}}
65 | {1+\frac{e^{-8\pi}} {1+\ldots} } } } \]
66 |
67 |
68 |
69 | A Rogers-Ramanujan Identity
70 |
71 | \[ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots =
72 | \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}\]
73 |
74 |
75 |
76 | Maxwell’s Equations
77 |
78 | \[ \begin{aligned}
79 | \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
80 | \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
81 | \nabla \cdot \vec{\mathbf{B}} & = 0 \end{aligned}
82 | \]
83 |
84 |
85 |
86 | TeX Macros
87 |
88 | Here is a common vector space:
89 | \[L^2(\R) = \set{u : \R \to \R}{\int_\R |u|^2 < +\infty}\]
90 | used in functional analysis.
91 |
92 |
93 |
94 |
95 | The Lorenz Equations
96 |
97 |
98 | \[\begin{aligned}
99 | \dot{x} & = \sigma(y-x) \\
100 | \dot{y} & = \rho x - y - xz \\
101 | \dot{z} & = -\beta z + xy
102 | \end{aligned} \]
103 |
104 |
105 |
106 |
107 | The Cauchy-Schwarz Inequality
108 |
109 |
110 | \[ \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) \]
111 |
112 |
113 |
114 |
115 | A Cross Product Formula
116 |
117 |
118 | \[\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
119 | \mathbf{i} & \mathbf{j} & \mathbf{k} \\
120 | \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
121 | \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0
122 | \end{vmatrix} \]
123 |
124 |
125 |
126 |
127 | The probability of getting \(k\) heads when flipping \(n\) coins is
128 |
129 |
130 | \[P(E) = {n \choose k} p^k (1-p)^{ n-k} \]
131 |
132 |
133 |
134 |
135 | An Identity of Ramanujan
136 |
137 |
138 | \[ \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} =
139 | 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}}
140 | {1+\frac{e^{-8\pi}} {1+\ldots} } } } \]
141 |
142 |
143 |
144 |
145 | A Rogers-Ramanujan Identity
146 |
147 |
148 | \[ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots =
149 | \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}\]
150 |
151 |
152 |
153 |
154 | Maxwell’s Equations
155 |
156 |
157 | \[ \begin{aligned}
158 | \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
159 | \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
160 | \nabla \cdot \vec{\mathbf{B}} & = 0 \end{aligned}
161 | \]
162 |
163 |
164 |
165 |
166 | TeX Macros
167 |
168 | Here is a common vector space:
169 | \[L^2(\R) = \set{u : \R \to \R}{\int_\R |u|^2 < +\infty}\]
170 | used in functional analysis.
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
203 |
204 |
205 |
206 |
--------------------------------------------------------------------------------
/test/examples/slide-backgrounds.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Slide Backgrounds
8 |
9 |
10 |
11 |
12 |
13 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | data-background: #00ffff
33 |
34 |
35 |
36 | data-background: #bb00bb
37 |
38 |
39 |
40 | data-background: lightblue
41 |
42 |
43 |
44 |
45 | data-background: #ff0000
46 |
47 |
48 | data-background: rgba(0, 0, 0, 0.2)
49 |
50 |
51 | data-background: salmon
52 |
53 |
54 |
55 |
56 |
57 | Background applied to stack
58 |
59 |
60 | Background applied to stack
61 |
62 |
63 | Background applied to slide inside of stack
64 |
65 |
66 |
67 |
68 | Background image
69 |
70 |
71 |
72 |
73 | Background image
74 |
75 |
76 | Background image
77 |
78 |
79 |
80 |
81 | Background image
82 | data-background-size="100px" data-background-repeat="repeat" data-background-color="#111"
83 |
84 |
85 |
86 | Same background twice (1/2)
87 |
88 |
89 | Same background twice (2/2)
90 |
91 |
92 |
93 | Video background
94 |
95 |
96 |
97 | Iframe background
98 |
99 |
100 |
101 |
102 | Same background twice vertical (1/2)
103 |
104 |
105 | Same background twice vertical (2/2)
106 |
107 |
108 |
109 |
110 | Same background from horizontal to vertical (1/3)
111 |
112 |
113 |
114 | Same background from horizontal to vertical (2/3)
115 |
116 |
117 | Same background from horizontal to vertical (3/3)
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
141 |
142 |
143 |
144 |
--------------------------------------------------------------------------------
/test/examples/slide-transitions.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Slide Transitions
8 |
9 |
10 |
11 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
36 |
37 |
38 | data-transition: zoom
39 |
40 |
41 |
42 | data-transition: zoom-in fade-out
43 |
44 |
45 |
48 |
49 |
50 | data-transition: convex
51 |
52 |
53 |
54 | data-transition: convex-in concave-out
55 |
56 |
57 |
58 |
61 |
62 | data-transition: concave
63 |
64 |
65 | data-transition: convex-in fade-out
66 |
67 |
70 |
71 |
72 |
73 | data-transition: none
74 |
75 |
76 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/test/simple.md:
--------------------------------------------------------------------------------
1 | ## Slide 1.1
2 |
3 | ```js
4 | var a = 1;
5 | ```
6 |
7 |
8 | ## Slide 1.2
9 |
10 |
11 |
12 | ## Slide 2
13 |
--------------------------------------------------------------------------------
/test/test-dependencies-async.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Async Dependencies
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/test/test-dependencies.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Dependencies
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/test/test-grid-navigation.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Grid
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/test/test-iframes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Iframes
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/test/test-markdown-element-attributes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Markdown Element Attributes
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
73 |
74 |
75 |
76 |
90 |
91 |
98 |
99 |
108 |
109 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
--------------------------------------------------------------------------------
/test/test-markdown-element-attributes.js:
--------------------------------------------------------------------------------
1 | Reveal.addEventListener( 'ready', function() {
2 |
3 | QUnit.module( 'Markdown' );
4 |
5 | QUnit.test( 'Vertical separator', function( assert ) {
6 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 4, 'found four slides' );
7 | });
8 |
9 | QUnit.test( 'Attributes on element header in vertical slides', function( assert ) {
10 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section>section h2.fragment.fade-out' ).length, 1, 'found one vertical slide with class fragment.fade-out on header' );
11 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section>section h2.fragment.shrink' ).length, 1, 'found one vertical slide with class fragment.shrink on header' );
12 | });
13 |
14 | QUnit.test( 'Attributes on element paragraphs in vertical slides', function( assert ) {
15 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section>section p.fragment.grow' ).length, 2, 'found a vertical slide with two paragraphs with class fragment.grow' );
16 | });
17 |
18 | QUnit.test( 'Attributes on element list items in vertical slides', function( assert ) {
19 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section>section li.fragment.grow' ).length, 3, 'found a vertical slide with three list items with class fragment.grow' );
20 | });
21 |
22 | QUnit.test( 'Attributes on element paragraphs in horizontal slides', function( assert ) {
23 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section p.fragment.highlight-red' ).length, 4, 'found a horizontal slide with four paragraphs with class fragment.grow' );
24 | });
25 |
26 | QUnit.test( 'Attributes on element list items in horizontal slides', function( assert ) {
27 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section li.fragment.highlight-green' ).length, 5, 'found a horizontal slide with five list items with class fragment.roll-in' );
28 | });
29 |
30 | QUnit.test( 'Attributes on element image in horizontal slides', function( assert ) {
31 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section img.reveal.stretch' ).length, 1, 'found a horizontal slide with stretched image, class img.reveal.stretch' );
32 | });
33 |
34 | QUnit.test( 'Attributes on elements in vertical slides with default element attribute separator', function( assert ) {
35 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section h2.fragment.highlight-red' ).length, 2, 'found two h2 titles with fragment highlight-red in vertical slides with default element attribute separator' );
36 | });
37 |
38 | QUnit.test( 'Attributes on elements in single slides with default element attribute separator', function( assert ) {
39 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section p.fragment.highlight-blue' ).length, 3, 'found three elements with fragment highlight-blue in single slide with default element attribute separator' );
40 | });
41 |
42 | } );
43 |
44 | Reveal.initialize();
45 |
--------------------------------------------------------------------------------
/test/test-markdown-external.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Markdown
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/test/test-markdown-external.js:
--------------------------------------------------------------------------------
1 | Reveal.addEventListener( 'ready', function() {
2 |
3 | QUnit.module( 'Markdown' );
4 |
5 | QUnit.test( 'Vertical separator', function( assert ) {
6 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' );
7 | });
8 |
9 | QUnit.test( 'Horizontal separator', function( assert ) {
10 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section' ).length, 2, 'found two slides' );
11 | });
12 |
13 | QUnit.test( 'Language highlighter', function( assert ) {
14 | assert.strictEqual( document.querySelectorAll( '.hljs-keyword' ).length, 1, 'got rendered highlight tag.' );
15 | assert.strictEqual( document.querySelector( '.hljs-keyword' ).innerHTML, 'var', 'the same keyword: var.' );
16 | });
17 |
18 | } );
19 |
20 | Reveal.initialize();
21 |
--------------------------------------------------------------------------------
/test/test-markdown-options.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Markdown Options
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/test/test-markdown-options.js:
--------------------------------------------------------------------------------
1 | Reveal.addEventListener( 'ready', function() {
2 |
3 | QUnit.module( 'Markdown' );
4 |
5 | QUnit.test( 'Options are set', function( assert ) {
6 | assert.strictEqual( marked.defaults.smartypants, true );
7 | });
8 |
9 | QUnit.test( 'Smart quotes are activated', function( assert ) {
10 | var text = document.querySelector( '.reveal .slides>section>p' ).textContent;
11 |
12 | assert.strictEqual( /['"]/.test( text ), false );
13 | assert.strictEqual( /[“”‘’]/.test( text ), true );
14 | });
15 |
16 | } );
17 |
18 | Reveal.initialize({
19 | dependencies: [
20 | { src: '../plugin/markdown/marked.js' },
21 | // Test loading JS files with query strings
22 | { src: '../plugin/markdown/markdown.js?query=string' },
23 | ],
24 | markdown: {
25 | smartypants: true
26 | }
27 | });
28 |
--------------------------------------------------------------------------------
/test/test-markdown-slide-attributes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Markdown Attributes
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
57 |
58 |
89 |
90 |
96 |
97 |
103 |
104 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
--------------------------------------------------------------------------------
/test/test-markdown-slide-attributes.js:
--------------------------------------------------------------------------------
1 | Reveal.addEventListener( 'ready', function() {
2 |
3 | QUnit.module( 'Markdown' );
4 |
5 | QUnit.test( 'Vertical separator', function( assert ) {
6 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 6, 'found six vertical slides' );
7 | });
8 |
9 | QUnit.test( 'Id on slide', function( assert ) {
10 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section#slide2' ).length, 1, 'found one slide with id slide2' );
11 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section a[href="#/slide2"]' ).length, 1, 'found one slide with a link to slide2' );
12 | });
13 |
14 | QUnit.test( 'data-background attributes', function( assert ) {
15 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#A0C66B"]' ).length, 1, 'found one vertical slide with data-background="#A0C66B"' );
16 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#ff0000"]' ).length, 1, 'found one vertical slide with data-background="#ff0000"' );
17 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section[data-background="#C6916B"]' ).length, 1, 'found one slide with data-background="#C6916B"' );
18 | });
19 |
20 | QUnit.test( 'data-transition attributes', function( assert ) {
21 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="zoom"]' ).length, 1, 'found one vertical slide with data-transition="zoom"' );
22 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="fade"]' ).length, 1, 'found one vertical slide with data-transition="fade"' );
23 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section [data-transition="zoom"]' ).length, 1, 'found one slide with data-transition="zoom"' );
24 | });
25 |
26 | QUnit.test( 'data-background attributes with default separator', function( assert ) {
27 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#A7C66B"]' ).length, 1, 'found one vertical slide with data-background="#A0C66B"' );
28 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#f70000"]' ).length, 1, 'found one vertical slide with data-background="#ff0000"' );
29 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section[data-background="#C7916B"]' ).length, 1, 'found one slide with data-background="#C6916B"' );
30 | });
31 |
32 | QUnit.test( 'data-transition attributes with default separator', function( assert ) {
33 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="concave"]' ).length, 1, 'found one vertical slide with data-transition="zoom"' );
34 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="page"]' ).length, 1, 'found one vertical slide with data-transition="fade"' );
35 | assert.strictEqual( document.querySelectorAll( '.reveal .slides section [data-transition="concave"]' ).length, 1, 'found one slide with data-transition="zoom"' );
36 | });
37 |
38 | QUnit.test( 'data-transition attributes with inline content', function( assert ) {
39 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section[data-background="#ff0000"]' ).length, 3, 'found three horizontal slides with data-background="#ff0000"' );
40 | });
41 |
42 | } );
43 |
44 | Reveal.initialize();
45 |
--------------------------------------------------------------------------------
/test/test-markdown.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Markdown
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/test/test-markdown.js:
--------------------------------------------------------------------------------
1 | Reveal.addEventListener( 'ready', function() {
2 |
3 | QUnit.module( 'Markdown' );
4 |
5 | QUnit.test( 'Vertical separator', function( assert ) {
6 | assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' );
7 | });
8 |
9 | } );
10 |
11 | Reveal.initialize();
12 |
--------------------------------------------------------------------------------
/test/test-pdf.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test PDF exports
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | 1
25 |
26 |
27 |
28 |
39 |
40 |
41 |
42 | 3.1
43 |
44 | - 4.1
45 | - 4.2
46 | - 4.3
47 |
48 |
49 |
50 |
57 |
58 |
59 | 3.3
60 |
61 | - 3.3.1
62 | - 3.3.2
63 | - 3.3.3
64 |
65 |
66 |
67 |
68 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/test/test-pdf.js:
--------------------------------------------------------------------------------
1 | Reveal.addEventListener( 'ready', function() {
2 |
3 | // Only one test for now, we're mainly ensuring that there
4 | // are no execution errors when running PDF mode
5 |
6 | QUnit.test( 'Reveal.isReady', function( assert ) {
7 | assert.strictEqual( Reveal.isReady(), true, 'returns true' );
8 | });
9 |
10 | } );
11 |
12 | Reveal.initialize({ pdf: true });
13 |
--------------------------------------------------------------------------------
/test/test-plugins.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test Plugins
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/test/test-state.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Test State
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
137 |
138 |
139 |
140 |
--------------------------------------------------------------------------------
/test/test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | reveal.js - Tests
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 1
24 |
25 |
26 |
27 |
28 |
29 |
30 |
41 |
42 |
43 |
44 | 3.1
45 |
46 | - 4.1
47 | - 4.2
48 | - 4.3
49 |
50 |
51 |
52 |
60 |
61 |
62 | 3.3
63 |
64 | - 3.3.1
65 | - 3.3.2
66 | - 3.3.3
67 |
68 |
69 |
70 |
71 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------