Create initial Reveal.js template

This commit is contained in:
Garrett Mills 2022-09-29 14:02:30 -05:00
commit 2fcb857f38
6 changed files with 197 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.idea
node_modules

66
index.html Normal file
View File

@ -0,0 +1,66 @@
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="node_modules/reveal.js/dist/reveal.css">
<link rel="stylesheet" href="node_modules/reveal.js/dist/theme/night.css">
<link rel="stylesheet" href="node_modules/reveal.js/plugin/highlight/zenburn.css">
<link rel="stylesheet" href="node_modules/reveal.js-drawer/dist/drawer.css">
<link rel="stylesheet" href="lib/attribution/plugin.css">
</head>
<body>
<div class="reveal">
<div class="slides">
<section>Hello, World!</section>
<section>
Slide 2!
<span class="attribution">
Template courtesy of <a target="_blank" href="https://code.garrettmills.dev/garrettmills/slides">my template</a>.
</span>
</section>
<section data-markdown>
<textarea data-template>
## Slide 3
This is a markdown slide!
- note1
- note2
- note3
```js
const a = `Hello, ${name}!`
```
---
## Slide 4
This contains some katex.
`$$\cfrac{(v, c) \Downarrow v'}{(v, c) \rightarrow v'}$$`
</textarea>
</script>
</div>
</div>
<script src="node_modules/reveal.js/dist/reveal.js"></script>
<script src="node_modules/reveal.js/plugin/markdown/markdown.js"></script>
<script src="node_modules/reveal.js/plugin/highlight/highlight.js"></script>
<script src="node_modules/reveal.js/plugin/math/math.js"></script>
<script src="node_modules/reveal.js/plugin/notes/notes.js"></script>
<script src="node_modules/reveal.js/plugin/search/search.js"></script>
<script src="node_modules/reveal.js-drawer/dist/drawer.js"></script>
<script src="lib/attribution/plugin.js"></script>
<script>
Reveal.initialize({
plugins: [
RevealMarkdown,
RevealHighlight,
RevealMath.KaTeX,
RevealNotes,
RevealSearch,
RevealDrawer,
RevealAttribution,
],
progress: false,
hash: true,
hideCursorTime: 2000,
});
</script>
</body>
</html>

View File

@ -0,0 +1,18 @@
/* Attribution plugin: text along the right edge of the viewport */
.attribution{
position: absolute;
top: 50%;
bottom: auto;
left: 50%;
right: auto;
font-size: 0.4em;
pointer-events: none;
text-align: center;
writing-mode: vertical-lr;
transform: translate( -50%, -50% ) scale( 100% ) rotate(-180deg);
}
/* Attribution plugin: activate pointer events for attribution text only */
.attribution .content{
pointer-events: auto;
}

75
lib/attribution/plugin.js Normal file
View File

@ -0,0 +1,75 @@
/*****************************************************************
** Author: Roland Schmehl, r.schmehl@tudelft.nl
**
** A plugin for displaying attribution texts sideways along the right
** edge of the viewport. When resizing the viewport or toggling full
** screen mode, the attribution text sticks persistently to the right
** edge of the viewport.
**
** The dynamic scaling of the attribution text via CSS transform
** is adopted from the fullscreen plugin.
**
** Version: 1.0
**
** License: MIT license (see file LICENSE)
**
******************************************************************/
window.RevealAttribution = window.RevealAttribution || {
id: 'RevealAttribution',
init: function(deck) {
initAttribution(deck);
}
};
const initAttribution = function(Reveal){
var ready = false;
var resize = false;
var scale = 1;
window.addEventListener( 'ready', function( event ) {
var content;
// Remove configured margin of the presentation
var attribution = document.getElementsByClassName("attribution");
var width = window.innerWidth;
var configuredWidth = Reveal.getConfig().width;
var configuredHeight = Reveal.getConfig().height;
scale = 1/(1-Reveal.getConfig().margin);
for (var i = 0; i < attribution.length; i++) {
content = attribution[i].innerHTML;
attribution[i].style.width = configuredWidth + "px";
attribution[i].style.height = configuredHeight + "px";
attribution[i].innerHTML = "<span class='content'>" + content + "</span>";
attribution[i].style.transform = 'translate( -50%, -50% ) scale( ' + scale*100 + '% ) rotate(-180deg)';
}
// Scale with cover class to mimic backgroundSize cover
resizeCover();
});
window.addEventListener( 'resize', resizeCover );
function resizeCover() {
// Scale to mimic backgroundSize cover
var attribution = document.getElementsByClassName("attribution");
var xScale = window.innerWidth / Reveal.getConfig().width;
var yScale = window.innerHeight / Reveal.getConfig().height;
var s = 1;
if (xScale > yScale) {
// The div fits perfectly in x axis, stretched in y
s = xScale/yScale;
}
for (var i = 0; i < attribution.length; i++) {
attribution[i].style.transform = 'translate( -50%, -50% ) scale( ' + s*scale*100 + '% ) rotate(-180deg)';
}
}
};

16
package.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "slides",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"reveal.js": "^4.3.1",
"reveal.js-drawer": "^0.1.3"
}
}

20
pnpm-lock.yaml Normal file
View File

@ -0,0 +1,20 @@
lockfileVersion: 5.4
specifiers:
reveal.js: ^4.3.1
reveal.js-drawer: ^0.1.3
dependencies:
reveal.js: 4.3.1
reveal.js-drawer: 0.1.3
packages:
/reveal.js-drawer/0.1.3:
resolution: {integrity: sha512-+ObLL2JCQxmhRJGvqnhSzo380gJiv2hMzlZimZlG1yAeXCwn+qyc/dXLQog/89vWve2RS9bk68jTYqlhPwMUBA==}
dev: false
/reveal.js/4.3.1:
resolution: {integrity: sha512-1kyEnWeUkaCdBdX//XXq9dtBK95ppvIlSwlHelrP8/wrX6LcsYp4HT9WTFoFEOUBfVqkm8C2aHQ367o+UKfcxw==}
engines: {node: '>=10.0.0'}
dev: false