1
0
mirror of https://github.com/hakimel/reveal.js.git synced 2025-09-13 08:02:03 +02:00

Compare commits

..

753 Commits
2.5.0 ... 3.2.0

Author SHA1 Message Date
Hakim El Hattab
822a9c937c 3.2.0 2015-11-09 17:07:06 +01:00
Hakim El Hattab
d022113eea Merge pull request #1362 from GuGuss/patch-1
Update the theme README.md
2015-11-09 16:54:32 +01:00
Hakim El Hattab
bb7ab5f94e Merge pull request #1381 from lordsutch/master
Fix text being cut off in Chrome when printing.
2015-11-09 16:51:05 +01:00
Hakim El Hattab
a5181e4372 Merge pull request #1391 from rohithpr/notes-key-binding
Fixed #1379 - config keyboard now disables 's' key
2015-11-09 16:47:21 +01:00
Hakim El Hattab
50f9896362 update highlight.js 8.6 -> 8.9.1 #1385 2015-11-09 16:46:08 +01:00
Hakim El Hattab
215617740d server notes sync slide changes both ways, fixes #1425 2015-11-09 16:24:09 +01:00
Hakim El Hattab
4be55f860e update highlight.js url 2015-11-07 14:39:26 +01:00
Hakim El Hattab
21d02eed32 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-11-07 14:20:38 +01:00
Hakim El Hattab
e74c3c6b76 Merge pull request #1422 from gre/patch-1
Fixes #1225
2015-11-07 14:19:35 +01:00
Gaëtan Renaudeau
d44bcdb3ff Fixes #1225
always enable highlight.js to fix markdown-only usage
2015-11-07 09:21:07 +01:00
Hakim El Hattab
fcfcf9e784 more slide number tweaking 2015-10-30 09:27:32 +01:00
Hakim El Hattab
edfa131c9c tweak how speaker notes look in pdf exports 2015-10-29 16:44:47 +01:00
Hakim El Hattab
f87f3e60f3 style tweak 2015-10-29 14:40:49 +01:00
Hakim El Hattab
9b5e16055a hide slide number element when disabled 2015-10-29 14:29:51 +01:00
Hakim El Hattab
d66cba6efa remove out of sync comments from pdf css 2015-10-29 13:24:47 +01:00
Hakim El Hattab
42babeb4ef one more slide number format 2015-10-29 12:39:51 +01:00
Hakim El Hattab
0e779edb20 slide numbers work in pdf exports, update slide number style 2015-10-29 11:59:26 +01:00
Hakim El Hattab
0198d74391 change slide number formats 2015-10-29 10:58:06 +01:00
Hakim El Hattab
35462a424c remove mention of deprecated transitions #1390 2015-10-26 16:34:43 +01:00
Hakim El Hattab
596f3d3c5a fix mixed indentation 2015-10-26 14:42:12 +01:00
Hakim El Hattab
2a757794fb Merge pull request #1399 from sloan-848/markdown-packaging
Add more support for external markdown.
2015-10-26 14:40:56 +01:00
Hakim El Hattab
5949e43524 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-10-26 14:40:41 +01:00
Hakim El Hattab
15414ce5bb Merge pull request #1400 from adunning/patch-1
Use en dash in title; <meta> is a void element.
2015-10-26 14:34:25 +01:00
Hakim El Hattab
103f01287b Merge pull request #1401 from adunning/patch-2
move up presentation size section
2015-10-26 14:32:49 +01:00
Hakim El Hattab
fc792e704c remove remotes.io plugin, service no longer exists #1411 2015-10-26 09:22:46 +01:00
Hakim El Hattab
1cb52120ff syntax error in postmessage example 2015-10-26 08:47:37 +01:00
Andrew Dunning
2b9d1871c9 Move up Presentation Size section.
This brings together all configuration options.
2015-10-14 18:14:33 -04:00
Andrew Dunning
015870ca8a Use en dash in title; <meta> is a void element. 2015-10-14 17:06:16 -04:00
Will Sloan
3d53766e51 Add more support for external markdown.
The 'grunt watch' command now also watches for changes to external
markdown.
The 'grunt package' command now packages all external markdown files for
rapid deployment in static enviroments.
2015-10-14 00:59:42 -04:00
rohithpr
dd8f95d9a9 Fixed #1379 - config keyboard now disables 's' key 2015-10-09 00:14:02 +05:30
Hakim El Hattab
34b82baa67 run autoprefixer 2015-10-06 20:17:22 +02:00
Hakim El Hattab
5e763bc67d fix black background in fullscreen mode #668 #1386 2015-10-06 20:16:46 +02:00
Hakim El Hattab
6d93ce5748 rebuild css 2015-10-06 19:40:06 +02:00
Chris Lawrence
e0d723be28 Fix slides being cut off in Chrome. 2015-10-02 20:48:13 -04:00
Chris Lawrence
69104e8e04 Merge remote-tracking branch 'upstream/master' 2015-10-02 20:47:19 -04:00
Hakim El Hattab
01c55d4cf6 fix bower dependency #1375 2015-10-02 12:27:51 +02:00
Hakim El Hattab
329bfbe032 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-09-29 11:12:10 +02:00
Hakim El Hattab
ddc9e2b5e7 Merge pull request #1357 from davidbanham/master
Update location of multiplex demo server
2015-09-29 10:11:54 +01:00
Hakim El Hattab
9b70e65d32 update travis node.js version 2015-09-29 11:10:40 +02:00
Hakim El Hattab
771843ccde Merge branch 'master' of https://github.com/davidbanham/reveal.js into dev 2015-09-29 11:10:02 +02:00
Hakim El Hattab
8373d5ec68 Merge pull request #1281 from fghaas/dev
Update README to include socket.io 1.3.5 examples
2015-09-29 09:43:34 +01:00
Hakim El Hattab
c1a7e83d75 multiplexing work with socket.io 1.0+ #1281 #1276 2015-09-29 10:38:34 +02:00
Hakim El Hattab
b16bc6fc2e speaker notes work with socket.io 1.0 #1375 2015-09-29 10:07:21 +02:00
Hakim El Hattab
5117048a5b Merge branch 'deps-update' of https://github.com/verdurin/reveal.js into dev 2015-09-29 09:16:47 +02:00
Adam Huffman
ef1402e645 Update dependencies to fix installation 2015-09-28 16:39:09 +01:00
Hakim El Hattab
8a1603f4d9 Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2015-09-25 09:41:14 +02:00
Hakim El Hattab
9bcd1484bc notes defined in data-notes attributes retain preformatted whitespace 2015-09-25 09:41:05 +02:00
Augustin Delaporte
55a69fc68d Update the theme README.md
The `grunt css-themes` command now loops through all Sass files. There is no need to add the newly created file to the task list.
2015-09-20 09:05:28 +02:00
David Banham
076aee5ae6 Update location of multiplex demo server 2015-09-17 15:39:21 +10:00
Hakim El Hattab
a151df54be document data-prevent-swipe #951 2015-09-10 14:37:25 +02:00
Hakim El Hattab
1116d99e87 prevent swipes on speaker notes 2015-09-10 11:26:05 +02:00
Hakim El Hattab
0d37757f3f modifications to #951 2015-09-10 11:25:19 +02:00
Hakim El Hattab
be7545da1a Merge branch 'feature_prevent_swipe' of https://github.com/Calyhre/reveal.js into dev 2015-09-10 11:10:08 +02:00
Hakim El Hattab
bd6a592b8b notes style changes 2015-09-10 11:09:03 +02:00
Hakim El Hattab
ca4098145e bump up z-index of notes in pdf 2015-09-10 10:35:25 +02:00
Hakim El Hattab
1c6990d20f fix pdf print when showNotes is disabled 2015-09-10 09:30:57 +02:00
Hakim El Hattab
5d39e8b8ce reorder css 2015-09-10 09:16:58 +02:00
Hakim El Hattab
b0b2ce1fe3 print notes to pdf when is enabled #304 2015-09-10 08:51:04 +02:00
Hakim El Hattab
0338f280d3 add getSlideNotes API method and tests 2015-09-10 08:28:52 +02:00
Hakim El Hattab
5a40b4486f dont show notes container when printing pdf 2015-09-09 14:31:27 +02:00
Hakim El Hattab
a14a298d30 document showNotes config value #304 2015-09-09 14:28:42 +02:00
Hakim El Hattab
2ad4065500 ability to share presentation with speaker notes #304 2015-09-09 14:09:37 +02:00
Hakim El Hattab
0c971b06e4 Merge pull request #1309 from cben/patch-1
README example: load MathJax over https
2015-09-02 12:00:17 +01:00
Hakim El Hattab
5e3bbdeecf formatting 2015-09-02 12:58:08 +02:00
Hakim El Hattab
75d38379b7 Merge pull request #1310 from teawithfruit/patch-1
solves early access error with video element
2015-09-02 11:57:37 +01:00
Hakim El Hattab
de6def8cdc Merge branch 'master' of https://github.com/gruber76/reveal.js into dev 2015-09-02 12:53:53 +02:00
Hakim El Hattab
983bd51838 fix initial visibility of strike fragments #737 2015-09-02 12:46:32 +02:00
Hakim El Hattab
044e87017d fix issue where 'none' transition did not apply to vertical stacks 2015-08-31 10:55:02 +02:00
Hakim El Hattab
b3b8738238 avoid duplicate var 2015-08-14 23:34:19 +02:00
Hakim El Hattab
b9d9632531 simplify 2015-08-14 23:25:30 +02:00
Hakim El Hattab
1bf236a079 fix object.keys call on non-object 2015-08-14 23:16:59 +02:00
gruber76
0c2898d29f Update reveal.js
Removed toLowerCase call
2015-08-03 15:03:10 -06:00
Hakim El Hattab
de3e1daab4 only use zoom to scale presentations up, fixes shifts in text layout 2015-08-03 12:24:38 +02:00
teawithfruit
b7470fa323 solves early access error with video element
This will maybe solve the "InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable" error in firefox.
2015-07-21 15:59:19 +02:00
Beni Cherniavsky-Paskin
b098b56c50 README example: load MathJax over https
tiny followup to #1103
2015-07-21 12:33:17 +03:00
Hakim El Hattab
25da01ce41 Merge pull request #1132 from kendaleiv/plain-images
Add plain class for plain images
2015-07-07 12:18:33 +02:00
Hakim El Hattab
d44125d789 tweaks for #1200 2015-07-07 12:15:43 +02:00
Hakim El Hattab
399d4f652d Merge branch 'master' of https://github.com/bfritscher/reveal.js into dev 2015-07-07 12:06:22 +02:00
Hakim El Hattab
852fea4133 Merge pull request #1205 from gothma/mathjax-md
Allow tex parsing in <code> tags
2015-07-07 11:50:08 +02:00
Hakim El Hattab
c96a5d6ae3 fix theme control arrow selectors #1257 2015-07-07 11:37:36 +02:00
Hakim El Hattab
d3b2ed9462 Merge branch 'controls-buttons-a11y' of https://github.com/marcysutton/reveal.js into dev 2015-07-07 11:33:56 +02:00
Hakim El Hattab
d88f59cbaf Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-07-02 16:00:56 +02:00
Hakim El Hattab
b390e66c27 add bower json #1067 2015-07-02 15:51:01 +02:00
Hakim El Hattab
96bef35535 Merge pull request #1287 from obilodeau/patch-1
README: suggest decktape as an alternative for PDF rendering
2015-07-02 15:21:02 +02:00
Hakim El Hattab
523f78eda7 remove harcoded syntax highlight colors #1290 2015-07-02 14:58:47 +02:00
Hakim El Hattab
2de01e3219 update highlight.js theme 2015-06-30 09:27:11 +02:00
Olivier Bilodeau
98bdeae7cb README: suggest decktape as an alternative for PDF rendering
It works around the current PDF rendering bugs like #1261
2015-06-28 20:40:24 -04:00
Hakim El Hattab
adf1a24f0a Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-06-25 10:02:21 +02:00
Hakim El Hattab
6ec6ac2cb4 Merge pull request #1250 from kfuglsang/highlightjs-86
Updated to Highlightjs 8.6 with all languages supported.
2015-06-25 09:57:03 +02:00
Hakim El Hattab
7225d84248 Merge pull request #1260 from pierreozoux/master
Allows to specify PORT from env on multiplex plugin
2015-06-25 09:53:51 +02:00
Hakim El Hattab
5020014bc2 Merge pull request #1270 from jasonkarns/patch-1
enabling launching presentation with npm-start
2015-06-25 09:51:13 +02:00
Hakim El Hattab
95296b9ea4 Merge pull request #1274 from jasonkarns/patch-3
broken <table> html in demo deck
2015-06-25 09:50:36 +02:00
Hakim El Hattab
e1a3cf4476 Merge pull request #1271 from jasonkarns/patch-2
`licenses` field is deprecated
2015-06-25 09:49:45 +02:00
Florian Haas
3aec26cdc9 Update README to include socket.io 1.3.5 examples
The socket.io server at reveal.jit.su has been updated with socket.io
1.x, which means the examples referring to 0.9.x client libraries
no longer work. Update them with URLs for 1.3.5.

Fixes #1276.
2015-06-24 14:09:36 +02:00
Jason Karns
be91cc6118 broken <table> html in demo deck 2015-06-20 10:04:39 -04:00
Jason Karns
071a523f42 licenses field is deprecated
the `licenses` field in package.json is deprecated. https://docs.npmjs.com/files/package.json#license

The `license` field is the recommended field and expects an SPDX expression.
2015-06-16 10:43:20 -04:00
Jason Karns
018ca77406 enabling launching presentation with npm-start 2015-06-16 10:39:58 -04:00
Hakim El Hattab
9ef5915974 Merge pull request #1268 from gneatgeek/migrate-leap-plugin
Removed leap motion plugin from main project
2015-06-16 08:29:21 +02:00
RC028552
50e1463a57 Removed leap motion plugin from main project 2015-06-15 19:42:24 -05:00
pierreozoux
5dd2dd9f0b Allows to specify PORT from env on multiplex plugin 2015-06-10 18:23:20 +01:00
marcysutton
242f2d6c96 accessibility: controls as buttons, not divs 2015-06-05 14:02:46 -04:00
Hakim El Hattab
562d3b0238 Merge branch 'davidbanham-master' into dev 2015-06-03 12:00:35 +02:00
Hakim El Hattab
db359519ae merge #959 with minor tweaks 2015-06-03 11:59:00 +02:00
Hakim El Hattab
f0cf1f54d0 add base option for grunt serve task #1102 2015-06-03 11:42:38 +02:00
Hakim El Hattab
434cd3b8ae Merge pull request #1202 from alexandreleroux/patch-1
PDF exporting also works with Chromium
2015-06-03 11:30:29 +02:00
Hakim El Hattab
c99f138fbb Merge pull request #1234 from lememora/master
Added missing comma on the configuration example
2015-06-03 11:29:59 +02:00
Hakim El Hattab
1ca92a4f29 Merge pull request #1201 from MA3STR0/master
Correct Readme.md -> Theming -> sky
2015-06-03 11:29:42 +02:00
Hakim El Hattab
0055b7b763 Merge pull request #1207 from danielePala/patch-1
Update index.html
2015-06-03 11:29:11 +02:00
Kenneth Fuglsang
0563835fc0 Updated to Highlightjs 8.6 with all languages supported. 2015-06-02 22:18:36 +02:00
Rafael Moraes
7c7776a942 added missing comma on the configuration example 2015-05-19 14:56:24 -04:00
Hakim El Hattab
eff2265bbd 3.1.0 2015-05-18 08:36:47 +02:00
Hakim El Hattab
5f90a449cf consider lazy loaded iframes when formatting src 2015-05-08 08:55:33 +02:00
Hakim El Hattab
e16a220a62 fix iframe unload in firefox 2015-05-07 16:36:57 +02:00
Hakim El Hattab
af270a909c iframe postmesssage api works with lazy loaded iframes 2015-05-07 10:09:50 +02:00
Hakim El Hattab
bf6a426cf2 sync starts playing new embedded content 2015-05-06 17:30:08 +02:00
Hakim El Hattab
d14727b407 type check to ensure we don't call media api before media has loaded 2015-05-06 11:28:21 +02:00
Hakim El Hattab
207b0c71ed fix lazy load selector error 2015-05-06 11:25:58 +02:00
Hakim El Hattab
e67dc9251a tweak to iframe lazy load test 2015-05-06 11:02:41 +02:00
Hakim El Hattab
3cd871eac0 typo 2015-05-04 21:08:41 -04:00
Hakim El Hattab
7dd33f188f lazy-load iframes only for current slide, unload when hidden 2015-05-04 20:58:58 -04:00
Hakim El Hattab
152271efb2 lazy loading fallback also considers iframes 2015-05-04 20:22:32 -04:00
Hakim El Hattab
80e52c08e9 add test presentation for per-slide transitions, compile css #1106 2015-05-03 19:53:37 -04:00
Hakim El Hattab
0f7b0dc22c Merge branch 'master' of https://github.com/jammon/reveal.js into dev 2015-05-03 19:16:27 -04:00
Daniele Pala
76230e7485 Update index.html
Added https prefix to slideshare iframe link, without this I got a 'not found' error when opening the demo locally.
2015-04-20 22:21:38 +02:00
Martin Goth
0cb4d10504 Allow tex parsing in <code> tags
Just using $ as delimiter in markdown document fails since the markdown
parser unknown to the dollar syntax will try to interpret underscores.
Putting the $ delimented formula in backticks will cause the markdown
parser to put the tex-code with the $ delimiters into a code block.
The texcode will then be unchanged. This patch allows for mathJax to
interpret and automagically display the tex-formulas.
2015-04-16 13:24:23 +02:00
Alexandre Leroux
d659575ff3 PDF exporting also works with Chromium
For those who can't install Google Chrome (e.g. work network policies) but can use Chromium, Chromium does work for creating the pdf. I updated the readme accordingly. Thanks!
2015-04-14 17:54:45 +00:00
Hakim El Hattab
bae8d968a2 change iframe example 2015-04-13 21:38:03 +02:00
Anton
33923b3004 Correct Readme.md#theming
Theming/sky.css has dark gray text on light blue background; not white text
2015-04-13 17:54:38 +02:00
Hakim El Hattab
334cd3e52b Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-04-12 19:19:52 +02:00
Hakim El Hattab
07197b1eae Merge pull request #1162 from bobylito/master
Make npm dependency usable by Browserify through npm
2015-04-12 19:19:12 +02:00
Hakim El Hattab
7f55e07f85 fix markdown test 2015-04-12 18:22:39 +02:00
Hakim El Hattab
4e3b91ae03 remove 'roll-in' fragment style due to Chrome crash #1150 2015-04-12 18:12:48 +02:00
Hakim El Hattab
ce798c4bac update cssmin to 0.12.2 #1179 2015-04-12 17:20:14 +02:00
Hakim El Hattab
404dd4e477 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-04-12 17:18:52 +02:00
Hakim El Hattab
69bc0be226 Merge pull request #1180 from kayakr/patch-1
typo
2015-04-12 17:11:12 +02:00
Hakim El Hattab
a0cc104a0c Merge branch 'query-params' of https://github.com/FND/reveal.js into dev 2015-04-12 17:07:59 +02:00
Hakim El Hattab
f24cbf8ad2 Merge pull request #1193 from danielquinn/Firefox-friendly
Added support for standard transforms
2015-04-12 17:05:06 +02:00
Boris Fritscher
9645a763c3 handle the </script> end bug inside code markdown
by changing the tag before html is parsed and restoring it before markdown parsing
2015-04-12 15:15:57 +02:00
Daniel Quinn
ee1ecef0e4 Added support for standard transforms
-webkit- stuff only works on webkit browsers.  I'm pretty sure that using the standard `transform:` here works in most modern browsers.
2015-04-03 12:26:40 +02:00
FND
4052389c58 support query parameters within notes plugin 2015-04-02 07:06:03 +02:00
kayakr
3ec15e35b2 Fix typo /s/configure/configured 2015-03-26 16:56:45 +13:00
Hakim El Hattab
ecc6222e7e fix for #1150? 2015-03-25 19:18:16 +01:00
Hakim El Hattab
bbfdb3b66e reset fragment transforms using 'none' 2015-03-25 19:17:15 +01:00
Hakim El Hattab
e19931abab fix #1170 2015-03-25 15:48:14 +01:00
Hakim El Hattab
70ab0ae80b remove variable definitions #1158 2015-03-25 14:51:54 +01:00
Hakim El Hattab
2999b628cf Merge branch 'dev' of https://github.com/bchretien/reveal.js into dev 2015-03-25 14:39:24 +01:00
Hakim El Hattab
0428365041 Merge branch 'patch-1' of https://github.com/drzax/reveal.js into dev 2015-03-25 14:16:12 +01:00
Hakim El Hattab
e38b1d38f8 Merge pull request #1166 from callahad/update-marked
update marked to 0.3.3
2015-03-25 14:02:22 +01:00
Hakim El Hattab
868d3b1a9f Merge branch 'patch-1' of https://github.com/borrown/reveal.js into dev 2015-03-25 14:00:26 +01:00
Hakim El Hattab
60457d21b4 alt+zoom only works on slide content #1151 2015-03-25 13:57:00 +01:00
Alexander
41cf154a60 Update reveal.js 2015-03-19 11:49:19 +08:00
Simon Elvery
7a03e238f0 Attribute values should be quoted 2015-03-16 20:44:23 +10:00
Dan Callahan
dfb39b4c96 Bumped Marked to v0.3.3
Compressed with `uglifyjs lib/marked.js --comments="/Copyright/" --mangle --compress`

Used Marked v0.3.3 as of chjj/marked@2b5802f258
2015-03-16 03:13:50 -05:00
Hakim El Hattab
7baa8ec1fe updated md slide separator regex #929
see https://github.com/hakimel/reveal.js/issues/929#issuecomment-80738837
2015-03-16 08:54:58 +01:00
Alexandre Stanislawski
e02f0488bb Make npm dependency usable by Browserify through NPM
Right now the package is not recognized as usable library by Browserify.
Adding the main attribute in the package.json solves that, and now gives
others the possibility to use reveal as a library in more complex
systems.
2015-03-14 20:05:05 +01:00
Hakim El Hattab
381adb0d1d Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-03-13 10:06:06 +01:00
Hakim El Hattab
8858ee75a5 note about plugins 2015-03-13 10:05:41 +01:00
Hakim El Hattab
bcec81efbb Merge branch 'master' of github.com:hakimel/reveal.js into dev 2015-03-13 08:21:07 +01:00
Hakim El Hattab
23ec0d083b link to plugins 2015-03-13 08:19:15 +01:00
Benjamin Chrétien
25c46ccc37 Fix slide numbering for custom slide number formatting.
Numbering was off when dealing with fragments.
2015-03-08 18:15:16 +01:00
Hakim El Hattab
4677741568 remove selection color from core css 2015-03-05 10:49:27 +01:00
Hakim El Hattab
c200fbedd1 add blood theme to demo slides #928 2015-03-02 12:28:47 +01:00
Hakim El Hattab
ecc8c78584 tweaks to blood theme 2015-03-02 12:27:15 +01:00
Hakim El Hattab
364a3f9845 code format 2015-03-02 12:11:05 +01:00
Hakim El Hattab
fc568b5524 Merge branch 'patch-1' of https://github.com/jhofker/reveal.js into dev 2015-03-02 12:10:26 +01:00
Hakim El Hattab
b4574791e0 fix mixed spaces/tabs 2015-03-02 12:08:21 +01:00
Christian Fehmer
3ead7d4eb5 Markdown table column alignment #1050
The alignment information were already in the generated html.
The css was the only thing missing, so I added it.
2015-02-28 19:15:14 +01:00
Hakim El Hattab
04e38c8c07 Merge pull request #1113 from brndnb/patch-1
grammar
2015-02-25 15:53:39 +01:00
Hakim El Hattab
53b9dbc654 code format 2015-02-25 15:52:10 +01:00
Hakim El Hattab
a245a87e38 Merge pull request #1138 from denehyg/background-video-loop
background video loop
2015-02-25 15:48:48 +01:00
Hakim El Hattab
22a5ec5e3b merge conflict 2015-02-25 15:42:47 +01:00
Hakim El Hattab
bf8a6271d4 fix mixed indentation 2015-02-25 15:35:30 +01:00
Hakim El Hattab
f772c7eb50 fix progress bar clicks in rtl mode #1131 2015-02-25 13:31:41 +01:00
Hakim El Hattab
ea735f0a2f ensure postmessage data is a string #1143 2015-02-25 13:26:53 +01:00
Hakim El Hattab
4c0a033dfa merge options for parallax step size #733 2015-02-25 12:10:00 +01:00
Jordan Hofker
76c5726c04 Check before calling blur on activeElement.
It's possible for slides to be in a situation where the last clicked thing was an SVG before the tab/window loses focus. When returning, `.blur()` is called on the previously-active element, but can result in an exception.

This protects against that and will only call `.blur()` when `document.activeElement` supports it.
2015-02-19 16:09:08 -06:00
Greg Denehy
00fa1c818d Added option to loop background videos 2015-02-19 17:04:41 +10:30
Ken Dale
67140f2369 Add plain class for plain images 2015-02-13 19:43:47 -05:00
Hakim El Hattab
2ed1d6fb5d fix looped view distance calculation 2015-02-09 09:35:12 +01:00
Hakim El Hattab
a4852c7cb2 prevent iframes from offsetting presentation 2015-02-03 11:56:54 +01:00
Hakim El Hattab
1c8a6e47a6 only preload last slides if presentation is looped 2015-02-02 09:14:09 +01:00
Hakim El Hattab
49f462e6ce gifs now restart when their slide container is shown 2015-01-30 10:52:28 +01:00
Hakim El Hattab
621e8d7176 only transition slides container in overview mode 2015-01-29 17:08:28 +01:00
Hakim El Hattab
03400478bd Merge pull request #1119 from hakimel/feature/new-overview
Refactored overview mode
2015-01-29 14:53:06 +01:00
Hakim El Hattab
8e66876c4e fix error when exiting overview 2015-01-29 12:21:05 +01:00
Hakim El Hattab
c8d7451142 comments 2015-01-29 12:03:02 +01:00
Hakim El Hattab
18e29a898a cleaner approach to applying transforms to slides container 2015-01-29 11:59:47 +01:00
Hakim El Hattab
3b45b618b8 dynamic file mapping to avoid themes hardcoded in gruntfile 2015-01-28 08:52:15 +01:00
Hakim El Hattab
df38524874 theme readme update 2015-01-28 08:45:38 +01:00
Hakim El Hattab
64e72781b4 ensure overview indices are up to date if a slide moves 2015-01-28 08:33:50 +01:00
Hakim El Hattab
c8569e2d9f cross browser adjustments for overview mode 2015-01-27 19:27:55 +01:00
Hakim El Hattab
e29c706533 further overview refactoring 2015-01-27 09:21:49 +01:00
Hakim El Hattab
11293d7c94 refactoring and optimization of overview mode 2015-01-26 20:38:21 +01:00
Hakim El Hattab
ce8ea84393 Merge pull request #1115 from raboof/patch-1
themes grunt task was renamed
2015-01-26 19:22:44 +01:00
Arnout Engelen
e296b39657 Grunt target was renamed 2015-01-26 18:56:03 +01:00
Branden Byers
2dccc25031 Fix small typo 2015-01-22 08:05:20 -06:00
Hakim El Hattab
44548ba357 add global flag back in for whitespace removal, without it most of the content in example.html does not work #682 2015-01-22 08:46:14 +01:00
Hakim El Hattab
f032df8f13 default to https mathjax #1103 2015-01-20 09:11:09 +01:00
Hakim El Hattab
9e14b261ea fix for #1088 when presentation is not scaled 2015-01-19 08:41:26 +01:00
Johannes Ammon
420b6912d7 Adding one-sided transitions
Now the transition isn’t any more „per slide“ but „per movement of a
slide“. So the slide can disappear in another way than it appeared.
2015-01-18 18:12:36 +01:00
Johannes Ammon
95bba5179f Mixins for readability of transitions added
To honor the DRY principle repeating patterns have been factored out.
In addition there was an anchor missing in README.md.
2015-01-18 10:55:05 +01:00
Hakim El Hattab
e0aba9f5ae apply z position to slide container, rather than individual slides 2015-01-17 10:33:18 +01:00
Hakim El Hattab
66d7b6bfae firefox support for #1088 2015-01-16 16:46:34 +01:00
Hakim El Hattab
99d92362c8 no longer set o-transforms 2015-01-16 16:15:28 +01:00
Hakim El Hattab
b71705c76f background images now work in overview mode #1088 2015-01-16 16:12:54 +01:00
Hakim El Hattab
5fb81b1b3c support for custom slide number formatting #965 2015-01-16 13:48:13 +01:00
Hakim El Hattab
817bb3bf43 use getElementByID when looking up linked slides #1086 2015-01-15 11:25:20 +01:00
Hakim El Hattab
9a89e39367 only read textContent for aria callout #1100 2015-01-14 17:01:28 +01:00
Hakim El Hattab
5359da0b06 documentation for getState/setState 2015-01-12 17:50:12 +01:00
Hakim El Hattab
04b71f577c documentation for postMessage API 2015-01-12 12:33:39 +01:00
Hakim El Hattab
20d858deb8 Merge pull request #1093 from hakimel/dev
3.0.0
2015-01-09 18:22:30 +01:00
Hakim El Hattab
3a8fc9b274 content tweak 2015-01-09 18:14:03 +01:00
Hakim El Hattab
3b93c8be33 content tweaks 2015-01-08 09:58:06 +01:00
Hakim El Hattab
06ad3bf4c2 reorganize fonts, include source sans pro for offline use 2015-01-06 17:37:14 +01:00
Hakim El Hattab
40f12acf2d always play background video from the start #1049 2015-01-06 12:49:52 +01:00
Hakim El Hattab
4cee280e36 merge master into dev 2015-01-06 12:44:42 +01:00
Hakim El Hattab
028c84481a revise contribution guidelines, graduate 3.0 from dev 2015-01-06 12:35:13 +01:00
Hakim El Hattab
dbcb44c298 dont subset league glyphs #989 2015-01-06 12:22:05 +01:00
Hakim El Hattab
16d4ce6497 new slideshare pdf example 2015-01-06 12:03:56 +01:00
Hakim El Hattab
25a674a3c2 new font & type settings for default theme 2015-01-06 11:42:23 +01:00
Hakim El Hattab
21d034bffe reveal container size determines progress bar width 2015-01-06 09:32:21 +01:00
Hakim El Hattab
0e0a4ec6e6 avoid repetition 2015-01-05 09:51:36 +01:00
Hakim El Hattab
9c3a7b49d0 (c) 2015 2015-01-05 09:40:53 +01:00
Hakim El Hattab
5bdbc2dc7b remove deprecated data-state background colors 2014-12-27 21:27:53 +01:00
Hakim El Hattab
2cfe1174f1 kill unintended transition into overview mode 2014-12-27 21:22:17 +01:00
Hakim El Hattab
abf402d044 change transition defaults 2014-12-27 21:16:54 +01:00
Hakim El Hattab
9dbc9e7719 tweak comments 2014-12-27 21:16:44 +01:00
Hakim El Hattab
327ff7a75c readme tweaks 2014-12-18 18:33:26 +01:00
Hakim El Hattab
d4bdf29c81 new pdf export example 2014-12-18 18:27:48 +01:00
Hakim El Hattab
3b1e1a04b8 white theme inverts text color against dark bg 2014-12-18 18:17:31 +01:00
Hakim El Hattab
1bc1dd12e6 bad theme name 2014-12-18 17:53:08 +01:00
Hakim El Hattab
7c03d60186 remove theme config option #1061 2014-12-18 17:45:51 +01:00
Hakim El Hattab
c3f9aabe04 add white theme, reverse of default theme #1018 2014-12-18 17:29:51 +01:00
Hakim El Hattab
96b26514e6 default content update; remove image slide, add two new slides 2014-12-12 15:52:25 +01:00
Hakim El Hattab
b133468f3e include background video example in default presentation 2014-12-10 20:18:11 +01:00
Hakim El Hattab
8524af73f6 zoom plugin now works for scaled presentations 2014-12-10 20:09:03 +01:00
Hakim El Hattab
dc215a2441 rename previous default theme to league 2014-12-10 18:28:14 +01:00
Hakim El Hattab
05403bcf16 first revision of new default theme #1018 2014-12-10 18:19:04 +01:00
Hakim El Hattab
ad9e93eae5 dont force links to be underlined in pdf 2014-12-09 15:06:25 +01:00
Chris Lawrence
54082a8d76 Merge remote-tracking branch 'upstream/master' 2014-11-30 21:26:17 -05:00
Hakim El Hattab
8c76f85e34 reorder scale condition; if calculated scale is exactly 1 don't apply any scale styles 2014-11-08 09:06:17 +01:00
Hakim El Hattab
57977e2923 Merge pull request #1033 from PeterDaveHello/patch-1
ci status indicator is svg instead of png
2014-11-06 19:42:08 +01:00
Hakim El Hattab
54e44ef4e2 add missing condition for recalculating scale 2014-11-06 19:19:14 +01:00
Hakim El Hattab
96b1ee9c39 ignore calculating scale if only possible outcome is 1 2014-11-05 19:28:09 +01:00
Hakim El Hattab
3126db0a46 update order of default slides 2014-11-05 12:54:00 +01:00
Hakim El Hattab
d84233df98 default to slide transitions 2014-11-05 12:28:09 +01:00
Hakim El Hattab
1aaec85744 update background color/image example slides 2014-11-05 12:27:57 +01:00
Hakim El Hattab
1f0627eb3f typo 2014-11-05 11:54:49 +01:00
Hakim El Hattab
b09923551a theme updates, normalized spacing between block-level elements 2014-11-05 11:52:32 +01:00
Hakim El Hattab
a170ee8982 simplify default initialization options 2014-11-05 10:38:43 +01:00
Hakim El Hattab
a5e4fcb839 Merge pull request #1037 from Suva/dev
Do not add video backgrounds to speaker notes.
2014-11-05 10:00:43 +01:00
Jaan Pullerits
82a692c394 Do not add video backgrounds to speaker notes. 2014-10-24 12:35:49 +00:00
Peter Dave Hello
9e4d0a3260 Use svg instead of png to get better image quality 2014-10-21 13:04:02 +08:00
Hakim El Hattab
6c8becc51b add video and iframe backgrounds to readme 2014-10-17 09:02:07 +02:00
Hakim El Hattab
16f9e95d87 update slide bg example presentation to include iframes and videos #1029 2014-10-17 08:52:38 +02:00
Hakim El Hattab
fa88707382 Merge branch 'feature/background-iframe' of https://github.com/lutangar/reveal.js into dev 2014-10-17 08:43:11 +02:00
Hakim El Hattab
82342672ea fix navigatePrev in rtl mode #1030 2014-10-16 16:17:41 +02:00
Hakim El Hattab
6c7ba34edf remove styles from #1030, simplify navigatePrev 2014-10-16 15:43:29 +02:00
Hakim El Hattab
eec72c1491 update grunt connect for more hostname flexibility #981 2014-10-16 13:50:59 +02:00
Hakim El Hattab
1f5369a43e correct defaults for min-height, thanks @sebastianz #985 2014-10-16 13:35:47 +02:00
Hakim El Hattab
136d279361 continue auto-sliding through fragments on last slide #974 2014-10-16 13:27:58 +02:00
Hakim El Hattab
cef19486b8 better handling of overflowing speaker notes #1017 2014-10-16 13:09:54 +02:00
Hakim El Hattab
5123ba4372 update grunt-qunit 2014-10-16 12:21:16 +02:00
Hakim El Hattab
a61a372b52 use nesting for fragment styles 2014-10-16 12:19:20 +02:00
Ira Abramov
ccdb4ff248 Fix RTL Navigation with space bar 2014-10-11 18:59:36 +03:00
lutangar
490ae90de4 add support for iframe backgrounds 2014-10-09 12:34:10 +02:00
Hakim El Hattab
6565ba0168 use node.js 0.10 2014-10-06 10:00:52 +02:00
Hakim El Hattab
a3a2ad039e reduce grunt task overhead 2014-10-06 09:51:12 +02:00
Hakim El Hattab
cc02564b2f reveal.css is now scss, merge autoprexier #1007 2014-10-06 09:41:38 +02:00
Hakim El Hattab
6729b9ba76 Merge branch 'master' of github.com:hakimel/reveal.js 2014-10-04 09:04:35 +02:00
Hakim El Hattab
76c587b7e3 add contribution guidelines from dev 2014-10-04 09:04:22 +02:00
Hakim El Hattab
588472c520 compile themes 2014-10-04 09:00:57 +02:00
Hakim El Hattab
a34fa75995 merge #975 into dev 2014-10-04 09:00:45 +02:00
Hakim El Hattab
f28b380fac prevent auto-sliding in notes frames #1004 2014-09-28 17:13:49 +02:00
Hakim El Hattab
05e55b2f81 minor copy tweak 2014-09-28 17:13:26 +02:00
Hakim El Hattab
e7b9e95369 remove classList condition from unrelated dependencies 2014-09-28 13:05:53 +02:00
Hakim El Hattab
36cdaefdfd multiple updates to default presentation content 2014-09-28 12:48:37 +02:00
Hakim El Hattab
0345696ed6 remove css 3d warning 2014-09-28 12:27:48 +02:00
Hakim El Hattab
bd176411ef style tweaks for all themes; larger line heights, no default adjustmetn to letter-spacing 2014-09-28 12:14:48 +02:00
Hakim El Hattab
9ef0060024 add new black theme 2014-09-28 11:17:16 +02:00
Hakim El Hattab
0aad39f755 dont open notes when S is pressed inside of notes window #991 2014-09-27 16:19:39 +02:00
Yves Delley
9bc5b81292 merged dev branch 2014-09-12 22:49:13 +02:00
Yves Delley
2bc36f2dfe re-created unprefixed version of reveal.css automatically using autoprefixer, to facilitate merging of changes to it 2014-09-12 22:37:57 +02:00
Hakim El Hattab
80fc214af1 update highlight.js to 8.2 2014-09-11 11:37:36 +02:00
Hakim El Hattab
03c3031cb4 cleanup classes when backgrounds are synced 2014-09-10 11:28:29 +02:00
Hakim El Hattab
0d14d87f1a rgba color parsing support, ignore brightness of transparent colors 2014-09-10 10:53:24 +02:00
Hakim El Hattab
41f20301b6 has-dark-background 2014-09-10 10:12:25 +02:00
Hakim El Hattab
bc2974fef8 bubble has-light-background to .reveal container 2014-09-09 17:51:36 +02:00
Hakim El Hattab
2479883d3c is-light-background -> has-light-background, doesn't apply to background itself 2014-09-09 17:33:52 +02:00
Hakim El Hattab
5e585ddbf2 update slide backgrounds example 2014-09-09 17:21:29 +02:00
Hakim El Hattab
9fb0c5f3d3 use computed style when calculating bg birghtness 2014-09-09 17:18:15 +02:00
Hakim El Hattab
20e72df4bf add is-background-light class to slides/backgrounds that are > 128 brightness 2014-09-09 16:50:23 +02:00
Hakim El Hattab
8a50a46665 util methods for calculating color brightness 2014-09-09 16:14:24 +02:00
Hakim El Hattab
4823b267cc better test for fragment indices 2014-09-09 12:42:11 +02:00
Hakim El Hattab
cbef64b860 fix current fragment index check when multiple fragments have same index 2014-09-06 08:20:38 +02:00
Yves Delley
7fe762c2f3 - 2014-09-05 17:43:02 +02:00
Yves Delley
03d8a02f68 added newly generated reveal.min.css 2014-09-05 17:42:38 +02:00
Yves Delley
4c155128c7 removed all vendor-prefixes from reveal.css 2014-09-05 17:41:56 +02:00
Hakim El Hattab
2cd988a7a3 fix previewLinks target 2014-09-04 18:00:21 +02:00
Hakim El Hattab
80c375fae8 the paused mode can now be disabled via the 'pause' config option 2014-08-12 16:01:27 +02:00
Hakim El Hattab
841f9d0f9b only load highlight.js if there's a 'pre code' block on page 2014-07-22 10:30:26 +02:00
Hakim El Hattab
062918b5e2 update highlight.js to 8.1 2014-07-22 10:29:00 +02:00
miira
9ae36e9d0f Update package.json 2014-07-18 14:04:04 +02:00
Miroslav Mocek
ff5a3dc8c7 removed ruby dependency. 2014-07-17 17:11:22 +02:00
Hakim El Hattab
57844ad827 listen for touch + click on all devices except android 2014-07-06 14:31:10 +02:00
Hakim El Hattab
213c8d1354 fix double-navigation on touch for some android systems 2014-06-28 12:58:33 +02:00
David Banham
a078c87f10 Listen to custom mapped togglePause keys
This resolves issue #941
2014-06-25 23:22:13 +10:00
Hakim El Hattab
7e8fd09376 fix npe 2014-06-25 13:56:24 +02:00
Hakim El Hattab
ef333300a2 prevent additional inaccurate showSlide calls 2014-06-25 11:50:45 +02:00
Hakim El Hattab
8cb8229aac prevent incorrect showSlide calls at startup 2014-06-25 11:44:10 +02:00
Hakim El Hattab
0d9563b598 overview slide size matches defaults 2014-06-24 10:51:57 +02:00
Chris Lawrence
09de278be0 Merge remote-tracking branch 'upstream/master' 2014-06-22 22:35:53 -04:00
Hakim El Hattab
c6b9da7000 more specific targeting for pdf printing hack 2014-06-18 18:42:45 +02:00
Calyhre
ed8d90bc58 Fix tests 2014-06-18 14:23:42 +02:00
Calyhre
4e70cf8126 Add ability to prevent swipe for specific elements 2014-06-18 14:18:41 +02:00
Hakim El Hattab
e4761d3a37 only allow text in aria status div 2014-06-18 10:50:00 +02:00
Hakim El Hattab
8f24561878 documentation for help flag 2014-06-16 18:47:39 +02:00
Hakim El Hattab
ebfb496743 config option for disabling the help overlay 2014-06-16 18:46:38 +02:00
Hakim El Hattab
2e0fe815a6 fix append to existing embed query 2014-06-12 18:27:52 +02:00
Hakim El Hattab
a7a32f941c vimeo support for autoplay/pause 2014-06-12 18:20:15 +02:00
Hakim El Hattab
af61d9d10b rewrite youtube iframe embeds to force ?enablejsapi=1 (fixes #856) 2014-06-12 18:15:32 +02:00
Hakim El Hattab
06e76c1be3 shift a few additional styles from core to theme 2014-06-11 12:48:19 +02:00
Hakim El Hattab
38301d57c5 move large chunk of content styles from core css to theme css 2014-06-11 12:32:39 +02:00
Hakim El Hattab
f5ac0b35d1 toggle instead of always showing the help overlay when ? is pressed 2014-06-09 18:24:47 +02:00
Hakim El Hattab
3a6172e67d more flexible keyboard shortcut table styles 2014-06-09 18:21:32 +02:00
Hakim El Hattab
b6ebb98309 update link to Slides 2014-06-09 17:54:31 +02:00
Hakim El Hattab
645734832d adjust list of displayed key shortcuts #943 2014-06-09 17:53:14 +02:00
Hakim El Hattab
9ff00a72ae merge and tweak key shortcuts overlay #943 2014-06-09 17:35:46 +02:00
Hakim El Hattab
d539c645c3 Merge branch 'keyboard_shortcuts_overlay' of https://github.com/navateja/reveal.js into dev 2014-06-09 12:21:01 +02:00
Hakim El Hattab
65dcd94c86 update to node 0.10 2014-06-09 12:18:37 +02:00
Hakim El Hattab
b6c7cda908 ci fix attempt 2 2014-06-09 12:07:40 +02:00
Hakim El Hattab
f2db7e8da0 attempt to fix travis ci 2014-06-09 12:03:22 +02:00
Hakim El Hattab
0a58df8390 don't trim aria status 2014-06-09 11:36:28 +02:00
Hakim El Hattab
943b6ef37e merge and tweak screen reader support #854 2014-06-09 11:20:46 +02:00
navateja
594d9f6d85 Merge remote-tracking branch 'upstream/dev' into keyboard_shortcuts_overlay 2014-06-09 14:44:36 +05:30
navateja
ab7efe6bf2 creates a new branch for the feature 2014-06-09 14:35:59 +05:30
nava teja
75a53da9e5 Shows keyboard shorcuts overlay on pressing question mark 2014-06-08 00:59:29 +05:30
Hakim El Hattab
8973f0c3e1 typo #938 2014-06-05 10:59:30 +02:00
Hakim El Hattab
c5daba6a1f write current hash when history is toggled on #934 2014-06-05 10:43:25 +02:00
Hakim El Hattab
6d1a66c2bc fix search & replace error 2014-05-30 08:12:57 +02:00
Hakim El Hattab
9c96a56e33 adjust check for focused text inputs 2014-05-29 10:36:56 +02:00
Hakim El Hattab
f4ead96b1f move paragraph styles to theme 2014-05-26 11:25:47 +02:00
Hakim El Hattab
09bddce427 limit scope of all slide selectors, avoids multiple .reveal classes on one page causing errors 2014-05-24 15:23:03 +02:00
Hakim El Hattab
ff788bb31b additional monospace options for phantomjs 2014-05-23 14:06:52 +02:00
Hakim El Hattab
ba00afbc38 only use zoom to scale in chrome 2014-05-21 10:08:23 +02:00
Hakim El Hattab
dbc7c627cc dont specify hyphens auto, behavior/rendering varies between browsers 2014-05-21 09:55:27 +02:00
Hakim El Hattab
e7f4615585 hide slide numbers while printing to pdf #885 2014-05-20 12:09:55 +02:00
Hakim El Hattab
c1ea5282e1 fix data-autoplay on first slide 2014-05-20 08:53:25 +02:00
Hakim El Hattab
8c9c0ab0a6 validate named links according to html id spec #914 2014-05-20 08:14:55 +02:00
Hakim El Hattab
b558f74299 zoom viewport is centered on target element #900 2014-05-19 09:26:49 +02:00
Hakim El Hattab
c974756326 relax keyboard blocking condition #899 2014-05-17 16:00:40 +02:00
Hakim El Hattab
252200f9f3 add minimal-ui to viewport for ios fullscreen 2014-05-15 11:42:51 +02:00
Hakim El Hattab
b9d25057d6 Merge branch 'fix-isFirstSlide' of https://github.com/fabianorosas/reveal.js into dev 2014-05-14 08:50:28 +02:00
Hakim El Hattab
54c3c23e36 fix bug in retrieval or background images while in pdf mode 2014-05-10 11:18:13 +02:00
Hakim El Hattab
06ca536ae1 no need to override font sizes after updates to pdf printing 2014-05-10 10:10:59 +02:00
fabiano
ffecac6df3 == --> === 2014-05-09 16:11:04 -03:00
fabiano
cb4fe35bac fixed a problem in the function isFirstSlide
when visiting a vertical slide and then going back to the first slide, the function would return false.
made it more fail proof by checking the indices directly.
2014-05-09 15:58:56 -03:00
fabiano
d072be2f57 kill-yank mistake 2014-05-09 15:41:04 -03:00
fabiano
af1ade1418 Broaden the coverage of isFirstSlide test
If we:
- visit a vertical slide

and then:
- go to the first slide

the function will return **false**.

Added a test to isLastSlide too just to be sure.
2014-05-09 15:37:57 -03:00
fabiano
92fd4f78c8 Small typo 2014-05-09 11:51:55 -03:00
Hakim El Hattab
c4e202cd0f fix edge case in singleton node creation 2014-05-07 22:02:05 +02:00
Hakim El Hattab
f31f0ffa70 createSingletonNode now ensures found nodes are in the correct container 2014-05-07 21:47:47 +02:00
Hakim El Hattab
3eb7038a15 sync server-side speaker notes after notes window opens 2014-05-04 10:10:21 +02:00
Hakim El Hattab
5e85f02eb1 ensure default can be prevented 2014-05-04 09:32:10 +02:00
Hakim El Hattab
4c5b15d0b9 update server side notes to match client side plugin 2014-05-04 09:32:00 +02:00
Hakim El Hattab
54e256764c limit size of media elements when printing to pdf 2014-05-04 08:29:45 +02:00
Hakim El Hattab
da1f221b4f reduce max-height of images in pdfs 2014-05-04 08:24:26 +02:00
Hakim El Hattab
fa6187072e clicking on notes timer now resets it #779 2014-05-04 08:13:09 +02:00
Hakim El Hattab
1b236bdf21 wait for document to load before triggering pdf layout 2014-04-29 13:40:55 +02:00
Hakim El Hattab
2ac0a55ccf ensure pdf pages are never zero-height 2014-04-29 13:30:56 +02:00
Hakim El Hattab
eec14b9c92 pdf background size rounding error 2014-04-29 10:47:05 +02:00
Hakim El Hattab
ebb9a689a0 updates to phantom pdf print script, arguments for width/height 2014-04-29 10:24:13 +02:00
Hakim El Hattab
fbf999ec81 null check background 2014-04-28 12:31:34 +02:00
Hakim El Hattab
1391253cb8 test same conditions for both getSlide and getSlideBackground 2014-04-28 11:54:11 +02:00
Hakim El Hattab
635e51f8f5 addition background image and getSlideBackground tests 2014-04-28 11:51:35 +02:00
Hakim El Hattab
9873839a50 fix issue with background images on first vertical sldie 2014-04-28 11:51:21 +02:00
Hakim El Hattab
9f0224adf9 update visibility of slides as part of sync 2014-04-28 10:59:31 +02:00
Hakim El Hattab
02725cf728 prefer scaling over zooming on mobile devices 2014-04-28 10:41:31 +02:00
Hakim El Hattab
fcec8d058d fix lazy loading bug related to data-background-image attribute 2014-04-28 09:58:13 +02:00
Hakim El Hattab
fa2413ec73 fix slide transitions in iOS 2014-04-28 09:45:02 +02:00
Hakim El Hattab
b42fae96e5 load all images directly when in 'no-transform'-mode 2014-04-28 09:13:57 +02:00
Hakim El Hattab
6aaff6395a merge umd wrapping 2014-04-27 20:38:20 +02:00
Hakim El Hattab
860580d4d0 getSlideBackground now works in pdf mode, add pdf tests 2014-04-27 17:31:50 +02:00
Hakim El Hattab
41e1e013b8 better defered loading of background media 2014-04-27 15:55:57 +02:00
Hakim El Hattab
7158c12eff lazy load all slide backgrounds 2014-04-27 15:39:11 +02:00
Hakim El Hattab
0140a15bae fix getindices test 2014-04-27 15:33:41 +02:00
Hakim El Hattab
c58096ea99 disregard v index when there is no vertical slides/backgrounds in getSlide/getSlideBackground 2014-04-27 15:04:37 +02:00
Hakim El Hattab
902e36c022 break showing/hiding of slides into separate methods 2014-04-27 14:54:23 +02:00
Hakim El Hattab
eea437f4be new api method: getBackgroundSlide 2014-04-27 14:47:02 +02:00
Hakim El Hattab
1623b3782e fix #627 2014-04-27 08:30:57 +02:00
Hakim El Hattab
ddfb0aa86f abide by configured width/height when printing to pdf 2014-04-26 21:42:16 +02:00
Hakim El Hattab
a522312999 improvements to print stylesheet 2014-04-26 20:49:22 +02:00
Hakim El Hattab
e7d82f1316 fix transitions in firefox 2014-04-26 20:23:40 +02:00
Hakim El Hattab
ae962d729b fix non-pdf printing (closes #881) 2014-04-26 19:16:10 +02:00
Hakim El Hattab
b019604531 Merge branch 'feature/print' into dev 2014-04-26 18:21:39 +02:00
Hakim El Hattab
1e5ca748a4 enable reveal.js keyboard shortcuts anywhere in notes window 2014-04-26 11:36:03 +02:00
Hakim El Hattab
b797bbb61b readme update, kill event listeners when printing pdf 2014-04-26 11:02:54 +02:00
Hakim El Hattab
704022d948 simplify pdf layout 2014-04-26 10:22:18 +02:00
Hakim El Hattab
2f90e9198d some more flexibility for pdf export sizes 2014-04-26 09:34:58 +02:00
Hakim El Hattab
131c00689a Merge pull request #883 from seanfisk/fix-small-misspelling
fix small misspelling: Mardown -> Markdown
2014-04-26 09:07:56 +02:00
Hakim El Hattab
059cca6fa4 abide by configured slide width when exporting to pdf 2014-04-26 08:51:33 +02:00
Hakim El Hattab
3adaed2a1e allow tall slides to spread over pages in pdf export 2014-04-26 08:26:20 +02:00
Sean Fisk
ca7c33f07c Fix small misspelling: Mardown -> Markdown 2014-04-24 05:15:16 -04:00
Hakim El Hattab
a49a78c454 remove needless condition 2014-04-23 21:18:13 +02:00
Hakim El Hattab
646203f038 revert from flexbox for pdf centering, use js for PDF setup 2014-04-23 19:47:41 +02:00
Hakim El Hattab
54ca9edeed lazy load support for iframes #793 2014-04-23 15:36:22 +02:00
Hakim El Hattab
53238c47ce null and type check what comes through postmessage 2014-04-22 19:01:59 +02:00
Hakim El Hattab
167400ee8b documentation for #793 2014-04-22 16:53:52 +02:00
Hakim El Hattab
73f96f1d28 lazy-load support for audio #793 2014-04-22 16:10:08 +02:00
Hakim El Hattab
3ad0d6adc0 tests for lazy loading 2014-04-22 15:58:21 +02:00
Hakim El Hattab
bbd596e434 lazy loading support for video #793 2014-04-22 15:52:44 +02:00
Hakim El Hattab
343765b7ab images with data-src attribute are now lazy-loaded #793 2014-04-22 15:41:08 +02:00
Hakim El Hattab
5d39b5eabf carry slide classes over to generated background elements 2014-04-22 15:16:53 +02:00
Hakim El Hattab
37ebe0732c skip transitions in notes window for better main window performance 2014-04-22 15:05:06 +02:00
Hakim El Hattab
f396b9b871 limit how often the notes window updates presentation states 2014-04-22 14:50:50 +02:00
Hakim El Hattab
c02d185cfd notes code format tweaks 2014-04-22 14:14:21 +02:00
Hakim El Hattab
ce05138f9a dont toggle paused/overview modes needlessly when setting state 2014-04-22 14:06:58 +02:00
Hakim El Hattab
9b2851376d always indent html using tabs 2014-04-20 11:50:23 +02:00
Hakim El Hattab
fb7253187d correction to javascript code sample 2014-04-20 11:29:44 +02:00
Hakim El Hattab
4a39aecbab prevent repeated autoslidepaused/resumed events 2014-04-20 10:52:27 +02:00
Hakim El Hattab
3795ef1599 update style of notes plugin to match Slides 2014-04-20 10:26:00 +02:00
Hakim El Hattab
5b18c1f308 notes plugin now operates entirely through window.postMessage, adding support for file protocol 2014-04-19 10:54:26 +02:00
Hakim El Hattab
ce31184bf3 split postmessage config into two options 2014-04-19 10:53:33 +02:00
Hakim El Hattab
fea11d24bc add config option for postMessage features 2014-04-18 20:07:08 +02:00
Hakim El Hattab
a4b09aecda bubble all reveal.js events to parent window through postMessage 2014-04-18 20:03:50 +02:00
Hakim El Hattab
11ea0aa3e1 postmessage plugin is now part of reveal.js core 2014-04-18 13:56:51 +02:00
Chris Lawrence
ac76644456 Merge remote-tracking branch 'upstream/master' 2014-04-13 14:05:51 -04:00
Hakim El Hattab
38af788a65 fix css syntax error 2014-04-13 12:00:06 +02:00
Hakim El Hattab
3b111a1cd4 add support for custom keyboard availability condition 2014-04-13 11:55:06 +02:00
Hakim El Hattab
731598f7c8 make all slides 'present' while printing 2014-04-11 09:40:44 +02:00
Michael Williams
c67e6d2e49 build reveal.min.js 2014-04-08 17:08:43 -07:00
Michael Williams
613a05f154 add UMD support. fix #787 2014-04-08 17:08:21 -07:00
Nawaz
e70d07b45d Change innerHTML to textContent to avoid video replays inside status Div, for not text content is enough 2014-04-07 10:49:07 +05:30
Hakim El Hattab
a3d4afeeed better transition names, fix background images in vertical slides 2014-04-06 11:04:58 +02:00
Hakim El Hattab
c87d7db930 code format tweak 2014-04-06 10:18:38 +02:00
Hakim El Hattab
2eb3d082ce Merge branch 'xhr-local' of https://github.com/malyw/reveal.js into dev 2014-04-06 10:16:46 +02:00
Hakim El Hattab
3aaca471b1 stop tracking minified files #783 2014-04-06 10:09:25 +02:00
Hakim El Hattab
a200e93537 Merge branch 'patch-1' of https://github.com/jamestwebber/reveal.js into dev 2014-04-06 10:04:36 +02:00
Hakim El Hattab
d45892ff32 next release will be 3.0.0 2014-04-06 10:03:46 +02:00
Hakim El Hattab
2901abccde Merge pull request #682 from tentacode/patch-1
Indentation issue when using code in a markdown slide
2014-04-06 09:56:54 +02:00
Hakim El Hattab
1d13760f0e only use zoom to scale content in webkit 2014-04-04 11:35:54 +02:00
Hakim El Hattab
170aa31d6f video background playback 2014-04-04 09:22:15 +02:00
Hakim El Hattab
43bf882d08 revamped and greatly simplified the layout of .slides 2014-04-03 11:58:15 +02:00
Hakim El Hattab
f0f48bd9b0 use flexbox for vertically centered printing #862 2014-04-03 10:51:27 +02:00
Sergey Gospodarets
873f2dbc96 Mark xhr.status=0 as successful 2014-04-02 13:02:39 +03:00
Sergey Gospodarets
75247a8860 Mark xhr.status=0 as successful 2014-04-02 12:59:36 +03:00
Hakim El Hattab
9e78fe3ee2 Merge branch 'dev' of github.com:ht push origin akimel/reveal.js into dev 2014-04-01 09:14:43 +02:00
Hakim El Hattab
79f45c811e test for #858 2014-04-01 09:14:29 +02:00
Hakim El Hattab
9947b7a532 add getTotalSlides #858 2014-04-01 09:12:41 +02:00
Nawaz
20a725222b Make revealJS screen reader friendly by announcing the contents of each slide presented 2014-03-27 16:39:27 +05:30
Hakim El Hattab
1de159c4f4 start work on video backgrounds #751 2014-03-26 15:48:28 +01:00
Hakim El Hattab
ccbeaf4c32 optimization, only declare background creation method once 2014-03-26 15:20:27 +01:00
Hakim El Hattab
2a27967d4b Merge pull request #794 from Spy-Seth/dev
increase Logitech R400 remote compatibility
2014-03-25 21:41:40 +01:00
Hakim El Hattab
17d8f0b77c merge master into dev 2014-03-25 21:37:51 +01:00
Hakim El Hattab
9da952fea3 Merge pull request #832 from craigcitro/patch-1
tweak layout in readme installation markup
2014-03-25 21:36:09 +01:00
Hakim El Hattab
eef1636fd7 Merge branch 'dev' of https://github.com/xdhmoore/reveal.js into dev 2014-03-25 21:16:58 +01:00
Hakim El Hattab
a9c2d4d663 disable transition into and out of overview mode #829 2014-03-25 17:46:10 +01:00
Hakim El Hattab
baa6fa45de tweak table margins, dont reset 'i' element #803 2014-03-25 17:18:05 +01:00
Hakim El Hattab
243867f91e merge upgrade of highlight.js, add base styles to pre code, dont limit language detection in index.html #809 2014-03-25 16:56:33 +01:00
Hakim El Hattab
b8157a1e91 Merge branch 'master' of https://github.com/jdfitzgerald/reveal.js into dev 2014-03-25 16:42:55 +01:00
Hakim El Hattab
da82c8ce81 limit named links to [a-zA-Z0-9\-\_\:\.] #836 2014-03-25 15:12:10 +01:00
Hakim El Hattab
3d7c21256c fix 'fragments' config option (#849) 2014-03-25 14:28:22 +01:00
Hakim El Hattab
7529f7eeb8 prevent invisible fragments from capturing mouse events #845 2014-03-25 14:09:14 +01:00
Hakim El Hattab
6936c5029e correct ms fullscreen api method name #843 2014-03-25 14:00:01 +01:00
Hakim El Hattab
924c4aaa01 use socket.io 0.9.16 2014-03-18 15:22:34 +01:00
Hakim El Hattab
7285653b01 update version to 2.6.2 to fix broken tarball on npm #506 2014-03-18 15:07:42 +01:00
Craig Citro
da949c33e0 Tweak layout in README.md installation markup.
Some code blocks weren't indented, so they ended up messing up the numbering. Indenting them fixed it.
2014-03-14 23:21:23 -07:00
Daniel Moore
1a7732c235 More robost calculation of .stretch height 2014-03-13 18:22:30 -05:00
Hakim El Hattab
0140fd9ee6 include fragments in progress bar calculation 2014-03-13 10:32:57 +01:00
Hakim El Hattab
55dceaaa0a update (c) year 2014-03-13 09:23:45 +01:00
Hakim El Hattab
a91f4d601d test for getProgress 2014-03-12 22:29:01 +01:00
Hakim El Hattab
6e9a33cf1f add api method for retrieving progress 2014-03-12 22:26:31 +01:00
Hakim El Hattab
8c32e2e967 Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2014-03-12 08:52:12 +01:00
Hakim El Hattab
1c2f4a2e92 deserialize state values 2014-03-12 08:51:51 +01:00
Hakim El Hattab
e8ab2641da typo fix 2014-03-12 08:51:40 +01:00
Hakim El Hattab
3976030733 Merge pull request #816 from Gijs-Koot/dev
small fix for issue #814
2014-03-08 12:25:37 +01:00
Gijs Koot
71f1780b50 fixed two minor bugs, a twohanded gesture may not have a direction, and if autoCenter is of, the tipPosition was in the wrong scope 2014-03-05 15:20:30 +01:00
Hakim El Hattab
714102c3f8 add get/setState methods for persisting and restoring presentation state 2014-03-02 12:30:55 +01:00
J.D. Fitz.Gerald
7d25ef8aaf updated presentation to specify used languages used for highlight.js 2014-02-28 16:23:05 +00:00
J.D. Fitz.Gerald
d939c4790e updated highlight.js to v8.0 2014-02-28 16:22:36 +00:00
Hakim El Hattab
4cd1dd1a1f Merge branch 'master' of github.com:hakimel/reveal.js into dev 2014-02-28 12:16:37 +01:00
Hakim El Hattab
08fb6cb2f9 fix pdf print bug in chrome 33 #808 2014-02-28 12:16:14 +01:00
Hakim El Hattab
11df3547f6 change version to 2.7.0 (dev) 2014-02-28 12:13:32 +01:00
Hakim El Hattab
1aadc53eac don't reduce line height for all headings in base theme (#753) 2014-02-25 12:32:31 +01:00
Armand Abric
0b3bae1cad Typo fix. 2014-02-18 15:24:59 +01:00
Hakim El Hattab
ecce48d1c0 Merge branch 'master' of https://github.com/ccortezia/reveal.js into dev 2014-02-18 08:10:07 +01:00
Hakim El Hattab
015468c3a2 renamed markdown attributes for clarity and consistency: data-vertical -> data-separator-vertical, data-notes -> data-separator-notes 2014-02-17 21:15:02 +01:00
Hakim El Hattab
a22d00ab25 server side notes plugin now supports input via data-notes attribute 2014-02-17 20:16:21 +01:00
Hakim El Hattab
9478d03cf6 drop -o-transition and -ms-transition 2014-02-17 17:52:26 +01:00
Hakim El Hattab
b25fa50657 remove all use of :not(.image) 2014-02-17 11:55:38 +01:00
Hakim El Hattab
26e9ce1ff7 avoid creating duplicate auto-slide controls #770 2014-02-16 17:37:59 +01:00
Hakim El Hattab
2aef97584a update (c) year 2014-02-16 17:12:05 +01:00
Armand Abric
44e6f7ace0 Increase Logitech R400 remote compatibity. 2014-02-07 19:04:46 +01:00
Hakim El Hattab
d698619705 define basic black/white colors in the default, non-themed, styles 2014-02-03 16:18:09 +05:30
jamestwebber
286acf371b Add generated css and js to gitignore
I found it nice to ignore these files, they are automatically generated anyway (i.e. reveal.min.js always has the date of minify-ing, which I don't want to commit all the time). Should just track the source unless there is a good reason to hand-curate these versions.
2014-01-25 17:10:41 -08:00
Cristiano Cortezia
d9513b34d5 Fixes bad NaN applied to style on updateParallax.
The previous criteria "verticalSlideCount > 0" would result
in verticalOffset being NaN when verticalSlideCount == 1.

This would cause dom.background.style.backgroundPosition to
be set to something like "123px NaNpx", ultimately preventing
the parallax effect to play (silently failing so far).
2014-01-16 14:44:32 -02:00
Chris Lawrence
d1d6cca272 Merge branch 'master' of github.com:lordsutch/reveal.js 2014-01-07 22:30:43 -05:00
Hakim El Hattab
49e0749bc6 readme tweaks for auto-sliding 2013-12-21 18:15:23 +01:00
Hakim El Hattab
6215b12f6e naming/comment tweak 2013-12-21 18:12:02 +01:00
Hakim El Hattab
9421541825 add tests for auto-slide events #766 2013-12-21 18:08:40 +01:00
Hakim El Hattab
a97d73167d simplify how data-autoslide is picked up from fragments #766 2013-12-21 17:54:21 +01:00
Hakim El Hattab
ed4cdaf9e7 test isAutoSliding, isAutoSliding returns false when no autoSlide value is set #766 2013-12-21 17:33:30 +01:00
Hakim El Hattab
137ddf5472 isSliding > isAutoSliding 2013-12-21 17:27:33 +01:00
Hakim El Hattab
5226321885 Merge branch 'autoslide-API-and-fragments' of https://github.com/rajgoel/reveal.js into dev 2013-12-21 17:16:51 +01:00
rajgoel
4498e6e609 Update README.md 2013-12-20 16:38:13 +01:00
rajgoel
5a8da0555c Add auto-slide API and data-autoslide for fragments 2013-12-20 16:22:32 +01:00
Hakim El Hattab
7bd01bdebd fix data-transition overrides #760 2013-12-20 15:16:03 +01:00
Hakim El Hattab
6428504d6d merge table styles #761, tweak table padding 2013-12-20 10:35:21 +01:00
Hakim El Hattab
d08b000ec9 update contribution guidelines 2013-12-20 10:03:07 +01:00
Hakim El Hattab
300d56c21c separate contribution rules from readme 2013-12-20 09:56:29 +01:00
Hakim El Hattab
2976921adf compile assets 2013-12-20 09:48:51 +01:00
Hakim El Hattab
1402e691d5 Merge branch 'patch-2' of https://github.com/RyDroid/reveal.js into dev 2013-12-20 09:48:12 +01:00
Hakim El Hattab
1e7b62bd44 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2013-12-20 09:47:05 +01:00
RyDroid
bde5907a19 Update reveal.css
Correction of a small error
2013-12-19 19:25:35 +01:00
Wachiwi
929ace25ee Table Style 2013-12-17 14:53:36 +01:00
Alex Juarez
8b8cc607d4 The index.html page had the simple theme listed twice. The duplicate was removed.
For the Moon and Solarized themes they had .css appended to them which was causing them to not come up.
2013-12-15 19:53:08 +01:00
Hakim El Hattab
b7fcd71c9f Merge branch 'live-reload' of https://github.com/danielwegener/reveal.js into dev 2013-12-10 11:37:50 +01:00
Hakim El Hattab
7055c54b79 rebuild styles 2013-12-10 11:32:11 +01:00
Diomidis Spinellis
1a0e7a2e60 Improve formatting of dl elements 2013-12-10 12:13:49 +02:00
Daniel Wegener
5c1497e8b2 grunt serve starts the browser and livereloads changes in the presentation
- upgrade grunt-contrib-connect to ~0.5.0
- configure connect and watch plugin
2013-12-05 16:11:35 +01:00
Hakim El Hattab
5d4b303b2f Merge pull request #742 from mralexjuarez/index-theme-fix
fix theme links in demo
2013-12-05 03:21:29 -08:00
Alex Juarez
616d83dfb6 The index.html page had the simple theme listed twice. The duplicate was removed.
For the Moon and Solarized themes they had .css appended to them which was causing them to not come up.
2013-12-04 15:41:06 -06:00
Hakim El Hattab
9f2a0207fc add strike fragment style #737 2013-12-03 15:39:03 +01:00
Hakim El Hattab
e8c7e8eddb same condition order when event listeners are added and removed 2013-12-02 23:28:43 +01:00
Hakim El Hattab
916bfb4c30 readme tweak 2013-12-02 23:24:37 +01:00
Hakim El Hattab
aef53061c5 code format tweaks 2013-12-02 23:23:51 +01:00
Hakim El Hattab
4a5b5c7c11 merge support for ie 11 touch 2013-12-02 23:20:26 +01:00
Hakim El Hattab
4068c5221d add instructions to features that require a local web server (closes #732, #673, #559) 2013-12-02 21:33:44 +01:00
Hakim El Hattab
e6069caa86 2.6.1 #734 2013-12-02 12:24:18 +01:00
Hakim El Hattab
552525c7a5 rename markdown attribute test files to same format 2013-12-02 12:23:18 +01:00
Hakim El Hattab
9a9ce672b7 add example of markdown slide and element attributes 2013-12-02 12:20:48 +01:00
Hakim El Hattab
bc62963c8f readme correction for #734 2013-12-02 12:20:29 +01:00
Hakim El Hattab
65bd155c34 Merge branch 'attributes' of https://github.com/VonC/reveal.js into dev 2013-12-02 12:12:27 +01:00
VonC
fdb03b4f10 README.md mentions the new default separators.
- new default separator for slide attributes
- new default separator for element attributes
Illustrate both, in html comments.
2013-11-30 23:12:42 +01:00
VonC
78dfbf5202 test-markdown-element-attributes: formats and test.
- Reformat
- Use new default separator format: '.element: x=y'
- Add new tests for testing that default format
2013-11-30 23:12:41 +01:00
VonC
d4e04b82dc test-markdown-attributes.*, new default separator
- Reformat.
- Change default separator test 'slide: x=y'
2013-11-30 23:12:41 +01:00
VonC
f2097417da Simpler default syntax for markdown attributes.
- on slides: .slide x=y
- on elements: .element x=y

Those are detected in html comment, in order to not be visible
if a markdown is edited in an html editor.
2013-11-30 23:12:40 +01:00
VonC
13da34cc6b Removes console.log calls. 2013-11-30 23:12:40 +01:00
VonC
d52eb599d1 Fix previous element selection. 2013-11-30 23:12:39 +01:00
VonC
8ad633e4f3 Fix element attributes, except for multi-line. 2013-11-30 23:12:39 +01:00
VonC
3330c2a764 Remove section attribute implementation. 2013-11-30 23:12:38 +01:00
VonC
dd9fa3e22b First refactoring 2013-11-30 23:12:38 +01:00
Luke Karrys
0605ab13df add parallax horizontal and vertical properties to enable non-calculated parallax offsets 2013-11-29 11:17:18 -07:00
Hakim El Hattab
31438c88ba Merge branch 'dev' of github.com:hakimel/reveal.js 2013-11-28 16:48:46 -05:00
Hakim El Hattab
3d2549d4f4 documentation for slide numbers 2013-11-28 16:48:36 -05:00
Hakim El Hattab
f1a416d07c tests for initial section classes 2013-11-28 11:31:16 -05:00
Hakim El Hattab
599bef5fdf Merge branch 'dev' of github.com:hakimel/reveal.js 2013-11-28 09:35:28 -05:00
Hakim El Hattab
f7b612b1e4 only run vertical slide setup during startup #726 2013-11-28 09:35:04 -05:00
Hakim El Hattab
0eba619c1a add example for parallax backgrounds 2013-11-27 14:49:39 -05:00
Hakim El Hattab
b314cf7b27 improvement to query string parsing 2013-11-27 13:16:03 -05:00
Hakim El Hattab
69bf9b51ec include slide number color in theme template 2013-11-27 11:00:21 -05:00
Hakim El Hattab
2be89c3772 remove dev flag from version 2013-11-27 10:46:49 -05:00
Hakim El Hattab
c7595b29a9 Merge branch 'patch-1' of https://github.com/luishgo/reveal.js into dev 2013-11-27 09:13:39 -05:00
Luis HGO
6ca071cd3a Fix for issue #715 2013-11-27 10:38:48 -02:00
Hakim El Hattab
740f472ce2 when there is data-autoplay:ing media, prolong autoSlide to match its duration #723 2013-11-26 18:22:07 -05:00
Hakim El Hattab
cb9e507cd4 remove debug code 2013-11-26 17:41:01 -05:00
Hakim El Hattab
3be84bcbe3 code format tweaks 2013-11-26 17:32:48 -05:00
Hakim El Hattab
75845a92c3 Merge branch 'dev' of https://github.com/theone1984/reveal.js into dev 2013-11-26 17:08:43 -05:00
Hakim El Hattab
544020bb96 use fragment name in example 2013-11-26 12:20:57 -05:00
Hakim El Hattab
c8b46050a0 Merge branch 'current-style' of https://github.com/gturri/reveal.js into dev 2013-11-26 12:16:21 -05:00
Hakim El Hattab
e947f0f216 add zoomKey option for #700 2013-11-26 09:00:04 -05:00
Guillaume Turri
b46fd8dd70 Added some styles using the current-fragment class
according to README, I don't include reveal.min.js.
Hence I believe it makes sense to not include reveal.min.css either.
Hence, examples added in index.html can give the feeling that they don't work yet.
2013-11-26 07:47:03 +01:00
Hakim El Hattab
adbf36ad47 readme format correction 2013-11-25 21:15:56 -05:00
Hakim El Hattab
7730f2bab5 Merge pull request #721 from hakimel/refactor/fragments
Refactor fragments
2013-11-25 16:56:58 -08:00
Hakim El Hattab
d41a5ca87f update future classes when syncing 2013-11-25 15:40:24 -05:00
Hakim El Hattab
0fcff33a61 additional fragment tests 2013-11-25 15:26:22 -05:00
Hakim El Hattab
0fb343f5bf rewrite all fragment indices on startup 2013-11-25 15:26:10 -05:00
Hakim El Hattab
3427561b64 rewrite fragment sorting to account for multiple fragments with the same index 2013-11-25 14:45:14 -05:00
Hakim El Hattab
ef82645589 remove current-fragment when leaving slide, add tests for current fragment 2013-11-23 17:13:14 -05:00
Hakim El Hattab
ead723bc1c rename markdown tests to use same naming format as other tests 2013-11-23 16:29:37 -05:00
Hakim El Hattab
c33aa66666 respect original dom order of fragments with no explicit index 2013-11-21 09:22:20 -05:00
Hakim El Hattab
2faae3d95b rewrite fragment index attributes to leave no gaps between fragments 2013-11-21 09:16:40 -05:00
Hakim El Hattab
60a74ebfa3 fragments are now zero-indexed 2013-11-21 09:01:18 -05:00
Thomas Endres
08808abf04 Issue #698: Fixed tests 2013-11-19 21:10:20 +01:00
Thomas Endres
ffd8ccbffa Issue #698: Non-async script callbacks are now also called before starting Reveal 2013-11-19 20:56:51 +01:00
Thomas Endres
0ffbe8d09c Issue #698: Non-async scripts were not executed before Reveal started 2013-11-19 20:56:40 +01:00
Hakim El Hattab
9d0ac52780 fragment comments, remove debug code 2013-11-18 09:14:01 -05:00
Hakim El Hattab
8550186afc use new fragment nav method from slide() 2013-11-18 09:13:39 -05:00
Hakim El Hattab
b4e2c97d0c initial fragment rewrite 2013-11-18 09:01:33 -05:00
Hakim El Hattab
e0dccd85be Merge branch 'feature/more-languages' of https://github.com/haf/reveal.js into dev 2013-11-17 17:20:49 -05:00
Hakim El Hattab
85c2a0a3c1 slide number changes; config value renamed, added to readme, moved to right side of screen 2013-11-17 17:13:26 -05:00
Hakim El Hattab
bdb46060b3 merge slide numbers, adjust code format 2013-11-17 17:05:23 -05:00
Hakim El Hattab
c4d7b1b93f make background transition default to exact same speed as normal transitions 2013-11-09 11:41:15 -05:00
Hakim El Hattab
f31644cca8 change transition easing for zooms 2013-11-08 09:29:49 -05:00
Hakim El Hattab
23bcd1eb1f rebuild css with change from #691 2013-11-08 08:15:48 -05:00
Hakim El Hattab
705d5a012c define normal font widths in all themes to make sure things look the same after #691 2013-11-08 08:11:35 -05:00
Hakim El Hattab
3a8bcb174a Merge pull request #691 from fghaas/section-fontweight
CSS: Don't override font-weight for section
2013-11-07 10:07:13 -08:00
Florian Haas
0069e3ad14 CSS: Don't override font-weight for section
.slides>section and .slides>section>section set the font-weight to
"normal". This overrides any font-weight setting a theme may set at
the body or .reveal level, and requires a theme author to also
specifically set the font-weight for .slides>section and
.slides>section>section. That's tedious and also counterintuitive.

Adopt a saner default by setting the font-weight to inherit.
2013-11-08 00:39:34 +08:00
Hakim El Hattab
5eff8902ff remove old inaccurate comment 2013-11-07 10:17:39 -05:00
Hakim El Hattab
3653ad5b19 comments 2013-11-07 09:15:56 -05:00
Hakim El Hattab
150cb81405 data-autoslide on vertical parent now applies to all child slides #685 2013-11-07 09:12:49 -05:00
Hakim El Hattab
a119c83f86 ensure that all fragments on past slides are visible #684 2013-11-07 08:39:19 -05:00
Hakim El Hattab
e7e941b663 add code slide to markdown example #682 2013-11-07 08:03:22 -05:00
Hakim El Hattab
6afec76bf0 readme adjustment 2013-11-06 08:52:21 -05:00
VonC
4b0fe47bb6 Add slide attributes for single slide section case. 2013-11-06 11:06:03 +01:00
VonC
efbb31cf29 Add mardown-based slide attribute examples. 2013-11-04 16:31:58 +01:00
VonC
1774de2113 Add unit test for default slide attributes separator pattern. 2013-11-04 16:31:54 +01:00
VonC
2cdd1afe85 Remove console.log debugs, and fix tabs 2013-11-04 16:31:51 +01:00
VonC
492a094955 Fix default separator pattern for attribute in slide. 2013-11-04 16:31:47 +01:00
VonC
198821f52b Restore default notation for attributes in element.
It should be `{. xxxx=yyy }`, not `{_ xxxx=yyy }`.
Only test/test-element-attributes-markdown.html were using `{_`,
simply in order to test the ability, for the user, to define a _different_ pattern.
2013-11-04 16:31:44 +01:00
VonC
d098385103 Restore proper pattern for attributes in elements.
It is important that test/test-element-attributes-markdown.html do test
the ability for the user to define its own pattern.
2013-11-04 16:31:40 +01:00
VonC
4def7f116c Add QUnit.js unit tests for attributes in Markdown slides. 2013-11-04 16:31:37 +01:00
VonC
83ee2eb00e Fix markdown.js slideAttributesSeparator selection. 2013-11-04 16:31:33 +01:00
VonC
d6b8e4a246 Rebased on dev, and following contribution guideline. 2013-11-04 16:31:29 +01:00
VonC
ec72e8cbc7 Fix markdown vertical wrapping section element generation. 2013-11-04 16:31:25 +01:00
VonC
e1b11e737e Make sure a pattern doesn't include space. 2013-11-04 16:31:22 +01:00
VonC
f6445a04a0 Fix bug on data attributes for first vertical slide.
The first slide of a vertical stack see some data attributes ignored.

Mainly the data-transition one.

Repeat all data-attributes on the wrapping section element.

Ignore any other attributes (like 'id="xxx"'), in order to not
mess with internal links (by repeating twice an id).
2013-11-04 16:31:18 +01:00
VonC
c51ab74d72 Add attributes in markdown for slide generation.
By default, look for <!-- slide-attributes: xxxx -->.
Whatever 'xxx' is will be added to the section attributes.

You can define your own pattern with 'data-attributes'.
For instance 'data-attributes="^\s*?-- (.*?)$"':
that will be added to the options.

The 'attributes' section is removed from the content of the slide,
so the final markdown doesn't reflect them.
That also means you can add those attributes *anywhere* in the slide

But that allows for *any* attribute to be added for a specifc slide,
like:

- id="plan", for allowing internal link (issue #430)
- data-background="#ff0000"
- data-transition="fade"

You list those attributes on a single line, like

- (default):
` <!-- id="plan" data-background="#ff0000" -->`
- or, with an alternative data-attributes pattern:
` -- id="plan" data-background="#ff0000"`

Again, that line is remove from the final content.
2013-11-04 16:31:15 +01:00
Hakim El Hattab
7da98d8110 add concave and zoom background transitions 2013-11-04 07:53:07 -05:00
Hakim El Hattab
d4e6fa12bf add convex background transition 2013-11-01 12:27:36 -04:00
Hakim El Hattab
778969c000 generate background hash under additional conditions 2013-11-01 12:27:09 -04:00
uriel
f1dd807f66 change SlidesNumber position and start page counter at 0 instead 1 2013-10-31 19:47:13 +02:00
Gabriel Pillet
80aadaf74e Removing global flag for replacing whitespaces 2013-10-31 14:02:34 +01:00
Chris Lawrence
97d4eb1056 Merge remote-tracking branch 'upstream/master' 2013-10-30 22:32:43 -04:00
uriel
06078f987f synthetic fix 2013-10-31 00:51:34 +02:00
uriel
dda885b71a move the slide-number out of the controls to a proper position and little fix to the updating event. 2013-10-31 00:49:07 +02:00
uriel
7b63cda19d Added slide numbers options and the css files updated as well.
the *.min.js didn't chaged yet.
2013-10-30 22:12:21 +02:00
Hakim El Hattab
fcf91ec261 fix edge case in background transitions (closes #604) 2013-10-30 13:09:46 -04:00
Hakim El Hattab
89cc3f3a29 don't transition between identical backgrounds 2013-10-30 12:22:00 -04:00
Hakim El Hattab
080ae79b54 documentation for #677 2013-10-28 09:16:41 -04:00
Hakim El Hattab
d844195be1 format tweaks markdown.js, remove extra image asset 2013-10-28 09:06:43 -04:00
Hakim El Hattab
6cf5269bfc Merge branch 'classes_in_markdown' of https://github.com/VonC/reveal.js into dev 2013-10-28 08:50:45 -04:00
Hakim El Hattab
8cb3c279b0 don't autoplay videos in notes window #624 2013-10-28 08:45:14 -04:00
VonC
f92f2fdea6 Add unit-tests for attributes in mardown elements.
Test paragraphs, list items and img attributes.
2013-10-27 22:49:44 +01:00
VonC
a87ce95794 Add 'data-element-attributes' attr. to 'section'.
By default '{\\\.\s*?([^}]+?)}'.
2013-10-27 22:49:43 +01:00
VonC
7aa93af0ca Cleanup code, remove console log debugs. 2013-10-27 22:49:43 +01:00
VonC
28198b2ff0 Add attributes extracted from an attribute.
Allows to add attributes to element of an attribute which contains
the attribute pattern.
2013-10-27 22:49:42 +01:00
VonC
d20760f40d Uses the right method setAttribute.
Works better, and the html elements get their attributes.
2013-10-27 22:49:42 +01:00
VonC
0bc3a836fc First implem for adding classes to enclosing elts.
Extra text representing classes is detected and correctly removed.
Adding attributes isn't working yet.
2013-10-27 22:49:41 +01:00
Hakim El Hattab
82d2ae654d kill the shadow on table headers 2013-10-27 17:24:36 -04:00
Hakim El Hattab
3ad4320f61 documentation for iframe post messages 2013-10-27 16:39:20 -04:00
Hakim El Hattab
9dfaf8815a Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2013-10-27 15:44:38 -04:00
Hakim El Hattab
7cb8d96529 merge vertical centering for individual slides 2013-10-27 15:44:26 -04:00
Hakim El Hattab
1b1dedd2bd contrib update 2013-10-27 15:42:22 -04:00
Hakim El Hattab
97b66d1fe0 apply @knownasilya's first slide detection fix to dev branch #671 2013-10-27 15:37:29 -04:00
Hakim El Hattab
806a2f53fc build latest js, format tweaks 2013-10-27 15:27:35 -04:00
Brad Gessler
d66fe964bc Added support for postMessage's into any iframes for content that needs to do something when a slide is displayed and hidden. 2013-10-27 12:18:08 -07:00
Hakim El Hattab
f1f28f61e6 plug potential xss vector 2013-10-24 08:59:52 -04:00
Michael Ekstrand
8473394643 Support per-slide centering
If config.center is false, this change centers slides with the
'center' class.
2013-10-23 21:34:05 -05:00
Hakim El Hattab
c7077cf798 configure notes presentation through query string to avoid flicker 2013-10-22 09:21:49 -04:00
Hakim El Hattab
f356d7228a include all themes in grunt task 2013-10-22 09:05:39 -04:00
Hakim El Hattab
1e6f9429df Merge branch 'dev' of https://github.com/Walther/reveal.js into dev 2013-10-22 08:41:44 -04:00
Hakim El Hattab
34a2cc5dce additional config valeus in readme, remove duplicate value, fix commas 2013-10-22 08:40:22 -04:00
Hakim El Hattab
a28cae4d68 Merge branch 'update-readme' of https://github.com/aethanyc/reveal.js into dev 2013-10-22 08:39:27 -04:00
Hakim El Hattab
41a19baa8e merge readme conflict 2013-10-22 08:38:59 -04:00
Hakim El Hattab
9da2921b74 readme tweak #660 2013-10-22 08:33:39 -04:00
Hakim El Hattab
e84a07cb78 Merge pull request #657 from asmaps/master
README: clone via https
2013-10-22 05:29:31 -07:00
Hakim El Hattab
1b0673d98e Merge pull request #664 from vertti/patch-1
add details to README on creating themes
2013-10-22 05:27:50 -07:00
Janne Sinivirta
3c2d394112 Add details to README on creating themes.
Closes #662.
2013-10-22 12:56:46 +03:00
Hakim El Hattab
d761adf002 smooth reset of auto-slide progress, fix overlapping repaint calls 2013-10-19 09:35:51 -04:00
Hakim El Hattab
2736945385 don't increase body height to try and hide address bar, caused issues in ios 7 safari 2013-10-18 09:15:22 -04:00
Hakim El Hattab
dd08b86a0f don't show auto slide controls if there's only one slide 2013-10-17 22:27:31 -04:00
Arne Schauf
465209c6fe clone via https - ssh not working anonymously 2013-10-17 23:07:15 +02:00
Hakim El Hattab
68318407a8 resume auto-sliding when autoSlide config value changes 2013-10-17 09:17:30 -04:00
Ting-Yu Lin
4bea9bc7a8 Add various configuration options to README
Also add a description about the solarized theme.
2013-10-17 12:08:43 +08:00
Hakim El Hattab
cfb78d2ee8 replay when auto-slide controls are clicked on last slide 2013-10-13 17:14:29 -04:00
Hakim El Hattab
49cfd05022 fix css syntax error 2013-10-13 16:03:41 -04:00
Hakim El Hattab
f318928281 fix playback controls in ie10 2013-10-13 16:00:35 -04:00
Hakim El Hattab
fbbffb6f23 add auto-slide instructions to readme 2013-10-13 15:51:13 -04:00
Hakim El Hattab
2de43199ef minor tweaks and comments 2013-10-13 15:38:24 -04:00
Hakim El Hattab
29c5af84be support moz and webkit prefixed requestAnimationFrame 2013-10-13 15:25:13 -04:00
Hakim El Hattab
6aaf88aae7 auto-slide playback updates, fix tap action, hide during overview 2013-10-13 15:06:30 -04:00
Hakim El Hattab
abf33e55b0 functional playback control for auto sliding 2013-10-13 14:36:27 -04:00
Hakim El Hattab
356a1cf3b7 group feature detection results in 'features' object, test for canvas and requestAnimationFrame 2013-10-13 13:08:50 -04:00
Hakim El Hattab
9fa1382508 foundation for playback component 2013-10-13 13:02:50 -04:00
Hakim El Hattab
e14f5a95da prioritize closing preview when ESC is pressed 2013-10-13 11:47:04 -04:00
Hakim El Hattab
88d84e4551 override any value throguh query, deserialize values of getQueryHash #641 2013-10-11 22:33:23 -04:00
Hakim El Hattab
b455b0281d support for svg background images #632 2013-10-11 22:14:50 -04:00
Hakim El Hattab
942724238f better check for arrays in markdown plugin 2013-10-11 22:05:43 -04:00
Hakim El Hattab
f8fed1358a remove accidentally checked in files 2013-10-11 21:55:28 -04:00
Hakim El Hattab
bbad51e891 use named link for fragments #621 2013-10-11 21:54:25 -04:00
Hakim El Hattab
8f3b14193e Merge branch 'patch-1' of https://github.com/webpro/reveal.js into dev 2013-10-11 21:51:57 -04:00
Hakim El Hattab
421e52d6fb shell highlight #642 2013-10-11 21:48:02 -04:00
Hakim El Hattab
e94f62a58f add autoSlideStoppable config value, allows autoSlide to be aborted on user input 2013-10-11 08:40:40 -04:00
Hakim El Hattab
1421934fde code style 2013-10-10 09:21:06 -04:00
Hakim El Hattab
a143861478 Merge branch 'focus-body-on-visibility-change' of https://github.com/rexxars/reveal.js into dev 2013-10-10 09:14:35 -04:00
Hakim El Hattab
ac1dbd9d61 remove unused head.js in barebones example #616 2013-10-10 09:11:03 -04:00
Hakim El Hattab
9a7fbd6cd1 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2013-10-10 08:14:05 -04:00
olivierbloch
27bf130611 windows.navigator.pointerEnabled
for backward compatibility reasons, IE11 sets both msPointerEnabled and
pointerEnabled. Changed the order for the test and added 'else if' to
not duplicate handlers on pointer events
2013-10-01 15:15:10 -07:00
olivierbloch
e608dafaf1 IE11 Support
Added unprefixed touch-action CSS attribute
Added unprefixed pointer events handlers hooks
2013-10-01 14:06:55 -07:00
olivierbloch
27a86d261e IE 11 support
Added un-prefixed touch-action CSS attribute
added un-prefixed PointerEvents event handler hooks
2013-10-01 14:00:32 -07:00
Lars Kappert
275efa061a Property 'length' is not a variable. 2013-09-29 11:34:17 +02:00
Walther
80a4dfc0f8 add theme 'blood.' 2013-09-22 18:54:45 +03:00
Espen Hovlandsdal
6043756b2e Focus body when page visibility changes to ensure keyboard shortcuts are usable 2013-09-21 22:19:02 +02:00
Hakim El Hattab
059311923b serve remotes js from s3 #611 2013-09-19 23:36:39 -04:00
Hakim El Hattab
1cfb4fc242 remove extravagant comment 2013-09-19 23:32:06 -04:00
Chris Lawrence
55f220109c Merge remote-tracking branch 'upstream/master' 2013-09-15 20:19:47 -04:00
Hakim El Hattab
86216ac645 use 'url()'-free path when specifying parallax image, refactor so that parallax is applied to background class, remove unused attributes #595 2013-09-15 17:45:27 -04:00
Hakim El Hattab
36061b43ba update the parallax background when the window resizes #595 2013-09-15 14:58:41 -04:00
Hakim El Hattab
8399e828db move parallax code to separate method #595 2013-09-15 14:55:23 -04:00
Hakim El Hattab
347a907041 update code style to match rest of reveal.js, disable parallax by default #595 2013-09-15 14:48:54 -04:00
Hakim El Hattab
2fc0dfa8e1 merge parallax into dev, remove default image #595 2013-09-15 14:44:45 -04:00
Hakim El Hattab
9cf7de54b8 add contribution guidelines 2013-09-15 12:48:48 -04:00
Hakim El Hattab
1fb85d4df6 Merge branch 'master' of https://github.com/drhuettl/reveal.js 2013-09-15 11:53:09 -04:00
Hakim El Hattab
c28e023c32 update comment 2013-09-15 11:52:40 -04:00
Donald R. Huettl
45ad161930 prevent unintended slide change event
This prevents the upcoming slide on the notes page from triggering
slidechanged events.  I believe this fixes issue 578, as well.
2013-09-14 23:54:32 -05:00
Hakim El Hattab
ba20df4db9 add note about port #608 2013-09-14 12:20:59 -04:00
Hakim El Hattab
73bfb87ed1 Merge branch 'patch-1' of https://github.com/mrshu/reveal.js 2013-09-14 11:24:20 -04:00
Hakim El Hattab
a3f10e0b0f make sure remotes works without notes plugin being loaded #607 2013-09-14 11:12:21 -04:00
Hakim El Hattab
041a525a3c make hiding of address bar configurable 2013-09-11 21:55:49 -04:00
Marek Šuppa
b8efad0b27 Add option to Gruntfile.js to specify server port 2013-09-12 00:20:09 +02:00
Michał Smoliński
2bd228534b Fix: no parallax scrolling in FF
Fixed problem with parallax background  not working under FF
2013-09-11 20:41:50 +02:00
Michał Smoliński
2b5c06c4ef Added parallax scrolling background 2013-09-10 21:23:10 +02:00
Hakim El Hattab
79340908f4 rebuild css after merging #591 into dev 2013-09-06 23:05:02 -04:00
Tyler Cipriani
0f79903a10 Fix IE10 vertical slide perspective 2013-09-06 17:22:39 -06:00
Hakim El Hattab
c453bc4770 markdown plugin can now process slides that are added at runtime 2013-09-06 08:40:43 -04:00
Hakim El Hattab
ef9168c7c4 fix issue with notes on last slide of external markdown #589 2013-09-06 08:24:03 -04:00
Henrik
6f5ed2f90e supporting same languages as highlight.js 2013-09-05 10:45:50 +02:00
Hakim El Hattab
a3e6c95e79 reorder themes #584 2013-09-04 09:00:26 -04:00
Hakim El Hattab
6ba1a4b780 Merge branch 'list-themes' of https://github.com/tlevine/reveal.js into dev 2013-09-04 08:58:48 -04:00
Hakim El Hattab
2578fddd3f enable hiding of address bar for ios chrome #582 2013-09-04 08:56:50 -04:00
Hakim El Hattab
7cd4af80a6 update progress bar to hide/show using same type of rules as controls 2013-09-03 21:55:29 -04:00
Hakim El Hattab
932a6e047b Merge branch 'master' of https://github.com/ziggystar/reveal.js into dev 2013-09-03 21:51:52 -04:00
Hakim El Hattab
4251c5cd4d update grunt and node dependency versions 2013-09-03 20:49:51 -04:00
Thomas Geier
8a468394b5 fix: links not working when controls are disabled 2013-09-03 11:10:05 +02:00
Thomas Levine
4ce5c75d19 list more themes 2013-09-02 20:44:14 +00:00
Hakim El Hattab
a0f0371fb1 configure notes window presentations to hide needless UI 2013-08-29 09:28:38 -04:00
hakimel
8a7618793a syntax fix in code example 2013-08-28 09:43:36 -04:00
Hakim El Hattab
bba5a5d69c prep markdown test suite 2013-08-27 09:25:02 -04:00
Hakim El Hattab
d9c9474938 markdown refactoring #507 2013-08-27 09:11:43 -04:00
Hakim El Hattab
e9b0f5b481 minor refactoring of overview code 2013-08-26 09:20:12 -04:00
Hakim El Hattab
cf8b004052 update to latest version of highlight theme #576 2013-08-26 09:16:32 -04:00
Chris Lawrence
d8fb09fb64 Merge remote-tracking branch 'upstream/master' 2013-08-26 02:25:38 -04:00
Hakim El Hattab
571fb67864 fix bug where markdown notes in last slide would not parse #574 2013-08-24 16:13:24 -04:00
Hakim El Hattab
d62093c228 include dev flag in version 2013-08-24 15:10:10 -04:00
Hakim El Hattab
7e629936e5 always use 'i' as iterator 2013-08-24 11:06:52 -04:00
Hakim El Hattab
1c8fd60595 add test task, avoid attempt to run tests in unrelated html files 2013-08-24 10:52:35 -04:00
Hakim El Hattab
7f85c21386 markdown refactoring; comments, renamed functions, shorter argument lists 2013-08-24 10:39:15 -04:00
Hakim El Hattab
1c5da37ca6 more markdown plugin refactoring 2013-08-24 10:03:34 -04:00
Hakim El Hattab
4350c0024f standardize way of declaring functions 2013-08-23 17:51:20 -04:00
Hakim El Hattab
b968dfef15 update markdown plugin formatting to match reveal.js core 2013-08-23 17:49:19 -04:00
Hakim El Hattab
f215528575 pause mode tests 2013-08-23 15:57:28 -04:00
Hakim El Hattab
798fbc3dff test coverage for fragments 2013-08-23 15:36:16 -04:00
Hakim El Hattab
2440e19fab move examples into test/ 2013-08-23 14:57:11 -04:00
Hakim El Hattab
a0501a30b2 make sure isVerticalSlide doesn't throw npe 2013-08-23 09:10:11 -04:00
Hakim El Hattab
5cf49561a8 add test for loop setting 2013-08-22 21:38:37 -04:00
Hakim El Hattab
502b26ecf0 run unit tests as part of grunt build and ci 2013-08-22 20:31:52 -04:00
Hakim El Hattab
b3db69745d more tests #123 2013-08-22 20:27:41 -04:00
Hakim El Hattab
45fd91f962 more tests, enable test page scroll overflow #123 2013-08-22 20:09:40 -04:00
Hakim El Hattab
c01e1b648b more tests, use stricEqual and deepEqual assertions where appropriate #123 2013-08-22 19:51:00 -04:00
Hakim El Hattab
d49ff9aa5f include info about which slide the assertion applies to 2013-08-22 19:46:35 -04:00
Hakim El Hattab
f61ee9a693 fix bug where isLastSlide sometimes incorrectly returned false 2013-08-22 19:35:28 -04:00
Hakim El Hattab
a7b348e83b add qunit grunt dependency 2013-08-22 19:06:41 -04:00
Hakim El Hattab
c7728ba659 add unit tests #123 2013-08-22 19:03:11 -04:00
Hakim El Hattab
8d7e93cfc6 2.6.0 2013-08-22 19:02:16 -04:00
Hakim El Hattab
55d3aea268 leap motion doc tweaks 2013-08-22 11:23:22 -04:00
Hakim El Hattab
90a8ca4168 mathjax readme tweak 2013-08-20 23:30:11 -04:00
Chris Lawrence
f84e025d38 Merge remote-tracking branch 'upstream/master' 2013-08-19 01:04:34 -04:00
Chris Lawrence
4874b13f91 Merge remote-tracking branch 'upstream/master' 2013-07-22 05:39:20 -04:00
Chris Lawrence
ad086b897e Merge remote-tracking branch 'upstream/master' 2013-06-26 21:21:19 -04:00
Chris Lawrence
173b4e7f25 Merge remote-tracking branch 'upstream/master' 2013-06-22 01:47:40 -04:00
Chris Lawrence
7b119763f8 Merge remote-tracking branch 'upstream/master' 2013-06-21 17:57:09 -04:00
Chris Lawrence
636a666197 Merge remote-tracking branch 'upstream/master' 2013-06-17 22:55:52 -04:00
102 changed files with 14316 additions and 4554 deletions

4
.gitignore vendored
View File

@@ -3,4 +3,6 @@
log/*.log
tmp/**
node_modules/
.sass-cache
.sass-cache
css/reveal.min.css
js/reveal.min.js

View File

@@ -1,5 +1,5 @@
language: node_js
node_js:
- 0.8
- 4.1.1
before_script:
- npm install -g grunt-cli

23
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,23 @@
## Contributing
Please keep the [issue tracker](http://github.com/hakimel/reveal.js/issues) limited to **bug reports**, **feature requests** and **pull requests**.
### Personal Support
If you have personal support or setup questions the best place to ask those are [StackOverflow](http://stackoverflow.com/questions/tagged/reveal.js).
### Bug Reports
When reporting a bug make sure to include information about which browser and operating system you are on as well as the necessary steps to reproduce the issue. If possible please include a link to a sample presentation where the bug can be tested.
### Pull Requests
- Should follow the coding style of the file you work in, most importantly:
- Tabs to indent
- Single-quoted strings
- Should be made towards the **dev branch**
- Should be submitted from a feature/topic branch (not your master)
### Plugins
Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines

View File

@@ -1,5 +1,7 @@
/* global module:false */
module.exports = function(grunt) {
var port = grunt.option('port') || 8000;
var base = grunt.option('base') || '.';
// Project configuration
grunt.initConfig({
@@ -11,13 +13,12 @@ module.exports = function(grunt) {
' * http://lab.hakim.se/reveal-js\n' +
' * MIT licensed\n' +
' *\n' +
' * Copyright (C) 2013 Hakim El Hattab, http://hakim.se\n' +
' * Copyright (C) 2015 Hakim El Hattab, http://hakim.se\n' +
' */'
},
// Tests will be added soon
qunit: {
files: [ 'test/**/*.html' ]
files: [ 'test/*.html' ]
},
uglify: {
@@ -30,6 +31,31 @@ module.exports = function(grunt) {
}
},
sass: {
core: {
files: {
'css/reveal.css': 'css/reveal.scss',
}
},
themes: {
files: [
{
expand: true,
cwd: 'css/theme/source',
src: ['*.scss'],
dest: 'css/theme',
ext: '.css'
}
]
}
},
autoprefixer: {
dist: {
src: 'css/reveal.css'
}
},
cssmin: {
compress: {
files: {
@@ -38,21 +64,6 @@ module.exports = function(grunt) {
}
},
sass: {
main: {
files: {
'css/theme/default.css': 'css/theme/source/default.scss',
'css/theme/beige.css': 'css/theme/source/beige.scss',
'css/theme/night.css': 'css/theme/source/night.scss',
'css/theme/serif.css': 'css/theme/source/serif.scss',
'css/theme/simple.css': 'css/theme/source/simple.scss',
'css/theme/sky.css': 'css/theme/source/sky.scss',
'css/theme/moon.css': 'css/theme/source/moon.scss',
'css/theme/solarized.css': 'css/theme/source/solarized.scss'
}
}
},
jshint: {
options: {
curly: false,
@@ -69,7 +80,10 @@ module.exports = function(grunt) {
globals: {
head: false,
module: false,
console: false
console: false,
unescape: false,
define: false,
exports: false
}
},
files: [ 'Gruntfile.js', 'js/reveal.js' ]
@@ -78,8 +92,10 @@ module.exports = function(grunt) {
connect: {
server: {
options: {
port: 8000,
base: '.'
port: port,
base: base,
livereload: true,
open: true
}
}
},
@@ -91,37 +107,62 @@ module.exports = function(grunt) {
'js/**',
'lib/**',
'images/**',
'plugin/**'
'plugin/**',
'**.md'
]
},
watch: {
main: {
files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
tasks: 'default'
options: {
livereload: true
},
js: {
files: [ 'Gruntfile.js', 'js/reveal.js' ],
tasks: 'js'
},
theme: {
files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
tasks: 'themes'
tasks: 'css-themes'
},
css: {
files: [ 'css/reveal.scss' ],
tasks: 'css-core'
},
html: {
files: [ 'index.html']
},
markdown: {
files: [ './*.md' ]
}
}
});
// Dependencies
grunt.loadNpmTasks( 'grunt-contrib-qunit' );
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
grunt.loadNpmTasks( 'grunt-contrib-sass' );
grunt.loadNpmTasks( 'grunt-sass' );
grunt.loadNpmTasks( 'grunt-contrib-connect' );
grunt.loadNpmTasks( 'grunt-autoprefixer' );
grunt.loadNpmTasks( 'grunt-zip' );
// Default task
grunt.registerTask( 'default', [ 'jshint', 'cssmin', 'uglify' ] );
grunt.registerTask( 'default', [ 'css', 'js' ] );
// Theme task
grunt.registerTask( 'themes', [ 'sass' ] );
// JS task
grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] );
// Theme CSS
grunt.registerTask( 'css-themes', [ 'sass:themes' ] );
// Core framework CSS
grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] );
// All CSS
grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] );
// Package presentation to archive
grunt.registerTask( 'package', [ 'default', 'zip' ] );
@@ -129,4 +170,7 @@ module.exports = function(grunt) {
// Serve presentation locally
grunt.registerTask( 'serve', [ 'connect', 'watch' ] );
// Run tests
grunt.registerTask( 'test', [ 'jshint', 'qunit' ] );
};

View File

@@ -1,4 +1,4 @@
Copyright (C) 2013 Hakim El Hattab, http://hakim.se
Copyright (C) 2015 Hakim El Hattab, http://hakim.se
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

534
README.md
View File

@@ -1,8 +1,8 @@
# reveal.js [![Build Status](https://travis-ci.org/hakimel/reveal.js.png?branch=master)](https://travis-ci.org/hakimel/reveal.js)
# reveal.js [![Build Status](https://travis-ci.org/hakimel/reveal.js.svg?branch=master)](https://travis-ci.org/hakimel/reveal.js)
A framework for easily creating beautiful presentations using HTML. [Check out the live demo](http://lab.hakim.se/reveal-js/).
reveal.js comes with a broad range of features including [nested slides](https://github.com/hakimel/reveal.js#markup), [markdown contents](https://github.com/hakimel/reveal.js#markdown), [PDF export](https://github.com/hakimel/reveal.js#pdf-export), [speaker notes](https://github.com/hakimel/reveal.js#speaker-notes) and a [JavaScript API](https://github.com/hakimel/reveal.js#api). It's best viewed in a browser with support for CSS 3D transforms but [fallbacks](https://github.com/hakimel/reveal.js/wiki/Browser-Support) are available to make sure your presentation can still be viewed elsewhere.
reveal.js comes with a broad range of features including [nested slides](https://github.com/hakimel/reveal.js#markup), [Markdown contents](https://github.com/hakimel/reveal.js#markdown), [PDF export](https://github.com/hakimel/reveal.js#pdf-export), [speaker notes](https://github.com/hakimel/reveal.js#speaker-notes) and a [JavaScript API](https://github.com/hakimel/reveal.js#api). It's best viewed in a modern browser but [fallbacks](https://github.com/hakimel/reveal.js/wiki/Browser-Support) are available to make sure your presentation can still be viewed elsewhere.
#### More reading:
@@ -10,10 +10,11 @@ reveal.js comes with a broad range of features including [nested slides](https:/
- [Changelog](https://github.com/hakimel/reveal.js/releases): Up-to-date version history.
- [Examples](https://github.com/hakimel/reveal.js/wiki/Example-Presentations): Presentations created with reveal.js, add your own!
- [Browser Support](https://github.com/hakimel/reveal.js/wiki/Browser-Support): Explanation of browser support and fallbacks.
- [Plugins](https://github.com/hakimel/reveal.js/wiki/Plugins,-Tools-and-Hardware): A list of plugins that can be used to extend reveal.js.
## Slides
## Online Editor
Presentations are written using HTML or markdown but there's also an online editor for those of you who prefer a graphical interface. Give it a try at [http://slid.es](http://slid.es).
Presentations are written using HTML or Markdown but there's also an online editor for those of you who prefer a graphical interface. Give it a try at [http://slides.com](http://slides.com).
## Instructions
@@ -54,10 +55,44 @@ This is based on [data-markdown](https://gist.github.com/1343518) from [Paul Iri
You can write your content as a separate file and have reveal.js load it at runtime. Note the separator arguments which determine how slides are delimited in the external file. The ```data-charset``` attribute is optional and specifies which charset to use when loading the external file.
When used locally, this feature requires that reveal.js [runs from a local web server](#full-setup).
```html
<section data-markdown="example.md" data-separator="^\n\n\n" data-vertical="^\n\n" data-notes="^Note:" data-charset="iso-8859-15"></section>
<section data-markdown="example.md"
data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="iso-8859-15">
</section>
```
#### Element Attributes
Special syntax (in html comment) is available for adding attributes to Markdown elements. This is useful for fragments, amongst other things.
```html
<section data-markdown>
<script type="text/template">
- Item 1 <!-- .element: class="fragment" data-fragment-index="2" -->
- Item 2 <!-- .element: class="fragment" data-fragment-index="1" -->
</script>
</section>
```
#### Slide Attributes
Special syntax (in html comment) is available for adding attributes to the slide `<section>` elements generated by your Markdown.
```html
<section data-markdown>
<script type="text/template">
<!-- .slide: data-background="#ff0000" -->
Markdown content
</script>
</section>
```
### Configuration
At the end of your page you need to initialize reveal by running the following code. Note that all config values are optional and will default as specified below.
@@ -71,49 +106,87 @@ Reveal.initialize({
// Display a presentation progress bar
progress: true,
// Display the page number of the current slide
slideNumber: false,
// Push each slide change to the browser history
history: false,
// Enable keyboard shortcuts for navigation
keyboard: true,
// Enable touch events for navigation
touch: true,
// Enable the slide overview mode
overview: true,
// Vertical centering of slides
center: true,
// Enables touch navigation on devices with touch input
touch: true,
// Loop the presentation
loop: false,
// Change the presentation direction to be RTL
rtl: false,
// Turns fragments on and off globally
fragments: true,
// 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,
// Number of milliseconds between automatically proceeding to the
// next slide, disabled when set to 0, this value can be overwritten
// by using a data-autoslide attribute on your slides
autoSlide: 0,
// Stop auto-sliding after user input
autoSlideStoppable: true,
// Enable slide navigation via mouse wheel
mouseWheel: false,
// Hides the address bar on mobile devices
hideAddressBar: true,
// Opens links in an iframe preview overlay
previewLinks: false,
// Transition style
transition: 'default', // default/cube/page/concave/zoom/linear/fade/none
transition: 'default', // none/fade/slide/convex/concave/zoom
// Transition speed
transitionSpeed: 'default', // default/fast/slow
// Transition style for full page backgrounds
backgroundTransition: 'default' // default/linear/none
// Transition style for full page slide backgrounds
backgroundTransition: 'default', // none/fade/slide/convex/concave/zoom
// Number of slides away from the current that are visible
viewDistance: 3,
// Parallax background image
parallaxBackgroundImage: '', // e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'"
// Parallax background size
parallaxBackgroundSize: '', // CSS syntax, e.g. "2100px 900px"
// Amount to move parallax background (horizontal and vertical) on slide change
// Number, e.g. 100
parallaxBackgroundHorizontal: '',
parallaxBackgroundVertical: ''
});
```
Note that the new default vertical centering option will break compatibility with slides that were using transitions with backgrounds (`cube` and `page`). To restore the previous behavior, set `center` to `false`.
The configuration can be updated after initialization using the ```configure``` method:
@@ -126,45 +199,6 @@ Reveal.configure({ autoSlide: 5000 });
```
### Dependencies
Reveal.js doesn't _rely_ on any third party scripts to work but a few optional libraries are included by default. These libraries are loaded as dependencies in the order they appear, for example:
```javascript
Reveal.initialize({
dependencies: [
// Cross-browser shim that fully implements classList - https://github.com/eligrey/classList.js/
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
// Interpret Markdown in <section> elements
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
// Syntax highlight for <code> elements
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
// Zoom in and out with Alt+click
{ src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
// Speaker notes
{ src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
// Remote control your reveal.js presentation using a touch device
{ src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } },
// MathJax
{ src: 'plugin/math/math.js', async: true }
]
});
```
You can add your own extensions using the same syntax. The following properties are available for each dependency object:
- **src**: Path to the script to load
- **async**: [optional] Flags if the script should load after reveal.js has started, defaults to false
- **callback**: [optional] Function to execute when the script has loaded
- **condition**: [optional] Function which must return true for the script to be loaded
### Presentation Size
All presentations have a normal size, that is the resolution at which they are authored. The framework will automatically scale presentations uniformly based on this size to ensure that everything fits on any given display or viewport.
@@ -187,11 +221,84 @@ Reveal.initialize({
// Bounds for smallest/largest possible scale to apply to content
minScale: 0.2,
maxScale: 1.0
maxScale: 1.5
});
```
### Dependencies
Reveal.js doesn't _rely_ on any third party scripts to work but a few optional libraries are included by default. These libraries are loaded as dependencies in the order they appear, for example:
```javascript
Reveal.initialize({
dependencies: [
// Cross-browser shim that fully implements classList - https://github.com/eligrey/classList.js/
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
// Interpret Markdown in <section> elements
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
// Syntax highlight for <code> elements
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
// Zoom in and out with Alt+click
{ src: 'plugin/zoom-js/zoom.js', async: true },
// Speaker notes
{ src: 'plugin/notes/notes.js', async: true },
// MathJax
{ src: 'plugin/math/math.js', async: true }
]
});
```
You can add your own extensions using the same syntax. The following properties are available for each dependency object:
- **src**: Path to the script to load
- **async**: [optional] Flags if the script should load after reveal.js has started, defaults to false
- **callback**: [optional] Function to execute when the script has loaded
- **condition**: [optional] Function which must return true for the script to be loaded
### Ready Event
A 'ready' event is fired when reveal.js has loaded all non-async dependencies and is ready to start navigating. To check if reveal.js is already 'ready' you can call `Reveal.isReady()`.
```javascript
Reveal.addEventListener( 'ready', function( event ) {
// event.currentSlide, event.indexh, event.indexv
} );
```
### Auto-sliding
Presentations can be configured to progress through slides automatically, without any user input. To enable this you will need to tell the framework how many milliseconds it should wait between slides:
```javascript
// Slide every five seconds
Reveal.configure({
autoSlide: 5000
});
```
When this is turned on a control element will appear that enables users to pause and resume auto-sliding. Alternatively, sliding can be paused or resumed by pressing »a« on the keyboard. Sliding is paused automatically as soon as the user starts navigating. You can disable these controls by specifying ```autoSlideStoppable: false``` in your reveal.js config.
You can also override the slide duration for individual slides and fragments by using the ```data-autoslide``` attribute:
```html
<section data-autoslide="2000">
<p>After 2 seconds the first fragment will be shown.</p>
<p class="fragment" data-autoslide="10000">After 10 seconds the next fragment will be shown.</p>
<p class="fragment">Now, the fragment is displayed for 2 seconds before the next slide is shown.</p>
</section>
```
Whenever the auto-slide mode is resumed or paused the ```autoslideresumed``` and ```autoslidepaused``` events are fired.
### Keyboard Bindings
If you're unhappy with any of the default keyboard bindings you can override them using the ```keyboard``` config option:
@@ -206,10 +313,34 @@ Reveal.configure({
});
```
### Touch Navigation
You can swipe to navigate through a presentation on any touch-enabled device. Horizontal swipes change between horizontal slides, vertical swipes change between vertical slides. If you wish to disable this you can set the `touch` config option to false when initializing reveal.js.
If there's some part of your content that needs to remain accessible to touch events you'll need to highlight this by adding a `data-prevent-swipe` attribute to the element. One common example where this is useful is elements that need to be scrolled.
### Lazy Loading
When working on presentation with a lot of media or iframe content it's important to load lazily. Lazy loading means that reveal.js will only load content for the few slides nearest to the current slide. The number of slides that are preloaded is determined by the `viewDistance` configuration option.
To enable lazy loading all you need to do is change your "src" attributes to "data-src" as shown below. This is supported for image, video, audio and iframe elements. Lazy loaded iframes will also unload when the containing slide is no longer visible.
```html
<section>
<img data-src="image.png">
<iframe data-src="http://hakim.se"></iframe>
<video>
<source data-src="video.webm" type="video/webm" />
<source data-src="video.mp4" type="video/mp4" />
</video>
</section>
```
### API
The ``Reveal`` class provides a JavaScript API for controlling navigation and reading state:
The ``Reveal`` object exposes a JavaScript API for controlling navigation and reading state:
```javascript
// Navigation
@@ -222,35 +353,43 @@ Reveal.prev();
Reveal.next();
Reveal.prevFragment();
Reveal.nextFragment();
// Toggle presentation states, optionally pass true/false to force on/off
Reveal.toggleOverview();
Reveal.togglePause();
Reveal.toggleAutoSlide();
// Change a config value at runtime
Reveal.configure({ controls: true });
// Returns the present configuration options
Reveal.getConfig();
// Fetch the current scale of the presentation
Reveal.getScale();
// Retrieves the previous and current slide elements
Reveal.getPreviousSlide();
Reveal.getCurrentSlide();
Reveal.getIndices(); // { h: 0, v: 0 } }
Reveal.getProgress(); // 0-1
Reveal.getTotalSlides();
// Returns the speaker notes for the current slide
Reveal.getSlideNotes();
// State checks
Reveal.isFirstSlide();
Reveal.isLastSlide();
Reveal.isOverview();
Reveal.isPaused();
```
### Ready Event
The 'ready' event is fired when reveal.js has loaded all (synchronous) dependencies and is ready to start navigating.
```javascript
Reveal.addEventListener( 'ready', function( event ) {
// event.currentSlide, event.indexh, event.indexv
} );
Reveal.isAutoSliding();
```
### Slide Changed Event
An '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.
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 from this callback.
@@ -260,8 +399,24 @@ Reveal.addEventListener( 'slidechanged', function( event ) {
} );
```
### Presentation State
### States
The presentation's current state can be fetched by using the `getState` method. A state object contains all of the information required to put the presentation back as it was when `getState` was first called. Sort of like a snapshot. It's a simple object that can easily be stringified and persisted or sent over the wire.
```javascript
Reveal.slide( 1 );
// we're on slide 1
var state = Reveal.getState();
Reveal.slide( 3 );
// we're on slide 3
Reveal.setState( state );
// we're back on slide 1
```
### Slide States
If you set ``data-state="somestate"`` on a slide ``<section>``, "somestate" will be applied as a class on the document element when that slide is opened. This allows you to apply broad style changes to the page based on the active slide.
@@ -275,7 +430,7 @@ Reveal.addEventListener( 'somestate', function() {
### Slide Backgrounds
Slides are contained within a limited portion of the screen by default to allow them to fit any display and scale uniformly. You can apply full page background colors or images by applying a ```data-background``` attribute to your ```<section>``` elements. Below are a few examples.
Slides are contained within a limited portion of the screen by default to allow them to fit any display and scale uniformly. You can apply full page backgrounds outside of the slide area by adding a ```data-background``` attribute to your ```<section>``` elements. Four different types of backgrounds are supported: color, image, video and iframe. Below are a few examples.
```html
<section data-background="#ff0000">
@@ -287,11 +442,43 @@ Slides are contained within a limited portion of the screen by default to allow
<section data-background="http://example.com/image.png" data-background-size="100px" data-background-repeat="repeat">
<h2>This background image will be sized to 100px and repeated.</h2>
</section>
<section data-background-video="https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.mp4,https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.webm" data-background-video-loop>
<h2>Video. Multiple sources can be defined using a comma separated list. Video will loop when the data-background-video-loop attribute is provided.</h2>
</section>
<section data-background-iframe="https://slides.com">
<h2>Embeds a web page as a background. Note that the page won't be interactive.</h2>
</section>
```
Backgrounds transition using a fade animation by default. This can be changed to a linear sliding transition by passing ```backgroundTransition: 'slide'``` to the ```Reveal.initialize()``` call. Alternatively you can set ```data-background-transition``` on any section with a background to override that specific transition.
### Parallax Background
If you want to use a parallax scrolling background, set the first two config properties below when initializing reveal.js (the other two are optional).
```javascript
Reveal.initialize({
// Parallax background image
parallaxBackgroundImage: '', // e.g. "https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg"
// Parallax background size
parallaxBackgroundSize: '', // CSS syntax, e.g. "2100px 900px" - currently only pixels are supported (don't use % or auto)
// Amount of pixels to move the parallax background per slide step,
// a value of 0 disables movement along the given axis
// These are optional, if they aren't specified they'll be calculated automatically
parallaxBackgroundHorizontal: 200,
parallaxBackgroundVertical: 50
});
```
Make sure that the background size is much bigger than screen size to allow for some scrolling. [View example](http://lab.hakim.se/reveal-js/?parallaxBackgroundImage=https%3A%2F%2Fs3.amazonaws.com%2Fhakim-static%2Freveal-js%2Freveal-parallax-1.jpg&parallaxBackgroundSize=2100px%20900px).
### Slide Transitions
The global presentation transition is set using the ```transition``` config value. You can override the global transition for a specific slide by using the ```data-transition``` attribute:
@@ -305,7 +492,25 @@ The global presentation transition is set using the ```transition``` config valu
</section>
```
Note that this does not work with the page and cube transitions.
You can also use different in and out transitions for the same slide:
```html
<section data-transition="slide">
The train goes on …
</section>
<section data-transition="slide">
and on …
</section>
<section data-transition="slide-in fade-out">
and stops.
</section>
<section data-transition="fade-in slide-out">
(Passengers entering and leaving)
</section>
<section data-transition="slide">
And it starts again.
</section>
```
### Internal links
@@ -330,7 +535,7 @@ You can also add relative navigation links, similar to the built in reveal.js co
### Fragments
Fragments are used to highlight individual elements on a slide. Every element with the class ```fragment``` will be stepped through before moving on to the next slide. Here's an example: http://lab.hakim.se/reveal-js/#/16
Fragments are used to highlight individual elements on a slide. Every element with the class ```fragment``` will be stepped through before moving on to the next slide. Here's an example: http://lab.hakim.se/reveal-js/#/fragments
The default fragment style is to start out invisible and fade in. This style can be changed by appending a different class to the fragment:
@@ -338,8 +543,9 @@ The default fragment style is to start out invisible and fade in. This style can
<section>
<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment roll-in">roll-in</p>
<p class="fragment fade-out">fade-out</p>
<p class="fragment current-visible">visible only once</p>
<p class="fragment highlight-current-blue">blue only once</p>
<p class="fragment highlight-red">highlight-red</p>
<p class="fragment highlight-green">highlight-green</p>
<p class="fragment highlight-blue">highlight-blue</p>
@@ -383,7 +589,7 @@ Reveal.addEventListener( 'fragmenthidden', function( event ) {
### Code syntax highlighting
By default, Reveal is configured with [highlight.js](http://softwaremaniacs.org/soft/highlight/en/) for code syntax highlighting. Below is an example with clojure code that will be syntax highlighted. When the `data-trim` attribute is present surrounding whitespace is automatically removed.
By default, Reveal is configured with [highlight.js](https://highlightjs.org/) for code syntax highlighting. Below is an example with clojure code that will be syntax highlighted. When the `data-trim` attribute is present surrounding whitespace is automatically removed.
```html
<section>
@@ -397,6 +603,22 @@ By default, Reveal is configured with [highlight.js](http://softwaremaniacs.org/
</section>
```
### Slide number
If you would like to display the page number of the current slide you can do so using the ```slideNumber``` configuration value.
```javascript
// Shows the slide number using default formatting
Reveal.configure({ slideNumber: true });
// Slide number formatting can be configured using these variables:
// "h.v": horizontal . vertical slide number (default)
// "h/v": horizontal / vertical slide number
// "c": flattened slide number
// "c/t": flattened slide number / total slides
Reveal.configure({ slideNumber: 'c/t' });
```
### Overview mode
@@ -424,6 +646,8 @@ Add `data-autoplay` to your media element if you want it to automatically start
<video data-autoplay src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"></video>
```
Additionally the framework automatically pushes two [post messages](https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage) to all iframes, ```slide:start``` when the slide containing the iframe is made visible and ```slide:stop``` when it is hidden.
### Stretching elements
Sometimes it's desirable to have an element, like an image or video, stretch to consume as much space as possible within a given slide. This can be done by adding the ```.stretch``` class to an element as seen below:
@@ -440,12 +664,45 @@ Limitations:
- Only one descendant per slide section can be stretched
### postMessage API
The framework has a built-in postMessage API that can be used when communicating with a presentation inside of another window. Here's an example showing how you'd make a reveal.js instance in the given window proceed to slide 2:
```javascript
<window>.postMessage( JSON.stringify({ method: 'slide', args: [ 2 ] }), '*' );
```
When reveal.js runs inside of an iframe it can optionally bubble all of its events to the parent. Bubbled events are stringified JSON with three fields: namespace, eventName and state. Here's how you subscribe to them from the parent window:
```javascript
window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
if( data.namespace === 'reveal' && data.eventName ==='slidechanged' ) {
// Slide changed, see data.state for slide number
}
} );
```
This cross-window messaging can be toggled on or off using configuration flags.
```javascript
Reveal.initialize({
...,
// Exposes the reveal.js API through window.postMessage
postMessage: true,
// Dispatches all reveal.js events to the parent window through postMessage
postMessageEvents: false
});
```
## PDF Export
Presentations can be exported to PDF via a special print stylesheet. This feature requires that you use [Google Chrome](http://google.com/chrome).
Here's an example of an exported presentation that's been uploaded to SlideShare: http://www.slideshare.net/hakimel/revealjs-13872948.
Presentations can be exported to PDF via a special print stylesheet. This feature requires that you use [Google Chrome](http://google.com/chrome) or [Chromium](https://www.chromium.org/Home).
Here's an example of an exported presentation that's been uploaded to SlideShare: http://www.slideshare.net/hakimel/revealjs-300.
1. Open your presentation with [css/print/pdf.css](https://github.com/hakimel/reveal.js/blob/master/css/print/pdf.css) included on the page. The default index HTML lets you add *print-pdf* anywhere in the query to include the stylesheet, for example: [lab.hakim.se/reveal-js?print-pdf](http://lab.hakim.se/reveal-js?print-pdf).
1. Open your presentation with `print-pdf` included anywhere in the query string. This triggers the default index HTML to load the PDF print stylesheet ([css/print/pdf.css](https://github.com/hakimel/reveal.js/blob/master/css/print/pdf.css)). You can test this with [lab.hakim.se/reveal-js?print-pdf](http://lab.hakim.se/reveal-js?print-pdf).
2. Open the in-browser print dialog (CMD+P).
3. Change the **Destination** setting to **Save as PDF**.
4. Change the **Layout** to **Landscape**.
@@ -454,21 +711,26 @@ Here's an example of an exported presentation that's been uploaded to SlideShare
![Chrome Print Settings](https://s3.amazonaws.com/hakim-static/reveal-js/pdf-print-settings.png)
Alternatively you can use the [decktape](https://github.com/astefanutti/decktape) project.
## Theming
The framework comes with a few different themes included:
- default: Gray background, white text, blue links
- black: Black background, white text, blue links (default theme)
- white: White background, black text, blue links
- league: Gray background, white text, blue links (default theme for reveal.js < 3.0.0)
- beige: Beige background, dark text, brown links
- sky: Blue background, thin white text, blue links
- sky: Blue background, thin dark text, blue links
- night: Black background, thick white text, orange links
- serif: Cappuccino background, gray text, brown links
- simple: White background, black text, blue links
- solarized: Cream-colored background, dark green text, blue links
Each theme is available as a separate stylesheet. To change theme you will need to replace **default** below with your desired theme name in index.html:
Each theme is available as a separate stylesheet. To change theme you will need to replace **black** below with your desired theme name in index.html:
```html
<link rel="stylesheet" href="css/theme/default.css" id="theme">
<link rel="stylesheet" href="css/theme/black.css" id="theme">
```
If you want to add a theme of your own see the instructions here: [/css/theme/README.md](https://github.com/hakimel/reveal.js/blob/master/css/theme/README.md).
@@ -480,6 +742,10 @@ reveal.js comes with a speaker notes plugin which can be used to present per-sli
Notes are defined by appending an ```<aside>``` element to a slide as seen below. You can add the ```data-markdown``` attribute to the aside element if you prefer writing notes using Markdown.
Alternatively you can add your notes in a `data-notes` attribute on the slide. Like `<section data-notes="Something important"></section>`.
When used locally, this feature requires that reveal.js [runs from a local web server](#full-setup).
```html
<section>
<h2>Some Slide</h2>
@@ -490,10 +756,12 @@ Notes are defined by appending an ```<aside>``` element to a slide as seen below
</section>
```
Notes are only visible to you in the speaker view. If you wish to share your notes with the audience initialize reveal.js with the `showNotes` config value set to `true`.
If you're using the external Markdown plugin, you can add notes with the help of a special delimiter:
```html
<section data-markdown="example.md" data-separator="^\n\n\n" data-vertical="^\n\n" data-notes="^Note:"></section>
<section data-markdown="example.md" data-separator="^\n\n\n" data-separator-vertical="^\n\n" data-separator-notes="^Note:"></section>
# Title
## Sub-title
@@ -528,7 +796,7 @@ Then:
## Multiplexing
The multiplex plugin allows your audience to view the slides of the presentation you are controlling on their own phone, tablet or laptop. As the master presentation navigates the slides, all client presentations will update in real time. See a demo at [http://revealjs.jit.su/](http://revealjs.jit.su).
The multiplex plugin allows your audience to view the slides of the presentation you are controlling on their own phone, tablet or laptop. As the master presentation navigates the slides, all client presentations will update in real time. See a demo at [http://revealjs-51546.onmodulus.net/](http://revealjs-51546.onmodulus.net/).
The multiplex plugin needs the following 3 things to operate:
@@ -557,12 +825,12 @@ Reveal.initialize({
// Example values. To generate your own, see the socket.io server instructions.
secret: '13652805320794272084', // Obtained from the socket.io server. Gives this (the master) control of the presentation
id: '1ea875674b17ca76', // Obtained from socket.io server
url: 'revealjs.jit.su:80' // Location of socket.io server
url: 'revealjs-51546.onmodulus.net:80' // Location of socket.io server
},
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.10/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/master.js', async: true },
// and if you want speaker notes
@@ -585,12 +853,12 @@ Reveal.initialize({
// Example values. To generate your own, see the socket.io server instructions.
secret: null, // null so the clients do not have control of the master presentation
id: '1ea875674b17ca76', // id, obtained from socket.io server
url: 'revealjs.jit.su:80' // Location of socket.io server
url: 'revealjs-51546.onmodulus.net:80' // Location of socket.io server
},
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.10/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/client.js', async: true }
// other dependencies...
@@ -604,15 +872,15 @@ Server that receives the slideChanged events from the master presentation and br
1. ```npm install```
2. ```node plugin/multiplex```
Or you use the socket.io server at [http://revealjs.jit.su](http://revealjs.jit.su).
Or you use the socket.io server at [http://revealjs-51546.onmodulus.net/](http://revealjs-51546.onmodulus.net/).
You'll need to generate a unique secret and token pair for your master and client presentations. To do so, visit ```http://example.com/token```, where ```http://example.com``` is the location of your socket.io server. Or if you're going to use the socket.io server at [http://revealjs.jit.su](http://revealjs.jit.su), visit [http://revealjs.jit.su/token](http://revealjs.jit.su/token).
You'll need to generate a unique secret and token pair for your master and client presentations. To do so, visit ```http://example.com/token```, where ```http://example.com``` is the location of your socket.io server. Or if you're going to use the socket.io server at [http://revealjs-51546.onmodulus.net/](http://revealjs-51546.onmodulus.net/), visit [http://revealjs-51546.onmodulus.net/token](http://revealjs-51546.onmodulus.net/token).
You are very welcome to point your presentations at the Socket.io server running at [http://revealjs.jit.su](http://revealjs.jit.su), but availability and stability are not guaranteed. For anything mission critical I recommend you run your own server. It is simple to deploy to nodejitsu, heroku, your own environment, etc.
You are very welcome to point your presentations at the Socket.io server running at [http://revealjs-51546.onmodulus.net/](http://revealjs-51546.onmodulus.net/), but availability and stability are not guaranteed. For anything mission critical I recommend you run your own server. It is simple to deploy to nodejitsu, heroku, your own environment, etc.
##### socket.io server as file static server
The socket.io server can play the role of static file server for your client presentation, as in the example at [http://revealjs.jit.su](http://revealjs.jit.su). (Open [http://revealjs.jit.su](http://revealjs.jit.su) in two browsers. Navigate through the slides on one, and the other will update to match.)
The socket.io server can play the role of static file server for your client presentation, as in the example at [http://revealjs-51546.onmodulus.net/](http://revealjs-51546.onmodulus.net/). (Open [http://revealjs-51546.onmodulus.net/](http://revealjs-51546.onmodulus.net/) in two browsers. Navigate through the slides on one, and the other will update to match.)
Example configuration:
```javascript
@@ -628,14 +896,14 @@ Reveal.initialize({
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.10/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/client.js', async: true }
// other dependencies...
]
```
It can also play the role of static file server for your master presentation and client presentations at the same time (as long as you don't want to use speaker notes). (Open [http://revealjs.jit.su](http://revealjs.jit.su) in two browsers. Navigate through the slides on one, and the other will update to match. Navigate through the slides on the second, and the first will update to match.) This is probably not desirable, because you don't want your audience to mess with your slides while you're presenting. ;)
It can also play the role of static file server for your master presentation and client presentations at the same time (as long as you don't want to use speaker notes). (Open [http://revealjs-51546.onmodulus.net/](http://revealjs-51546.onmodulus.net/) in two browsers. Navigate through the slides on one, and the other will update to match. Navigate through the slides on the second, and the first will update to match.) This is probably not desirable, because you don't want your audience to mess with your slides while you're presenting. ;)
Example configuration:
```javascript
@@ -651,7 +919,7 @@ Reveal.initialize({
// Don't forget to add the dependencies
dependencies: [
{ src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.10/socket.io.min.js', async: true },
{ src: '//cdn.socket.io/socket.io-1.3.5.js', async: true },
{ src: 'plugin/multiplex/master.js', async: true },
{ src: 'plugin/multiplex/client.js', async: true }
@@ -660,55 +928,6 @@ Reveal.initialize({
});
```
## Leap Motion
The Leap Motion plugin lets you utilize your [Leap Motion](https://www.leapmotion.com/) device to control basic navigation of your presentation. The gestures currently supported are:
##### 1 to 2 fingers
* Pointer &mdash; Point to anything on screen. Move your finger past the device to expand the pointer.
##### 1 hand + 3 or more fingers
* Left
* Right
* Up
* down
Navigate through your slides. See config options to invert movements.
##### 2 hands
* Up
Toggle the overview mode. Do it a second time to exit the overview.
#### Config Options
You can edit the following options:
* autoCenter: Defaults to true. Center the pointer based on where you put your finger into the leap motions detection field.
* gestureDelay: Defaults to 500. How long to delay between gestures in milliseconds.
* naturalSwipe: Defaults to true. Swipe as though you were touching a touch screen. Set to false to invert.
* pointerColor: Defaults to #00aaff. The color of the pointer.
* pointerOpacity: Defaults to 0.7. The opacity of the pointer.
* pointerSize: Defaults to 15. The minimum height and width of the pointer.
* pointerTolerance: Defaults to 120. Bigger = slower pointer.
Example configuration:
```js
Reveal.initialize({
// other options...
leap: {
naturalSwipe : false, // Invert swipe gestures
pointerOpacity : 0.5, // Set pointer opacity to 0.5
pointerColor : '#d80000' // Red pointer
},
dependencies: [
{ src: 'plugin/leap/leap.js', async: true }
]
});
```
## MathJax
If you want to display math equations in your presentation you can easily do so by including this plugin. The plugin is a very thin wrapper around the [MathJax](http://www.mathjax.org/) library. To use it you'll need to include it as a reveal.js dependency, [find our more about dependencies here](#dependencies).
@@ -723,7 +942,7 @@ Reveal.initialize({
// other options ...
math: {
mathjax: 'http://cdn.mathjax.org/mathjax/latest/MathJax.js',
mathjax: 'https://cdn.mathjax.org/mathjax/latest/MathJax.js',
config: 'TeX-AMS_HTML-full' // See http://docs.mathjax.org/en/latest/config-files.html
},
@@ -734,7 +953,7 @@ Reveal.initialize({
});
```
Read MathJax's documentation if you want [secure delivery](http://docs.mathjax.org/en/latest/start.html#secure-access-to-the-cdn) or serve [specific versons](http://docs.mathjax.org/en/latest/configuration.html#loading-mathjax-from-the-cdn) for stabilty.
Read MathJax's documentation if you need [HTTPS delivery](http://docs.mathjax.org/en/latest/start.html#secure-access-to-the-cdn) or serving of [specific versions](http://docs.mathjax.org/en/latest/configuration.html#loading-mathjax-from-the-cdn) for stability.
## Installation
@@ -754,34 +973,36 @@ The core of reveal.js is very easy to install. You'll simply need to download a
### Full setup
Some reveal.js features, like external markdown, require that presentations run from a local web server. The following instructions will set up such a server as well as all of the development tasks needed to make edits to the reveal.js source code.
Some reveal.js features, like external Markdown and speaker notes, require that presentations run from a local web server. The following instructions will set up such a server as well as all of the development tasks needed to make edits to the reveal.js source code.
1. Install [Node.js](http://nodejs.org/)
2. Install [Grunt](http://gruntjs.com/getting-started#installing-the-cli)
4. Clone the reveal.js repository
```
$ git clone git@github.com:hakimel/reveal.js.git
```
```sh
$ git clone https://github.com/hakimel/reveal.js.git
```
5. Navigate to the reveal.js folder
```
$ cd reveal.js
```
```sh
$ cd reveal.js
```
6. Install dependencies
```
$ npm install
```
```sh
$ npm install
```
7. Serve the presentation and monitor source files for changes
```
$ grunt serve
```
```sh
$ grunt serve
```
8. Open <http://localhost:8000> to view your presentation
You can change the port by using `grunt serve --port 8001`.
### Folder Structure
- **css/** Core styles without which the project does not function
@@ -790,9 +1011,8 @@ $ grunt serve
- **lib/** All other third party assets (JavaScript, CSS, fonts)
## License
MIT licensed
Copyright (C) 2013 Hakim El Hattab, http://hakim.se
Copyright (C) 2015 Hakim El Hattab, http://hakim.se

27
bower.json Normal file
View File

@@ -0,0 +1,27 @@
{
"name": "reveal.js",
"version": "3.2.0",
"main": [
"js/reveal.js",
"css/reveal.css"
],
"homepage": "http://lab.hakim.se/reveal-js/",
"license": "MIT",
"description": "The HTML Presentation Framework",
"authors": [
"Hakim El Hattab <hakim.elhattab@gmail.com>"
],
"dependencies": {
"headjs": "~1.0.3"
},
"repository": {
"type": "git",
"url": "git://github.com/hakimel/reveal.js.git"
},
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test"
]
}

View File

@@ -6,171 +6,197 @@
manipulate this file as you see fit. */
/* SECTION 1: Set default width, margin, float, and
background. This prevents elements from extending
beyond the edge of the printed page, and prevents
unnecessary background images from printing */
body {
background: #fff;
font-size: 13pt;
width: auto;
height: auto;
border: 0;
margin: 0 5%;
padding: 0;
float: none !important;
overflow: visible;
}
html {
background: #fff;
width: auto;
height: auto;
overflow: visible;
}
@media print {
/* SECTION 2: Remove any elements not needed in print.
This would include navigation, ads, sidebars, etc. */
.nestedarrow,
.controls,
.reveal .progress,
.reveal.overview,
.fork-reveal,
.share-reveal,
.state-background {
display: none !important;
}
/* SECTION 1: Set default width, margin, float, and
background. This prevents elements from extending
beyond the edge of the printed page, and prevents
unnecessary background images from printing */
html {
background: #fff;
width: auto;
height: auto;
overflow: visible;
}
body {
background: #fff;
font-size: 20pt;
width: auto;
height: auto;
border: 0;
margin: 0 5%;
padding: 0;
overflow: visible;
float: none !important;
}
/* SECTION 3: Set body font face, size, and color.
Consider using a serif font for readability. */
body, p, td, li, div, a {
font-size: 16pt!important;
font-family: Georgia, "Times New Roman", Times, serif !important;
color: #000;
}
/* SECTION 2: Remove any elements not needed in print.
This would include navigation, ads, sidebars, etc. */
.nestedarrow,
.controls,
.fork-reveal,
.share-reveal,
.state-background,
.reveal .progress,
.reveal .backgrounds {
display: none !important;
}
/* SECTION 4: Set heading font face, sizes, and color.
Differentiate your headings from your body text.
Perhaps use a large sans-serif for distinction. */
h1,h2,h3,h4,h5,h6 {
color: #000!important;
height: auto;
line-height: normal;
font-family: Georgia, "Times New Roman", Times, serif !important;
text-shadow: 0 0 0 #000 !important;
text-align: left;
letter-spacing: normal;
}
/* Need to reduce the size of the fonts for printing */
h1 { font-size: 26pt !important; }
h2 { font-size: 22pt !important; }
h3 { font-size: 20pt !important; }
h4 { font-size: 20pt !important; font-variant: small-caps; }
h5 { font-size: 19pt !important; }
h6 { font-size: 18pt !important; font-style: italic; }
/* SECTION 3: Set body font face, size, and color.
Consider using a serif font for readability. */
body, p, td, li, div {
font-size: 20pt!important;
font-family: Georgia, "Times New Roman", Times, serif !important;
color: #000;
}
/* SECTION 5: Make hyperlinks more usable.
Ensure links are underlined, and consider appending
the URL to the end of the link for usability. */
a:link,
a:visited {
color: #000 !important;
font-weight: bold;
text-decoration: underline;
}
/*
.reveal a:link:after,
.reveal a:visited:after {
content: " (" attr(href) ") ";
color: #222 !important;
font-size: 90%;
}
*/
/* SECTION 4: Set heading font face, sizes, and color.
Differentiate your headings from your body text.
Perhaps use a large sans-serif for distinction. */
h1,h2,h3,h4,h5,h6 {
color: #000!important;
height: auto;
line-height: normal;
font-family: Georgia, "Times New Roman", Times, serif !important;
text-shadow: 0 0 0 #000 !important;
text-align: left;
letter-spacing: normal;
}
/* Need to reduce the size of the fonts for printing */
h1 { font-size: 28pt !important; }
h2 { font-size: 24pt !important; }
h3 { font-size: 22pt !important; }
h4 { font-size: 22pt !important; font-variant: small-caps; }
h5 { font-size: 21pt !important; }
h6 { font-size: 20pt !important; font-style: italic; }
/* SECTION 5: Make hyperlinks more usable.
Ensure links are underlined, and consider appending
the URL to the end of the link for usability. */
a:link,
a:visited {
color: #000 !important;
font-weight: bold;
text-decoration: underline;
}
/*
.reveal a:link:after,
.reveal a:visited:after {
content: " (" attr(href) ") ";
color: #222 !important;
font-size: 90%;
}
*/
/* SECTION 6: more reveal.js specific additions by @skypanther */
ul, ol, div, p {
visibility: visible;
position: static;
width: auto;
height: auto;
display: block;
overflow: visible;
margin: auto;
text-align: left !important;
}
.reveal .slides {
position: static;
width: auto;
height: auto;
/* SECTION 6: more reveal.js specific additions by @skypanther */
ul, ol, div, p {
visibility: visible;
position: static;
width: auto;
height: auto;
display: block;
overflow: visible;
margin: 0;
text-align: left !important;
}
.reveal pre,
.reveal table {
margin-left: 0;
margin-right: 0;
}
.reveal pre code {
padding: 20px;
border: 1px solid #ddd;
}
.reveal blockquote {
margin: 20px 0;
}
.reveal .slides {
position: static !important;
width: auto !important;
height: auto !important;
left: auto;
top: auto;
margin-left: auto;
margin-top: auto;
padding: auto;
left: 0 !important;
top: 0 !important;
margin-left: 0 !important;
margin-top: 0 !important;
padding: 0 !important;
zoom: 1 !important;
overflow: visible;
display: block;
overflow: visible !important;
display: block !important;
text-align: center;
-webkit-perspective: none;
-moz-perspective: none;
-ms-perspective: none;
perspective: none;
text-align: left !important;
-webkit-perspective: none;
-moz-perspective: none;
-ms-perspective: none;
perspective: none;
-webkit-perspective-origin: 50% 50%; /* there isn't a none/auto value but 50-50 is the default */
-moz-perspective-origin: 50% 50%;
-ms-perspective-origin: 50% 50%;
perspective-origin: 50% 50%;
}
.reveal .slides>section,
.reveal .slides>section>section {
-webkit-perspective-origin: 50% 50%;
-moz-perspective-origin: 50% 50%;
-ms-perspective-origin: 50% 50%;
perspective-origin: 50% 50%;
}
.reveal .slides section {
visibility: visible !important;
position: static !important;
width: auto !important;
height: auto !important;
display: block !important;
overflow: visible !important;
visibility: visible !important;
position: static !important;
width: 90% !important;
height: auto !important;
display: block !important;
overflow: visible !important;
left: 0 !important;
top: 0 !important;
margin-left: 0 !important;
margin-top: 0 !important;
padding: 60px 20px !important;
z-index: auto !important;
left: 0% !important;
top: 0% !important;
margin-left: 0px !important;
margin-top: 0px !important;
padding: 20px 0px !important;
opacity: 1 !important;
opacity: 1 !important;
page-break-after: always !important;
-webkit-transform-style: flat !important;
-moz-transform-style: flat !important;
-ms-transform-style: flat !important;
transform-style: flat !important;
-webkit-transform-style: flat !important;
-moz-transform-style: flat !important;
-ms-transform-style: flat !important;
transform-style: flat !important;
-webkit-transform: none !important;
-moz-transform: none !important;
-ms-transform: none !important;
transform: none !important;
}
.reveal section {
page-break-after: always !important;
display: block !important;
}
.reveal section .fragment {
opacity: 1 !important;
visibility: visible !important;
-webkit-transform: none !important;
-moz-transform: none !important;
-ms-transform: none !important;
transform: none !important;
-webkit-transition: none !important;
-moz-transition: none !important;
-ms-transition: none !important;
transition: none !important;
}
.reveal .slides section.stack {
padding: 0 !important;
}
.reveal section:last-of-type {
page-break-after: avoid !important;
}
.reveal section .fragment {
opacity: 1 !important;
visibility: visible !important;
-webkit-transform: none !important;
-moz-transform: none !important;
-ms-transform: none !important;
transform: none !important;
}
.reveal section img {
display: block;
margin: 15px 0px;
background: rgba(255,255,255,1);
border: 1px solid #666;
box-shadow: none;
}
.reveal section small {
font-size: 0.8em;
}
-webkit-transform: none !important;
-moz-transform: none !important;
-ms-transform: none !important;
transform: none !important;
}
.reveal section:last-of-type {
page-break-after: avoid !important;
}
.reveal section img {
display: block;
margin: 15px 0px;
background: rgba(255,255,255,1);
border: 1px solid #666;
box-shadow: none;
}

View File

@@ -1,24 +1,15 @@
/* Default Print Stylesheet Template
by Rob Glazebrook of CSSnewbie.com
Last Updated: June 4, 2008
Feel free (nay, compelled) to edit, append, and
manipulate this file as you see fit. */
/* SECTION 1: Set default width, margin, float, and
background. This prevents elements from extending
beyond the edge of the printed page, and prevents
unnecessary background images from printing */
/**
* This stylesheet is used to print reveal.js
* presentations to PDF.
*
* https://github.com/hakimel/reveal.js#pdf-export
*/
* {
-webkit-print-color-adjust: exact;
}
body {
font-size: 18pt;
width: 297mm;
height: 229mm;
margin: 0 auto !important;
border: 0;
padding: 0;
@@ -32,16 +23,11 @@ html {
overflow: visible;
}
@page {
size: letter landscape;
margin: 0;
}
/* SECTION 2: Remove any elements not needed in print.
This would include navigation, ads, sidebars, etc. */
/* Remove any elements not needed in print. */
.nestedarrow,
.controls,
.reveal .controls,
.reveal .progress,
.reveal .playback,
.reveal.overview,
.fork-reveal,
.share-reveal,
@@ -49,35 +35,15 @@ html {
display: none !important;
}
/* SECTION 3: Set body font face, size, and color.
Consider using a serif font for readability. */
body, p, td, li, div {
font-size: 18pt;
}
/* SECTION 4: Set heading font face, sizes, and color.
Differentiate your headings from your body text.
Perhaps use a large sans-serif for distinction. */
h1,h2,h3,h4,h5,h6 {
h1, h2, h3, h4, h5, h6 {
text-shadow: 0 0 0 #000 !important;
}
/* SECTION 5: Make hyperlinks more usable.
Ensure links are underlined, and consider appending
the URL to the end of the link for usability. */
a:link,
a:visited {
font-weight: bold;
text-decoration: underline;
}
.reveal pre code {
overflow: hidden !important;
font-family: monospace !important;
font-family: Courier, 'Courier New', monospace !important;
}
/* SECTION 6: more reveal.js specific additions by @skypanther */
ul, ol, div, p {
visibility: visible;
position: static;
@@ -105,8 +71,6 @@ ul, ol, div, p {
overflow: visible;
display: block;
text-align: center;
-webkit-perspective: none;
-moz-perspective: none;
-ms-perspective: none;
@@ -117,23 +81,19 @@ ul, ol, div, p {
-ms-perspective-origin: 50% 50%;
perspective-origin: 50% 50%;
}
.reveal .slides section {
.reveal .slides section {
page-break-after: always !important;
visibility: visible !important;
position: relative !important;
width: 100% !important;
height: 229mm !important;
min-height: 229mm !important;
display: block !important;
overflow: hidden !important;
position: relative !important;
left: 0 !important;
top: 0 !important;
margin: 0 !important;
padding: 2cm 2cm 0 2cm !important;
padding: 0 !important;
box-sizing: border-box !important;
min-height: 1px;
opacity: 1 !important;
@@ -147,6 +107,7 @@ ul, ol, div, p {
-ms-transform: none !important;
transform: none !important;
}
.reveal section.stack {
margin: 0 !important;
padding: 0 !important;
@@ -154,37 +115,46 @@ ul, ol, div, p {
height: auto !important;
min-height: auto !important;
}
.reveal .absolute-element {
margin-left: 2.2cm;
margin-top: 1.8cm;
}
.reveal section .fragment {
opacity: 1 !important;
visibility: visible !important;
-webkit-transform: none !important;
-moz-transform: none !important;
-ms-transform: none !important;
transform: none !important;
}
.reveal section .slide-background {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 0;
}
.reveal section>* {
position: relative;
z-index: 1;
}
.reveal img {
box-shadow: none;
}
.reveal .roll {
overflow: visible;
line-height: 1em;
}
.reveal small a {
font-size: 16pt !important;
/* Slide backgrounds are placed inside of their slide when exporting to PDF */
.reveal section .slide-background {
display: block !important;
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: -1;
}
/* All elements should be above the slide-background */
.reveal section>* {
position: relative;
z-index: 1;
}
/* Display slide speaker notes when 'showNotes' is enabled */
.reveal .speaker-notes-pdf {
display: block;
width: 100%;
max-height: none;
left: auto;
top: auto;
z-index: 100;
}
/* Display slide numbers when 'slideNumber' is enabled */
.reveal .slide-number-pdf {
display: block;
position: absolute;
font-size: 14px;
}

File diff suppressed because it is too large Load Diff

7
css/reveal.min.css vendored

File diff suppressed because one or more lines are too long

1379
css/reveal.scss Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,11 +2,9 @@
Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceding: https://github.com/hakimel/reveal.js#full-setup
## Creating a Theme
To create your own theme, start by duplicating any ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source) and adding it to the compilation list in the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js).
To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled by Grunt from Sass to CSS (see the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js)) when you run `grunt css-themes`.
Each theme file does four things in the following order:
@@ -17,7 +15,7 @@ Shared utility functions.
Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3.
3. **Override**
This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding full selectors with hardcoded styles.
This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please.
4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)**
The template theme file which will generate final CSS output based on the currently defined variables.

View File

@@ -1,16 +1,10 @@
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Beige theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@font-face {
font-family: 'League Gothic';
src: url("../../lib/font/league_gothic-webfont.eot");
src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
font-weight: normal;
font-style: normal; }
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
@@ -27,15 +21,19 @@ body {
.reveal {
font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
color: #333333; }
font-weight: normal;
color: #333; }
::selection {
color: white;
color: #fff;
background: rgba(79, 64, 28, 0.99);
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
@@ -46,29 +44,177 @@ body {
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #333333;
color: #333;
font-family: "League Gothic", Impact, sans-serif;
line-height: 0.9em;
letter-spacing: 0.02em;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
text-transform: uppercase;
text-shadow: none; }
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
.reveal a {
color: #8b743d;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:not(.image):hover {
.reveal a:hover {
color: #c0a86e;
text-shadow: none;
border: none; }
@@ -83,13 +229,17 @@ body {
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #333333;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
border: 4px solid #333;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -99,32 +249,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #8b743d; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #8b743d; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #8b743d; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #8b743d; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #c0a86e; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #c0a86e; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #c0a86e; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #c0a86e; }
/*********************************************
@@ -137,6 +287,4 @@ body {
background: #8b743d;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

286
css/theme/black.css Normal file
View File

@@ -0,0 +1,286 @@
/**
* Black theme for reveal.js. This is the opposite of the 'white' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
*/
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
color: #222; }
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #222;
background-color: #222; }
.reveal {
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-size: 38px;
font-weight: normal;
color: #fff; }
::selection {
color: #fff;
background: #bee4fd;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #fff;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-weight: 600;
line-height: 1.2;
letter-spacing: normal;
text-transform: uppercase;
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
font-size: 2.5em; }
.reveal h2 {
font-size: 1.6em; }
.reveal h3 {
font-size: 1.3em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a {
color: #42affa;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:hover {
color: #8dcffc;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #068de9; }
/*********************************************
* IMAGES
*********************************************/
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #42affa;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #42affa; }
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #42affa; }
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #42affa; }
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #42affa; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #8dcffc; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #8dcffc; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #8dcffc; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #8dcffc; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #42affa;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

309
css/theme/blood.css Normal file
View File

@@ -0,0 +1,309 @@
/**
* Blood theme for reveal.js
* Author: Walther http://github.com/Walther
*
* Designed to be used with highlight.js theme
* "monokai_sublime.css" available from
* https://github.com/isagalaev/highlight.js/
*
* For other themes, change $codeBackground accordingly.
*
*/
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #222;
background-color: #222; }
.reveal {
font-family: Ubuntu, "sans-serif";
font-size: 36px;
font-weight: normal;
color: #eee; }
::selection {
color: #fff;
background: #a23;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee;
font-family: Ubuntu, "sans-serif";
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
text-transform: uppercase;
text-shadow: 2px 2px 2px #222;
word-wrap: break-word; }
.reveal h1 {
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a {
color: #a23;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:hover {
color: #dd5566;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #6a1520; }
/*********************************************
* IMAGES
*********************************************/
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #eee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #a23;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #a23; }
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #a23; }
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #a23; }
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #a23; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #dd5566; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #dd5566; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #dd5566; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #dd5566; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #a23;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
.reveal p {
font-weight: 300;
text-shadow: 1px 1px #222; }
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
font-weight: 700; }
.reveal p code {
background-color: #23241f;
display: inline-block;
border-radius: 7px; }
.reveal small code {
vertical-align: baseline; }

View File

@@ -1,142 +0,0 @@
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Default theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@font-face {
font-family: 'League Gothic';
src: url("../../lib/font/league_gothic-webfont.eot");
src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
font-weight: normal;
font-style: normal; }
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #1c1e20;
background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background-color: #2b2b2b; }
.reveal {
font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
color: #eeeeee; }
::selection {
color: white;
background: #ff5e99;
text-shadow: none; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eeeeee;
font-family: "League Gothic", Impact, sans-serif;
line-height: 0.9em;
letter-spacing: 0.02em;
text-transform: uppercase;
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
.reveal h1 {
text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
color: #13daec;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:not(.image):hover {
color: #71e9f4;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #0d99a5; }
/*********************************************
* IMAGES
*********************************************/
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #eeeeee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #13daec;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: #13daec; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: #13daec; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: #13daec; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: #13daec; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #71e9f4; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #71e9f4; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #71e9f4; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #71e9f4; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #13daec;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

292
css/theme/league.css Normal file
View File

@@ -0,0 +1,292 @@
/**
* League theme for reveal.js.
*
* This was the default theme pre-3.0.0.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #1c1e20;
background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background-color: #2b2b2b; }
.reveal {
font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: normal;
color: #eee; }
::selection {
color: #fff;
background: #FF5E99;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
text-transform: uppercase;
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
word-wrap: break-word; }
.reveal h1 {
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a {
color: #13DAEC;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:hover {
color: #71e9f4;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #0d99a5; }
/*********************************************
* IMAGES
*********************************************/
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #eee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #13DAEC;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #13DAEC; }
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #13DAEC; }
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #13DAEC; }
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #13DAEC; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #71e9f4; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #71e9f4; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #71e9f4; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #71e9f4; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #13DAEC;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -1,15 +1,9 @@
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized Dark theme for reveal.js.
* Author: Achim Staebler
*/
@font-face {
font-family: 'League Gothic';
src: url("../../lib/font/league_gothic-webfont.eot");
src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
font-weight: normal;
font-style: normal; }
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized colors by Ethan Schoonover
*/
@@ -27,15 +21,19 @@ body {
.reveal {
font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
font-weight: normal;
color: #93a1a1; }
::selection {
color: white;
color: #fff;
background: #d33682;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
@@ -48,27 +46,175 @@ body {
margin: 0 0 20px 0;
color: #eee8d5;
font-family: "League Gothic", Impact, sans-serif;
line-height: 0.9em;
letter-spacing: 0.02em;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
text-transform: uppercase;
text-shadow: none; }
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
.reveal a {
color: #268bd2;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:not(.image):hover {
.reveal a:hover {
color: #78b9e6;
text-shadow: none;
border: none; }
@@ -84,12 +230,16 @@ body {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #93a1a1;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -99,32 +249,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #268bd2; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #268bd2; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #268bd2; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #268bd2; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #78b9e6; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #78b9e6; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #78b9e6; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #78b9e6; }
/*********************************************
@@ -137,6 +287,4 @@ body {
background: #268bd2;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -1,29 +1,33 @@
@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
/**
* Black theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #111111;
background-color: #111111; }
background: #111;
background-color: #111; }
.reveal {
font-family: "Open Sans", sans-serif;
font-size: 30px;
font-weight: 200;
letter-spacing: -0.02em;
color: #eeeeee; }
font-weight: normal;
color: #eee; }
::selection {
color: white;
color: #fff;
background: #e7ad52;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
@@ -34,29 +38,177 @@ body {
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eeeeee;
color: #eee;
font-family: "Montserrat", Impact, sans-serif;
line-height: 0.9em;
font-weight: normal;
line-height: 1.2;
letter-spacing: -0.03em;
text-transform: none;
text-shadow: none; }
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
.reveal a {
color: #e7ad52;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:not(.image):hover {
.reveal a:hover {
color: #f3d7ac;
text-shadow: none;
border: none; }
@@ -71,13 +223,17 @@ body {
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #eeeeee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
border: 4px solid #eee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -87,32 +243,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #e7ad52; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #e7ad52; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #e7ad52; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #e7ad52; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #f3d7ac; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #f3d7ac; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #f3d7ac; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #f3d7ac; }
/*********************************************
@@ -125,6 +281,4 @@ body {
background: #e7ad52;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -4,28 +4,32 @@
*
* This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed.
*/
.reveal a:not(.image) {
.reveal a {
line-height: 1.3em; }
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #f0f1eb;
background-color: #f0f1eb; }
background: #F0F1EB;
background-color: #F0F1EB; }
.reveal {
font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
color: black; }
font-weight: normal;
color: #000; }
::selection {
color: white;
background: #26351c;
color: #fff;
background: #26351C;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
@@ -36,29 +40,177 @@ body {
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #383d3d;
color: #383D3D;
font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
line-height: 0.9em;
letter-spacing: 0.02em;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
text-transform: none;
text-shadow: none; }
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
color: #51483d;
.reveal a {
color: #51483D;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:not(.image):hover {
.reveal a:hover {
color: #8b7c69;
text-shadow: none;
border: none; }
@@ -73,48 +225,52 @@ body {
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid black;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
border: 4px solid #000;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #51483d;
border-color: #51483D;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: #51483d; }
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #51483D; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: #51483d; }
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #51483D; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: #51483d; }
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #51483D; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: #51483d; }
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #51483D; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #8b7c69; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #8b7c69; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #8b7c69; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #8b7c69; }
/*********************************************
@@ -124,9 +280,7 @@ body {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #51483d;
background: #51483D;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -1,5 +1,3 @@
@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* A simple theme for reveal.js presentations, similar
* to the default theme. The accent color is darkblue.
@@ -7,25 +5,31 @@
* This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
* reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: white;
background-color: white; }
background: #fff;
background-color: #fff; }
.reveal {
font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
color: black; }
font-weight: normal;
color: #000; }
::selection {
color: white;
color: #fff;
background: rgba(0, 0, 0, 0.99);
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
@@ -36,29 +40,177 @@ body {
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: black;
color: #000;
font-family: "News Cycle", Impact, sans-serif;
line-height: 0.9em;
letter-spacing: 0.02em;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
text-transform: none;
text-shadow: none; }
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
color: darkblue;
.reveal a {
color: #00008B;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:not(.image):hover {
.reveal a:hover {
color: #0000f1;
text-shadow: none;
border: none; }
@@ -73,48 +225,52 @@ body {
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid black;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
border: 4px solid #000;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: darkblue;
border-color: #00008B;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: darkblue; }
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #00008B; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: darkblue; }
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #00008B; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: darkblue; }
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #00008B; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: darkblue; }
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #00008B; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #0000f1; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #0000f1; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #0000f1; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #0000f1; }
/*********************************************
@@ -124,9 +280,7 @@ body {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: darkblue;
background: #00008B;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -1,11 +1,11 @@
@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
/**
* Sky theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
.reveal a:not(.image) {
@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
.reveal a {
line-height: 1.3em; }
/*********************************************
@@ -24,15 +24,19 @@ body {
.reveal {
font-family: "Open Sans", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
color: #333333; }
font-weight: normal;
color: #333; }
::selection {
color: white;
color: #fff;
background: #134674;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
@@ -43,29 +47,177 @@ body {
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #333333;
color: #333;
font-family: "Quicksand", sans-serif;
line-height: 0.9em;
font-weight: normal;
line-height: 1.2;
letter-spacing: -0.08em;
text-transform: uppercase;
text-shadow: none; }
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
.reveal a {
color: #3b759e;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:not(.image):hover {
.reveal a:hover {
color: #74a7cb;
text-shadow: none;
border: none; }
@@ -80,13 +232,17 @@ body {
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #333333;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
border: 4px solid #333;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -96,32 +252,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #3b759e; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #3b759e; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #3b759e; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #3b759e; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #74a7cb; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #74a7cb; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #74a7cb; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #74a7cb; }
/*********************************************
@@ -134,6 +290,4 @@ body {
background: #3b759e;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -1,15 +1,9 @@
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized Light theme for reveal.js.
* Author: Achim Staebler
*/
@font-face {
font-family: 'League Gothic';
src: url("../../lib/font/league_gothic-webfont.eot");
src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
font-weight: normal;
font-style: normal; }
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized colors by Ethan Schoonover
*/
@@ -27,15 +21,19 @@ body {
.reveal {
font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
font-weight: normal;
color: #657b83; }
::selection {
color: white;
color: #fff;
background: #d33682;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
@@ -48,27 +46,175 @@ body {
margin: 0 0 20px 0;
color: #586e75;
font-family: "League Gothic", Impact, sans-serif;
line-height: 0.9em;
letter-spacing: 0.02em;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
text-transform: uppercase;
text-shadow: none; }
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
font-size: 3.77em; }
.reveal h2 {
font-size: 2.11em; }
.reveal h3 {
font-size: 1.55em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
.reveal a {
color: #268bd2;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:not(.image):hover {
.reveal a:hover {
color: #78b9e6;
text-shadow: none;
border: none; }
@@ -84,12 +230,16 @@ body {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #657b83;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
@@ -99,32 +249,32 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #268bd2; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #268bd2; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #268bd2; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #268bd2; }
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #78b9e6; }
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #78b9e6; }
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #78b9e6; }
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #78b9e6; }
/*********************************************
@@ -137,6 +287,4 @@ body {
background: #268bd2;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -13,18 +13,7 @@
// Include theme-specific fonts
@font-face {
font-family: 'League Gothic';
src: url('../../lib/font/league_gothic-webfont.eot');
src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
url('../../lib/font/league_gothic-webfont.woff') format('woff'),
url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);

View File

@@ -0,0 +1,49 @@
/**
* Black theme for reveal.js. This is the opposite of the 'white' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
*/
// Default mixins and settings -----------------
@import "../template/mixins";
@import "../template/settings";
// ---------------------------------------------
// Include theme-specific fonts
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
// Override theme settings (see ../template/settings.scss)
$backgroundColor: #222;
$mainColor: #fff;
$headingColor: #fff;
$mainFontSize: 38px;
$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingTextShadow: none;
$headingLetterSpacing: normal;
$headingTextTransform: uppercase;
$headingFontWeight: 600;
$linkColor: #42affa;
$linkColorHover: lighten( $linkColor, 15% );
$selectionBackgroundColor: lighten( $linkColor, 25% );
$heading1Size: 2.5em;
$heading2Size: 1.6em;
$heading3Size: 1.3em;
$heading4Size: 1.0em;
section.has-light-background {
&, h1, h2, h3, h4, h5, h6 {
color: #222;
}
}
// Theme template ------------------------------
@import "../template/theme";
// ---------------------------------------------

View File

@@ -0,0 +1,79 @@
/**
* Blood theme for reveal.js
* Author: Walther http://github.com/Walther
*
* Designed to be used with highlight.js theme
* "monokai_sublime.css" available from
* https://github.com/isagalaev/highlight.js/
*
* For other themes, change $codeBackground accordingly.
*
*/
// Default mixins and settings -----------------
@import "../template/mixins";
@import "../template/settings";
// ---------------------------------------------
// Include theme-specific fonts
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
// Colors used in the theme
$blood: #a23;
$coal: #222;
$codeBackground: #23241f;
$backgroundColor: $coal;
// Main text
$mainFont: Ubuntu, 'sans-serif';
$mainFontSize: 36px;
$mainColor: #eee;
// Headings
$headingFont: Ubuntu, 'sans-serif';
$headingTextShadow: 2px 2px 2px $coal;
// h1 shadow, borrowed humbly from
// (c) Default theme by Hakim El Hattab
$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
// Links
$linkColor: $blood;
$linkColorHover: lighten( $linkColor, 20% );
// Text selection
$selectionBackgroundColor: $blood;
$selectionColor: #fff;
// Theme template ------------------------------
@import "../template/theme";
// ---------------------------------------------
// some overrides after theme template import
.reveal p {
font-weight: 300;
text-shadow: 1px 1px $coal;
}
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
font-weight: 700;
}
.reveal p code {
background-color: $codeBackground;
display: inline-block;
border-radius: 7px;
}
.reveal small code {
vertical-align: baseline;
}

View File

@@ -1,5 +1,7 @@
/**
* Default theme for reveal.js.
* League theme for reveal.js.
*
* This was the default theme pre-3.0.0.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@@ -13,21 +15,11 @@
// Include theme-specific fonts
@font-face {
font-family: 'League Gothic';
src: url('../../lib/font/league_gothic-webfont.eot');
src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
url('../../lib/font/league_gothic-webfont.woff') format('woff'),
url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
// Override theme settings (see ../template/settings.scss)
$headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2);
$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
// Background generator

View File

@@ -12,18 +12,7 @@
// Include theme-specific fonts
@font-face {
font-family: 'League Gothic';
src: url('../../lib/font/league_gothic-webfont.eot');
src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
url('../../lib/font/league_gothic-webfont.woff') format('woff'),
url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**

View File

@@ -25,7 +25,7 @@ $linkColor: #51483D;
$linkColorHover: lighten( $linkColor, 20% );
$selectionBackgroundColor: #26351C;
.reveal a:not(.image) {
.reveal a {
line-height: 1.3em;
}

View File

@@ -30,7 +30,7 @@ $linkColorHover: lighten( $linkColor, 20% );
$selectionBackgroundColor: #134674;
// Fix links so they are not cut off
.reveal a:not(.image) {
.reveal a {
line-height: 1.3em;
}

View File

@@ -12,18 +12,7 @@
// Include theme-specific fonts
@font-face {
font-family: 'League Gothic';
src: url('../../lib/font/league_gothic-webfont.eot');
src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
url('../../lib/font/league_gothic-webfont.woff') format('woff'),
url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);

View File

@@ -0,0 +1,49 @@
/**
* White theme for reveal.js. This is the opposite of the 'black' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
*/
// Default mixins and settings -----------------
@import "../template/mixins";
@import "../template/settings";
// ---------------------------------------------
// Include theme-specific fonts
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
// Override theme settings (see ../template/settings.scss)
$backgroundColor: #fff;
$mainColor: #222;
$headingColor: #222;
$mainFontSize: 38px;
$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingTextShadow: none;
$headingLetterSpacing: normal;
$headingTextTransform: uppercase;
$headingFontWeight: 600;
$linkColor: #2a76dd;
$linkColorHover: lighten( $linkColor, 15% );
$selectionBackgroundColor: lighten( $linkColor, 25% );
$heading1Size: 2.5em;
$heading2Size: 1.6em;
$heading3Size: 1.3em;
$heading4Size: 1.0em;
section.has-dark-background {
&, h1, h2, h3, h4, h5, h6 {
color: #fff;
}
}
// Theme template ------------------------------
@import "../template/theme";
// ---------------------------------------------

View File

@@ -9,16 +9,25 @@ $mainFont: 'Lato', sans-serif;
$mainFontSize: 36px;
$mainColor: #eee;
// Vertical spacing between blocks of text
$blockMargin: 20px;
// Headings
$headingMargin: 0 0 20px 0;
$headingMargin: 0 0 $blockMargin 0;
$headingFont: 'League Gothic', Impact, sans-serif;
$headingColor: #eee;
$headingLineHeight: 0.9em;
$headingLetterSpacing: 0.02em;
$headingLineHeight: 1.2;
$headingLetterSpacing: normal;
$headingTextTransform: uppercase;
$headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2);
$headingTextShadow: none;
$headingFontWeight: normal;
$heading1TextShadow: $headingTextShadow;
$heading1Size: 3.77em;
$heading2Size: 2.11em;
$heading3Size: 1.55em;
$heading4Size: 1.00em;
// Links and actions
$linkColor: #13DAEC;
$linkColorHover: lighten( $linkColor, 20% );

View File

@@ -12,8 +12,7 @@ body {
.reveal {
font-family: $mainFont;
font-size: $mainFontSize;
font-weight: 200;
letter-spacing: -0.02em;
font-weight: normal;
color: $mainColor;
}
@@ -23,6 +22,12 @@ body {
text-shadow: none;
}
.reveal .slides>section,
.reveal .slides>section>section {
line-height: 1.3;
font-weight: inherit;
}
/*********************************************
* HEADERS
*********************************************/
@@ -37,33 +42,207 @@ body {
color: $headingColor;
font-family: $headingFont;
font-weight: $headingFontWeight;
line-height: $headingLineHeight;
letter-spacing: $headingLetterSpacing;
text-transform: $headingTextTransform;
text-shadow: $headingTextShadow;
word-wrap: break-word;
}
.reveal h1 {font-size: $heading1Size; }
.reveal h2 {font-size: $heading2Size; }
.reveal h3 {font-size: $heading3Size; }
.reveal h4 {font-size: $heading4Size; }
.reveal h1 {
text-shadow: $heading1TextShadow;
}
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: $blockMargin 0;
line-height: 1.3;
}
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%;
}
.reveal strong,
.reveal b {
font-weight: bold;
}
.reveal em {
font-style: italic;
}
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em;
}
.reveal ol {
list-style-type: decimal;
}
.reveal ul {
list-style-type: disc;
}
.reveal ul ul {
list-style-type: square;
}
.reveal ul ul ul {
list-style-type: circle;
}
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px;
}
.reveal dt {
font-weight: bold;
}
.reveal dd {
margin-left: 40px;
}
.reveal q,
.reveal blockquote {
quotes: none;
}
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: $blockMargin auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0,0,0,0.2);
}
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block;
}
.reveal q {
font-style: italic;
}
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: $blockMargin auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0,0,0,0.3);
}
.reveal code {
font-family: monospace;
}
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
}
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0;
}
.reveal table th {
font-weight: bold;
}
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid;
}
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center;
}
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right;
}
.reveal table tr:last-child td {
border-bottom: none;
}
.reveal sup {
vertical-align: super;
}
.reveal sub {
vertical-align: sub;
}
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top;
}
.reveal small * {
vertical-align: top;
}
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
.reveal a {
color: $linkColor;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease;
}
.reveal a:not(.image):hover {
.reveal a:hover {
color: $linkColorHover;
text-shadow: none;
@@ -86,14 +265,19 @@ body {
border: 4px solid $mainColor;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear;
}
.reveal section img.plain {
border: 0;
box-shadow: none;
}
.reveal a img {
-webkit-transition: all .15s linear;
-moz-transition: all .15s linear;
transition: all .15s linear;
}
.reveal a:hover img {
background: rgba(255,255,255,0.2);
border-color: $linkColor;
@@ -106,39 +290,39 @@ body {
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: $linkColor;
}
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: $linkColor;
}
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: $linkColor;
}
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: $linkColor;
}
.reveal .controls div.navigate-left.enabled:hover {
.reveal .controls .navigate-left.enabled:hover {
border-right-color: $linkColorHover;
}
.reveal .controls div.navigate-right.enabled:hover {
.reveal .controls .navigate-right.enabled:hover {
border-left-color: $linkColorHover;
}
.reveal .controls div.navigate-up.enabled:hover {
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: $linkColorHover;
}
.reveal .controls div.navigate-down.enabled:hover {
.reveal .controls .navigate-down.enabled:hover {
border-top-color: $linkColorHover;
}
@@ -155,8 +339,6 @@ body {
-webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
-moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
-ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
-o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
}

286
css/theme/white.css Normal file
View File

@@ -0,0 +1,286 @@
/**
* White theme for reveal.js. This is the opposite of the 'black' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
*/
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
color: #fff; }
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #fff;
background-color: #fff; }
.reveal {
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-size: 38px;
font-weight: normal;
color: #222; }
::selection {
color: #fff;
background: #98bdef;
text-shadow: none; }
.reveal .slides > section,
.reveal .slides > section > section {
line-height: 1.3;
font-weight: inherit; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #222;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-weight: 600;
line-height: 1.2;
letter-spacing: normal;
text-transform: uppercase;
text-shadow: none;
word-wrap: break-word; }
.reveal h1 {
font-size: 2.5em; }
.reveal h2 {
font-size: 1.6em; }
.reveal h3 {
font-size: 1.3em; }
.reveal h4 {
font-size: 1em; }
.reveal h1 {
text-shadow: none; }
/*********************************************
* OTHER
*********************************************/
.reveal p {
margin: 20px 0;
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
.reveal ol {
list-style-type: decimal; }
.reveal ul {
list-style-type: disc; }
.reveal ul ul {
list-style-type: square; }
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
.reveal dt {
font-weight: bold; }
.reveal dd {
margin-left: 40px; }
.reveal q,
.reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
width: 70%;
margin: 20px auto;
padding: 5px;
font-style: italic;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
font-style: italic; }
.reveal pre {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
text-align: left;
font-size: 0.55em;
font-family: monospace;
line-height: 1.2em;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal; }
.reveal table {
margin: auto;
border-collapse: collapse;
border-spacing: 0; }
.reveal table th {
font-weight: bold; }
.reveal table th,
.reveal table td {
text-align: left;
padding: 0.2em 0.5em 0.2em 0.5em;
border-bottom: 1px solid; }
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
.reveal sub {
vertical-align: sub; }
.reveal small {
display: inline-block;
font-size: 0.6em;
line-height: 1.2em;
vertical-align: top; }
.reveal small * {
vertical-align: top; }
/*********************************************
* LINKS
*********************************************/
.reveal a {
color: #2a76dd;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
.reveal a:hover {
color: #6ca0e8;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #1a53a1; }
/*********************************************
* IMAGES
*********************************************/
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #222;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
.reveal section img.plain {
border: 0;
box-shadow: none; }
.reveal a img {
-webkit-transition: all 0.15s linear;
-moz-transition: all 0.15s linear;
transition: all 0.15s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #2a76dd;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
border-right-color: #2a76dd; }
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
border-left-color: #2a76dd; }
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
border-bottom-color: #2a76dd; }
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
border-top-color: #2a76dd; }
.reveal .controls .navigate-left.enabled:hover {
border-right-color: #6ca0e8; }
.reveal .controls .navigate-right.enabled:hover {
border-left-color: #6ca0e8; }
.reveal .controls .navigate-up.enabled:hover {
border-bottom-color: #6ca0e8; }
.reveal .controls .navigate-down.enabled:hover {
border-top-color: #6ca0e8; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #2a76dd;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

View File

@@ -4,25 +4,29 @@
<head>
<meta charset="utf-8">
<title>reveal.js - The HTML Presentation Framework</title>
<title>reveal.js The HTML Presentation Framework</title>
<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
<meta name="author" content="Hakim El Hattab">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="css/reveal.min.css">
<link rel="stylesheet" href="css/theme/default.css" id="theme">
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css" id="theme">
<!-- For syntax highlighting -->
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- If the query includes 'print-pdf', use the PDF print sheet -->
<!-- Printing and PDF exports -->
<script>
document.write( '<link rel="stylesheet" href="css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
@@ -38,52 +42,40 @@
<div class="slides">
<section>
<h1>Reveal.js</h1>
<h3>HTML Presentations Made Easy</h3>
<h3>The HTML Presentation Framework</h3>
<p>
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small>
</p>
</section>
<section>
<h2>Heads Up</h2>
<h2>Hello There</h2>
<p>
reveal.js is a framework for easily creating beautiful presentations using HTML. You'll need a browser with
support for CSS 3D transforms to see it in its full glory.
reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do.
</p>
<aside class="notes">
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
</aside>
</section>
<!-- Example of nested vertical slides -->
<section>
<section>
<h2>Vertical Slides</h2>
<p>
Slides can be nested inside of other slides,
try pressing <a href="#" class="navigate-down">down</a>.
</p>
<a href="#" class="image navigate-down">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
<p>Slides can be nested inside of each other.</p>
<p>Use the <em>Space</em> key to navigate through all slides.</p>
<br>
<a href="#" class="navigate-down">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section>
<h2>Basement Level 1</h2>
<p>Press down or up to navigate.</p>
<p>Nested slides are useful for adding additional detail underneath a high level horizontal slide.</p>
</section>
<section>
<h2>Basement Level 2</h2>
<p>Cornify</p>
<a class="test" href="http://cornify.com">
<img width="280" height="326" src="https://s3.amazonaws.com/hakim-static/reveal-js/cornify.gif" alt="Unicorn">
</a>
</section>
<section>
<h2>Basement Level 3</h2>
<p>That's it, time to go back up.</p>
<a href="#/2" class="image">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(180deg);">
<br>
<a href="#/2">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="transform: rotate(180deg); -webkit-transform: rotate(180deg);">
</a>
</section>
</section>
@@ -91,7 +83,7 @@
<section>
<h2>Slides</h2>
<p>
Not a coder? No problem. There's a fully-featured visual editor for authoring these, try it out at <a href="http://slid.es" target="_blank">http://slid.es</a>.
Not a coder? Not a problem. There's a fully-featured visual editor for authoring these, try it out at <a href="http://slides.com" target="_blank">http://slides.com</a>.
</p>
</section>
@@ -106,14 +98,153 @@
</section>
<section>
<h2>Works in Mobile Safari</h2>
<h2>Touch Optimized</h2>
<p>
Try it out! You can swipe through the slides and pinch your way to the overview.
Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides.
</p>
</section>
<section data-markdown>
<script type="text/template">
## Markdown support
Write content using inline or external Markdown.
Instructions and more info available in the [readme](https://github.com/hakimel/reveal.js#markdown).
```
<section data-markdown>
## Markdown support
Write content using inline or external Markdown.
Instructions and more info available in the [readme](https://github.com/hakimel/reveal.js#markdown).
</section>
```
</script>
</section>
<section>
<section id="fragments">
<h2>Fragments</h2>
<p>Hit the next arrow...</p>
<p class="fragment">... to step through ...</p>
<p><span class="fragment">... a</span> <span class="fragment">fragmented</span> <span class="fragment">slide.</span></p>
<aside class="notes">
This slide has fragments which are also stepped through in the notes window.
</aside>
</section>
<section>
<h2>Fragment Styles</h2>
<p>There's different types of fragments, like:</p>
<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment fade-out">fade-out</p>
<p class="fragment current-visible">current-visible</p>
<p class="fragment highlight-red">highlight-red</p>
<p class="fragment highlight-blue">highlight-blue</p>
</section>
</section>
<section id="transitions">
<h2>Transition Styles</h2>
<p>
You can select from different transitions, like: <br>
<a href="?transition=none#/transitions">None</a> -
<a href="?transition=fade#/transitions">Fade</a> -
<a href="?transition=slide#/transitions">Slide</a> -
<a href="?transition=convex#/transitions">Convex</a> -
<a href="?transition=concave#/transitions">Concave</a> -
<a href="?transition=zoom#/transitions">Zoom</a>
</p>
</section>
<section id="themes">
<h2>Themes</h2>
<p>
reveal.js comes with a few themes built in: <br>
<!-- Hacks to swap themes after the page has loaded. Not flexible and only intended for the reveal.js demo deck. -->
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/black.css'); return false;">Black (default)</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/white.css'); return false;">White</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/league.css'); return false;">League</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/sky.css'); return false;">Sky</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/beige.css'); return false;">Beige</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/simple.css'); return false;">Simple</a> <br>
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/serif.css'); return false;">Serif</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/blood.css'); return false;">Blood</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/night.css'); return false;">Night</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/moon.css'); return false;">Moon</a> -
<a href="#" onclick="document.getElementById('theme').setAttribute('href','css/theme/solarized.css'); return false;">Solarized</a>
</p>
</section>
<section>
<h2>Marvelous Unordered List</h2>
<section data-background="#dddddd">
<h2>Slide Backgrounds</h2>
<p>
Set <code>data-background="#dddddd"</code> on a slide to change the background color. All CSS color formats are supported.
</p>
<a href="#" class="navigate-down">
<img width="178" height="238" data-src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/image-placeholder.png">
<h2>Image Backgrounds</h2>
<pre><code class="hljs">&lt;section data-background="image.png"&gt;</code></pre>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/image-placeholder.png" data-background-repeat="repeat" data-background-size="100px">
<h2>Tiled Backgrounds</h2>
<pre><code class="hljs" style="word-wrap: break-word;">&lt;section data-background="image.png" data-background-repeat="repeat" data-background-size="100px"&gt;</code></pre>
</section>
<section data-background-video="https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.mp4,https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.webm" data-background-color="#000000">
<div style="background-color: rgba(0, 0, 0, 0.9); color: #fff; padding: 20px;">
<h2>Video Backgrounds</h2>
<pre><code class="hljs" style="word-wrap: break-word;">&lt;section data-background-video="video.mp4,video.webm"&gt;</code></pre>
</div>
</section>
<section data-background="http://i.giphy.com/90F8aUepslB84.gif">
<h2>... and GIFs!</h2>
</section>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="zoom">
<h2>Background Transitions</h2>
<p>
Different background transitions are available via the backgroundTransition option. This one's called "zoom".
</p>
<pre><code class="hljs">Reveal.configure({ backgroundTransition: 'zoom' })</code></pre>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="zoom">
<h2>Background Transitions</h2>
<p>
You can override background transitions per-slide.
</p>
<pre><code class="hljs" style="word-wrap: break-word;">&lt;section data-background-transition="zoom"&gt;</code></pre>
</section>
<section>
<h2>Pretty Code</h2>
<pre><code class="hljs" data-trim contenteditable>
function linkify( selector ) {
if( supports3DTransforms ) {
var nodes = document.querySelectorAll( selector );
for( var i = 0, len = nodes.length; i &lt; len; i++ ) {
var node = nodes[i];
if( !node.className ) {
node.className += ' roll';
}
}
}
}
</code></pre>
<p>Code syntax highlighting courtesy of <a href="http://softwaremaniacs.org/soft/highlight/en/description/">highlight.js</a>.</p>
</section>
<section>
<h2>Marvelous List</h2>
<ul>
<li>No order here</li>
<li>Or here</li>
@@ -131,109 +262,34 @@
</ol>
</section>
<section data-markdown>
<script type="text/template">
## Markdown support
For those of you who like that sort of thing. Instructions and a bit more info available [here](https://github.com/hakimel/reveal.js#markdown).
```
<section data-markdown>
## Markdown support
For those of you who like that sort of thing.
Instructions and a bit more info available [here](https://github.com/hakimel/reveal.js#markdown).
</section>
```
</script>
</section>
<section id="transitions">
<h2>Transition Styles</h2>
<p>
You can select from different transitions, like: <br>
<a href="?transition=cube#/transitions">Cube</a> -
<a href="?transition=page#/transitions">Page</a> -
<a href="?transition=concave#/transitions">Concave</a> -
<a href="?transition=zoom#/transitions">Zoom</a> -
<a href="?transition=linear#/transitions">Linear</a> -
<a href="?transition=fade#/transitions">Fade</a> -
<a href="?transition=none#/transitions">None</a> -
<a href="?#/transitions">Default</a>
</p>
</section>
<section id="themes">
<h2>Themes</h2>
<p>
Reveal.js comes with a few themes built in: <br>
<a href="?theme=sky#/themes">Sky</a> -
<a href="?theme=beige#/themes">Beige</a> -
<a href="?theme=simple#/themes">Simple</a> -
<a href="?theme=serif#/themes">Serif</a> -
<a href="?theme=night#/themes">Night</a> -
<a href="?#/themes">Default</a>
</p>
<p>
<small>
* Theme demos are loaded after the presentation which leads to flicker. In production you should load your theme in the <code>&lt;head&gt;</code> using a <code>&lt;link&gt;</code>.
</small>
</p>
</section>
<section>
<h2>Global State</h2>
<p>
Set <code>data-state="something"</code> on a slide and <code>"something"</code>
will be added as a class to the document element when the slide is open. This lets you
apply broader style changes, like switching the background.
</p>
</section>
<section data-state="customevent">
<h2>Custom Events</h2>
<p>
Additionally custom events can be triggered on a per slide basis by binding to the <code>data-state</code> name.
</p>
<pre><code data-trim contenteditable style="font-size: 18px; margin-top: 20px;">
Reveal.addEventListener( 'customevent', function() {
console.log( '"customevent" has fired' );
} );
</code></pre>
</section>
<section>
<section data-background="#007777">
<h2>Slide Backgrounds</h2>
<p>
Set <code>data-background="#007777"</code> on a slide to change the full page background to the given color. All CSS color formats are supported.
</p>
<a href="#" class="image navigate-down">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png">
<h2>Image Backgrounds</h2>
<pre><code>&lt;section data-background="image.png"&gt;</code></pre>
</section>
<section data-background="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" data-background-repeat="repeat" data-background-size="100px">
<h2>Repeated Image Backgrounds</h2>
<pre><code style="word-wrap: break-word;">&lt;section data-background="image.png" data-background-repeat="repeat" data-background-size="100px"&gt;</code></pre>
</section>
</section>
<section data-transition="linear" data-background="#4d7e65" data-background-transition="slide">
<h2>Background Transitions</h2>
<p>
Pass reveal.js the <code>backgroundTransition: 'slide'</code> config argument to make backgrounds slide rather than fade.
</p>
</section>
<section data-transition="linear" data-background="#8c4738" data-background-transition="slide">
<h2>Background Transition Override</h2>
<p>
You can override background transitions per slide by using <code>data-background-transition="slide"</code>.
</p>
<h2>Tabular Tables</h2>
<table>
<thead>
<tr>
<th>Item</th>
<th>Value</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apples</td>
<td>$1</td>
<td>7</td>
</tr>
<tr>
<td>Lemonade</td>
<td>$2</td>
<td>18</td>
</tr>
<tr>
<td>Bread</td>
<td>$3</td>
<td>2</td>
</tr>
</tbody>
</table>
</section>
<section>
@@ -248,27 +304,6 @@ Reveal.addEventListener( 'customevent', function() {
</blockquote>
</section>
<section>
<h2>Pretty Code</h2>
<pre><code data-trim contenteditable>
function linkify( selector ) {
if( supports3DTransforms ) {
var nodes = document.querySelectorAll( selector );
for( var i = 0, len = nodes.length; i &lt; len; i++ ) {
var node = nodes[i];
if( !node.className ) ) {
node.className += ' roll';
}
};
}
}
</code></pre>
<p>Courtesy of <a href="http://softwaremaniacs.org/soft/highlight/en/description/">highlight.js</a>.</p>
</section>
<section>
<h2>Intergalactic Interconnections</h2>
<p>
@@ -278,69 +313,66 @@ function linkify( selector ) {
</section>
<section>
<section>
<h2>Fragmented Views</h2>
<p>Hit the next arrow...</p>
<p class="fragment">... to step through ...</p>
<ol>
<li class="fragment"><code>any type</code></li>
<li class="fragment"><em>of view</em></li>
<li class="fragment"><strong>fragments</strong></li>
</ol>
<h2>Speaker View</h2>
<p>There's a <a href="https://github.com/hakimel/reveal.js#speaker-notes">speaker view</a>. It includes a timer, preview of the upcoming slide as well as your speaker notes.</p>
<p>Press the <em>S</em> key to try it out.</p>
<aside class="notes">
This slide has fragments which are also stepped through in the notes window.
</aside>
</section>
<section>
<h2>Fragment Styles</h2>
<p>There's a few styles of fragments, like:</p>
<p class="fragment grow">grow</p>
<p class="fragment shrink">shrink</p>
<p class="fragment roll-in">roll-in</p>
<p class="fragment fade-out">fade-out</p>
<p class="fragment highlight-red">highlight-red</p>
<p class="fragment highlight-green">highlight-green</p>
<p class="fragment highlight-blue">highlight-blue</p>
</section>
</section>
<section>
<h2>Spectacular image!</h2>
<a class="image" href="http://lab.hakim.se/meny/" target="_blank">
<img width="320" height="299" src="http://s3.amazonaws.com/hakim-static/portfolio/images/meny.png" alt="Meny">
</a>
<aside class="notes">
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
</aside>
</section>
<section>
<h2>Export to PDF</h2>
<p>Presentations can be <a href="https://github.com/hakimel/reveal.js#pdf-export">exported to PDF</a>, below is an example that's been uploaded to SlideShare.</p>
<iframe id="slideshare" src="http://www.slideshare.net/slideshow/embed_code/13872948" width="455" height="356" style="margin:0;overflow:hidden;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen> </iframe>
<script>
document.getElementById('slideshare').attributeName = 'allowfullscreen';
</script>
<p>Presentations can be <a href="https://github.com/hakimel/reveal.js#pdf-export">exported to PDF</a>, here's an example:</p>
<iframe src="https://www.slideshare.net/slideshow/embed_code/42840540" width="445" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:3px solid #666; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
</section>
<section>
<h2>Global State</h2>
<p>
Set <code>data-state="something"</code> on a slide and <code>"something"</code>
will be added as a class to the document element when the slide is open. This lets you
apply broader style changes, like switching the page background.
</p>
</section>
<section data-state="customevent">
<h2>State Events</h2>
<p>
Additionally custom events can be triggered on a per slide basis by binding to the <code>data-state</code> name.
</p>
<pre><code class="javascript" data-trim contenteditable style="font-size: 18px;">
Reveal.addEventListener( 'customevent', function() {
console.log( '"customevent" has fired' );
} );
</code></pre>
</section>
<section>
<h2>Take a Moment</h2>
<p>
Press b or period on your keyboard to enter the 'paused' mode. This mode is helpful when you want to take distracting slides off the screen
during a presentation.
Press B or . on your keyboard to pause the presentation. This is helpful when you're on stage and want to take distracting slides off the screen.
</p>
</section>
<section>
<h2>Stellar Links</h2>
<h2>Much more</h2>
<ul>
<li><a href="http://slid.es">Try the online editor</a></li>
<li><a href="https://github.com/hakimel/reveal.js">Source code on GitHub</a></li>
<li><a href="http://twitter.com/hakimel">Follow me on Twitter</a></li>
<li>Right-to-left support</li>
<li><a href="https://github.com/hakimel/reveal.js#api">Extensive JavaScript API</a></li>
<li><a href="https://github.com/hakimel/reveal.js#auto-sliding">Auto-progression</a></li>
<li><a href="https://github.com/hakimel/reveal.js#parallax-background">Parallax backgrounds</a></li>
<li><a href="https://github.com/hakimel/reveal.js#keyboard-bindings">Custom keyboard bindings</a></li>
</ul>
</section>
<section>
<section style="text-align: left;">
<h1>THE END</h1>
<h3>BY Hakim El Hattab / hakim.se</h3>
<p>
- <a href="http://slides.com">Try the online editor</a> <br>
- <a href="https://github.com/hakimel/reveal.js">Source code &amp; documentation</a>
</p>
</section>
</div>
@@ -348,11 +380,11 @@ function linkify( selector ) {
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// Full list of configuration options available here:
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
@@ -360,17 +392,16 @@ function linkify( selector ) {
history: true,
center: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
transition: 'slide', // none/fade/slide/convex/concave/zoom
// Optional libraries used to extend on reveal.js
// Optional reveal.js plugins
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
{ src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
]
});

File diff suppressed because it is too large Load Diff

8
js/reveal.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,115 +1,115 @@
/*
Zenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>
based on dark.css by Ivan Sagalaev
*/
pre code {
display: block; padding: 0.5em;
background: #3F3F3F;
color: #DCDCDC;
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #3f3f3f;
color: #dcdcdc;
-webkit-text-size-adjust: none;
}
pre .keyword,
pre .tag,
pre .django .tag,
pre .django .keyword,
pre .css .class,
pre .css .id,
pre .lisp .title {
color: #E3CEAB;
.hljs-keyword,
.hljs-tag,
.css .hljs-class,
.css .hljs-id,
.lisp .hljs-title,
.nginx .hljs-title,
.hljs-request,
.hljs-status,
.clojure .hljs-attribute {
color: #e3ceab;
}
pre .django .template_tag,
pre .django .variable,
pre .django .filter .argument {
color: #DCDCDC;
.django .hljs-template_tag,
.django .hljs-variable,
.django .hljs-filter .hljs-argument {
color: #dcdcdc;
}
pre .number,
pre .date {
color: #8CD0D3;
.hljs-number,
.hljs-date {
color: #8cd0d3;
}
pre .dos .envvar,
pre .dos .stream,
pre .variable,
pre .apache .sqbracket {
color: #EFDCBC;
.dos .hljs-envvar,
.dos .hljs-stream,
.hljs-variable,
.apache .hljs-sqbracket,
.hljs-name {
color: #efdcbc;
}
pre .dos .flow,
pre .diff .change,
pre .python .exception,
pre .python .built_in,
pre .literal,
pre .tex .special {
color: #EFEFAF;
.dos .hljs-flow,
.diff .hljs-change,
.python .exception,
.python .hljs-built_in,
.hljs-literal,
.tex .hljs-special {
color: #efefaf;
}
pre .diff .chunk,
pre .ruby .subst {
color: #8F8F8F;
.diff .hljs-chunk,
.hljs-subst {
color: #8f8f8f;
}
pre .dos .keyword,
pre .python .decorator,
pre .class .title,
pre .haskell .label,
pre .function .title,
pre .ini .title,
pre .diff .header,
pre .ruby .class .parent,
pre .apache .tag,
pre .nginx .built_in,
pre .tex .command,
pre .input_number {
color: #efef8f;
.dos .hljs-keyword,
.hljs-decorator,
.hljs-title,
.hljs-type,
.diff .hljs-header,
.ruby .hljs-class .hljs-parent,
.apache .hljs-tag,
.nginx .hljs-built_in,
.tex .hljs-command,
.hljs-prompt {
color: #efef8f;
}
pre .dos .winutils,
pre .ruby .symbol,
pre .ruby .symbol .string,
pre .ruby .symbol .keyword,
pre .ruby .symbol .keymethods,
pre .ruby .string,
pre .ruby .instancevar {
color: #DCA3A3;
.dos .hljs-winutils,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-string {
color: #dca3a3;
}
pre .diff .deletion,
pre .string,
pre .tag .value,
pre .preprocessor,
pre .built_in,
pre .sql .aggregate,
pre .javadoc,
pre .smalltalk .class,
pre .smalltalk .localvars,
pre .smalltalk .array,
pre .css .rules .value,
pre .attr_selector,
pre .pseudo,
pre .apache .cbracket,
pre .tex .formula {
color: #CC9393;
.diff .hljs-deletion,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.smalltalk .hljs-class,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.css .hljs-rule .hljs-value,
.hljs-attr_selector,
.hljs-pseudo,
.apache .hljs-cbracket,
.tex .hljs-formula,
.coffeescript .hljs-attribute {
color: #cc9393;
}
pre .shebang,
pre .diff .addition,
pre .comment,
pre .java .annotation,
pre .template_comment,
pre .pi,
pre .doctype {
color: #7F9F7F;
.hljs-shebang,
.diff .hljs-addition,
.hljs-comment,
.hljs-annotation,
.hljs-pi,
.hljs-doctype {
color: #7f9f7f;
}
pre .xml .css,
pre .xml .javascript,
pre .xml .vbscript,
pre .tex .formula {
.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
opacity: 0.5;
}
}

View File

@@ -0,0 +1,10 @@
@font-face {
font-family: 'League Gothic';
src: url('league-gothic.eot');
src: url('league-gothic.eot?#iefix') format('embedded-opentype'),
url('league-gothic.woff') format('woff'),
url('league-gothic.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,230 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="LeagueGothicRegular" horiz-adv-x="724" >
<font-face units-per-em="2048" ascent="1505" descent="-543" />
<missing-glyph horiz-adv-x="315" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="2048" />
<glyph unicode="&#xd;" horiz-adv-x="682" />
<glyph unicode=" " horiz-adv-x="315" />
<glyph unicode="&#x09;" horiz-adv-x="315" />
<glyph unicode="&#xa0;" horiz-adv-x="315" />
<glyph unicode="!" horiz-adv-x="387" d="M74 1505h239l-55 -1099h-129zM86 0v227h215v-227h-215z" />
<glyph unicode="&#x22;" horiz-adv-x="329" d="M57 1505h215l-30 -551h-154z" />
<glyph unicode="#" horiz-adv-x="1232" d="M49 438l27 195h198l37 258h-196l26 194h197l57 420h197l-57 -420h260l57 420h197l-58 -420h193l-27 -194h-192l-37 -258h190l-26 -195h-191l-59 -438h-197l60 438h-261l-59 -438h-197l60 438h-199zM471 633h260l37 258h-260z" />
<glyph unicode="$" horiz-adv-x="692" d="M37 358l192 13q12 -186 129 -187q88 0 93 185q0 74 -61 175q-21 36 -34 53l-40 55q-28 38 -65.5 90t-70.5 101.5t-70.5 141.5t-37.5 170q4 293 215 342v131h123v-125q201 -23 235 -282l-192 -25q-14 129 -93 125q-80 -2 -84 -162q0 -102 94 -227l41 -59q30 -42 37 -52 t33 -48l37 -52q41 -57 68 -109l26 -55q43 -94 43 -186q-4 -338 -245 -369v-217h-123v221q-236 41 -250 352z" />
<glyph unicode="%" horiz-adv-x="1001" d="M55 911v437q0 110 82 156q33 18 90.5 18t97.5 -44t44 -87l4 -43v-437q0 -107 -81 -157q-32 -19 -77 -19q-129 0 -156 135zM158 0l553 1505h131l-547 -1505h-137zM178 911q-4 -55 37 -55q16 0 25.5 14.5t9.5 26.5v451q2 55 -35 55q-18 0 -27.5 -13.5t-9.5 -27.5v-451z M631 158v436q0 108 81 156q33 20 79 20q125 0 153 -135l4 -41v-436q0 -110 -80 -156q-32 -18 -90.5 -18t-98.5 43t-44 88zM754 158q-4 -57 37 -58q37 0 34 58v436q2 55 -34 55q-18 0 -27.5 -13t-9.5 -28v-450z" />
<glyph unicode="&#x26;" horiz-adv-x="854" d="M49 304q0 126 44 225.5t126 222.5q-106 225 -106 442v18q0 94 47 180q70 130 223 130q203 0 252 -215q14 -61 12 -113q0 -162 -205 -434q76 -174 148 -285q33 96 47 211l176 -33q-16 -213 -92 -358q55 -63 92 -76v-235q-23 0 -86 37.5t-123 101.5q-123 -139 -252 -139 t-216 97t-87 223zM263 325.5q1 -65.5 28.5 -107.5t78.5 -42t117 86q-88 139 -174 295q-18 -30 -34.5 -98t-15.5 -133.5zM305 1194q0 -111 55 -246q101 156 101 252q-2 2 0 15.5t-2 36t-11 42.5q-19 52 -61.5 52t-62 -38t-19.5 -75v-39z" />
<glyph unicode="'" horiz-adv-x="309" d="M45 1012l72 266h-72v227h215v-227l-113 -266h-102z" />
<glyph unicode="(" horiz-adv-x="561" d="M66 645q0 143 29.5 292.5t73.5 261.5q92 235 159 343l30 47l162 -84q-38 -53 -86.5 -148t-82.5 -189.5t-61.5 -238t-27.5 -284.5t26.5 -282.5t64.5 -240.5q80 -207 141 -296l26 -39l-162 -84q-41 61 -96 173t-94 217.5t-70.5 257t-31.5 294.5z" />
<glyph unicode=")" horiz-adv-x="561" d="M41 -213q36 50 85.5 147t83.5 190t61.5 236.5t27.5 284.5t-26.5 282.5t-64.5 240.5q-78 205 -140 298l-27 39l162 84q41 -61 96 -173.5t94 -217t71 -257.5t32 -296t-30 -292.5t-74 -260.5q-92 -233 -159 -342l-30 -47z" />
<glyph unicode="*" horiz-adv-x="677" d="M74 1251l43 148l164 -70l-19 176h154l-19 -176l164 70l43 -148l-172 -34l115 -138l-131 -80l-78 152l-76 -152l-131 80l115 138z" />
<glyph unicode="+" horiz-adv-x="1060" d="M74 649v172h370v346h172v-346h371v-172h-371v-346h-172v346h-370z" />
<glyph unicode="," horiz-adv-x="309" d="M45 0v227h215v-227l-113 -266h-102l72 266h-72z" />
<glyph unicode="-" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
<glyph unicode="." horiz-adv-x="321" d="M53 0v227h215v-227h-215z" />
<glyph unicode="/" horiz-adv-x="720" d="M8 -147l543 1652h162l-537 -1652h-168z" />
<glyph unicode="0" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5l2 26v887q0 46 -19.5 78.5 t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887z" />
<glyph unicode="1" horiz-adv-x="475" d="M25 1180v141q129 25 205 130q16 21 30 54h133v-1505h-221v1180h-147z" />
<glyph unicode="2" horiz-adv-x="731" d="M55 0v219l39 62q25 39 88.5 152.5t112.5 220t91 241.5t44 238q0 184 -73.5 184t-73.5 -184v-105h-222v105q0 389 295 389t295 -375q0 -336 -346 -928h350v-219h-600z" />
<glyph unicode="3" horiz-adv-x="686" d="M45 1071q0 249 63 343q29 42 84.5 75t134.5 33t136 -31t84.5 -71t44.5 -92q22 -71 22 -130q0 -291 -108 -399q127 -100 127 -414q0 -68 -19.5 -145.5t-47 -128t-85 -89t-136.5 -38.5t-135 31.5t-86 75.5t-48 113q-23 91 -23 230h217q2 -150 17.5 -203t59.5 -53t56.5 50.5 t12.5 104.5t1 102t0 63q-6 82 -14 95l-18 33q-12 22 -29 29q-55 22 -108 25h-19v184q133 7 156 73q12 34 12 91v105q0 146 -29 177q-16 17 -40 17q-41 0 -52.5 -49t-13.5 -207h-217z" />
<glyph unicode="4" horiz-adv-x="684" d="M25 328v194l323 983h221v-983h103v-194h-103v-328h-202v328h-342zM213 522h154v516h-13z" />
<glyph unicode="5" horiz-adv-x="704" d="M74 438h221v-59q0 -115 14.5 -159t52 -44t53 45t15.5 156v336q0 111 -70 110q-33 0 -59.5 -40t-26.5 -70h-186v792h535v-219h-344v-313q74 55 127 51q78 0 133 -40t77 -100q35 -98 35 -171v-336q0 -393 -289 -393q-78 0 -133 29.5t-84.5 71.5t-46.5 109q-24 98 -24 244z " />
<glyph unicode="6" horiz-adv-x="700" d="M66 309v856q0 356 288.5 356.5t288.5 -356.5v-94h-221q0 162 -11.5 210t-53.5 48t-56 -37t-14 -127v-268q59 37 124.5 37t119 -36t75.5 -93q37 -92 37 -189v-307q0 -90 -42 -187q-26 -61 -89 -99.5t-157.5 -38.5t-158 38.5t-88.5 99.5q-42 98 -42 187zM287 244 q0 -20 17.5 -44t49 -24t50 24.5t18.5 43.5v450q0 18 -18.5 43t-49 25t-48 -20.5t-19.5 -41.5v-456z" />
<glyph unicode="7" horiz-adv-x="589" d="M8 1286v219h557v-221l-221 -1284h-229l225 1286h-332z" />
<glyph unicode="8" horiz-adv-x="696" d="M53 322v176q0 188 115 297q-102 102 -102 276v127q0 213 147 293q57 31 135 31t135.5 -31t84 -71t42.5 -93q21 -66 21 -129v-127q0 -174 -103 -276q115 -109 115 -297v-176q0 -222 -153 -306q-60 -32 -142 -32t-141.5 32.5t-88 73.5t-44.5 96q-21 69 -21 136zM269 422 q1 -139 16.5 -187.5t57.5 -48.5t59.5 30t21.5 71t4 158t-13.5 174t-66.5 57t-66.5 -57.5t-12.5 -196.5zM284 1116q-1 -123 11 -173t53 -50t53.5 50t12.5 170t-12.5 167t-51.5 47t-52 -44t-14 -167z" />
<glyph unicode="9" horiz-adv-x="700" d="M57 340v94h222q0 -162 11 -210t53 -48t56.5 37t14.5 127v283q-59 -37 -125 -37t-119 35.5t-76 92.5q-37 96 -37 189v293q0 87 43 188q25 60 88.5 99t157.5 39t157.5 -39t88.5 -99q43 -101 43 -188v-856q0 -356 -289 -356t-289 356zM279 825q0 -18 18 -42.5t49 -24.5 t48.5 20.5t19.5 40.5v443q0 20 -17.5 43.5t-49.5 23.5t-50 -24.5t-18 -42.5v-437z" />
<glyph unicode=":" horiz-adv-x="362" d="M74 0v227h215v-227h-215zM74 893v227h215v-227h-215z" />
<glyph unicode=";" horiz-adv-x="362" d="M74 0v227h215v-227l-113 -266h-102l71 266h-71zM74 893v227h215v-227h-215z" />
<glyph unicode="&#x3c;" horiz-adv-x="1058" d="M74 649v160l911 475v-199l-698 -356l698 -356v-199z" />
<glyph unicode="=" horiz-adv-x="1058" d="M74 477v172h911v-172h-911zM74 864v172h911v-172h-911z" />
<glyph unicode="&#x3e;" horiz-adv-x="1058" d="M74 174v199l698 356l-698 356v199l911 -475v-160z" />
<glyph unicode="?" horiz-adv-x="645" d="M25 1260q24 67 78 131q105 128 235 122q82 -2 138 -33.5t82 -81.5q46 -88 46 -170.5t-80 -219.5l-57 -96q-18 -32 -42 -106.5t-24 -143.5v-256h-190v256q0 102 24.5 195t48 140t65.5 118t50 105t-9 67.5t-60 34.5t-78 -48t-49 -98zM199 0h215v227h-215v-227z" />
<glyph unicode="@" horiz-adv-x="872" d="M66 303v889q0 97 73 200q39 56 117 93t184.5 37t184 -37t116.5 -93q74 -105 74 -200v-793h-164l-20 56q-14 -28 -46 -48t-67 -20q-145 0 -145 172v485q0 170 145 170q71 0 113 -67v45q0 51 -45 104.5t-145.5 53.5t-145.5 -53.5t-45 -104.5v-889q0 -53 44 -103t153.5 -50 t160.5 63l152 -86q-109 -143 -320 -143q-106 0 -184 35.5t-117 90.5q-73 102 -73 193zM535 573q0 -53 48 -53t48 53v455q0 53 -48 53t-48 -53v-455z" />
<glyph unicode="A" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM307 541h152l-64 475l-6 39h-12z" />
<glyph unicode="B" horiz-adv-x="745" d="M82 0v1505h194q205 0 304.5 -91t99.5 -308q0 -106 -29.5 -175t-107.5 -136q14 -5 47 -38.5t54 -71.5q52 -97 52 -259q0 -414 -342 -426h-272zM303 219q74 0 109 31q55 56 55 211t-63 195q-42 26 -93 26h-8v-463zM303 885q87 0 119 39q45 55 45 138t-14.5 124t-30.5 60.5 t-45 28.5q-35 11 -74 11v-401z" />
<glyph unicode="C" horiz-adv-x="708" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-207h-206v207q-2 0 0 11.5t-3.5 27.5t-12.5 33q-17 39 -68 39q-70 -10 -78 -111v-887q0 -43 21.5 -76.5t59.5 -33.5t59.5 27.5t21.5 56.5v233h206v-207q0 -42 -17 -106t-45 -107 t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175z" />
<glyph unicode="D" horiz-adv-x="761" d="M82 0v1505h174q270 0 346 -113q31 -46 50.5 -95.5t28.5 -139.5t12 -177t3 -228.5t-3 -228.5t-12 -176t-28.5 -138t-50.5 -95t-80 -68q-106 -46 -266 -46h-174zM303 221q117 0 140.5 78t23.5 399v111q0 322 -23.5 398.5t-140.5 76.5v-1063z" />
<glyph unicode="E" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506z" />
<glyph unicode="F" horiz-adv-x="616" d="M82 0v1505h526v-227h-305v-395h205v-228h-205v-655h-221z" />
<glyph unicode="G" horiz-adv-x="737" d="M67 271.5q0 26.5 1 37.5v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-231h-221v231q0 46 -19.5 78.5t-54 32.5t-53 -28t-18.5 -54l-2 -29v-905q0 -46 19.5 -78.5t54 -32.5t53 28t18.5 54l2 29v272h-88v187h309v-750h-131l-26 72 q-70 -88 -172 -88q-203 0 -250 213q-11 48 -11 74.5z" />
<glyph unicode="H" horiz-adv-x="778" d="M82 0v1505h221v-622h172v622h221v-1505h-221v655h-172v-655h-221z" />
<glyph unicode="I" horiz-adv-x="385" d="M82 0v1505h221v-1505h-221z" />
<glyph unicode="J" horiz-adv-x="423" d="M12 -14v217q4 0 12.5 -1t29 2t35.5 12t28.5 34.5t13.5 62.5v1192h221v-1226q0 -137 -74 -216q-74 -78 -223 -78h-4q-19 0 -39 1z" />
<glyph unicode="K" horiz-adv-x="768" d="M82 0v1505h221v-526h8l195 526h215l-203 -495l230 -1010h-216l-153 655l-6 31h-6l-64 -154v-532h-221z" />
<glyph unicode="L" horiz-adv-x="604" d="M82 0v1505h221v-1300h293v-205h-514z" />
<glyph unicode="M" horiz-adv-x="991" d="M82 0v1505h270l131 -688l11 -80h4l10 80l131 688h270v-1505h-204v1010h-13l-149 -1010h-94l-142 946l-8 64h-12v-1010h-205z" />
<glyph unicode="N" horiz-adv-x="808" d="M82 0v1505h197l215 -784l18 -70h12v854h203v-1505h-197l-215 784l-18 70h-12v-854h-203z" />
<glyph unicode="O" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5l2 26v887q0 46 -19.5 78.5 t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887z" />
<glyph unicode="P" horiz-adv-x="720" d="M82 0v1505h221q166 0 277.5 -105.5t111.5 -345t-111.5 -346t-277.5 -106.5v-602h-221zM303 827q102 0 134 45.5t32 175.5t-33 181t-133 51v-453z" />
<glyph unicode="Q" horiz-adv-x="729" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -94 -45 -182q33 -43 88 -53v-189q-160 0 -227 117q-55 -18 -125 -18t-130 33.5t-88 81.5q-55 94 -60 175zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5l2 26v887 q0 46 -19.5 78.5t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887z" />
<glyph unicode="R" horiz-adv-x="739" d="M82 0v1505h221q377 0 377 -434q0 -258 -123 -342l141 -729h-221l-115 635h-59v-635h-221zM303 840q117 0 149 98q15 49 15 125t-15.5 125t-45.5 68q-44 30 -103 30v-446z" />
<glyph unicode="S" horiz-adv-x="702" d="M37 422l217 20q0 -256 104 -256q90 0 91 166q0 59 -32 117.5t-45 79.5l-54 79q-40 58 -77 113t-73.5 117t-68 148.5t-31.5 162.5q0 139 71.5 245t216.5 108h10q88 0 152 -36t94 -100q54 -120 54 -264l-217 -20q0 217 -89 217q-75 -2 -75 -146q0 -59 23 -105 q32 -66 58 -104l197 -296q31 -49 67 -139.5t36 -166.5q0 -378 -306 -378h-2q-229 0 -290 188q-31 99 -31 250z" />
<glyph unicode="T" horiz-adv-x="647" d="M4 1278v227h639v-227h-209v-1278h-221v1278h-209z" />
<glyph unicode="U" horiz-adv-x="749" d="M80 309v1196h221v-1196q0 -46 19.5 -78t54.5 -32t53 27.5t18 56.5l3 26v1196h221v-1196q0 -42 -17.5 -106t-45 -107t-88 -77.5t-144.5 -34.5t-144.5 33.5t-88.5 81.5q-55 97 -60 175z" />
<glyph unicode="V" horiz-adv-x="716" d="M18 1505h215l111 -827l8 -64h13l118 891h215l-229 -1505h-221z" />
<glyph unicode="W" horiz-adv-x="1036" d="M25 1505h204l88 -782l5 -49h16l100 831h160l100 -831h17l92 831h205l-203 -1505h-172l-115 801h-8l-115 -801h-172z" />
<glyph unicode="X" horiz-adv-x="737" d="M16 0l244 791l-240 714h218l120 -381l7 -18h8l127 399h217l-240 -714l244 -791h-217l-127 449l-4 18h-8l-132 -467h-217z" />
<glyph unicode="Y" horiz-adv-x="700" d="M14 1505h217l111 -481l6 -14h4l6 14l111 481h217l-225 -864v-641h-221v641z" />
<glyph unicode="Z" horiz-adv-x="626" d="M20 0v238l347 1048h-297v219h536v-219l-352 -1067h352v-219h-586z" />
<glyph unicode="[" horiz-adv-x="538" d="M82 -213v1718h399v-196h-202v-1325h202v-197h-399z" />
<glyph unicode="\" horiz-adv-x="792" d="M8 1692h162l614 -1872h-168z" />
<glyph unicode="]" horiz-adv-x="538" d="M57 -16h203v1325h-203v196h400v-1718h-400v197z" />
<glyph unicode="^" horiz-adv-x="1101" d="M53 809l381 696h234l381 -696h-199l-299 543l-299 -543h-199z" />
<glyph unicode="_" horiz-adv-x="1210" d="M74 -154h1063v-172h-1063v172z" />
<glyph unicode="`" horiz-adv-x="1024" d="M293 1489h215l106 -184h-159z" />
<glyph unicode="a" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM252 291 q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
<glyph unicode="b" horiz-adv-x="686" d="M82 0v1505h207v-458q88 90 165 90t117.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-74h-207zM289 246q0 -29 19.5 -48.5t42 -19.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -21.5t-19.5 -46.5v-628z" />
<glyph unicode="c" horiz-adv-x="645" d="M66 315v490q0 332 264 332q137 0 201.5 -71t64.5 -251v-88h-207v135q0 51 -12 70.5t-47 19.5q-58 0 -58 -90v-604q0 -90 58 -90q35 0 47 19.5t12 70.5v156h207v-109q0 -180 -64.5 -250.5t-201.5 -70.5q-264 0 -264 331z" />
<glyph unicode="d" horiz-adv-x="686" d="M74 203v715q0 82 41 150.5t118 68.5q33 0 74 -22.5t66 -45.5l24 -22v458h207v-1505h-207v74q-88 -90 -165 -90t-117.5 68.5t-40.5 150.5zM281 246q0 -29 16 -48.5t38.5 -19.5t42 19.5t19.5 48.5v628q0 25 -19.5 46.5t-42 21.5t-38.5 -19.5t-16 -48.5v-628z" />
<glyph unicode="e" horiz-adv-x="659" d="M66 279v563q0 36 16 94.5t42 97.5t81 71t129 32q199 0 252 -197q14 -51 14 -92v-326h-342v-256q0 -59 39 -88q16 -12 37 -12q70 10 74 113v122h192v-129q0 -37 -16.5 -93t-41 -95t-79.5 -69.5t-130 -30.5t-130.5 30.5t-80.5 73.5q-49 87 -54 160zM258 684h150v158 q0 48 -19.5 81t-53.5 33t-53.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
<glyph unicode="f" horiz-adv-x="475" d="M20 934v186h105v31q0 190 51 270q23 35 71 63.5t115 28.5l97 -14v-178q-27 8 -62 8q-65 0 -65 -175v-5v-29h104v-186h-104v-934h-207v934h-105z" />
<glyph unicode="g" horiz-adv-x="700" d="M12 -184q0 94 162 170q-125 35 -125 149q0 45 40 93t89 75q-51 35 -80.5 95.5t-34.5 105.5l-4 43v305q0 35 16.5 91t41 94t79 69t126.5 31q135 0 206 -103q102 102 170 103v-185q-72 0 -120 -24l10 -70v-317q0 -37 -17.5 -90.5t-42 -90t-79 -66.5t-104.5 -30t-62 2 q-29 -25 -29 -46t11 -33.5t42 -20.5t45.5 -10t65.5 -10.5t95 -21.5t89 -41q96 -60 96 -205t-103 -212q-100 -65 -250 -65h-9q-156 2 -240 50t-84 165zM213 -150q0 -77 132 -77h3q59 0 108.5 19t49.5 54t-20.5 52.5t-90.5 29.5l-106 21q-76 -43 -76 -99zM262 509 q0 -17 15.5 -45t44.5 -28q63 6 63 101v307q-2 0 0 10q1 3 1 7q0 8 -3 19q-4 15 -9 30q-11 36 -46 36t-50.5 -25.5t-15.5 -52.5v-359z" />
<glyph unicode="h" horiz-adv-x="690" d="M82 0v1505h207v-479l32 32q79 79 145.5 79t106 -69t39.5 -150v-918h-206v887q-1 49 -50 49q-41 0 -67 -53v-883h-207z" />
<glyph unicode="i" horiz-adv-x="370" d="M82 0v1120h207v-1120h-207zM82 1298v207h207v-207h-207z" />
<glyph unicode="j" horiz-adv-x="364" d="M-45 -182q29 -8 57 -8q64 0 64 142v1168h207v-1149q0 -186 -51 -266q-23 -35 -71 -62.5t-115 -27.5t-91 12v191zM76 1298v207h207v-207h-207z" />
<glyph unicode="k" horiz-adv-x="641" d="M82 0v1505h207v-714h10l113 329h186l-149 -364l188 -756h-199l-102 453l-4 16h-10l-33 -82v-387h-207z" />
<glyph unicode="l" horiz-adv-x="370" d="M82 0v1505h207v-1505h-207z" />
<glyph unicode="m" horiz-adv-x="1021" d="M82 0v1120h207v-94q2 0 33 30q80 81 139 81q100 0 139 -125q125 125 194.5 125t109.5 -69t40 -150v-918h-194v887q-1 49 -56 49q-41 0 -78 -53v-883h-194v887q0 49 -55 49q-41 0 -78 -53v-883h-207z" />
<glyph unicode="n" horiz-adv-x="690" d="M82 0v1120h207v-94l32 32q79 79 145.5 79t106 -69t39.5 -150v-918h-206v887q-1 49 -50 49q-41 0 -67 -53v-883h-207z" />
<glyph unicode="o" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t129.5 32q199 0 252 -197q14 -51 14 -92v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-129 -30.5t-130 30.5t-80.5 73.5q-52 92 -52 160zM257 259q0 -17 9 -44q18 -49 62 -49q70 10 71 113v563l1 19q0 19 -10 45q-18 50 -62 50 q-68 -10 -70 -114v-563q1 -1 1 -4z" />
<glyph unicode="p" horiz-adv-x="686" d="M82 -385v1505h207v-73q88 90 165 90t117.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-459h-207zM289 246q0 -25 19.5 -46.5t42 -21.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -19.5t-19.5 -48.5v-628z" />
<glyph unicode="q" horiz-adv-x="686" d="M74 203v715q0 82 41 150.5t118 68.5q33 0 74 -22.5t66 -45.5l24 -22v73h207v-1505h-207v459q-88 -90 -165 -90t-117.5 68.5t-40.5 150.5zM281 246q0 -29 16 -48.5t38.5 -19.5t42 21.5t19.5 46.5v628q0 29 -19.5 48.5t-42 19.5t-38.5 -19.5t-16 -48.5v-628z" />
<glyph unicode="r" horiz-adv-x="503" d="M82 0v1120h207v-125q8 41 58.5 91.5t148.5 50.5v-230q-34 11 -77 11t-86.5 -39t-43.5 -101v-778h-207z" />
<glyph unicode="s" horiz-adv-x="630" d="M37 326h192q0 -170 97 -170q71 0 71 131q0 78 -129 202q-68 66 -98.5 99t-64 101.5t-33.5 134t12 114.5t39 95q59 100 201 104h11q161 0 211 -105q42 -86 42 -198h-193q0 131 -67 131q-63 -2 -64 -131q0 -33 23.5 -73t45 -62.5t66.5 -65.5q190 -182 191 -342 q0 -123 -64.5 -215t-199.5 -92q-197 0 -260 170q-29 76 -29 172z" />
<glyph unicode="t" horiz-adv-x="501" d="M20 934v186h105v277h207v-277h141v-186h-141v-557q0 -184 65 -184l76 8v-203q-45 -14 -112 -14t-114.5 28.5t-70 64.5t-34.5 96q-17 79 -17 187v574h-105z" />
<glyph unicode="u" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q41 0 67 54v882h207v-1120h-207v94l-31 -32q-78 -78 -145.5 -78t-107 68.5t-39.5 150.5z" />
<glyph unicode="v" horiz-adv-x="602" d="M16 1120h201l68 -649l8 -72h16l76 721h201l-183 -1120h-204z" />
<glyph unicode="w" horiz-adv-x="905" d="M20 1120h189l65 -585l9 -64h12l96 649h123l86 -585l10 -64h13l73 649h189l-166 -1120h-172l-80 535l-10 63h-8l-91 -598h-172z" />
<glyph unicode="x" horiz-adv-x="618" d="M16 0l193 578l-176 542h194l74 -262l6 -31h4l6 31l74 262h195l-176 -542l192 -578h-201l-84 283l-6 30h-4l-6 -30l-84 -283h-201z" />
<glyph unicode="y" horiz-adv-x="634" d="M25 1120h202l82 -688l4 -57h9l4 57l82 688h202l-198 -1204q-16 -127 -94 -222t-193 -95l-92 4v184q16 -4 49 -4q61 6 97 61.5t36 122.5z" />
<glyph unicode="z" horiz-adv-x="532" d="M12 0v168l285 764h-240v188h459v-168l-285 -764h285v-188h-504z" />
<glyph unicode="{" horiz-adv-x="688" d="M61 453v163q72 0 102 49.5t30 90.5v397q0 223 96 298t342 71v-172q-135 2 -188.5 -38t-53.5 -159v-397q0 -143 -127 -221q127 -82 127 -222v-397q0 -119 53.5 -159t188.5 -38v-172q-246 -4 -342 71t-96 298v397q0 57 -41 97.5t-91 42.5z" />
<glyph unicode="|" horiz-adv-x="356" d="M82 -512v2204h192v-2204h-192z" />
<glyph unicode="}" horiz-adv-x="688" d="M57 -281q135 -2 188.5 38t53.5 159v397q0 139 127 222q-127 78 -127 221v397q0 119 -53 159t-189 38v172q246 4 342.5 -71t96.5 -298v-397q0 -63 41 -101.5t90 -38.5v-163q-72 -4 -101.5 -52.5t-29.5 -87.5v-397q0 -223 -96.5 -298t-342.5 -71v172z" />
<glyph unicode="~" horiz-adv-x="1280" d="M113 1352q35 106 115 200q34 41 94.5 74t121 33t116.5 -18.5t82 -33t83 -51.5q106 -72 174 -71q109 0 178 153l13 29l135 -57q-63 -189 -206 -276q-56 -34 -120 -34q-121 0 -272 101q-115 74 -178.5 74t-113.5 -45.5t-69 -90.5l-18 -45z" />
<glyph unicode="&#xa1;" horiz-adv-x="387" d="M74 -385l55 1100h129l55 -1100h-239zM86 893v227h215v-227h-215z" />
<glyph unicode="&#xa2;" horiz-adv-x="636" d="M66 508v489q0 297 208 328v242h123v-244q98 -16 144.5 -88t46.5 -227v-88h-189v135q0 90 -72.5 90t-72.5 -90v-604q0 -90 72 -91q74 0 73 91v155h189v-108q0 -156 -46 -228.5t-145 -89.5v-303h-123v301q-209 31 -208 330z" />
<glyph unicode="&#xa3;" horiz-adv-x="817" d="M4 63q8 20 23.5 53.5t70 91.5t117.5 68q37 111 37 189t-31 184h-188v137h147l-6 21q-78 254 -78 333t15.5 140t48.5 116q72 122 231 126q190 4 267 -126q65 -108 65 -276h-213q0 201 -115 197q-47 -2 -68.5 -51t-21.5 -139.5t70 -315.5l6 -25h211v-137h-174 q25 -100 24.5 -189t-57.5 -204q16 -8 44 -24q59 -35 89 -35q74 4 82 190l188 -22q-12 -182 -81.5 -281.5t-169.5 -99.5q-51 0 -143.5 51t-127.5 51t-63.5 -25.5t-40.5 -52.5l-12 -24z" />
<glyph unicode="&#xa5;" horiz-adv-x="720" d="M25 1505h217l110 -481l6 -14h4l7 14l110 481h217l-196 -753h147v-138h-176v-137h176v-137h-176v-340h-221v340h-176v137h176v137h-176v138h147z" />
<glyph unicode="&#xa8;" horiz-adv-x="1024" d="M272 1305v200h191v-200h-191zM561 1305v200h191v-200h-191z" />
<glyph unicode="&#xa9;" horiz-adv-x="1644" d="M53 751.5q0 317.5 225.5 544t543 226.5t543.5 -226.5t226 -544t-226 -542.5t-543.5 -225t-543 225t-225.5 542.5zM172 751.5q0 -266.5 191.5 -458t457.5 -191.5t459 191.5t193 459t-191.5 459t-459 191.5t-459 -192.5t-191.5 -459zM627 487v531q0 122 97 174q40 22 95 22 q147 0 182 -147l7 -49v-125h-138v142q0 11 -12 28.5t-37 17.5q-47 -2 -49 -63v-531q0 -63 49 -63q53 2 49 63v125h138v-125q0 -68 -40 -127q-18 -26 -57 -47.5t-108.5 -21.5t-117.5 49t-54 98z" />
<glyph unicode="&#xaa;" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM252 291 q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
<glyph unicode="&#xad;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
<glyph unicode="&#xae;" horiz-adv-x="1644" d="M53 751.5q0 317.5 225.5 544t543 226.5t543.5 -226.5t226 -544t-226 -542.5t-543.5 -225t-543 225t-225.5 542.5zM172 751.5q0 -266.5 191.5 -458t457.5 -191.5t459 191.5t193 459t-191.5 459t-459 191.5t-459 -192.5t-191.5 -459zM625 313v879h196q231 0 232 -258 q0 -76 -16.5 -125t-71.5 -96l106 -400h-151l-95 365h-55v-365h-145zM770 805h45q43 0 65.5 21.5t27.5 45t5 61.5t-5 62.5t-27.5 46t-65.5 21.5h-45v-258z" />
<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M313 1315v162h398v-162h-398z" />
<glyph unicode="&#xb2;" horiz-adv-x="731" d="M55 0v219l39 62q25 39 88.5 152.5t112.5 220t91 241.5t44 238q0 184 -73.5 184t-73.5 -184v-105h-222v105q0 389 295 389t295 -375q0 -336 -346 -928h350v-219h-600z" />
<glyph unicode="&#xb3;" horiz-adv-x="686" d="M45 1071q0 249 63 343q29 42 84.5 75t134.5 33t136 -31t84.5 -71t44.5 -92q22 -71 22 -130q0 -291 -108 -399q127 -100 127 -414q0 -68 -19.5 -145.5t-47 -128t-85 -89t-136.5 -38.5t-135 31.5t-86 75.5t-48 113q-23 91 -23 230h217q2 -150 17.5 -203t59.5 -53t56.5 50.5 t12.5 104.5t1 102t0 63q-6 82 -14 95l-18 33q-12 22 -29 29q-55 22 -108 25h-19v184q133 7 156 73q12 34 12 91v105q0 146 -29 177q-16 17 -40 17q-41 0 -52.5 -49t-13.5 -207h-217z" />
<glyph unicode="&#xb4;" horiz-adv-x="1024" d="M410 1305l106 184h215l-162 -184h-159z" />
<glyph unicode="&#xb7;" horiz-adv-x="215" d="M0 649v228h215v-228h-215z" />
<glyph unicode="&#xb8;" horiz-adv-x="1024" d="M426 -111h172v-141l-45 -133h-104l40 133h-63v141z" />
<glyph unicode="&#xb9;" horiz-adv-x="475" d="M25 1180v141q129 25 205 130q16 21 30 54h133v-1505h-221v1180h-147z" />
<glyph unicode="&#xba;" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t129.5 32q199 0 252 -197q14 -51 14 -92v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-129 -30.5t-130 30.5t-80.5 73.5q-52 92 -52 160zM257 259q0 -17 9 -44q18 -49 62 -49q70 10 71 113v563l1 19q0 19 -10 45q-18 50 -62 50 q-68 -10 -70 -114v-563q1 -1 1 -4z" />
<glyph unicode="&#xbf;" horiz-adv-x="645" d="M41 -106q0 82 80 219l57 95q18 32 42 106.5t24 144.5v256h190v-256q0 -102 -24.5 -195.5t-48 -140.5t-65.5 -118t-50 -104.5t9 -67.5t60 -35t78 48.5t49 98.5l179 -84q-24 -66 -78 -132q-104 -126 -236 -122q-163 4 -220 115q-46 90 -46 172zM231 893v227h215v-227h-215z " />
<glyph unicode="&#xc0;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM141 1823h215l107 -185h-160zM307 541h152l-64 475l-6 39h-12z" />
<glyph unicode="&#xc1;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM293 1638l106 185h215l-161 -185h-160zM307 541h152l-64 475l-6 39h-12z" />
<glyph unicode="&#xc2;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM133 1638l141 185h220l141 -185h-189l-63 72l-61 -72h-189zM307 541h152l-64 475l-6 39h-12z" />
<glyph unicode="&#xc3;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM184 1632v152q49 39 95.5 39t104.5 -18.5t100.5 -19.5t97.5 32v-152q-51 -39 -95.5 -39t-102.5 19.5t-98 19.5t-102 -33zM307 541h152l-64 475l-6 39h-12z" />
<glyph unicode="&#xc4;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM143 1638v201h191v-201h-191zM307 541h152l-64 475l-6 39h-12zM432 1638v201h191v-201h-191z" />
<glyph unicode="&#xc5;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM231 1761.5q0 61.5 45.5 102.5t109 41t107.5 -41t44 -102.5t-44 -102.5t-107.5 -41t-109 41t-45.5 102.5zM307 541h152l-64 475l-6 39h-12zM309 1761.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5t23.5 50 t-23.5 50t-52.5 21.5t-52.5 -21.5t-23.5 -50z" />
<glyph unicode="&#xc6;" horiz-adv-x="1099" d="M16 0l420 1505h623v-227h-285v-395h205v-242h-205v-414h285v-227h-506v307h-227l-90 -307h-220zM393 541h160v514h-10z" />
<glyph unicode="&#xc7;" horiz-adv-x="708" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-207h-206v207q-2 0 0 11.5t-3.5 27.5t-12.5 33q-17 39 -68 39q-70 -10 -78 -111v-887q0 -43 21.5 -76.5t59.5 -33.5t59.5 27.5t21.5 56.5v233h206v-207q0 -42 -17 -106t-45 -107 t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM268 -111v-141h64l-41 -133h104l45 133v141h-172z" />
<glyph unicode="&#xc8;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM111 1823h215l106 -185h-160z" />
<glyph unicode="&#xc9;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM236 1638l106 185h215l-162 -185h-159z" />
<glyph unicode="&#xca;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM84 1638l141 185h219l142 -185h-189l-63 72l-62 -72h-188z" />
<glyph unicode="&#xcb;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM94 1638v201h191v-201h-191zM383 1638v201h190v-201h-190z" />
<glyph unicode="&#xcc;" horiz-adv-x="401" d="M-6 1823h215l106 -185h-159zM98 0v1505h221v-1505h-221z" />
<glyph unicode="&#xcd;" horiz-adv-x="401" d="M82 0v1505h221v-1505h-221zM86 1638l107 185h215l-162 -185h-160z" />
<glyph unicode="&#xce;" horiz-adv-x="370" d="M-66 1638l142 185h219l141 -185h-188l-64 72l-61 -72h-189zM74 0v1505h221v-1505h-221z" />
<glyph unicode="&#xcf;" horiz-adv-x="372" d="M-53 1638v201h190v-201h-190zM76 0v1505h221v-1505h-221zM236 1638v201h190v-201h-190z" />
<glyph unicode="&#xd0;" horiz-adv-x="761" d="M20 655v228h62v622h174q270 0 346 -113q31 -46 50.5 -95.5t28.5 -139.5t12 -177t3 -228.5t-3 -228.5t-12 -176t-28.5 -138t-50.5 -95t-80 -68q-106 -46 -266 -46h-174v655h-62zM303 221q117 0 141.5 81t22.5 452q2 371 -22.5 450.5t-141.5 79.5v-401h84v-228h-84v-434z " />
<glyph unicode="&#xd1;" horiz-adv-x="808" d="M82 0v1505h197l215 -784l18 -70h12v854h203v-1505h-197l-215 784l-18 70h-12v-854h-203zM207 1632v152q49 39 95 39t104.5 -18.5t102.5 -19.5t95 32v-152q-51 -39 -95 -39t-102.5 19.5t-100 19.5t-99.5 -33z" />
<glyph unicode="&#xd2;" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM121 1823h215l106 -185h-159zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5 l2 26v887q0 46 -19.5 78.5t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887z" />
<glyph unicode="&#xd3;" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM285 1638l106 185h215l-162 -185h-159zM289 309q0 -46 19.5 -78t54 -32t53 27.5 t18.5 56.5l2 26v887q0 46 -19.5 78.5t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887z" />
<glyph unicode="&#xd4;" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM113 1638l141 185h219l141 -185h-188l-64 72l-61 -72h-188zM289 309q0 -46 19.5 -78 t54 -32t53 27.5t18.5 56.5l2 26v887q0 46 -19.5 78.5t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887z" />
<glyph unicode="&#xd5;" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM164 1632v152q49 39 95 39t104.5 -18.5t102.5 -19.5t95 32v-152q-51 -39 -95 -39 t-102.5 19.5t-100 19.5t-99.5 -33zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5l2 26v887q0 46 -19.5 78.5t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887z" />
<glyph unicode="&#xd6;" d="M68 309v887q0 42 17 106t45 107t88.5 78t144 35t144 -34t88.5 -81q55 -93 60 -178l2 -33v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 81.5q-55 94 -60 175zM123 1638v201h190v-201h-190zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5 l2 26v887q0 46 -19.5 78.5t-54 32.5t-53 -28t-18.5 -54l-2 -29v-887zM412 1638v201h190v-201h-190z" />
<glyph unicode="&#xd8;" d="M59 -20l47 157q-36 74 -36 148l-2 24v887q0 42 17 106t45 107t88.5 78t148 35t153.5 -43l15 47h122l-45 -150q43 -84 43 -155l2 -25v-887q0 -42 -17 -106t-45 -107t-88.5 -77.5t-150.5 -34.5t-153 43l-15 -47h-129zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5 l2 26v488zM289 727l147 479q-8 100 -74 101q-35 0 -53 -28t-18 -54l-2 -29v-469z" />
<glyph unicode="&#xd9;" horiz-adv-x="749" d="M80 309q0 -42 17.5 -106t45 -107t88 -77.5t144.5 -34.5t144.5 33.5t88.5 81.5q55 97 60 175l2 35v1196h-221v-1196q0 -44 -19.5 -77t-54.5 -33t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM145 1823h215l107 -185h-160z" />
<glyph unicode="&#xda;" horiz-adv-x="749" d="M80 309q0 -42 17.5 -106t45 -107t88 -77.5t144.5 -34.5t144.5 33.5t88.5 81.5q55 97 60 175l2 35v1196h-221v-1196q0 -44 -19.5 -77t-54.5 -33t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM307 1638l107 185h215l-162 -185h-160z" />
<glyph unicode="&#xdb;" horiz-adv-x="749" d="M80 309q0 -42 17.5 -106t45 -107t88 -77.5t144.5 -34.5t144.5 33.5t88.5 81.5q55 97 60 175l2 35v1196h-221v-1196q0 -44 -19.5 -77t-54.5 -33t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM125 1638l141 185h219l142 -185h-189l-63 72l-62 -72h-188z" />
<glyph unicode="&#xdc;" horiz-adv-x="749" d="M80 309v1196h221v-1196q0 -46 19.5 -78t54.5 -32t53 27.5t18 56.5l3 26v1196h221v-1196q0 -42 -17.5 -106t-45 -107t-88 -77.5t-144.5 -34.5t-144.5 33.5t-88.5 81.5q-55 97 -60 175zM135 1638v201h191v-201h-191zM424 1638v201h190v-201h-190z" />
<glyph unicode="&#xdd;" horiz-adv-x="704" d="M16 1505l226 -864v-641h221v641l225 864h-217l-111 -481l-6 -14h-4l-6 14l-111 481h-217zM254 1638l106 185h215l-161 -185h-160z" />
<glyph unicode="&#xde;" d="M82 0v1505h219v-241h2q166 0 277.5 -105.5t111.5 -345.5t-111.5 -346.5t-277.5 -106.5v-360h-221zM303 586q102 0 134 45t32 175t-33 181t-133 51v-452z" />
<glyph unicode="&#xdf;" horiz-adv-x="733" d="M66 0v1235q0 123 70.5 205t206.5 82t204.5 -81t68.5 -197t-88 -181q152 -88 152 -488q0 -362 -87 -475q-46 -59 -102.5 -79.5t-144.5 -20.5v193q45 0 70 25q57 57 57 357q0 316 -57 377q-25 27 -70 27v141q35 0 60.5 33t25.5 84q0 100 -86 100q-74 0 -74 -102v-1235h-206 z" />
<glyph unicode="&#xe0;" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM102 1489h215 l107 -184h-160zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
<glyph unicode="&#xe1;" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM252 291 q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM264 1305l107 184h215l-162 -184h-160z" />
<glyph unicode="&#xe2;" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM90 1305 l141 184h220l141 -184h-189l-63 71l-61 -71h-189zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
<glyph unicode="&#xe3;" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM143 1305v151 q49 39 95.5 39t104.5 -18.5t97 -19.5t101 32v-152q-51 -39 -95.5 -39t-102.5 19.5t-99 19.5t-101 -32zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
<glyph unicode="&#xe4;" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM102 1305v200 h191v-200h-191zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM391 1305v200h191v-200h-191z" />
<glyph unicode="&#xe5;" horiz-adv-x="681" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t190 88t184.5 -74t75 -180v-688q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-102.5 -34.5t-110.5 60t-53.5 191zM188 1421.5 q0 61.5 45.5 102.5t109 41t107.5 -41t44 -102.5t-44 -102.5t-107.5 -41t-109 41t-45.5 102.5zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM266 1421.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5t23.5 50t-23.5 50t-52.5 21.5t-52.5 -21.5 t-23.5 -50z" />
<glyph unicode="&#xe6;" horiz-adv-x="989" d="M49 235q0 131 34 212t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-41 0 -50 -42t-9 -84v-39h-207v47q0 123 80.5 211t197.5 88q84 0 152 -52q66 51 162 52q199 0 251 -197q14 -51 15 -92v-326h-342v-256q0 -60 38 -88q17 -12 38 -12q70 10 73 113v122h193v-129 q0 -37 -16.5 -93t-41 -95t-80 -69.5t-130.5 -30.5q-158 0 -226 131q-102 -131 -221 -131q-59 0 -112.5 60t-53.5 191zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM588 684h149v158q0 48 -19.5 81t-53 33t-53 -28.5t-21.5 -57.5l-2 -28v-158z " />
<glyph unicode="&#xe7;" horiz-adv-x="645" d="M66 315v490q0 332 264 332q137 0 201.5 -71t64.5 -251v-88h-207v135q0 51 -12 70.5t-47 19.5q-58 0 -58 -90v-604q0 -90 58 -90q35 0 47 19.5t12 70.5v156h207v-109q0 -180 -64.5 -250.5t-201.5 -70.5q-264 0 -264 331zM238 -111v-141h63l-41 -133h105l45 133v141h-172z " />
<glyph unicode="&#xe8;" horiz-adv-x="659" d="M66 279v563q0 36 16 94.5t42 97.5t81 71t129 32q199 0 252 -197q14 -51 14 -92v-326h-342v-256q0 -59 39 -88q16 -12 37 -12q70 10 74 113v122h192v-129q0 -37 -16.5 -93t-41 -95t-79.5 -69.5t-130 -30.5t-130.5 30.5t-80.5 73.5q-49 87 -54 160zM102 1489h215l107 -184 h-160zM258 684h150v158q0 48 -19.5 81t-53.5 33t-53.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
<glyph unicode="&#xe9;" horiz-adv-x="659" d="M66 279v563q0 36 16 94.5t42 97.5t81 71t129 32q199 0 252 -197q14 -51 14 -92v-326h-342v-256q0 -59 39 -88q16 -12 37 -12q70 10 74 113v122h192v-129q0 -37 -16.5 -93t-41 -95t-79.5 -69.5t-130 -30.5t-130.5 30.5t-80.5 73.5q-49 87 -54 160zM258 684h150v158 q0 48 -19.5 81t-53.5 33t-53.5 -28.5t-21.5 -57.5l-2 -28v-158zM264 1305l107 184h215l-162 -184h-160z" />
<glyph unicode="&#xea;" horiz-adv-x="659" d="M66 279v563q0 36 16 94.5t42 97.5t81 71t129 32q199 0 252 -197q14 -51 14 -92v-326h-342v-256q0 -59 39 -88q16 -12 37 -12q70 10 74 113v122h192v-129q0 -37 -16.5 -93t-41 -95t-79.5 -69.5t-130 -30.5t-130.5 30.5t-80.5 73.5q-49 87 -54 160zM80 1305l141 184h219 l142 -184h-189l-63 71l-62 -71h-188zM258 684h150v158q0 48 -19.5 81t-53.5 33t-53.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
<glyph unicode="&#xeb;" horiz-adv-x="659" d="M66 279v563q0 36 16 94.5t42 97.5t81 71t129 32q199 0 252 -197q14 -51 14 -92v-326h-342v-256q0 -59 39 -88q16 -12 37 -12q70 10 74 113v122h192v-129q0 -37 -16.5 -93t-41 -95t-79.5 -69.5t-130 -30.5t-130.5 30.5t-80.5 73.5q-49 87 -54 160zM90 1305v200h191v-200 h-191zM258 684h150v158q0 48 -19.5 81t-53.5 33t-53.5 -28.5t-21.5 -57.5l-2 -28v-158zM379 1305v200h190v-200h-190z" />
<glyph unicode="&#xec;" horiz-adv-x="370" d="M-33 1489h215l107 -184h-160zM82 0h207v1120h-207v-1120z" />
<glyph unicode="&#xed;" horiz-adv-x="370" d="M82 0h207v1120h-207v-1120zM82 1305l106 184h215l-161 -184h-160z" />
<glyph unicode="&#xee;" horiz-adv-x="370" d="M-66 1305l142 184h219l141 -184h-188l-64 71l-61 -71h-189zM82 0h207v1120h-207v-1120z" />
<glyph unicode="&#xef;" horiz-adv-x="372" d="M-53 1305v200h190v-200h-190zM82 0v1120h207v-1120h-207zM236 1305v200h190v-200h-190z" />
<glyph unicode="&#xf0;" horiz-adv-x="673" d="M76 279v579q0 279 172 279q63 0 155 -78q-12 109 -51 203l-82 -72l-55 63l100 88l-45 66l109 100q25 -27 53 -61l94 82l56 -66l-101 -88q125 -201 125 -446v-656q0 -102 -56 -188q-26 -39 -80 -69.5t-129 -30.5t-130 30.5t-80 73.5q-53 91 -53 160zM270 267.5 q-2 -11.5 2 -29t10 -34.5q16 -38 58 -38q70 10 72 113v563q-2 0 0 11t-2 28.5t-10 34.5q-16 40 -60 40q-68 -10 -70 -114v-563q2 0 0 -11.5z" />
<glyph unicode="&#xf1;" horiz-adv-x="690" d="M82 0v1120h207v-94l32 32q79 79 145.5 79t106 -69t39.5 -150v-918h-206v887q-1 49 -50 49q-41 0 -67 -53v-883h-207zM147 1305v151q49 39 95.5 39t105 -18.5t97 -19.5t100.5 32v-152q-51 -39 -95.5 -39t-102.5 19.5t-99 19.5t-101 -32z" />
<glyph unicode="&#xf2;" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t129.5 32q199 0 252 -197q14 -51 14 -92v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-129 -30.5t-130 30.5t-80.5 73.5q-52 92 -52 160zM98 1489h215l107 -184h-160zM258 267.5q-2 -11.5 2 -29t10 -34.5q14 -38 58 -38 q70 10 71 113v563q-2 0 0 11t-2 28.5t-10 34.5q-15 40 -59 40q-68 -10 -70 -114v-563q2 0 0 -11.5z" />
<glyph unicode="&#xf3;" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t129.5 32q199 0 252 -197q14 -51 14 -92v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-129 -30.5t-130 30.5t-80.5 73.5q-52 92 -52 160zM258 267.5q-2 -11.5 2 -29t10 -34.5q14 -38 58 -38q70 10 71 113v563q-2 0 0 11t-2 28.5 t-10 34.5q-15 40 -59 40q-68 -10 -70 -114v-563q2 0 0 -11.5zM260 1305l107 184h215l-162 -184h-160z" />
<glyph unicode="&#xf4;" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t129.5 32q199 0 252 -197q14 -51 14 -92v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-129 -30.5t-130 30.5t-80.5 73.5q-52 92 -52 160zM78 1305l141 184h219l142 -184h-189l-63 71l-62 -71h-188zM258 267.5q-2 -11.5 2 -29 t10 -34.5q14 -38 58 -38q70 10 71 113v563q-2 0 0 11t-2 28.5t-10 34.5q-15 40 -59 40q-68 -10 -70 -114v-563q2 0 0 -11.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t129.5 32q199 0 252 -197q14 -51 14 -92v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-129 -30.5t-130 30.5t-80.5 73.5q-52 92 -52 160zM131 1305v151q49 39 95.5 39t104.5 -18.5t98.5 -19.5t98.5 32v-152q-51 -39 -95 -39 t-102 19.5t-101 19.5t-99 -32zM258 267.5q-2 -11.5 2 -29t10 -34.5q14 -38 58 -38q70 10 71 113v563q-2 0 0 11t-2 28.5t-10 34.5q-15 40 -59 40q-68 -10 -70 -114v-563q2 0 0 -11.5z" />
<glyph unicode="&#xf6;" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t129.5 32q199 0 252 -197q14 -51 14 -92v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-129 -30.5t-130 30.5t-80.5 73.5q-52 92 -52 160zM90 1305v200h191v-200h-191zM258 267.5q-2 -11.5 2 -29t10 -34.5q14 -38 58 -38 q70 10 71 113v563q-2 0 0 11t-2 28.5t-10 34.5q-15 40 -59 40q-68 -10 -70 -114v-563q2 0 0 -11.5zM379 1305v200h190v-200h-190z" />
<glyph unicode="&#xf8;" horiz-adv-x="657" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t118 32t117.5 -19l21 80h75l-30 -121q88 -84 94 -229v-576q0 -102 -56 -188q-26 -39 -80.5 -69.5t-120.5 -30.5t-112 16l-20 -78h-80l31 121q-41 39 -64.5 97.5t-25.5 97.5zM258 436l125 486q-18 35 -55 34q-68 -10 -70 -114 v-406zM274 197q17 -31 54 -31q70 10 71 113v403z" />
<glyph unicode="&#xf9;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q41 0 67 54v882h207v-1120h-207v94l-31 -32q-78 -78 -145.5 -78t-107 68.5t-39.5 150.5zM113 1489h215l106 -184h-160z" />
<glyph unicode="&#xfa;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q41 0 67 54v882h207v-1120h-207v94l-31 -32q-78 -78 -145.5 -78t-107 68.5t-39.5 150.5zM274 1305l107 184h215l-162 -184h-160z" />
<glyph unicode="&#xfb;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q41 0 67 54v882h207v-1120h-207v94l-31 -32q-78 -78 -145.5 -78t-107 68.5t-39.5 150.5zM94 1305l142 184h219l141 -184h-188l-64 71l-61 -71h-189z" />
<glyph unicode="&#xfc;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q41 0 67 54v882h207v-1120h-207v94l-31 -32q-78 -78 -145.5 -78t-107 68.5t-39.5 150.5zM106 1305v200h191v-200h-191zM395 1305v200h191v-200h-191z" />
<glyph unicode="&#xfd;" horiz-adv-x="634" d="M25 1120l190 -1153q0 -68 -36 -123t-97 -61l-49 4v-184q70 -4 92 -4q115 0 192.5 95t94.5 222l198 1204h-202l-82 -688l-4 -57h-9l-4 57l-82 688h-202zM231 1305l107 184h215l-162 -184h-160z" />
<glyph unicode="&#xfe;" horiz-adv-x="686" d="M82 -385v1890h207v-458q88 90 165 90t117.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-459h-207zM289 246q0 -25 19.5 -46.5t42 -21.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -19.5t-19.5 -48.5v-628z" />
<glyph unicode="&#xff;" horiz-adv-x="634" d="M25 1120h202l82 -688l4 -57h9l4 57l82 688h202l-198 -1204q-16 -127 -94 -222t-193 -95l-92 4v184q16 -4 49 -4q61 6 97 61.5t36 122.5zM78 1305v200h190v-200h-190zM367 1305v200h190v-200h-190z" />
<glyph unicode="&#x152;" horiz-adv-x="983" d="M68 309v887q0 41 17 101.5t45 100.5t88.5 73.5t143.5 33.5h580v-227h-285v-395h205v-242h-205v-414h285v-227h-580q-84 0 -144 31.5t-88 78.5q-55 91 -60 169zM289 309q0 -46 19.5 -78t54 -32t53 27.5t18.5 56.5l2 26v901q-6 96 -74 97q-35 0 -53 -28t-18 -54l-2 -29 v-887z" />
<glyph unicode="&#x153;" horiz-adv-x="995" d="M63 279v563q0 40 15.5 96.5t40 95.5t80 71t145.5 32t156 -60q66 59 170 60q199 0 252 -197q14 -51 14 -92v-326h-342v-250q0 -46 22.5 -76t53.5 -30q70 10 73 113v122h193v-129q0 -37 -16.5 -93t-41 -95t-80 -69.5t-146 -30.5t-154.5 57q-68 -57 -156 -57t-143.5 30.5 t-80.5 73.5q-52 92 -52 160zM258 267.5q-2 -11.5 2 -29t10 -34.5q14 -38 58 -38q70 10 71 113v563q-2 0 0 11t-2 28.5t-10 34.5q-15 40 -59 40q-68 -10 -70 -114v-563q2 0 0 -11.5zM594 684h149v158q0 48 -19 81t-58 33t-55.5 -37.5t-16.5 -70.5v-164z" />
<glyph unicode="&#x178;" horiz-adv-x="704" d="M16 1505h217l111 -481l6 -14h4l6 14l111 481h217l-225 -864v-641h-221v641zM113 1638v201h190v-201h-190zM401 1638v201h191v-201h-191z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1021" d="M260 1305l141 184h220l141 -184h-189l-63 71l-61 -71h-189z" />
<glyph unicode="&#x2dc;" horiz-adv-x="1024" d="M313 1305v151q49 39 95.5 39t104.5 -18.5t97 -19.5t101 32v-152q-51 -39 -95.5 -39t-102.5 19.5t-99 19.5t-101 -32z" />
<glyph unicode="&#x2000;" horiz-adv-x="952" />
<glyph unicode="&#x2001;" horiz-adv-x="1905" />
<glyph unicode="&#x2002;" horiz-adv-x="952" />
<glyph unicode="&#x2003;" horiz-adv-x="1905" />
<glyph unicode="&#x2004;" horiz-adv-x="635" />
<glyph unicode="&#x2005;" horiz-adv-x="476" />
<glyph unicode="&#x2006;" horiz-adv-x="317" />
<glyph unicode="&#x2007;" horiz-adv-x="317" />
<glyph unicode="&#x2008;" horiz-adv-x="238" />
<glyph unicode="&#x2009;" horiz-adv-x="381" />
<glyph unicode="&#x200a;" horiz-adv-x="105" />
<glyph unicode="&#x2010;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
<glyph unicode="&#x2011;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
<glyph unicode="&#x2012;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
<glyph unicode="&#x2013;" horiz-adv-x="806" d="M74 649v195h659v-195h-659z" />
<glyph unicode="&#x2014;" horiz-adv-x="972" d="M74 649v195h825v-195h-825z" />
<glyph unicode="&#x2018;" horiz-adv-x="309" d="M49 1012v227l113 266h102l-71 -266h71v-227h-215z" />
<glyph unicode="&#x2019;" horiz-adv-x="309" d="M45 1012l72 266h-72v227h215v-227l-113 -266h-102z" />
<glyph unicode="&#x201a;" horiz-adv-x="309" d="M45 0v227h215v-227l-113 -266h-102l72 266h-72z" />
<glyph unicode="&#x201c;" horiz-adv-x="624" d="M53 1012v227l113 266h102l-71 -266h71v-227h-215zM356 1012v227l113 266h102l-71 -266h71v-227h-215z" />
<glyph unicode="&#x201d;" horiz-adv-x="624" d="M53 1012l72 266h-72v227h215v-227l-112 -266h-103zM356 1012l72 266h-72v227h215v-227l-112 -266h-103z" />
<glyph unicode="&#x201e;" horiz-adv-x="624" d="M53 0v227h215v-227l-112 -266h-103l72 266h-72zM356 0v227h215v-227l-112 -266h-103l72 266h-72z" />
<glyph unicode="&#x2022;" horiz-adv-x="663" d="M82 815q0 104 72.5 177t177 73t177.5 -72.5t73 -177t-73 -177.5t-177 -73t-177 73t-73 177z" />
<glyph unicode="&#x2026;" horiz-adv-x="964" d="M53 0v227h215v-227h-215zM375 0v227h215v-227h-215zM696 0v227h215v-227h-215z" />
<glyph unicode="&#x202f;" horiz-adv-x="381" />
<glyph unicode="&#x2039;" horiz-adv-x="1058" d="M74 649v160l911 475v-199l-698 -356l698 -356v-199z" />
<glyph unicode="&#x203a;" horiz-adv-x="1058" d="M74 174v199l698 356l-698 356v199l911 -475v-160z" />
<glyph unicode="&#x205f;" horiz-adv-x="476" />
<glyph unicode="&#x20ac;" horiz-adv-x="813" d="M53 547v137h107v137h-107v137h107v238q0 42 17.5 106t45 107t88 78t144.5 35t144 -34t88 -81q53 -90 61 -178l2 -33v-84h-207v84q-2 0 0 11.5t-3 27.5t-12 33q-18 39 -69 39q-70 -10 -78 -111v-238h233v-137h-233v-137h233v-137h-233v-238q0 -43 21.5 -76.5t59.5 -33.5 t58.5 27.5t20.5 56.5l2 26v84h207v-84q0 -38 -17.5 -104t-45.5 -109t-88 -77.5t-144 -34.5t-144.5 33.5t-88.5 81.5q-55 97 -60 175l-2 35v238h-107z" />
<glyph unicode="&#x2122;" horiz-adv-x="937" d="M74 1401v104h321v-104h-104v-580h-113v580h-104zM440 821v684h138l67 -319h6l68 319h137v-684h-104v449l-78 -449h-51l-80 449v-449h-103z" />
<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 0v1120h1120v-1120h-1120z" />
<glyph unicode="&#xfb01;" horiz-adv-x="772" d="M20 934v186h105v31q0 172 31 231q16 31 42 67q53 71 181 71q59 0 127 -13l20 -2v-184q-41 12 -91 12t-69.5 -18.5t-25.5 -58.5q-8 -52 -8 -107v-29h358v-1120h-207v934h-151v-934h-207v934h-105z" />
<glyph unicode="&#xfb02;" horiz-adv-x="772" d="M20 934v186h105v31q0 172 31 231q16 31 42 67q53 71 181 71q59 0 127 -13l20 -2h164v-1505h-207v1329q-37 4 -67.5 4t-50 -18.5t-25.5 -58.5q-8 -52 -8 -107v-29h104v-186h-104v-934h-207v934h-105z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1320" d="M20 934v186h105v31q0 190 51 270q23 35 71 63.5t115 28.5l97 -14v-178q-27 8 -62 8q-66 0 -65 -180v-29h104v-186h-104v-934h-207v934h-105zM495 934v186h105v31q0 190 51 270q23 35 71 63.5t115 28.5l97 -14v-178q-27 8 -62 8q-66 0 -65 -180v-29h104v-186h-104v-934 h-207v934h-105zM1032 0v1120h207v-1120h-207zM1032 1298v207h207v-207h-207z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1320" d="M20 934v186h105v31q0 190 51 270q23 35 71 63.5t115 28.5l97 -14v-178q-27 8 -62 8q-66 0 -65 -180v-29h104v-186h-104v-934h-207v934h-105zM495 934v186h105v31q0 190 51 270q23 35 71 63.5t115 28.5l97 -14v-178q-27 8 -62 8q-66 0 -65 -180v-29h104v-186h-104v-934 h-207v934h-105zM1032 0v1505h207v-1505h-207z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,45 @@
SIL Open Font License
Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name Source. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
—————————————————————————————-
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
—————————————————————————————-
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
“Reserved Font Name” refers to any names specified as such after the copyright statement(s).
“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s).
“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,39 @@
@font-face {
font-family: 'Source Sans Pro';
src: url('source-sans-pro-regular.eot');
src: url('source-sans-pro-regular.eot?#iefix') format('embedded-opentype'),
url('source-sans-pro-regular.woff') format('woff'),
url('source-sans-pro-regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Source Sans Pro';
src: url('source-sans-pro-italic.eot');
src: url('source-sans-pro-italic.eot?#iefix') format('embedded-opentype'),
url('source-sans-pro-italic.woff') format('woff'),
url('source-sans-pro-italic.ttf') format('truetype');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'Source Sans Pro';
src: url('source-sans-pro-semibold.eot');
src: url('source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'),
url('source-sans-pro-semibold.woff') format('woff'),
url('source-sans-pro-semibold.ttf') format('truetype');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Source Sans Pro';
src: url('source-sans-pro-semibolditalic.eot');
src: url('source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'),
url('source-sans-pro-semibolditalic.woff') format('woff'),
url('source-sans-pro-semibolditalic.ttf') format('truetype');
font-weight: 600;
font-style: italic;
}

View File

@@ -1,12 +1,13 @@
{
"name": "reveal.js",
"version": "2.5.0",
"version": "3.2.0",
"description": "The HTML Presentation Framework",
"homepage": "http://lab.hakim.se/reveal-js",
"subdomain": "revealjs",
"main": "js/reveal.js",
"scripts": {
"test": "grunt jshint",
"start": ""
"test": "grunt test",
"start": "grunt serve"
},
"author": {
"name": "Hakim El Hattab",
@@ -18,28 +19,27 @@
"url": "git://github.com/hakimel/reveal.js.git"
},
"engines": {
"node": "~0.8.0"
"node": "~4.1.1"
},
"dependencies": {
"underscore": "~1.3.3",
"express": "~2.5.9",
"mustache": "~0.4.0",
"socket.io": "~0.9.13"
"underscore": "~1.8.3",
"express": "~4.13.3",
"mustache": "~2.1.3",
"socket.io": "~1.3.7"
},
"devDependencies": {
"grunt-contrib-jshint": "~0.2.0",
"grunt-contrib-cssmin": "~0.4.1",
"grunt-contrib-uglify": "~0.1.1",
"grunt-contrib-watch": "~0.2.0",
"grunt-contrib-sass": "~0.2.2",
"grunt-contrib-connect": "~0.2.0",
"grunt-zip": "~0.7.0",
"grunt": "~0.4.0"
"grunt-contrib-qunit": "~0.7.0",
"grunt-contrib-jshint": "~0.11.3",
"grunt-contrib-cssmin": "~0.14.0",
"grunt-contrib-uglify": "~0.9.2",
"grunt-contrib-watch": "~0.6.1",
"grunt-sass": "~1.1.0-beta",
"grunt-contrib-connect": "~0.11.2",
"grunt-autoprefixer": "~3.0.3",
"grunt-zip": "~0.17.1",
"grunt": "~0.4.5",
"node-sass": "~3.3.3"
},
"licenses": [
{
"type": "MIT",
"url": "https://github.com/hakimel/reveal.js/blob/master/LICENSE"
}
]
"license": "MIT"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -7,7 +7,9 @@
<title>reveal.js - Markdown Demo</title>
<link rel="stylesheet" href="../../css/reveal.css">
<link rel="stylesheet" href="../../css/theme/default.css" id="theme">
<link rel="stylesheet" href="../../css/theme/white.css" id="theme">
<link rel="stylesheet" href="../../lib/css/zenburn.css">
</head>
<body>
@@ -17,7 +19,7 @@
<div class="slides">
<!-- Use external markdown resource, separate slides by three newlines; vertical slides by two newlines -->
<section data-markdown="example.md" data-separator="^\n\n\n" data-vertical="^\n\n"></section>
<section data-markdown="example.md" data-separator="^\n\n\n" data-separator-vertical="^\n\n"></section>
<!-- Slides are separated by three dashes (quick 'n dirty regular expression) -->
<section data-markdown data-separator="---">
@@ -34,7 +36,7 @@
</section>
<!-- Slides are separated by newline + three dashes + newline, vertical slides identical but two dashes -->
<section data-markdown data-separator="^\n---\n$" data-vertical="^\n--\n$">
<section data-markdown data-separator="^\n---\n$" data-separator-vertical="^\n--\n$">
<script type="text/template">
## Demo 2
Slide 1.1
@@ -66,6 +68,37 @@
</script>
</section>
<!-- Slide attributes -->
<section data-markdown>
<script type="text/template">
<!-- .slide: data-background="#000000" -->
## Slide attributes
</script>
</section>
<!-- Element attributes -->
<section data-markdown>
<script type="text/template">
## Element attributes
- Item 1 <!-- .element: class="fragment" data-fragment-index="2" -->
- Item 2 <!-- .element: class="fragment" data-fragment-index="1" -->
</script>
</section>
<!-- Code -->
<section data-markdown>
<script type="text/template">
```php
public function foo()
{
$foo = array(
'bar' => 'bar'
)
}
```
</script>
</section>
</div>
</div>
@@ -80,14 +113,12 @@
history: true,
center: true,
theme: Reveal.getQueryHash().theme,
transition: Reveal.getQueryHash().transition || 'default',
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: '../../lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: '../notes/notes.js' }
]
});

View File

@@ -1,220 +1,402 @@
// From https://gist.github.com/1343518
// Modified by Hakim to handle Markdown indented with tabs
(function(){
/**
* The reveal.js markdown plugin. Handles parsing of
* markdown inside of presentations as well as loading
* of external markdown documents.
*/
(function( root, factory ) {
if( typeof exports === 'object' ) {
module.exports = factory( require( './marked' ) );
}
else {
// Browser globals (root is window)
root.RevealMarkdown = factory( root.marked );
root.RevealMarkdown.initialize();
}
}( this, function( marked ) {
if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}
if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}
if (typeof hljs !== 'undefined') {
marked.setOptions({
highlight: function (lang, code) {
return hljs.highlightAuto(lang, code).value;
}
});
}
if( typeof hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( lang, code ) {
return hljs.highlightAuto( lang, code ).value;
}
});
}
var stripLeadingWhitespace = function(section) {
var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$',
DEFAULT_NOTES_SEPARATOR = 'note:',
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$',
DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR = '\\\.slide:\\\s*?(\\\S.+?)$';
var template = section.querySelector( 'script' );
var SCRIPT_END_PLACEHOLDER = '__SCRIPT_END__';
// strip leading whitespace so it isn't evaluated as code
var text = ( template || section ).textContent;
var leadingWs = text.match(/^\n?(\s*)/)[1].length,
leadingTabs = text.match(/^\n?(\t*)/)[1].length;
/**
* Retrieves the markdown contents of a slide section
* element. Normalizes leading tabs/whitespace.
*/
function getMarkdownFromSlide( section ) {
if( leadingTabs > 0 ) {
text = text.replace( new RegExp('\\n?\\t{' + leadingTabs + '}','g'), '\n' );
}
else if( leadingWs > 1 ) {
text = text.replace( new RegExp('\\n? {' + leadingWs + '}','g'), '\n' );
}
var template = section.querySelector( 'script' );
return text;
// strip leading whitespace so it isn't evaluated as code
var text = ( template || section ).textContent;
};
// restore script end tags
text = text.replace( new RegExp( SCRIPT_END_PLACEHOLDER, 'g' ), '</script>' );
var twrap = function(el) {
var content = el.content || el;
content += el.asideContent ? ('<aside class="notes" data-markdown>' + el.asideContent + '</aside>') : '';
return '<script type="text/template">' + content + '</script>';
};
var leadingWs = text.match( /^\n?(\s*)/ )[1].length,
leadingTabs = text.match( /^\n?(\t*)/ )[1].length;
var getForwardedAttributes = function(section) {
var attributes = section.attributes;
var result = [];
if( leadingTabs > 0 ) {
text = text.replace( new RegExp('\\n?\\t{' + leadingTabs + '}','g'), '\n' );
}
else if( leadingWs > 1 ) {
text = text.replace( new RegExp('\\n? {' + leadingWs + '}', 'g'), '\n' );
}
for( var i = 0, len = attributes.length; i < len; i++ ) {
var name = attributes[i].name,
value = attributes[i].value;
return text;
// disregard attributes that are used for markdown loading/parsing
if( /data\-(markdown|separator|vertical|notes)/gi.test( name ) ) continue;
}
if( value ) {
result.push( name + '=' + value );
}
else {
result.push( name );
}
}
/**
* Given a markdown slide section element, this will
* return all arguments that aren't related to markdown
* parsing. Used to forward any other user-defined arguments
* to the output markdown slide.
*/
function getForwardedAttributes( section ) {
return result.join( ' ' );
};
var attributes = section.attributes;
var result = [];
var slidifyMarkdown = function(markdown, separator, vertical, notes, attributes) {
for( var i = 0, len = attributes.length; i < len; i++ ) {
var name = attributes[i].name,
value = attributes[i].value;
separator = separator || '^\n---\n$';
notes = notes || 'note:';
// disregard attributes that are used for markdown loading/parsing
if( /data\-(markdown|separator|vertical|notes)/gi.test( name ) ) continue;
var separatorRegex = new RegExp( separator + ( vertical ? '|' + vertical : '' ), 'mg' ),
horizontalSeparatorRegex = new RegExp( separator ),
notesSeparatorRegex = new RegExp( notes, 'mgi' ),
matches,
noteMatch,
lastIndex = 0,
isHorizontal,
wasHorizontal = true,
content,
asideContent,
slide,
sectionStack = [],
markdownSections = '';
if( value ) {
result.push( name + '="' + value + '"' );
}
else {
result.push( name );
}
}
// iterate until all blocks between separators are stacked up
while( matches = separatorRegex.exec( markdown ) ) {
asideContent = null;
return result.join( ' ' );
// determine direction (horizontal by default)
isHorizontal = horizontalSeparatorRegex.test( matches[0] );
}
if( !isHorizontal && wasHorizontal ) {
// create vertical stack
sectionStack.push( [] );
}
/**
* Inspects the given options and fills out default
* values for what's not defined.
*/
function getSlidifyOptions( options ) {
// pluck slide content from markdown input
content = markdown.substring( lastIndex, matches.index );
noteMatch = content.split( notesSeparatorRegex );
options = options || {};
options.separator = options.separator || DEFAULT_SLIDE_SEPARATOR;
options.notesSeparator = options.notesSeparator || DEFAULT_NOTES_SEPARATOR;
options.attributes = options.attributes || '';
if( noteMatch.length === 2 ) {
content = noteMatch[0];
asideContent = noteMatch[1].trim();
}
return options;
slide = {
content: content,
asideContent: asideContent || ""
};
}
if( isHorizontal && wasHorizontal ) {
// add to horizontal stack
sectionStack.push(slide);
} else {
// add to vertical stack
sectionStack[sectionStack.length-1].push(slide);
}
/**
* Helper function for constructing a markdown slide.
*/
function createMarkdownSlide( content, options ) {
lastIndex = separatorRegex.lastIndex;
wasHorizontal = isHorizontal;
}
options = getSlidifyOptions( options );
// add the remaining slide
(wasHorizontal ? sectionStack : sectionStack[sectionStack.length-1]).push(markdown.substring(lastIndex));
var notesMatch = content.split( new RegExp( options.notesSeparator, 'mgi' ) );
// flatten the hierarchical stack, and insert <section data-markdown> tags
for( var k = 0, klen = sectionStack.length; k < klen; k++ ) {
// vertical
if( sectionStack[k].propertyIsEnumerable(length) && typeof sectionStack[k].splice === 'function' ) {
markdownSections += '<section '+ attributes +'>' +
'<section data-markdown>' + sectionStack[k].map(twrap).join('</section><section data-markdown>') + '</section>' +
'</section>';
} else {
markdownSections += '<section '+ attributes +' data-markdown>' + twrap( sectionStack[k] ) + '</section>';
}
}
if( notesMatch.length === 2 ) {
content = notesMatch[0] + '<aside class="notes" data-markdown>' + notesMatch[1].trim() + '</aside>';
}
return markdownSections;
};
// prevent script end tags in the content from interfering
// with parsing
content = content.replace( /<\/script>/g, SCRIPT_END_PLACEHOLDER );
var querySlidingMarkdown = function() {
return '<script type="text/template">' + content + '</script>';
var sections = document.querySelectorAll( '[data-markdown]'),
section;
}
for( var j = 0, jlen = sections.length; j < jlen; j++ ) {
/**
* Parses a data string into multiple slides based
* on the passed in separator arguments.
*/
function slidify( markdown, options ) {
section = sections[j];
options = getSlidifyOptions( options );
if( section.getAttribute('data-markdown').length ) {
var separatorRegex = new RegExp( options.separator + ( options.verticalSeparator ? '|' + options.verticalSeparator : '' ), 'mg' ),
horizontalSeparatorRegex = new RegExp( options.separator );
var xhr = new XMLHttpRequest(),
url = section.getAttribute('data-markdown');
var matches,
lastIndex = 0,
isHorizontal,
wasHorizontal = true,
content,
sectionStack = [];
datacharset = section.getAttribute('data-charset');
// see https://developer.mozilla.org/en-US/docs/Web/API/element.getAttribute#Notes
if (datacharset != null && datacharset != '') {
xhr.overrideMimeType('text/html; charset=' + datacharset);
}
// iterate until all blocks between separators are stacked up
while( matches = separatorRegex.exec( markdown ) ) {
notes = null;
xhr.onreadystatechange = function () {
if( xhr.readyState === 4 ) {
if (xhr.status >= 200 && xhr.status < 300) {
section.outerHTML = slidifyMarkdown( xhr.responseText, section.getAttribute('data-separator'), section.getAttribute('data-vertical'), section.getAttribute('data-notes'), getForwardedAttributes(section) );
} else {
section.outerHTML = '<section data-state="alert">ERROR: The attempt to fetch ' + url + ' failed with the HTTP status ' + xhr.status +
'. Check your browser\'s JavaScript console for more details.' +
'<p>Remember that you need to serve the presentation HTML from a HTTP server and the Markdown file must be there too.</p></section>';
}
}
};
// determine direction (horizontal by default)
isHorizontal = horizontalSeparatorRegex.test( matches[0] );
xhr.open('GET', url, false);
try {
xhr.send();
} catch (e) {
alert('Failed to get the Markdown file ' + url + '. Make sure that the presentation and the file are served by a HTTP server and the file can be found there. ' + e);
}
if( !isHorizontal && wasHorizontal ) {
// create vertical stack
sectionStack.push( [] );
}
} else if( section.getAttribute('data-separator') ) {
// pluck slide content from markdown input
content = markdown.substring( lastIndex, matches.index );
var markdown = stripLeadingWhitespace(section);
section.outerHTML = slidifyMarkdown( markdown, section.getAttribute('data-separator'), section.getAttribute('data-vertical'), section.getAttribute('data-notes'), getForwardedAttributes(section) );
if( isHorizontal && wasHorizontal ) {
// add to horizontal stack
sectionStack.push( content );
}
else {
// add to vertical stack
sectionStack[sectionStack.length-1].push( content );
}
}
}
lastIndex = separatorRegex.lastIndex;
wasHorizontal = isHorizontal;
}
};
// add the remaining slide
( wasHorizontal ? sectionStack : sectionStack[sectionStack.length-1] ).push( markdown.substring( lastIndex ) );
var queryMarkdownSlides = function() {
var markdownSections = '';
var sections = document.querySelectorAll( '[data-markdown]');
// flatten the hierarchical stack, and insert <section data-markdown> tags
for( var i = 0, len = sectionStack.length; i < len; i++ ) {
// vertical
if( sectionStack[i] instanceof Array ) {
markdownSections += '<section '+ options.attributes +'>';
for( var j = 0, jlen = sections.length; j < jlen; j++ ) {
sectionStack[i].forEach( function( child ) {
markdownSections += '<section data-markdown>' + createMarkdownSlide( child, options ) + '</section>';
} );
makeHtml(sections[j]);
markdownSections += '</section>';
}
else {
markdownSections += '<section '+ options.attributes +' data-markdown>' + createMarkdownSlide( sectionStack[i], options ) + '</section>';
}
}
}
return markdownSections;
};
}
var makeHtml = function(section) {
/**
* Parses any current data-markdown slides, splits
* multi-slide markdown into separate sections and
* handles loading of external markdown.
*/
function processSlides() {
var notes = section.querySelector( 'aside.notes' );
var sections = document.querySelectorAll( '[data-markdown]'),
section;
var markdown = stripLeadingWhitespace(section);
for( var i = 0, len = sections.length; i < len; i++ ) {
section.innerHTML = marked(markdown);
section = sections[i];
if( notes ) {
section.appendChild( notes );
}
if( section.getAttribute( 'data-markdown' ).length ) {
};
var xhr = new XMLHttpRequest(),
url = section.getAttribute( 'data-markdown' );
querySlidingMarkdown();
datacharset = section.getAttribute( 'data-charset' );
queryMarkdownSlides();
// see https://developer.mozilla.org/en-US/docs/Web/API/element.getAttribute#Notes
if( datacharset != null && datacharset != '' ) {
xhr.overrideMimeType( 'text/html; charset=' + datacharset );
}
})();
xhr.onreadystatechange = function() {
if( xhr.readyState === 4 ) {
// file protocol yields status code 0 (useful for local debug, mobile applications etc.)
if ( ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status === 0 ) {
section.outerHTML = slidify( xhr.responseText, {
separator: section.getAttribute( 'data-separator' ),
verticalSeparator: section.getAttribute( 'data-separator-vertical' ),
notesSeparator: section.getAttribute( 'data-separator-notes' ),
attributes: getForwardedAttributes( section )
});
}
else {
section.outerHTML = '<section data-state="alert">' +
'ERROR: The attempt to fetch ' + url + ' failed with HTTP status ' + xhr.status + '.' +
'Check your browser\'s JavaScript console for more details.' +
'<p>Remember that you need to serve the presentation HTML from a HTTP server.</p>' +
'</section>';
}
}
};
xhr.open( 'GET', url, false );
try {
xhr.send();
}
catch ( e ) {
alert( 'Failed to get the Markdown file ' + url + '. Make sure that the presentation and the file are served by a HTTP server and the file can be found there. ' + e );
}
}
else if( section.getAttribute( 'data-separator' ) || section.getAttribute( 'data-separator-vertical' ) || section.getAttribute( 'data-separator-notes' ) ) {
section.outerHTML = slidify( getMarkdownFromSlide( section ), {
separator: section.getAttribute( 'data-separator' ),
verticalSeparator: section.getAttribute( 'data-separator-vertical' ),
notesSeparator: section.getAttribute( 'data-separator-notes' ),
attributes: getForwardedAttributes( section )
});
}
else {
section.innerHTML = createMarkdownSlide( getMarkdownFromSlide( section ) );
}
}
}
/**
* Check if a node value has the attributes pattern.
* If yes, extract it and add that value as one or several attributes
* the the terget element.
*
* You need Cache Killer on Chrome to see the effect on any FOM transformation
* directly on refresh (F5)
* http://stackoverflow.com/questions/5690269/disabling-chrome-cache-for-website-development/7000899#answer-11786277
*/
function addAttributeInElement( node, elementTarget, separator ) {
var mardownClassesInElementsRegex = new RegExp( separator, 'mg' );
var mardownClassRegex = new RegExp( "([^\"= ]+?)=\"([^\"=]+?)\"", 'mg' );
var nodeValue = node.nodeValue;
if( matches = mardownClassesInElementsRegex.exec( nodeValue ) ) {
var classes = matches[1];
nodeValue = nodeValue.substring( 0, matches.index ) + nodeValue.substring( mardownClassesInElementsRegex.lastIndex );
node.nodeValue = nodeValue;
while( matchesClass = mardownClassRegex.exec( classes ) ) {
elementTarget.setAttribute( matchesClass[1], matchesClass[2] );
}
return true;
}
return false;
}
/**
* Add attributes to the parent element of a text node,
* or the element of an attribute node.
*/
function addAttributes( section, element, previousElement, separatorElementAttributes, separatorSectionAttributes ) {
if ( element != null && element.childNodes != undefined && element.childNodes.length > 0 ) {
previousParentElement = element;
for( var i = 0; i < element.childNodes.length; i++ ) {
childElement = element.childNodes[i];
if ( i > 0 ) {
j = i - 1;
while ( j >= 0 ) {
aPreviousChildElement = element.childNodes[j];
if ( typeof aPreviousChildElement.setAttribute == 'function' && aPreviousChildElement.tagName != "BR" ) {
previousParentElement = aPreviousChildElement;
break;
}
j = j - 1;
}
}
parentSection = section;
if( childElement.nodeName == "section" ) {
parentSection = childElement ;
previousParentElement = childElement ;
}
if ( typeof childElement.setAttribute == 'function' || childElement.nodeType == Node.COMMENT_NODE ) {
addAttributes( parentSection, childElement, previousParentElement, separatorElementAttributes, separatorSectionAttributes );
}
}
}
if ( element.nodeType == Node.COMMENT_NODE ) {
if ( addAttributeInElement( element, previousElement, separatorElementAttributes ) == false ) {
addAttributeInElement( element, section, separatorSectionAttributes );
}
}
}
/**
* Converts any current data-markdown slides in the
* DOM to HTML.
*/
function convertSlides() {
var sections = document.querySelectorAll( '[data-markdown]');
for( var i = 0, len = sections.length; i < len; i++ ) {
var section = sections[i];
// Only parse the same slide once
if( !section.getAttribute( 'data-markdown-parsed' ) ) {
section.setAttribute( 'data-markdown-parsed', true )
var notes = section.querySelector( 'aside.notes' );
var markdown = getMarkdownFromSlide( section );
section.innerHTML = marked( markdown );
addAttributes( section, section, null, section.getAttribute( 'data-element-attributes' ) ||
section.parentNode.getAttribute( 'data-element-attributes' ) ||
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR,
section.getAttribute( 'data-attributes' ) ||
section.parentNode.getAttribute( 'data-attributes' ) ||
DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR);
// If there were notes, we need to re-add them after
// having overwritten the section's HTML
if( notes ) {
section.appendChild( notes );
}
}
}
}
// API
return {
initialize: function() {
processSlides();
convertSlides();
},
// TODO: Do these belong in the API?
processSlides: processSlides,
convertSlides: convertSlides,
slidify: slidify
};
}));

File diff suppressed because one or more lines are too long

View File

@@ -7,14 +7,17 @@
var RevealMath = window.RevealMath || (function(){
var options = Reveal.getConfig().math || {};
options.mathjax = options.mathjax || 'http://cdn.mathjax.org/mathjax/latest/MathJax.js';
options.mathjax = options.mathjax || 'https://cdn.mathjax.org/mathjax/latest/MathJax.js';
options.config = options.config || 'TeX-AMS_HTML-full';
loadScript( options.mathjax + '?config=' + options.config, function() {
MathJax.Hub.Config({
messageStyle: 'none',
tex2jax: { inlineMath: [['$','$'],['\\(','\\)']] },
tex2jax: {
inlineMath: [['$','$'],['\\(','\\)']] ,
skipTags: ['script','noscript','style','textarea','pre']
},
skipStartupTypeset: true
});

View File

@@ -8,6 +8,6 @@
if (data.socketId !== socketId) { return; }
if( window.location.host === 'localhost:1947' ) return;
Reveal.slide(data.indexh, data.indexv, data.indexf, 'remote');
Reveal.setState(data.state);
});
}());

View File

@@ -1,32 +1,32 @@
var http = require('http');
var express = require('express');
var fs = require('fs');
var io = require('socket.io');
var crypto = require('crypto');
var app = express.createServer();
var staticDir = express.static;
var app = express();
var staticDir = express.static;
var server = http.createServer(app);
io = io.listen(app);
io = io(server);
var opts = {
port: 1948,
port: process.env.PORT || 1948,
baseDir : __dirname + '/../../'
};
io.sockets.on('connection', function(socket) {
socket.on('slidechanged', function(slideData) {
if (typeof slideData.secret == 'undefined' || slideData.secret == null || slideData.secret === '') return;
if (createHash(slideData.secret) === slideData.socketId) {
slideData.secret = null;
socket.broadcast.emit(slideData.socketId, slideData);
io.on( 'connection', function( socket ) {
socket.on('multiplex-statechanged', function(data) {
if (typeof data.secret == 'undefined' || data.secret == null || data.secret === '') return;
if (createHash(data.secret) === data.socketId) {
data.secret = null;
socket.broadcast.emit(data.socketId, data);
};
});
});
app.configure(function() {
[ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) {
app.use('/' + dir, staticDir(opts.baseDir + dir));
});
[ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) {
app.use('/' + dir, staticDir(opts.baseDir + dir));
});
app.get("/", function(req, res) {
@@ -47,7 +47,7 @@ var createHash = function(secret) {
};
// Actually listen
app.listen(opts.port || null);
server.listen( opts.port || null );
var brown = '\033[33m',
green = '\033[32m',

View File

@@ -1,50 +1,31 @@
(function() {
// don't emit events from inside the previews themselves
// Don't emit events from inside of notes windows
if ( window.location.search.match( /receiver/gi ) ) { return; }
var multiplex = Reveal.getConfig().multiplex;
var socket = io.connect(multiplex.url);
var socket = io.connect( multiplex.url );
var notify = function( slideElement, indexh, indexv, origin ) {
if( typeof origin === 'undefined' && origin !== 'remote' ) {
var nextindexh;
var nextindexv;
function post() {
var fragmentindex = Reveal.getIndices().f;
if (typeof fragmentindex == 'undefined') {
fragmentindex = 0;
}
var messageData = {
state: Reveal.getState(),
secret: multiplex.secret,
socketId: multiplex.id
};
if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') {
nextindexh = indexh;
nextindexv = indexv + 1;
} else {
nextindexh = indexh + 1;
nextindexv = 0;
}
socket.emit( 'multiplex-statechanged', messageData );
var slideData = {
indexh : indexh,
indexv : indexv,
indexf : fragmentindex,
nextindexh : nextindexh,
nextindexv : nextindexv,
secret: multiplex.secret,
socketId : multiplex.id
};
socket.emit('slidechanged', slideData);
}
}
Reveal.addEventListener( 'slidechanged', function( event ) {
notify( event.currentSlide, event.indexh, event.indexv, event.origin );
} );
var fragmentNotify = function( event ) {
notify( Reveal.getCurrentSlide(), Reveal.getIndices().h, Reveal.getIndices().v, event.origin );
};
Reveal.addEventListener( 'fragmentshown', fragmentNotify );
Reveal.addEventListener( 'fragmenthidden', fragmentNotify );
// Monitor events that trigger a change in state
Reveal.addEventListener( 'slidechanged', post );
Reveal.addEventListener( 'fragmentshown', post );
Reveal.addEventListener( 'fragmenthidden', post );
Reveal.addEventListener( 'overviewhidden', post );
Reveal.addEventListener( 'overviewshown', post );
Reveal.addEventListener( 'paused', post );
Reveal.addEventListener( 'resumed', post );
}());

View File

@@ -1,57 +1,65 @@
(function() {
// don't emit events from inside the previews themselves
if ( window.location.search.match( /receiver/gi ) ) { return; }
if( window.location.search.match( /receiver/gi ) ) { return; }
var socket = io.connect(window.location.origin);
var socketId = Math.random().toString().slice(2);
console.log('View slide notes at ' + window.location.origin + '/notes/' + socketId);
window.open(window.location.origin + '/notes/' + socketId, 'notes-' + socketId);
var socket = io.connect( window.location.origin ),
socketId = Math.random().toString().slice( 2 );
// Fires when a fragment is shown
Reveal.addEventListener( 'fragmentshown', function( event ) {
var fragmentData = {
fragment : 'next',
socketId : socketId
console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId );
window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId );
/**
* Posts the current slide data to the notes window
*/
function post() {
var slideElement = Reveal.getCurrentSlide(),
notesElement = slideElement.querySelector( 'aside.notes' );
var messageData = {
notes: '',
markdown: false,
socketId: socketId,
state: Reveal.getState()
};
socket.emit('fragmentchanged', fragmentData);
} );
// Fires when a fragment is hidden
Reveal.addEventListener( 'fragmenthidden', function( event ) {
var fragmentData = {
fragment : 'previous',
socketId : socketId
};
socket.emit('fragmentchanged', fragmentData);
} );
// Fires when slide is changed
Reveal.addEventListener( 'slidechanged', function( event ) {
var nextindexh;
var nextindexv;
var slideElement = event.currentSlide;
if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') {
nextindexh = event.indexh;
nextindexv = event.indexv + 1;
} else {
nextindexh = event.indexh + 1;
nextindexv = 0;
// Look for notes defined in a slide attribute
if( slideElement.hasAttribute( 'data-notes' ) ) {
messageData.notes = slideElement.getAttribute( 'data-notes' );
}
var notes = slideElement.querySelector('aside.notes');
var slideData = {
notes : notes ? notes.innerHTML : '',
indexh : event.indexh,
indexv : event.indexv,
nextindexh : nextindexh,
nextindexv : nextindexv,
socketId : socketId,
markdown : notes ? typeof notes.getAttribute('data-markdown') === 'string' : false
// Look for notes defined in an aside element
if( notesElement ) {
messageData.notes = notesElement.innerHTML;
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
}
};
socket.emit( 'statechanged', messageData );
socket.emit('slidechanged', slideData);
}
// When a new notes window connects, post our current state
socket.on( 'new-subscriber', function( data ) {
post();
} );
// When the state changes from inside of the speaker view
socket.on( 'statechanged-speaker', function( data ) {
Reveal.setState( data.state );
} );
// Monitor events that trigger a change in state
Reveal.addEventListener( 'slidechanged', post );
Reveal.addEventListener( 'fragmentshown', post );
Reveal.addEventListener( 'fragmenthidden', post );
Reveal.addEventListener( 'overviewhidden', post );
Reveal.addEventListener( 'overviewshown', post );
Reveal.addEventListener( 'paused', post );
Reveal.addEventListener( 'resumed', post );
// Post the initial state
post();
}());

View File

@@ -1,59 +1,68 @@
var http = require('http');
var express = require('express');
var fs = require('fs');
var io = require('socket.io');
var _ = require('underscore');
var Mustache = require('mustache');
var app = express.createServer();
var app = express();
var staticDir = express.static;
var server = http.createServer(app);
io = io.listen(app);
io = io(server);
var opts = {
port : 1947,
baseDir : __dirname + '/../../'
};
io.sockets.on('connection', function(socket) {
socket.on('slidechanged', function(slideData) {
socket.broadcast.emit('slidedata', slideData);
io.on( 'connection', function( socket ) {
socket.on( 'new-subscriber', function( data ) {
socket.broadcast.emit( 'new-subscriber', data );
});
socket.on('fragmentchanged', function(fragmentData) {
socket.broadcast.emit('fragmentdata', fragmentData);
socket.on( 'statechanged', function( data ) {
socket.broadcast.emit( 'statechanged', data );
});
socket.on( 'statechanged-speaker', function( data ) {
socket.broadcast.emit( 'statechanged-speaker', data );
});
});
app.configure(function() {
[ 'css', 'js', 'images', 'plugin', 'lib' ].forEach(function(dir) {
app.use('/' + dir, staticDir(opts.baseDir + dir));
});
[ 'css', 'js', 'images', 'plugin', 'lib' ].forEach( function( dir ) {
app.use( '/' + dir, staticDir( opts.baseDir + dir ) );
});
app.get("/", function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream(opts.baseDir + '/index.html').pipe(res);
app.get('/', function( req, res ) {
res.writeHead( 200, { 'Content-Type': 'text/html' } );
fs.createReadStream( opts.baseDir + '/index.html' ).pipe( res );
});
app.get("/notes/:socketId", function(req, res) {
app.get( '/notes/:socketId', function( req, res ) {
fs.readFile(opts.baseDir + 'plugin/notes-server/notes.html', function(err, data) {
res.send(Mustache.to_html(data.toString(), {
fs.readFile( opts.baseDir + 'plugin/notes-server/notes.html', function( err, data ) {
res.send( Mustache.to_html( data.toString(), {
socketId : req.params.socketId
}));
});
// fs.createReadStream(opts.baseDir + 'notes-server/notes.html').pipe(res);
});
// Actually listen
app.listen(opts.port || null);
server.listen( opts.port || null );
var brown = '\033[33m',
green = '\033[32m',
reset = '\033[0m';
var slidesLocation = "http://localhost" + ( opts.port ? ( ':' + opts.port ) : '' );
var slidesLocation = 'http://localhost' + ( opts.port ? ( ':' + opts.port ) : '' );
console.log( brown + "reveal.js - Speaker Notes" + reset );
console.log( "1. Open the slides at " + green + slidesLocation + reset );
console.log( "2. Click on the link your JS console to go to the notes page" );
console.log( "3. Advance through your slides and your notes will advance automatically" );
console.log( brown + 'reveal.js - Speaker Notes' + reset );
console.log( '1. Open the slides at ' + green + slidesLocation + reset );
console.log( '2. Click on the link your JS console to go to the notes page' );
console.log( '3. Advance through your slides and your notes will advance automatically' );

View File

@@ -3,8 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=1150">
<title>reveal.js - Slide Notes</title>
<style>
@@ -12,130 +10,397 @@
font-family: Helvetica;
}
#notes {
font-size: 24px;
width: 640px;
margin-top: 5px;
clear: left;
#current-slide,
#upcoming-slide,
#speaker-controls {
padding: 6px;
box-sizing: border-box;
-moz-box-sizing: border-box;
}
#wrap-current-slide {
width: 640px;
height: 512px;
float: left;
overflow: hidden;
#current-slide iframe,
#upcoming-slide iframe {
width: 100%;
height: 100%;
border: 1px solid #ddd;
}
#current-slide .label,
#upcoming-slide .label {
position: absolute;
top: 10px;
left: 10px;
font-weight: bold;
font-size: 14px;
z-index: 2;
color: rgba( 255, 255, 255, 0.9 );
}
#current-slide {
width: 1280px;
height: 1024px;
border: none;
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scale(0.5);
-moz-transform: scale(0.5);
-ms-transform: scale(0.5);
-o-transform: scale(0.5);
transform: scale(0.5);
}
#wrap-next-slide {
width: 448px;
height: 358px;
float: left;
margin: 0 0 0 10px;
overflow: hidden;
}
#next-slide {
width: 1280px;
height: 1024px;
border: none;
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scale(0.35);
-moz-transform: scale(0.35);
-ms-transform: scale(0.35);
-o-transform: scale(0.35);
transform: scale(0.35);
}
.slides {
position: relative;
margin-bottom: 10px;
border: 1px solid black;
border-radius: 2px;
background: rgb(28, 30, 32);
}
.slides span {
position: absolute;
top: 3px;
left: 3px;
font-weight: bold;
font-size: 14px;
color: rgba( 255, 255, 255, 0.9 );
width: 65%;
height: 100%;
top: 0;
left: 0;
padding-right: 0;
}
#upcoming-slide {
position: absolute;
width: 35%;
height: 40%;
right: 0;
top: 0;
}
#speaker-controls {
position: absolute;
top: 40%;
right: 0;
width: 35%;
height: 60%;
font-size: 18px;
}
.speaker-controls-time.hidden,
.speaker-controls-notes.hidden {
display: none;
}
.speaker-controls-time .label,
.speaker-controls-notes .label {
text-transform: uppercase;
font-weight: normal;
font-size: 0.66em;
color: #666;
margin: 0;
}
.speaker-controls-time {
border-bottom: 1px solid rgba( 200, 200, 200, 0.5 );
margin-bottom: 10px;
padding: 10px 16px;
padding-bottom: 20px;
cursor: pointer;
}
.speaker-controls-time .reset-button {
opacity: 0;
float: right;
color: #666;
text-decoration: none;
}
.speaker-controls-time:hover .reset-button {
opacity: 1;
}
.speaker-controls-time .timer,
.speaker-controls-time .clock {
width: 50%;
font-size: 1.9em;
}
.speaker-controls-time .timer {
float: left;
}
.speaker-controls-time .clock {
float: right;
text-align: right;
}
.speaker-controls-time span.mute {
color: #bbb;
}
.speaker-controls-notes {
padding: 10px 16px;
}
.speaker-controls-notes .value {
margin-top: 5px;
line-height: 1.4;
font-size: 1.2em;
}
.clear {
clear: both;
}
@media screen and (max-width: 1080px) {
#speaker-controls {
font-size: 16px;
}
}
@media screen and (max-width: 900px) {
#speaker-controls {
font-size: 14px;
}
}
@media screen and (max-width: 800px) {
#speaker-controls {
font-size: 12px;
}
}
</style>
</head>
<body>
<div id="wrap-current-slide" class="slides">
<iframe src="/?receiver" width="1280" height="1024" id="current-slide"></iframe>
</div>
<div id="current-slide"></div>
<div id="upcoming-slide"><span class="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 id="wrap-next-slide" class="slides">
<iframe src="/?receiver" width="640" height="512" id="next-slide"></iframe>
<span>UPCOMING:</span>
<div class="speaker-controls-notes hidden">
<h4 class="label">Notes</h4>
<div class="value"></div>
</div>
</div>
<div id="notes"></div>
<script src="/socket.io/socket.io.js"></script>
<script src="/plugin/markdown/marked.js"></script>
<script>
var socketId = '{{socketId}}';
var socket = io.connect(window.location.origin);
var notes = document.getElementById('notes');
var currentSlide = document.getElementById('current-slide');
var nextSlide = document.getElementById('next-slide');
(function() {
socket.on('slidedata', function(data) {
// ignore data from sockets that aren't ours
if (data.socketId !== socketId) { return; }
var notes,
notesValue,
currentState,
currentSlide,
upcomingSlide,
connected = false;
var socket = io.connect( window.location.origin ),
socketId = '{{socketId}}';
socket.on( 'statechanged', function( data ) {
// ignore data from sockets that aren't ours
if( data.socketId !== socketId ) { return; }
if( connected === false ) {
connected = true;
setupKeyboard();
setupNotes();
setupTimer();
}
handleStateMessage( data );
} );
// Load our presentation iframes
setupIframes();
// Once the iframes have loaded, emit a signal saying there's
// a new subscriber which will trigger a 'statechanged'
// message to be sent back
window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
if( data && data.namespace === 'reveal' ) {
if( /ready/.test( data.eventName ) ) {
socket.emit( 'new-subscriber', { socketId: socketId } );
}
}
// Messages sent by reveal.js inside of the current slide preview
if( data && data.namespace === 'reveal' ) {
if( /slidechanged|fragmentshown|fragmenthidden|overviewshown|overviewhidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
socket.emit( 'statechanged-speaker', { state: data.state } );
}
}
} );
/**
* Called when the main window sends an updated state.
*/
function handleStateMessage( data ) {
// Store the most recently set state to avoid circular loops
// applying the same state
currentState = JSON.stringify( data.state );
// No need for updating the notes in case of fragment changes
if ( data.notes ) {
notes.classList.remove( 'hidden' );
if( data.markdown ) {
notesValue.innerHTML = marked( data.notes );
}
else {
notesValue.innerHTML = data.notes;
}
}
else {
notes.classList.add( 'hidden' );
}
// Update the note slides
currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ] }), '*' );
upcomingSlide.contentWindow.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ] }), '*' );
upcomingSlide.contentWindow.postMessage( JSON.stringify({ method: 'next' }), '*' );
if (data.markdown) {
notes.innerHTML = marked(data.notes);
}
else {
notes.innerHTML = data.notes;
}
currentSlide.contentWindow.Reveal.slide(data.indexh, data.indexv);
nextSlide.contentWindow.Reveal.slide(data.nextindexh, data.nextindexv);
});
socket.on('fragmentdata', function(data) {
// ignore data from sockets that aren't ours
if (data.socketId !== socketId) { return; }
// Limit to max one state update per X ms
handleStateMessage = debounce( handleStateMessage, 200 );
/**
* Forward keyboard events to the current slide window.
* This enables keyboard events to work even if focus
* isn't set on the current slide iframe.
*/
function setupKeyboard() {
document.addEventListener( 'keydown', function( event ) {
currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'triggerKey', args: [ event.keyCode ] }), '*' );
} );
if (data.fragment === 'next') {
currentSlide.contentWindow.Reveal.nextFragment();
}
else if (data.fragment === 'previous') {
currentSlide.contentWindow.Reveal.prevFragment();
/**
* Creates the preview iframes.
*/
function setupIframes() {
var params = [
'receiver',
'progress=false',
'history=false',
'transition=none',
'backgroundTransition=none'
].join( '&' );
var currentURL = '/?' + params + '&postMessageEvents=true';
var upcomingURL = '/?' + params + '&controls=false';
currentSlide = document.createElement( 'iframe' );
currentSlide.setAttribute( 'width', 1280 );
currentSlide.setAttribute( 'height', 1024 );
currentSlide.setAttribute( 'src', currentURL );
document.querySelector( '#current-slide' ).appendChild( currentSlide );
upcomingSlide = document.createElement( 'iframe' );
upcomingSlide.setAttribute( 'width', 640 );
upcomingSlide.setAttribute( 'height', 512 );
upcomingSlide.setAttribute( 'src', upcomingURL );
document.querySelector( '#upcoming-slide' ).appendChild( upcomingSlide );
}
});
/**
* Setup the notes UI.
*/
function setupNotes() {
notes = document.querySelector( '.speaker-controls-notes' );
notesValue = document.querySelector( '.speaker-controls-notes .value' );
}
/**
* Create the timer and clock and start updating them
* at an interval.
*/
function setupTimer() {
var start = new Date(),
timeEl = document.querySelector( '.speaker-controls-time' ),
clockEl = timeEl.querySelector( '.clock-value' ),
hoursEl = timeEl.querySelector( '.hours-value' ),
minutesEl = timeEl.querySelector( '.minutes-value' ),
secondsEl = timeEl.querySelector( '.seconds-value' );
function _updateTimer() {
var diff, hours, minutes, seconds,
now = new Date();
diff = now.getTime() - start.getTime();
hours = Math.floor( diff / ( 1000 * 60 * 60 ) );
minutes = Math.floor( ( diff / ( 1000 * 60 ) ) % 60 );
seconds = Math.floor( ( diff / 1000 ) % 60 );
clockEl.innerHTML = now.toLocaleTimeString( 'en-US', { hour12: true, hour: '2-digit', minute:'2-digit' } );
hoursEl.innerHTML = zeroPadInteger( hours );
hoursEl.className = hours > 0 ? '' : 'mute';
minutesEl.innerHTML = ':' + zeroPadInteger( minutes );
minutesEl.className = minutes > 0 ? '' : 'mute';
secondsEl.innerHTML = ':' + zeroPadInteger( seconds );
}
// Update once directly
_updateTimer();
// Then update every second
setInterval( _updateTimer, 1000 );
timeEl.addEventListener( 'click', function() {
start = new Date();
_updateTimer();
return false;
} );
}
function zeroPadInteger( num ) {
var str = '00' + parseInt( num );
return str.substring( str.length - 2 );
}
/**
* Limits the frequency at which a function can be called.
*/
function debounce( fn, ms ) {
var lastTime = 0,
timeout;
return function() {
var args = arguments;
var context = this;
clearTimeout( timeout );
var timeSinceLastCall = Date.now() - lastTime;
if( timeSinceLastCall > ms ) {
fn.apply( context, args );
lastTime = Date.now();
}
else {
timeout = setTimeout( function() {
fn.apply( context, args );
lastTime = Date.now();
}, ms - timeSinceLastCall );
}
}
}
})();
</script>
</body>

View File

@@ -10,127 +10,141 @@
font-family: Helvetica;
}
#notes {
font-size: 24px;
width: 640px;
margin-top: 5px;
clear: left;
#current-slide,
#upcoming-slide,
#speaker-controls {
padding: 6px;
box-sizing: border-box;
-moz-box-sizing: border-box;
}
#wrap-current-slide {
width: 640px;
height: 512px;
float: left;
overflow: hidden;
#current-slide iframe,
#upcoming-slide iframe {
width: 100%;
height: 100%;
border: 1px solid #ddd;
}
#current-slide {
width: 1280px;
height: 1024px;
border: none;
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scale(0.5);
-moz-transform: scale(0.5);
-ms-transform: scale(0.5);
-o-transform: scale(0.5);
transform: scale(0.5);
}
#wrap-next-slide {
width: 448px;
height: 358px;
float: left;
margin: 0 0 0 10px;
overflow: hidden;
}
#next-slide {
width: 1280px;
height: 1024px;
border: none;
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scale(0.35);
-moz-transform: scale(0.35);
-ms-transform: scale(0.35);
-o-transform: scale(0.35);
transform: scale(0.35);
}
.slides {
position: relative;
margin-bottom: 10px;
border: 1px solid black;
border-radius: 2px;
background: rgb(28, 30, 32);
}
.slides span {
#current-slide .label,
#upcoming-slide .label {
position: absolute;
top: 3px;
left: 3px;
top: 10px;
left: 10px;
font-weight: bold;
font-size: 14px;
z-index: 2;
color: rgba( 255, 255, 255, 0.9 );
}
.error {
font-weight: bold;
color: red;
font-size: 1.5em;
text-align: center;
margin-top: 10%;
#current-slide {
position: absolute;
width: 65%;
height: 100%;
top: 0;
left: 0;
padding-right: 0;
}
.error code {
font-family: monospace;
#upcoming-slide {
position: absolute;
width: 35%;
height: 40%;
right: 0;
top: 0;
}
.time {
width: 448px;
margin: 30px 0 0 10px;
float: left;
text-align: center;
opacity: 0;
#speaker-controls {
position: absolute;
top: 40%;
right: 0;
width: 35%;
height: 60%;
overflow: auto;
-webkit-transition: opacity 0.4s;
-moz-transition: opacity 0.4s;
-o-transition: opacity 0.4s;
transition: opacity 0.4s;
font-size: 18px;
}
.elapsed,
.clock {
color: #333;
font-size: 2em;
text-align: center;
display: inline-block;
padding: 0.5em;
background-color: #eee;
border-radius: 10px;
.speaker-controls-time.hidden,
.speaker-controls-notes.hidden {
display: none;
}
.speaker-controls-time .label,
.speaker-controls-notes .label {
text-transform: uppercase;
font-weight: normal;
font-size: 0.66em;
color: #666;
margin: 0;
}
.speaker-controls-time {
border-bottom: 1px solid rgba( 200, 200, 200, 0.5 );
margin-bottom: 10px;
padding: 10px 16px;
padding-bottom: 20px;
cursor: pointer;
}
.speaker-controls-time .reset-button {
opacity: 0;
float: right;
color: #666;
text-decoration: none;
}
.speaker-controls-time:hover .reset-button {
opacity: 1;
}
.speaker-controls-time .timer,
.speaker-controls-time .clock {
width: 50%;
font-size: 1.9em;
}
.speaker-controls-time .timer {
float: left;
}
.speaker-controls-time .clock {
float: right;
text-align: right;
}
.speaker-controls-time span.mute {
color: #bbb;
}
.speaker-controls-notes {
padding: 10px 16px;
}
.speaker-controls-notes .value {
margin-top: 5px;
line-height: 1.4;
font-size: 1.2em;
}
.clear {
clear: both;
}
.elapsed h2,
.clock h2 {
font-size: 0.8em;
line-height: 100%;
margin: 0;
color: #aaa;
@media screen and (max-width: 1080px) {
#speaker-controls {
font-size: 16px;
}
}
.elapsed .mute {
color: #ddd;
@media screen and (max-width: 900px) {
#speaker-controls {
font-size: 14px;
}
}
@media screen and (max-width: 800px) {
#speaker-controls {
font-size: 12px;
}
}
</style>
@@ -138,73 +152,184 @@
<body>
<div id="wrap-current-slide" class="slides">
<script>document.write( '<iframe width="1280" height="1024" id="current-slide" src="'+ window.opener.location.href +'"></iframe>' );</script>
</div>
<div id="wrap-next-slide" class="slides">
<script>document.write( '<iframe width="640" height="512" id="next-slide" src="'+ window.opener.location.href +'"></iframe>' );</script>
<span>UPCOMING:</span>
</div>
<div class="time">
<div class="clock">
<h2>Time</h2>
<span id="clock">0:00:00 AM</span>
<div id="current-slide"></div>
<div id="upcoming-slide"><span class="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="elapsed">
<h2>Elapsed</h2>
<span id="hours">00</span><span id="minutes">:00</span><span id="seconds">:00</span>
<div class="speaker-controls-notes hidden">
<h4 class="label">Notes</h4>
<div class="value"></div>
</div>
</div>
<div id="notes"></div>
<script src="../../plugin/markdown/marked.js"></script>
<script>
window.addEventListener( 'load', function() {
(function() {
if( window.opener && window.opener.location && window.opener.location.href ) {
var notes,
notesValue,
currentState,
currentSlide,
upcomingSlide,
connected = false;
var notes = document.getElementById( 'notes' ),
currentSlide = document.getElementById( 'current-slide' ),
nextSlide = document.getElementById( 'next-slide' ),
silenced = false;
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 ) {
notes.innerHTML = marked( data.notes );
}
else {
notes.innerHTML = data.notes;
}
// Messages sent by the notes plugin inside of the main window
if( data && data.namespace === 'reveal-notes' ) {
if( data.type === 'connect' ) {
handleConnectMessage( data );
}
else if( data.type === 'state' ) {
handleStateMessage( data );
}
}
// Messages sent by the reveal.js inside of the current slide preview
else if( data && data.namespace === 'reveal' ) {
if( /ready/.test( data.eventName ) ) {
// Send a message back to notify that the handshake is complete
window.opener.postMessage( JSON.stringify({ namespace: 'reveal-notes', type: 'connected'} ), '*' );
}
else if( /slidechanged|fragmentshown|fragmenthidden|overviewshown|overviewhidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
window.opener.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ]} ), '*' );
}
}
silenced = true;
} );
// Update the note slides
currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv, data.indexf );
nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
/**
* Called when the main window is trying to establish a
* connection.
*/
function handleConnectMessage( data ) {
silenced = false;
if( connected === false ) {
connected = true;
}, false );
setupIframes( data );
setupKeyboard();
setupNotes();
setupTimer();
}
}
/**
* Called when the main window sends an updated state.
*/
function handleStateMessage( data ) {
// Store the most recently set state to avoid circular loops
// applying the same state
currentState = JSON.stringify( data.state );
// No need for updating the notes in case of fragment changes
if ( data.notes ) {
notes.classList.remove( 'hidden' );
notesValue.style.whiteSpace = data.whitespace;
if( data.markdown ) {
notesValue.innerHTML = marked( data.notes );
}
else {
notesValue.innerHTML = data.notes;
}
}
else {
notes.classList.add( 'hidden' );
}
// Update the note slides
currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ] }), '*' );
upcomingSlide.contentWindow.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ] }), '*' );
upcomingSlide.contentWindow.postMessage( JSON.stringify({ method: 'next' }), '*' );
}
// Limit to max one state update per X ms
handleStateMessage = debounce( handleStateMessage, 200 );
/**
* Forward keyboard events to the current slide window.
* This enables keyboard events to work even if focus
* isn't set on the current slide iframe.
*/
function setupKeyboard() {
document.addEventListener( 'keydown', function( event ) {
currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'triggerKey', args: [ event.keyCode ] }), '*' );
} );
}
/**
* Creates the preview iframes.
*/
function setupIframes( data ) {
var params = [
'receiver',
'progress=false',
'history=false',
'transition=none',
'autoSlide=0',
'backgroundTransition=none'
].join( '&' );
var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = data.url + '?' + params + '&postMessageEvents=true' + hash;
var upcomingURL = data.url + '?' + params + '&controls=false' + hash;
currentSlide = document.createElement( 'iframe' );
currentSlide.setAttribute( 'width', 1280 );
currentSlide.setAttribute( 'height', 1024 );
currentSlide.setAttribute( 'src', currentURL );
document.querySelector( '#current-slide' ).appendChild( currentSlide );
upcomingSlide = document.createElement( 'iframe' );
upcomingSlide.setAttribute( 'width', 640 );
upcomingSlide.setAttribute( 'height', 512 );
upcomingSlide.setAttribute( 'src', upcomingURL );
document.querySelector( '#upcoming-slide' ).appendChild( upcomingSlide );
}
/**
* Setup the notes UI.
*/
function setupNotes() {
notes = document.querySelector( '.speaker-controls-notes' );
notesValue = document.querySelector( '.speaker-controls-notes .value' );
}
/**
* Create the timer and clock and start updating them
* at an interval.
*/
function setupTimer() {
var start = new Date(),
timeEl = document.querySelector( '.time' ),
clockEl = document.getElementById( 'clock' ),
hoursEl = document.getElementById( 'hours' ),
minutesEl = document.getElementById( 'minutes' ),
secondsEl = document.getElementById( 'seconds' );
timeEl = document.querySelector( '.speaker-controls-time' ),
clockEl = timeEl.querySelector( '.clock-value' ),
hoursEl = timeEl.querySelector( '.hours-value' ),
minutesEl = timeEl.querySelector( '.minutes-value' ),
secondsEl = timeEl.querySelector( '.seconds-value' );
setInterval( function() {
timeEl.style.opacity = 1;
function _updateTimer() {
var diff, hours, minutes, seconds,
now = new Date();
@@ -214,45 +339,68 @@
minutes = Math.floor( ( diff / ( 1000 * 60 ) ) % 60 );
seconds = Math.floor( ( diff / 1000 ) % 60 );
clockEl.innerHTML = now.toLocaleTimeString();
clockEl.innerHTML = now.toLocaleTimeString( 'en-US', { hour12: true, hour: '2-digit', minute:'2-digit' } );
hoursEl.innerHTML = zeroPadInteger( hours );
hoursEl.className = hours > 0 ? "" : "mute";
minutesEl.innerHTML = ":" + zeroPadInteger( minutes );
minutesEl.className = minutes > 0 ? "" : "mute";
secondsEl.innerHTML = ":" + zeroPadInteger( seconds );
hoursEl.className = hours > 0 ? '' : 'mute';
minutesEl.innerHTML = ':' + zeroPadInteger( minutes );
minutesEl.className = minutes > 0 ? '' : 'mute';
secondsEl.innerHTML = ':' + zeroPadInteger( seconds );
}, 1000 );
}
// Broadcasts the state of the notes window to synchronize
// the main window
function synchronizeMainWindow() {
// Update once directly
_updateTimer();
if( !silenced ) {
var indices = currentSlide.contentWindow.Reveal.getIndices();
window.opener.Reveal.slide( indices.h, indices.v, indices.f );
// Then update every second
setInterval( _updateTimer, 1000 );
timeEl.addEventListener( 'click', function() {
start = new Date();
_updateTimer();
return false;
} );
}
function zeroPadInteger( num ) {
var str = '00' + parseInt( num );
return str.substring( str.length - 2 );
}
/**
* Limits the frequency at which a function can be called.
*/
function debounce( fn, ms ) {
var lastTime = 0,
timeout;
return function() {
var args = arguments;
var context = this;
clearTimeout( timeout );
var timeSinceLastCall = Date.now() - lastTime;
if( timeSinceLastCall > ms ) {
fn.apply( context, args );
lastTime = Date.now();
}
else {
timeout = setTimeout( function() {
fn.apply( context, args );
lastTime = Date.now();
}, ms - timeSinceLastCall );
}
}
// Navigate the main window when the notes slide changes
currentSlide.contentWindow.Reveal.addEventListener( 'slidechanged', synchronizeMainWindow );
currentSlide.contentWindow.Reveal.addEventListener( 'fragmentshown', synchronizeMainWindow );
currentSlide.contentWindow.Reveal.addEventListener( 'fragmenthidden', synchronizeMainWindow );
}
else {
document.body.innerHTML = '<p class="error">Unable to access <code>window.opener.location</code>.<br>Make sure the presentation is running on a web server.</p>';
}
}, false );
function zeroPadInteger( num ) {
var str = "00" + parseInt( num );
return str.substring( str.length - 2 );
}
})();
</script>
</body>

View File

@@ -1,78 +1,127 @@
/**
* Handles opening of and synchronization with the reveal.js
* notes window.
*
* Handshake process:
* 1. This window posts 'connect' to notes window
* - Includes URL of presentation to show
* 2. Notes window responds with 'connected' when it is available
* 3. This window proceeds to send the current presentation state
* to the notes window
*/
var RevealNotes = (function() {
function openNotes() {
var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path
jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path
var notesPopup = window.open( jsFileLocation + 'notes.html', 'reveal.js - Notes', 'width=1120,height=850' );
var notesPopup = window.open( jsFileLocation + 'notes.html', 'reveal.js - Notes', 'width=1100,height=700' );
// Fires when slide is changed
Reveal.addEventListener( 'slidechanged', post );
/**
* Connect to the notes window through a postmessage handshake.
* Using postmessage enables us to work in situations where the
* origins differ, such as a presentation being opened from the
* file system.
*/
function connect() {
// Keep trying to connect until we get a 'connected' message back
var connectInterval = setInterval( function() {
notesPopup.postMessage( JSON.stringify( {
namespace: 'reveal-notes',
type: 'connect',
url: window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search,
state: Reveal.getState()
} ), '*' );
}, 500 );
// Fires when a fragment is shown
Reveal.addEventListener( 'fragmentshown', post );
// Fires when a fragment is hidden
Reveal.addEventListener( 'fragmenthidden', post );
window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
if( data && data.namespace === 'reveal-notes' && data.type === 'connected' ) {
clearInterval( connectInterval );
onConnected();
}
} );
}
/**
* Posts the current slide data to the notes window
*/
function post() {
var slideElement = Reveal.getCurrentSlide(),
slideIndices = Reveal.getIndices(),
messageData;
notesElement = slideElement.querySelector( 'aside.notes' );
var notes = slideElement.querySelector( 'aside.notes' ),
nextindexh,
nextindexv;
if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
nextindexh = slideIndices.h;
nextindexv = slideIndices.v + 1;
} else {
nextindexh = slideIndices.h + 1;
nextindexv = 0;
}
messageData = {
notes : notes ? notes.innerHTML : '',
indexh : slideIndices.h,
indexv : slideIndices.v,
indexf : slideIndices.f,
nextindexh : nextindexh,
nextindexv : nextindexv,
markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false
var messageData = {
namespace: 'reveal-notes',
type: 'state',
notes: '',
markdown: false,
whitespace: 'normal',
state: Reveal.getState()
};
// Look for notes defined in a slide attribute
if( slideElement.hasAttribute( 'data-notes' ) ) {
messageData.notes = slideElement.getAttribute( 'data-notes' );
messageData.whitespace = 'pre-wrap';
}
// Look for notes defined in an aside element
if( notesElement ) {
messageData.notes = notesElement.innerHTML;
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
}
notesPopup.postMessage( JSON.stringify( messageData ), '*' );
}
// Navigate to the current slide when the notes are loaded
notesPopup.addEventListener( 'load', function( event ) {
/**
* Called once we have established a connection to the notes
* window.
*/
function onConnected() {
// Monitor events that trigger a change in state
Reveal.addEventListener( 'slidechanged', post );
Reveal.addEventListener( 'fragmentshown', post );
Reveal.addEventListener( 'fragmenthidden', post );
Reveal.addEventListener( 'overviewhidden', post );
Reveal.addEventListener( 'overviewshown', post );
Reveal.addEventListener( 'paused', post );
Reveal.addEventListener( 'resumed', post );
// Post the initial state
post();
}, false );
}
connect();
}
// If the there's a 'notes' query set, open directly
if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) {
openNotes();
}
if( !/receiver/i.test( window.location.search ) ) {
// Open the notes when the 's' key is hit
document.addEventListener( 'keydown', function( event ) {
// Disregard the event if the target is editable or a
// modifier is present
if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
if( event.keyCode === 83 ) {
event.preventDefault();
// If the there's a 'notes' query set, open directly
if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) {
openNotes();
}
}, false );
// Open the notes when the 's' key is hit
document.addEventListener( 'keydown', function( event ) {
// Disregard the event if the target is editable or a
// modifier is present
if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
// Disregard the event if keyboard is disabled
if ( Reveal.getConfig().keyboard === false ) return;
if( event.keyCode === 83 ) {
event.preventDefault();
openNotes();
}
}, false );
}
return { open: openNotes };
})();

View File

@@ -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>

View File

@@ -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);
}());

View File

@@ -11,34 +11,38 @@
var page = new WebPage();
var system = require( 'system' );
page.viewportSize = {
width: 1024,
height: 768
var slideWidth = system.args[3] ? system.args[3].split( 'x' )[0] : 960;
var slideHeight = system.args[3] ? system.args[3].split( 'x' )[1] : 700;
page.viewportSize = {
width: slideWidth,
height: slideHeight
};
// TODO
// Something is wrong with these config values. An input
// paper width of 1920px actually results in a 756px wide
// PDF.
page.paperSize = {
format: 'letter',
orientation: 'landscape',
margin: {
left: '0',
right: '0',
top: '0',
bottom: '0'
}
width: Math.round( slideWidth * 2 ),
height: Math.round( slideHeight * 2 ),
border: 0
};
var revealFile = system.args[1] || 'index.html?print-pdf';
var slideFile = system.args[2] || 'slides.pdf';
var inputFile = system.args[1] || 'index.html?print-pdf';
var outputFile = system.args[2] || 'slides.pdf';
if( slideFile.match( /\.pdf$/gi ) === null ) {
slideFile += '.pdf';
if( outputFile.match( /\.pdf$/gi ) === null ) {
outputFile += '.pdf';
}
console.log( 'Printing PDF...' );
console.log( 'Printing PDF (Paper size: '+ page.paperSize.width + 'x' + page.paperSize.height +')' );
page.open( revealFile, function( status ) {
console.log( 'Printed succesfully' );
page.render( slideFile );
phantom.exit();
page.open( inputFile, function( status ) {
window.setTimeout( function() {
console.log( 'Printed succesfully' );
page.render( outputFile );
phantom.exit();
}, 1000 );
} );

View File

@@ -1,39 +0,0 @@
/**
* Touch-based remote controller for your presentation courtesy
* of the folks at http://remotes.io
*/
(function(window){
/**
* Detects if we are dealing with a touch enabled device (with some false positives)
* Borrowed from modernizr: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touch.js
*/
var hasTouch = (function(){
return ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch;
})();
/**
* Detects if notes are enable and the current page is opened inside an /iframe
* this prevents loading Remotes.io several times
*/
var remotesAndIsNotes = (function(){
return !(window.RevealNotes && self == top);
})();
if(!hasTouch && !remotesAndIsNotes){
head.ready( 'remotes.ne.min.js', function() {
new Remotes("preview")
.on("swipe-left", function(e){ Reveal.right(); })
.on("swipe-right", function(e){ Reveal.left(); })
.on("swipe-up", function(e){ Reveal.down(); })
.on("swipe-down", function(e){ Reveal.up(); })
.on("tap", function(e){ Reveal.next(); })
.on("zoom-out", function(e){ Reveal.toggleOverview(true); })
.on("zoom-in", function(e){ Reveal.toggleOverview(false); })
;
} );
head.js('https://raw.github.com/Remotes/Remotes/master/dist/remotes.ne.min.js');
}
})(window);

View File

@@ -2,10 +2,24 @@
(function(){
var isEnabled = true;
document.querySelector( '.reveal' ).addEventListener( 'mousedown', function( event ) {
if( event.altKey && isEnabled ) {
document.querySelector( '.reveal .slides' ).addEventListener( 'mousedown', function( event ) {
var modifier = ( Reveal.getConfig().zoomKey ? Reveal.getConfig().zoomKey : 'alt' ) + 'Key';
var zoomPadding = 20;
var revealScale = Reveal.getScale();
if( event[ modifier ] && isEnabled ) {
event.preventDefault();
zoom.to({ element: event.target, pan: false });
var bounds = event.target.getBoundingClientRect();
zoom.to({
x: ( bounds.left * revealScale ) - zoomPadding,
y: ( bounds.top * revealScale ) - zoomPadding,
width: ( bounds.width * revealScale ) + ( zoomPadding * 2 ),
height: ( bounds.height * revealScale ) + ( zoomPadding * 2 ),
pan: false
});
}
} );
@@ -14,11 +28,11 @@
})();
/*!
* zoom.js 0.2 (modified version for use with reveal.js)
* zoom.js 0.3 (modified for use with reveal.js)
* http://lab.hakim.se/zoom-js
* MIT licensed
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
* Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
*/
var zoom = (function(){
@@ -33,8 +47,6 @@ var zoom = (function(){
var panEngageTimeout = -1,
panUpdateInterval = -1;
var currentOptions = null;
// Check for transform support so that we can fallback otherwise
var supportsTransforms = 'WebkitTransform' in document.body.style ||
'MozTransform' in document.body.style ||
@@ -56,7 +68,7 @@ var zoom = (function(){
if( level !== 1 && event.keyCode === 27 ) {
zoom.out();
}
}, false );
} );
// Monitor mouse movement for panning
document.addEventListener( 'mousemove', function( event ) {
@@ -64,38 +76,56 @@ var zoom = (function(){
mouseX = event.clientX;
mouseY = event.clientY;
}
}, false );
} );
/**
* Applies the CSS required to zoom in, prioritizes use of CSS3
* Applies the CSS required to zoom in, prefers the use of CSS3
* transforms but falls back on zoom for IE.
*
* @param {Number} pageOffsetX
* @param {Number} pageOffsetY
* @param {Number} elementOffsetX
* @param {Number} elementOffsetY
* @param {Object} rect
* @param {Number} scale
*/
function magnify( pageOffsetX, pageOffsetY, elementOffsetX, elementOffsetY, scale ) {
function magnify( rect, scale ) {
var scrollOffset = getScrollOffset();
// Ensure a width/height is set
rect.width = rect.width || 1;
rect.height = rect.height || 1;
// Center the rect within the zoomed viewport
rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2;
rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2;
if( supportsTransforms ) {
var origin = pageOffsetX +'px '+ pageOffsetY +'px',
transform = 'translate('+ -elementOffsetX +'px,'+ -elementOffsetY +'px) scale('+ scale +')';
// Reset
if( scale === 1 ) {
document.body.style.transform = '';
document.body.style.OTransform = '';
document.body.style.msTransform = '';
document.body.style.MozTransform = '';
document.body.style.WebkitTransform = '';
}
// Scale
else {
var origin = scrollOffset.x +'px '+ scrollOffset.y +'px',
transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')';
document.body.style.transformOrigin = origin;
document.body.style.OTransformOrigin = origin;
document.body.style.msTransformOrigin = origin;
document.body.style.MozTransformOrigin = origin;
document.body.style.WebkitTransformOrigin = origin;
document.body.style.transformOrigin = origin;
document.body.style.OTransformOrigin = origin;
document.body.style.msTransformOrigin = origin;
document.body.style.MozTransformOrigin = origin;
document.body.style.WebkitTransformOrigin = origin;
document.body.style.transform = transform;
document.body.style.OTransform = transform;
document.body.style.msTransform = transform;
document.body.style.MozTransform = transform;
document.body.style.WebkitTransform = transform;
document.body.style.transform = transform;
document.body.style.OTransform = transform;
document.body.style.msTransform = transform;
document.body.style.MozTransform = transform;
document.body.style.WebkitTransform = transform;
}
}
else {
// Reset all values
// Reset
if( scale === 1 ) {
document.body.style.position = '';
document.body.style.left = '';
@@ -104,11 +134,11 @@ var zoom = (function(){
document.body.style.height = '';
document.body.style.zoom = '';
}
// Apply scale
// Scale
else {
document.body.style.position = 'relative';
document.body.style.left = ( - ( pageOffsetX + elementOffsetX ) / scale ) + 'px';
document.body.style.top = ( - ( pageOffsetY + elementOffsetY ) / scale ) + 'px';
document.body.style.left = ( - ( scrollOffset.x + rect.x ) / scale ) + 'px';
document.body.style.top = ( - ( scrollOffset.y + rect.y ) / scale ) + 'px';
document.body.style.width = ( scale * 100 ) + '%';
document.body.style.height = ( scale * 100 ) + '%';
document.body.style.zoom = scale;
@@ -117,11 +147,13 @@ var zoom = (function(){
level = scale;
if( level !== 1 && document.documentElement.classList ) {
document.documentElement.classList.add( 'zoomed' );
}
else {
document.documentElement.classList.remove( 'zoomed' );
if( document.documentElement.classList ) {
if( level !== 1 ) {
document.documentElement.classList.add( 'zoomed' );
}
else {
document.documentElement.classList.remove( 'zoomed' );
}
}
}
@@ -157,7 +189,7 @@ var zoom = (function(){
function getScrollOffset() {
return {
x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset,
y: window.scrollY !== undefined ? window.scrollY : window.pageXYffset
y: window.scrollY !== undefined ? window.scrollY : window.pageYOffset
}
}
@@ -173,6 +205,7 @@ var zoom = (function(){
* - scale: can be used instead of width/height to explicitly set scale
*/
to: function( options ) {
// Due to an implementation limitation we can't zoom in
// to another element without zooming out first
if( level !== 1 ) {
@@ -186,11 +219,12 @@ var zoom = (function(){
if( !!options.element ) {
// Space around the zoomed in element to leave on screen
var padding = 20;
var bounds = options.element.getBoundingClientRect();
options.width = options.element.getBoundingClientRect().width + ( padding * 2 );
options.height = options.element.getBoundingClientRect().height + ( padding * 2 );
options.x = options.element.getBoundingClientRect().left - padding;
options.y = options.element.getBoundingClientRect().top - padding;
options.x = bounds.left - padding;
options.y = bounds.top - padding;
options.width = bounds.width + ( padding * 2 );
options.height = bounds.height + ( padding * 2 );
}
// If width/height values are set, calculate scale from those values
@@ -202,13 +236,7 @@ var zoom = (function(){
options.x *= options.scale;
options.y *= options.scale;
var scrollOffset = getScrollOffset();
if( options.element ) {
scrollOffset.x -= ( window.innerWidth - ( options.width * options.scale ) ) / 2;
}
magnify( scrollOffset.x, scrollOffset.y, options.x, options.y, options.scale );
magnify( options, options.scale );
if( options.pan !== false ) {
@@ -220,8 +248,6 @@ var zoom = (function(){
}
}
currentOptions = options;
}
},
@@ -232,13 +258,7 @@ var zoom = (function(){
clearTimeout( panEngageTimeout );
clearInterval( panUpdateInterval );
var scrollOffset = getScrollOffset();
if( currentOptions && currentOptions.element ) {
scrollOffset.x -= ( window.innerWidth - ( currentOptions.width * currentOptions.scale ) ) / 2;
}
magnify( scrollOffset.x, scrollOffset.y, 0, 0, 1 );
magnify( { x: 0, y: 0 }, 1 );
level = 1;
},
@@ -254,3 +274,5 @@ var zoom = (function(){
})();

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -6,7 +6,7 @@
<title>reveal.js - Barebones</title>
<link rel="stylesheet" href="../css/reveal.min.css">
<link rel="stylesheet" href="../../css/reveal.css">
</head>
<body>
@@ -29,8 +29,7 @@
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.min.js"></script>
<script src="../../js/reveal.js"></script>
<script>

View File

@@ -8,8 +8,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="../css/reveal.min.css">
<link rel="stylesheet" href="../css/theme/default.css" id="theme">
<link rel="stylesheet" href="../../css/reveal.css">
<link rel="stylesheet" href="../../css/theme/default.css" id="theme">
</head>
<body>
@@ -34,8 +34,8 @@
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.min.js"></script>
<script src="../../lib/js/head.min.js"></script>
<script src="../../js/reveal.js"></script>
<script>

View File

@@ -8,8 +8,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="../css/reveal.min.css">
<link rel="stylesheet" href="../css/theme/night.css" id="theme">
<link rel="stylesheet" href="../../css/reveal.css">
<link rel="stylesheet" href="../../css/theme/night.css" id="theme">
</head>
<body>
@@ -159,8 +159,8 @@
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.min.js"></script>
<script src="../../lib/js/head.min.js"></script>
<script src="../../js/reveal.js"></script>
<script>
@@ -174,8 +174,8 @@
},
dependencies: [
{ src: '../lib/js/classList.js' },
{ src: '../plugin/math/math.js', async: true }
{ src: '../../lib/js/classList.js' },
{ src: '../../plugin/math/math.js', async: true }
]
});

View File

@@ -8,8 +8,18 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="../css/reveal.min.css">
<link rel="stylesheet" href="../css/theme/serif.css" id="theme">
<link rel="stylesheet" href="../../css/reveal.css">
<link rel="stylesheet" href="../../css/theme/serif.css" id="theme">
<style type="text/css" media="screen">
.slides section.has-dark-background,
.slides section.has-dark-background h2 {
color: #fff;
}
.slides section.has-light-background,
.slides section.has-light-background h2 {
color: #222;
}
</style>
</head>
<body>
@@ -26,6 +36,10 @@
<h2>data-background: #bb00bb</h2>
</section>
<section data-background-color="lightblue">
<h2>data-background: lightblue</h2>
</section>
<section>
<section data-background="#ff0000">
<h2>data-background: #ff0000</h2>
@@ -45,25 +59,25 @@
<section>
<h2>Background applied to stack</h2>
</section>
<section data-background="rgba(100, 0, 0, 0.2)">
<section data-background="rgb(66, 66, 66)">
<h2>Background applied to slide inside of stack</h2>
</section>
</section>
<section data-background-transition="slide" data-background="assets/image1.png" style="background: rgba(255,255,255,0.9)">
<section data-background-transition="slide" data-background="assets/image1.png">
<h2>Background image</h2>
</section>
<section>
<section data-background-transition="slide" data-background="assets/image1.png" style="background: rgba(255,255,255,0.9)">
<section data-background-transition="slide" data-background="assets/image1.png">
<h2>Background image</h2>
</section>
<section data-background-transition="slide" data-background="assets/image1.png" style="background: rgba(255,255,255,0.9)">
<section data-background-transition="slide" data-background="assets/image1.png">
<h2>Background image</h2>
</section>
</section>
<section data-background="assets/image2.png" data-background-size="100px" data-background-repeat="repeat" data-background-color="#111" style="background: rgba(255,255,255,0.9)">
<section data-background="assets/image2.png" data-background-size="100px" data-background-repeat="repeat" data-background-color="#111">
<h2>Background image</h2>
<pre>data-background-size="100px" data-background-repeat="repeat" data-background-color="#111"</pre>
</section>
@@ -75,12 +89,41 @@
<h2>Same background twice (2/2)</h2>
</section>
<section data-background-video="https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.mp4,https://s3.amazonaws.com/static.slid.es/site/homepage/v1/homepage-video-editor.webm">
<h2>Video background</h2>
</section>
<section data-background-iframe="https://slides.com">
<h2>Iframe background</h2>
</section>
<section>
<section data-background="#417203">
<h2>Same background twice vertical (1/2)</h2>
</section>
<section data-background="#417203">
<h2>Same background twice vertical (2/2)</h2>
</section>
</section>
<section data-background="#934f4d">
<h2>Same background from horizontal to vertical (1/3)</h2>
</section>
<section>
<section data-background="#934f4d">
<h2>Same background from horizontal to vertical (2/3)</h2>
</section>
<section data-background="#934f4d">
<h2>Same background from horizontal to vertical (3/3)</h2>
</section>
</section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.min.js"></script>
<script src="../../lib/js/head.min.js"></script>
<script src="../../js/reveal.js"></script>
<script>
@@ -92,7 +135,7 @@
transition: 'linear',
// transitionSpeed: 'slow',
// backgroundTransition: 'linear'
// backgroundTransition: 'slide'
});
</script>

View File

@@ -0,0 +1,101 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Slide Transitions</title>
<link rel="stylesheet" href="../../css/reveal.css">
<link rel="stylesheet" href="../../css/theme/white.css" id="theme">
<style type="text/css" media="screen">
.slides section.has-dark-background,
.slides section.has-dark-background h3 {
color: #fff;
}
.slides section.has-light-background,
.slides section.has-light-background h3 {
color: #222;
}
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
<section>
<h3>Default</h3>
</section>
<section>
<h3>Default</h3>
</section>
<section data-transition="zoom">
<h3>data-transition: zoom</h3>
</section>
<section data-transition="zoom-in fade-out">
<h3>data-transition: zoom-in fade-out</h3>
</section>
<section>
<h3>Default</h3>
</section>
<section data-transition="convex">
<h3>data-transition: convex</h3>
</section>
<section data-transition="convex-in concave-out">
<h3>data-transition: convex-in concave-out</h3>
</section>
<section>
<section data-transition="zoom">
<h3>Default</h3>
</section>
<section data-transition="concave">
<h3>data-transition: concave</h3>
</section>
<section data-transition="convex-in fade-out">
<h3>data-transition: convex-in fade-out</h3>
</section>
<section>
<h3>Default</h3>
</section>
</section>
<section data-transition="none">
<h3>data-transition: none</h3>
</section>
<section>
<h3>Default</h3>
</section>
</div>
</div>
<script src="../../lib/js/head.min.js"></script>
<script src="../../js/reveal.js"></script>
<script>
Reveal.initialize({
center: true,
history: true,
// transition: 'slide',
// transitionSpeed: 'slow',
// backgroundTransition: 'slide'
});
</script>
</body>
</html>

244
test/qunit-1.12.0.css Normal file
View File

@@ -0,0 +1,244 @@
/**
* QUnit v1.12.0 - A JavaScript Unit Testing Framework
*
* http://qunitjs.com
*
* Copyright 2012 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*/
/** Font Family and Sizes */
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
}
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
#qunit-tests { font-size: smaller; }
/** Resets */
#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
margin: 0;
padding: 0;
}
/** Header */
#qunit-header {
padding: 0.5em 0 0.5em 1em;
color: #8699a4;
background-color: #0d3349;
font-size: 1.5em;
line-height: 1em;
font-weight: normal;
border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
-webkit-border-top-right-radius: 5px;
-webkit-border-top-left-radius: 5px;
}
#qunit-header a {
text-decoration: none;
color: #c2ccd1;
}
#qunit-header a:hover,
#qunit-header a:focus {
color: #fff;
}
#qunit-testrunner-toolbar label {
display: inline-block;
padding: 0 .5em 0 .1em;
}
#qunit-banner {
height: 5px;
}
#qunit-testrunner-toolbar {
padding: 0.5em 0 0.5em 2em;
color: #5E740B;
background-color: #eee;
overflow: hidden;
}
#qunit-userAgent {
padding: 0.5em 0 0.5em 2.5em;
background-color: #2b81af;
color: #fff;
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
}
#qunit-modulefilter-container {
float: right;
}
/** Tests: Pass/Fail */
#qunit-tests {
list-style-position: inside;
}
#qunit-tests li {
padding: 0.4em 0.5em 0.4em 2.5em;
border-bottom: 1px solid #fff;
list-style-position: inside;
}
#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
display: none;
}
#qunit-tests li strong {
cursor: pointer;
}
#qunit-tests li a {
padding: 0.5em;
color: #c2ccd1;
text-decoration: none;
}
#qunit-tests li a:hover,
#qunit-tests li a:focus {
color: #000;
}
#qunit-tests li .runtime {
float: right;
font-size: smaller;
}
.qunit-assert-list {
margin-top: 0.5em;
padding: 0.5em;
background-color: #fff;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
.qunit-collapsed {
display: none;
}
#qunit-tests table {
border-collapse: collapse;
margin-top: .2em;
}
#qunit-tests th {
text-align: right;
vertical-align: top;
padding: 0 .5em 0 0;
}
#qunit-tests td {
vertical-align: top;
}
#qunit-tests pre {
margin: 0;
white-space: pre-wrap;
word-wrap: break-word;
}
#qunit-tests del {
background-color: #e0f2be;
color: #374e0c;
text-decoration: none;
}
#qunit-tests ins {
background-color: #ffcaca;
color: #500;
text-decoration: none;
}
/*** Test Counts */
#qunit-tests b.counts { color: black; }
#qunit-tests b.passed { color: #5E740B; }
#qunit-tests b.failed { color: #710909; }
#qunit-tests li li {
padding: 5px;
background-color: #fff;
border-bottom: none;
list-style-position: inside;
}
/*** Passing Styles */
#qunit-tests li li.pass {
color: #3c510c;
background-color: #fff;
border-left: 10px solid #C6E746;
}
#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
#qunit-tests .pass .test-name { color: #366097; }
#qunit-tests .pass .test-actual,
#qunit-tests .pass .test-expected { color: #999999; }
#qunit-banner.qunit-pass { background-color: #C6E746; }
/*** Failing Styles */
#qunit-tests li li.fail {
color: #710909;
background-color: #fff;
border-left: 10px solid #EE5757;
white-space: pre;
}
#qunit-tests > li:last-child {
border-radius: 0 0 5px 5px;
-moz-border-radius: 0 0 5px 5px;
-webkit-border-bottom-right-radius: 5px;
-webkit-border-bottom-left-radius: 5px;
}
#qunit-tests .fail { color: #000000; background-color: #EE5757; }
#qunit-tests .fail .test-name,
#qunit-tests .fail .module-name { color: #000000; }
#qunit-tests .fail .test-actual { color: #EE5757; }
#qunit-tests .fail .test-expected { color: green; }
#qunit-banner.qunit-fail { background-color: #EE5757; }
/** Result */
#qunit-testresult {
padding: 0.5em 0.5em 0.5em 2.5em;
color: #2b81af;
background-color: #D2E0E6;
border-bottom: 1px solid white;
}
#qunit-testresult .module-name {
font-weight: bold;
}
/** Fixture */
#qunit-fixture {
position: absolute;
top: -10000px;
left: -10000px;
width: 1000px;
height: 1000px;
}

2212
test/qunit-1.12.0.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,134 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Test Markdown Element Attributes</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
</head>
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">
<div class="slides">
<!-- <section data-markdown="example.md" data-separator="^\n\n\n" data-separator-vertical="^\n\n"></section> -->
<!-- Slides are separated by newline + three dashes + newline, vertical slides identical but two dashes -->
<section data-markdown data-separator="^\n---\n$" data-separator-vertical="^\n--\n$" data-element-attributes="{_\s*?([^}]+?)}">>
<script type="text/template">
## Slide 1.1
<!-- {_class="fragment fade-out" data-fragment-index="1"} -->
--
## Slide 1.2
<!-- {_class="fragment shrink"} -->
Paragraph 1
<!-- {_class="fragment grow"} -->
Paragraph 2
<!-- {_class="fragment grow"} -->
- list item 1 <!-- {_class="fragment grow"} -->
- list item 2 <!-- {_class="fragment grow"} -->
- list item 3 <!-- {_class="fragment grow"} -->
---
## Slide 2
Paragraph 1.2
multi-line <!-- {_class="fragment highlight-red"} -->
Paragraph 2.2 <!-- {_class="fragment highlight-red"} -->
Paragraph 2.3 <!-- {_class="fragment highlight-red"} -->
Paragraph 2.4 <!-- {_class="fragment highlight-red"} -->
- list item 1 <!-- {_class="fragment highlight-green"} -->
- list item 2<!-- {_class="fragment highlight-green"} -->
- list item 3<!-- {_class="fragment highlight-green"} -->
- list item 4
<!-- {_class="fragment highlight-green"} -->
- list item 5<!-- {_class="fragment highlight-green"} -->
Test
![Example Picture](examples/assets/image2.png)
<!-- {_class="reveal stretch"} -->
</script>
</section>
<section data-markdown data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
<script type="text/template">
# Test attributes in Markdown with default separator
## Slide 1 Def <!-- .element: class="fragment highlight-red" data-fragment-index="1" -->
## Slide 2 Def
<!-- .element: class="fragment highlight-red" -->
</script>
</section>
<section data-markdown>
<script type="text/template">
## Hello world
A paragraph
<!-- .element: class="fragment highlight-blue" -->
</script>
</section>
<section data-markdown>
<script type="text/template">
## Hello world
Multiple
Line
<!-- .element: class="fragment highlight-blue" -->
</script>
</section>
<section data-markdown>
<script type="text/template">
## Hello world
Test<!-- .element: class="fragment highlight-blue" -->
More Test
</script>
</section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="../plugin/markdown/marked.js"></script>
<script src="../plugin/markdown/markdown.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="test-markdown-element-attributes.js"></script>
</body>
</html>

View File

@@ -0,0 +1,46 @@
Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Markdown' );
test( 'Vertical separator', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 4, 'found four slides' );
});
test( 'Attributes on element header in vertical slides', function() {
strictEqual( document.querySelectorAll( '.reveal .slides section>section h2.fragment.fade-out' ).length, 1, 'found one vertical slide with class fragment.fade-out on header' );
strictEqual( document.querySelectorAll( '.reveal .slides section>section h2.fragment.shrink' ).length, 1, 'found one vertical slide with class fragment.shrink on header' );
});
test( 'Attributes on element paragraphs in vertical slides', function() {
strictEqual( document.querySelectorAll( '.reveal .slides section>section p.fragment.grow' ).length, 2, 'found a vertical slide with two paragraphs with class fragment.grow' );
});
test( 'Attributes on element list items in vertical slides', function() {
strictEqual( document.querySelectorAll( '.reveal .slides section>section li.fragment.grow' ).length, 3, 'found a vertical slide with three list items with class fragment.grow' );
});
test( 'Attributes on element paragraphs in horizontal slides', function() {
strictEqual( document.querySelectorAll( '.reveal .slides section p.fragment.highlight-red' ).length, 4, 'found a horizontal slide with four paragraphs with class fragment.grow' );
});
test( 'Attributes on element list items in horizontal slides', function() {
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' );
});
test( 'Attributes on element list items in horizontal slides', function() {
strictEqual( document.querySelectorAll( '.reveal .slides section img.reveal.stretch' ).length, 1, 'found a horizontal slide with stretched image, class img.reveal.stretch' );
});
test( 'Attributes on elements in vertical slides with default element attribute separator', function() {
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' );
});
test( 'Attributes on elements in single slides with default element attribute separator', function() {
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' );
});
} );
Reveal.initialize();

View File

@@ -0,0 +1,128 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Test Markdown Attributes</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
</head>
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">
<div class="slides">
<!-- <section data-markdown="example.md" data-separator="^\n\n\n" data-separator-vertical="^\n\n"></section> -->
<!-- Slides are separated by three lines, vertical slides by two lines, attributes are one any line starting with (spaces and) two dashes -->
<section data-markdown data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-attributes="--\s(.*?)$"
data-charset="utf-8">
<script type="text/template">
# Test attributes in Markdown
## Slide 1
## Slide 2
<!-- -- id="slide2" data-transition="zoom" data-background="#A0C66B" -->
## Slide 2.1
<!-- -- data-background="#ff0000" data-transition="fade" -->
## Slide 2.2
[Link to Slide2](#/slide2)
## Slide 3
<!-- -- data-transition="zoom" data-background="#C6916B" -->
## Slide 4
</script>
</section>
<section data-markdown data-separator="^\n\n\n"
data-separator-vertical="^\n\n"
data-separator-notes="^Note:"
data-charset="utf-8">
<script type="text/template">
# Test attributes in Markdown with default separator
## Slide 1 Def
## Slide 2 Def
<!-- .slide: id="slide2def" data-transition="concave" data-background="#A7C66B" -->
## Slide 2.1 Def
<!-- .slide: data-background="#f70000" data-transition="page" -->
## Slide 2.2 Def
[Link to Slide2](#/slide2def)
## Slide 3 Def
<!-- .slide: data-transition="concave" data-background="#C7916B" -->
## Slide 4
</script>
</section>
<section data-markdown>
<script type="text/template">
<!-- .slide: data-background="#ff0000" -->
## Hello world
</script>
</section>
<section data-markdown>
<script type="text/template">
## Hello world
<!-- .slide: data-background="#ff0000" -->
</script>
</section>
<section data-markdown>
<script type="text/template">
## Hello world
Test
<!-- .slide: data-background="#ff0000" -->
More Test
</script>
</section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="../plugin/markdown/marked.js"></script>
<script src="../plugin/markdown/markdown.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="test-markdown-slide-attributes.js"></script>
</body>
</html>

View File

@@ -0,0 +1,47 @@
Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Markdown' );
test( 'Vertical separator', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 6, 'found six vertical slides' );
});
test( 'Id on slide', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section#slide2' ).length, 1, 'found one slide with id slide2' );
strictEqual( document.querySelectorAll( '.reveal .slides>section>section a[href="#/slide2"]' ).length, 1, 'found one slide with a link to slide2' );
});
test( 'data-background attributes', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#A0C66B"]' ).length, 1, 'found one vertical slide with data-background="#A0C66B"' );
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#ff0000"]' ).length, 1, 'found one vertical slide with data-background="#ff0000"' );
strictEqual( document.querySelectorAll( '.reveal .slides>section[data-background="#C6916B"]' ).length, 1, 'found one slide with data-background="#C6916B"' );
});
test( 'data-transition attributes', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="zoom"]' ).length, 1, 'found one vertical slide with data-transition="zoom"' );
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="fade"]' ).length, 1, 'found one vertical slide with data-transition="fade"' );
strictEqual( document.querySelectorAll( '.reveal .slides section [data-transition="zoom"]' ).length, 1, 'found one slide with data-transition="zoom"' );
});
test( 'data-background attributes with default separator', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#A7C66B"]' ).length, 1, 'found one vertical slide with data-background="#A0C66B"' );
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-background="#f70000"]' ).length, 1, 'found one vertical slide with data-background="#ff0000"' );
strictEqual( document.querySelectorAll( '.reveal .slides>section[data-background="#C7916B"]' ).length, 1, 'found one slide with data-background="#C6916B"' );
});
test( 'data-transition attributes with default separator', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="concave"]' ).length, 1, 'found one vertical slide with data-transition="zoom"' );
strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="page"]' ).length, 1, 'found one vertical slide with data-transition="fade"' );
strictEqual( document.querySelectorAll( '.reveal .slides section [data-transition="concave"]' ).length, 1, 'found one slide with data-transition="zoom"' );
});
test( 'data-transition attributes with inline content', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section[data-background="#ff0000"]' ).length, 3, 'found three horizontal slides with data-background="#ff0000"' );
});
} );
Reveal.initialize();

52
test/test-markdown.html Normal file
View File

@@ -0,0 +1,52 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Test Markdown</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
</head>
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">
<div class="slides">
<!-- <section data-markdown="example.md" data-separator="^\n\n\n" data-separator-vertical="^\n\n"></section> -->
<!-- Slides are separated by newline + three dashes + newline, vertical slides identical but two dashes -->
<section data-markdown data-separator="^\n---\n$" data-separator-vertical="^\n--\n$">
<script type="text/template">
## Slide 1.1
--
## Slide 1.2
---
## Slide 2
</script>
</section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="../plugin/markdown/marked.js"></script>
<script src="../plugin/markdown/markdown.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="test-markdown.js"></script>
</body>
</html>

15
test/test-markdown.js Normal file
View File

@@ -0,0 +1,15 @@
Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Markdown' );
test( 'Vertical separator', function() {
strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' );
});
} );
Reveal.initialize();

83
test/test-pdf.html Normal file
View File

@@ -0,0 +1,83 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Test PDF exports</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="../css/print/pdf.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
</head>
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">
<div class="slides">
<section>
<h1>1</h1>
<img data-src="fake-url.png">
</section>
<section>
<section>
<h1>2.1</h1>
</section>
<section>
<h1>2.2</h1>
</section>
<section>
<h1>2.3</h1>
</section>
</section>
<section id="fragment-slides">
<section>
<h1>3.1</h1>
<ul>
<li class="fragment">4.1</li>
<li class="fragment">4.2</li>
<li class="fragment">4.3</li>
</ul>
</section>
<section>
<h1>3.2</h1>
<ul>
<li class="fragment" data-fragment-index="0">4.1</li>
<li class="fragment" data-fragment-index="0">4.2</li>
</ul>
</section>
<section>
<h1>3.3</h1>
<ul>
<li class="fragment" data-fragment-index="1">3.3.1</li>
<li class="fragment" data-fragment-index="4">3.3.2</li>
<li class="fragment" data-fragment-index="4">3.3.3</li>
</ul>
</section>
</section>
<section>
<h1>4</h1>
</section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="test-pdf.js"></script>
</body>
</html>

15
test/test-pdf.js Normal file
View File

@@ -0,0 +1,15 @@
Reveal.addEventListener( 'ready', function() {
// Only one test for now, we're mainly ensuring that there
// are no execution errors when running PDF mode
test( 'Reveal.isReady', function() {
strictEqual( Reveal.isReady(), true, 'returns true' );
});
} );
Reveal.initialize({ pdf: true });

Some files were not shown because too many files have changed in this diff Show More