1
0
mirror of https://github.com/hakimel/reveal.js.git synced 2025-09-11 15:10:53 +02:00

Compare commits

..

656 Commits
3.1.0 ... 3.7.0

Author SHA1 Message Date
Hakim El Hattab
2c5396b7d3 3.7.0 2018-08-01 10:37:51 +02:00
Hakim El Hattab
72b05a3245 Merge pull request #2171 from tristansokol/tristans/add-all-transitions
add a full list of transitions to readme
2018-08-01 10:36:07 +02:00
Hakim El Hattab
b6aa0cac23 Merge branch 'dev' of github.com:hakimel/reveal.js 2018-08-01 10:34:55 +02:00
Hakim El Hattab
f6f7f58537 Merge branch 'master' of github.com:hakimel/reveal.js 2018-07-25 10:56:02 +02:00
Hakim El Hattab
b9bb353a11 add 'resume presentation' button to pause overlay 2018-07-02 11:08:45 +02:00
Hakim El Hattab
fd95c8c266 use absolute positioning for slide number 2018-06-21 10:07:38 +02:00
Hakim El Hattab
be87adcdf8 rename new fragment style 2018-06-13 14:12:28 +02:00
Hakim El Hattab
078a7520cd refactor fragment pdf exporting to support multiple fragments with same index #1955 2018-06-12 20:44:49 +02:00
Hakim El Hattab
3680f1ad10 merge #1955 with minor changes 2018-06-11 12:35:11 +02:00
Hakim El Hattab
a86146180f Merge branch 'master' of https://github.com/koehlma/reveal.js into dev 2018-06-11 12:16:41 +02:00
Hakim El Hattab
a9e95e7e6c merge conflicts 2018-06-11 11:02:21 +02:00
Hakim El Hattab
4bea8e17e8 add 'fade-in-then-half-out' fragment style, 'current-visible' was renamed to 'fade-in-then-out' 2018-06-11 10:59:31 +02:00
Hakim El Hattab
a82c4333ed Merge pull request #2141 from marcvangend/marcvangend-clarify-notes-regex
Clarify the meaning of the notes?: regex
2018-06-11 10:04:58 +02:00
Tristan Sokol
27553e2fcb add a full list of transitions to readme 2018-06-05 09:30:02 -07:00
Hakim El Hattab
4672801229 new syncFragments api method 2018-05-31 10:35:09 +02:00
Hakim El Hattab
30b670cf42 flatten slide number when there are only vertical slides 2018-05-24 09:21:42 +02:00
Hakim El Hattab
3c5c50f3fe Merge pull request #2158 from denehyg/issue-2157
Fix timer when speaker notes window opened via RevealNotes.open()
2018-05-07 11:06:16 +02:00
Greg Denehy
ee63b2ac60 Fixed notes timer when speaker notes window opened via RevealNotes.open() 2018-05-05 17:38:37 +09:30
Hakim El Hattab
667c83f1b7 refactor code to match new background dom structure 2018-05-03 15:45:31 +02:00
Hakim El Hattab
0bbcc6b594 add Reveal.syncSlide 2018-05-03 15:25:54 +02:00
Hakim El Hattab
042fbde61b data-background-content-opacity -> data-background-opacity 2018-05-03 11:02:36 +02:00
Hakim El Hattab
4ba0d73345 add , adds wrapper element around background images/videos/iframes 2018-04-27 15:53:02 +02:00
Hakim El Hattab
de41f6cf50 smaller font size for sub/sup 2018-04-24 14:56:03 +02:00
Hakim El Hattab
5771ae39f0 speaker view has visible connection status, times out with error after 5s 2018-04-24 14:23:28 +02:00
Hakim El Hattab
f1133f0e10 support interactive iframe backgrounds in vertical stacks 2018-04-17 09:46:55 +02:00
Hakim El Hattab
2a57223939 revise readURL to handle one-based indices 2018-04-16 09:58:03 +02:00
Hakim El Hattab
531d1e8791 prevent linked slide numbers from changing color 2018-04-16 09:48:37 +02:00
Hakim El Hattab
f713d9d67d Merge pull request #2133 from sean-parent/master
Adding support for hash linked slideNumber
2018-04-16 09:31:05 +02:00
Sean Parent
97c1a0ecc1 Merge branch 'dev' into master 2018-04-13 07:55:02 -07:00
marcvangend
ceb1738a0f Clarify the meaning of the notes?: regex 2018-04-01 20:03:25 +02:00
Hakim El Hattab
397feab8b4 gracefully handle duplicate slide id's 2018-03-27 14:21:41 +02:00
Sean Parent
64b2a27455 Made one based indexing optional 2018-03-23 10:07:42 -07:00
Quentin PROUST
93cacaa40c Print background in pdf (#2131)
* Print background in pdf

Pull request to integrate issue https://github.com/hakimel/reveal.js/issues/1686. Adding the workaround to the theme template to make it work for every theme.

* apply suggestion of @hakimel
2018-03-23 13:50:42 +01:00
Hakim El Hattab
1257ee7e27 code formatting 2018-03-22 11:58:15 +01:00
Hakim El Hattab
4cb0d52c73 Merge branch 'URI-encode-name-hash' of https://github.com/nnormand/reveal.js into dev 2018-03-22 11:56:50 +01:00
Hakim El Hattab
ba0e432542 formatting 2018-03-22 11:55:44 +01:00
Hakim El Hattab
a2e69a4b42 Merge pull request #2097 from bnjmnt4n/docs/readme
Cleanup readme to make it easier to read/edit.
2018-03-22 11:51:05 +01:00
Hakim El Hattab
3bbf969686 Merge pull request #2114 from ChumpChief/standardized-pointer
Prefer W3C pointer events and updates to match the standard definition
2018-03-22 11:47:19 +01:00
Hakim El Hattab
49251078f3 remove legacy vendor prefixes from pdf css 2018-03-22 11:43:07 +01:00
Hakim El Hattab
8bf1cc601a Merge pull request #2128 from craigsdennis/feature/update-copyright-date
Updates copyright to 2018
2018-03-22 11:16:41 +01:00
Hakim El Hattab
6dbc593280 disableLayout comment tweak 2018-03-22 11:10:27 +01:00
Steve Hartzog
9dbccd6978 add support for overriding the default layout (#2121)
* add support for overriding the default layout
New `overrideLayout` option (if true) will prevent h/w calcs.

* fix error if options are empty

* Implement requested changes
Rename overrideLayout to disableLayout and remove code to unset display
2018-03-22 11:06:19 +01:00
Sean Parent
443b4475bc Adding support for hash linked slideNumber 2018-03-21 18:08:16 -07:00
Hakim El Hattab
ea57e697a1 Revert "remove pdf height offset"
This reverts commit f76b4fda93.
2018-03-20 10:09:47 +01:00
craigsdennis
8ff5fe4986 Updates copyright to 2018 2018-03-16 22:41:16 -07:00
Hakim El Hattab
f76b4fda93 remove pdf height offset 2018-03-16 13:52:19 +01:00
Hakim El Hattab
511397c177 prevent missing 'present' class when navigating to same slide twice 2018-03-14 12:03:42 +01:00
Matt Rakow
389c3f52b5 Prefer W3C pointer events, remove pointerEnabled references (it is not part of the standard), unconditional event removal 2018-03-07 09:18:26 -08:00
Hakim El Hattab
0282413b69 fix autoplay of inline videos in ios 2018-03-05 14:59:32 +01:00
Hakim El Hattab
5848a432d9 Merge branch 'patch-1' of https://github.com/Jmuccigr/reveal.js into dev 2018-02-22 10:08:02 +01:00
Benjamin Tan
1427f7a1ae Cleanup readme to make it easier to read/edit.
- Use `single backticks` consistently for inline code snippets.
- Add double linefeeds before level 2 headings.
- Add a single linefeed after each heading.
- Minor docs edits.
2018-02-14 18:36:18 +08:00
Hakim El Hattab
325162692e navigateNext no longer gets stuck on first stack when looping is enabled 2018-02-12 13:49:33 +01:00
John Muccigrosso
5d273cfb29 Background repeat & position to parallax background 2018-02-10 12:32:16 -05:00
Benjamin Tan
d5f4edeeef Merge pull request #1836 from RobertBaron/background-whitespace-uri
Allow whitespace on background-images, w3 compliance
2018-02-09 20:05:26 +08:00
Benjamin Tan
7cd2c9138d head.js: Remove source map URL since it doesn't exist.
This prevents additional requests from devtools when debugging code.
2018-02-08 11:22:11 +08:00
Benjamin Tan
18e7dd2173 Cleanup code style. 2018-02-08 11:22:01 +08:00
Benjamin Tan
fb97d99bff Simplify Travis test script. 2018-02-08 11:20:41 +08:00
Hakim El Hattab
27aba10756 fix looping of presentations that only have vertical slides 2018-02-07 13:45:57 +01:00
Hakim El Hattab
5eba331935 Merge branch 'fragment-in-url' of https://github.com/dougalsutherland/reveal.js into dev 2018-02-07 10:33:19 +01:00
Benjamin Tan
496db06441 head.js: Remove source map URL since it doesn't exist.
This prevents additional requests from devtools when debugging code.
2018-02-07 13:04:15 +08:00
Benjamin Tan
7991693bde Docs: add note on how to enable/disable preview links individually.
Closes #2005.
2018-02-07 12:51:14 +08:00
Benjamin Tan
410f7767b9 Docs: mention that syntax highlighting requires CSS theme file.
Closes #2075.
2018-02-06 22:34:25 +08:00
Benjamin Tan
57a4c45cf6 Docs: avoid recommending global Grunt installation.
Closes #1951.
2018-02-06 22:12:35 +08:00
Benjamin Tan
80bc1971e0 Docs: Add note about Windows carriage returns.
Closes #1808.
2018-02-06 19:39:03 +08:00
Benjamin Tan
4dabd439d2 Fix testing on Windows machines.
Windows carriage return line endings were not being tested for.

Fixes #2087.
2018-02-01 20:28:20 +08:00
Hakim El Hattab
e704b3ffc8 fix bug where left/right arrows appeared when there were no horizontal slides 2018-01-25 09:59:04 +01:00
Hakim El Hattab
de746bb642 reorganize config options 2018-01-25 09:26:10 +01:00
Hakim El Hattab
4232f41abd Merge pull request #2080 from bnjmnt4n/update-deps
Update dependencies.
2018-01-24 15:52:40 +01:00
Benjamin Tan
f9d0766637 Update QUnit to 2.5.0 and grunt-contrib-qunit to 2.0.0. 2018-01-22 22:38:32 +08:00
Benjamin Tan
f0fa6fb226 Update grunt-contrib-uglify. 2018-01-22 22:38:30 +08:00
Benjamin Tan
e382d5cfab Update dependencies. 2018-01-22 22:38:29 +08:00
Hakim El Hattab
e3205a55be Merge pull request #2078 from bnjmnt4n/data-background
Allow `data-background` images to load even if there is whitespace at…
2018-01-22 10:53:44 +01:00
Benjamin Tan
6816a0205e Allow data-background images to load even if there is whitespace at the end.
Fixes #2032.
2018-01-22 17:17:08 +08:00
Hakim El Hattab
40e5544776 Merge pull request #2077 from bnjmnt4n/js-load
Allow JS files with query strings to be loaded.
2018-01-22 10:09:46 +01:00
Benjamin Tan
fd7894fa13 Allow JS files with query strings to be loaded.
Fixes #1944.
2018-01-22 16:33:10 +08:00
Dougal J. Sutherland
d68423f310 fix fragment handling when desired fragment is 0 2018-01-21 18:03:48 +00:00
Dougal J. Sutherland
260f287926 optionally put the fragment in the URL 2018-01-04 20:09:01 +00:00
Hakim El Hattab
0c946ae18b fix missing theme line-height when printing #1967 2017-12-04 14:03:16 +01:00
Hakim El Hattab
7a0b4a56f9 prevent cmd+r in notes window since reloading breaks the view #1958 2017-12-04 13:57:19 +01:00
Hakim El Hattab
edc9c0a8fd Merge pull request #1958 from ThomasWeinert/feature/block_f5_in_notes
Block F5 in speaker notes window, avoid disconnects
2017-12-04 13:46:04 +01:00
Hakim El Hattab
09471a0508 Merge branch 'patch-1' of https://github.com/keradus/reveal.js into dev 2017-12-04 13:44:06 +01:00
Dariusz Rumiński
aee62ff0af .gitignore - ignore package-lock.json file
Ignore lock file of newer node versions
2017-12-02 20:36:36 +01:00
Hakim El Hattab
137e383950 Merge pull request #2045 from jgm/issue2026
Allow tex2jax options to be passed into math plugin.
2017-12-01 14:37:47 +01:00
John MacFarlane
773569b4a2 Allow tex2jax options to be passed into math plugin.
Closes #2026.

This does not change the default behavior of the math plugin,
but it allows $ delimiters to be disabled (which is usually
what you want, since otherwise normal uses of $ for currency get
treated as math delimiters).

To use:

    Reveal.initialize({
      math: {
        tex2jax: { inlineMath: [['\\(','\\)']],
                   skipTags: ['script','noscript','style',
                              'textarea','pre'] }
            },
      etc.
      });
2017-11-29 21:57:29 -08:00
Hakim El Hattab
1f1f86ec73 Merge branch 'issue_2041' of https://github.com/denehyg/reveal.js into dev 2017-11-29 09:54:48 +01:00
Hakim El Hattab
c966c118fa minor formatting tweaks 2017-11-29 09:46:45 +01:00
Hakim El Hattab
6028844452 Merge branch 'plugin-key-bindings' of https://github.com/denehyg/reveal.js into dev 2017-11-29 09:38:05 +01:00
Greg Denehy
8579fc773d Fixed issue with getProgress() when called from slidechanged event on edge case 2017-11-25 11:07:09 +10:30
Hakim El Hattab
a0a9aa7821 optimize use of getSlideBackground by avoiding index lookup 2017-11-23 15:45:15 +01:00
Hakim El Hattab
a0c013606e add inline and external markdown images to example #2039 2017-11-23 11:12:54 +01:00
Hakim El Hattab
65bdccd580 lab.hakim.se/reveal-js -> revealjs.com 2017-11-22 14:46:55 +01:00
Hakim El Hattab
8a63686017 3.6.0 2017-11-22 14:10:33 +01:00
Hakim El Hattab
a03e803628 make it possible to load/unload slides via the api 2017-11-21 15:38:44 +01:00
Hakim El Hattab
4022cbfe84 simplify logic for finding slide backgrounds 2017-11-21 15:29:40 +01:00
Nicolas Normand
fa8a7334ce URI encode name hash 2017-11-17 11:59:21 +01:00
Hakim El Hattab
28d6a7775b Merge branch 'update-css' of https://github.com/sfairchild/reveal.js into dev 2017-11-09 11:52:11 +01:00
Hakim El Hattab
afce29d79a Merge branch 'master' of github.com:hakimel/reveal.js into dev 2017-11-09 11:51:59 +01:00
Hakim El Hattab
9d0a3d7d5e Merge pull request #1983 from ssfrr/patch-1
adds note about necessary markdown scripts to README
2017-11-09 11:48:51 +01:00
Hakim El Hattab
41e86a2a22 Merge pull request #2017 from hoeggi/patch-1
Update README.md
2017-11-09 11:47:38 +01:00
Hakim El Hattab
1c8edfc8e4 Merge pull request #1957 from crowchirp/patch-1
corrected minor typo in readme file
2017-11-09 11:46:57 +01:00
Hakim El Hattab
463770cc53 Merge pull request #2029 from lechten/export-isSpeakerNotes
Export isSpeakerNotes
2017-11-09 11:41:08 +01:00
Hakim El Hattab
3d1d7683b2 reconfiguring no longer unloads iframes on current slide 2017-11-09 11:40:25 +01:00
Hakim El Hattab
376d140b2a Merge pull request #2030 from lechten/registersearchkey
Register search key shortcut for help overlay
2017-11-09 11:30:38 +01:00
Hakim El Hattab
3beda63a7d allow to be called directly before or after (closes #2021) 2017-11-09 10:26:35 +01:00
Jens Lechtenbörger
1002d39e7c Register search key shortcut for help overlay 2017-11-05 17:45:18 +01:00
Jens Lechtenbörger
44a5673e6f Export isSpeakerNotes 2017-11-05 10:31:43 +01:00
hoeggi
8041759b8b Update README.md 2017-10-28 19:57:35 +02:00
Hakim El Hattab
4a4719b587 always show media controls on mobile devices 2017-10-04 11:13:09 +02:00
Spencer Russell
665d3a151d adds note about necessary markdown scripts to README 2017-09-11 15:13:37 -04:00
Hakim El Hattab
56504b50a9 support negative values in query config overrides 2017-09-07 10:33:44 +02:00
Sean Fairchild
f9a4a27087 Prevent text-transform inside code tags 2017-09-06 10:50:39 -04:00
Thomas Weinert
c0109d948f Block F5 in speaker notes window, avoid disconnects 2017-08-12 13:42:55 +02:00
Chandan Rai
04dcc48fa9 corrected minor typo in readme file 2017-08-10 00:17:08 +05:30
Maximilian Köhl
08e0f5e47b fix indent: replace spaces with tabs 2017-08-08 22:53:32 +02:00
Maximilian Köhl
a2cf23b30c PDF export: add option to export one page per fragment 2017-08-08 22:47:10 +02:00
Hakim El Hattab
bfd431a0c4 add option for disabling all forms of auto-sliding 2017-07-27 08:42:40 +02:00
Hakim El Hattab
8725593805 localstorage feature test in notes plugin, fixes speaker view error in safari 2017-07-13 20:19:16 +02:00
Hakim El Hattab
b04489b129 zoom.js works on main wrapper element 2017-06-19 11:06:58 +02:00
Hakim El Hattab
76eea30083 zoom.js uses ctrl+click for linux, alt+click for others #1909 2017-06-19 09:52:56 +02:00
Hakim El Hattab
af6754bfb7 simplify point zoom, switch back to alt + click shortcut for os x support #1909 2017-06-19 09:45:52 +02:00
Hakim El Hattab
a781b6a22b clear existing matches when searching for empty string #1909 2017-06-19 09:43:29 +02:00
Hakim El Hattab
7d0d3c24ca Merge branch 'master' of https://github.com/linux-man/reveal.js into dev 2017-06-19 09:36:25 +02:00
Hakim El Hattab
af7c33b902 unload lazy loaded videos that are moved out of view 2017-06-14 19:11:08 +02:00
Hakim El Hattab
dc17129082 themes use default quotation marks for <q> #1720 2017-06-14 10:42:51 +02:00
Hakim El Hattab
1233092223 prevent mobile safari header from covering presentation content 2017-06-13 09:43:05 +02:00
Hakim El Hattab
9342d19b5a fix centering of edge-aligned controls 2017-06-12 10:22:47 +02:00
Hakim El Hattab
6ae4ad69d2 change event listener syntax #1917 2017-06-12 09:17:46 +02:00
Hakim El Hattab
5e279efdf3 Merge branch 'issue1896' of https://github.com/OleMussmann/reveal.js into dev 2017-06-12 09:11:24 +02:00
Hakim El Hattab
2961f00946 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2017-06-12 09:05:37 +02:00
Hakim El Hattab
43eada7990 Merge pull request #1898 from bentsai/patch-1
Fix typo
2017-06-12 08:53:09 +02:00
Hakim El Hattab
9139bc32de alias 'notes:' alias for md speaker note separator #1913 2017-06-07 15:43:25 +02:00
Ole Mussmann
b279a47a76 patch to allow multiplexing on URL load 2017-06-06 10:36:40 +02:00
Hakim El Hattab
9ab14374e5 change condition for detecting when there are horizontal slides 2017-06-02 12:13:41 +02:00
Hakim El Hattab
0388c96e60 'showNotes' does nothing when there are no notes 2017-05-24 10:05:16 +02:00
Hakim El Hattab
53c56510ed larger speaker notes font on big screens 2017-05-23 13:14:25 +02:00
Hakim El Hattab
b64c35ed0b tweak control spacing 2017-05-22 11:50:18 +02:00
Hakim El Hattab
fab28362ce highlight.js 9.0.0 -> 9.11.0 2017-05-22 11:34:24 +02:00
linux-man
ce467b53bc Remove comment 2017-05-21 19:49:07 +01:00
linux-man
9c3a65744c Modified Zoom
Block dimension calculation is not accurate, so zoom is made on mouse coordinates
Change default modifier to ctrl - alt don't work on Linux
New parameter zoomLevel: default 2
2017-05-21 19:13:41 +01:00
linux-man
e3a3d3aa0a Better Search
Open/close with Control+Shift+f
Find words inside SPAN
Don't duplicate findings
2017-05-21 19:00:12 +01:00
Hakim El Hattab
64bcfc4f69 change default color of controls to match legacy 2017-05-19 16:14:37 +02:00
Hakim El Hattab
522db9513c remove border from notes contain when printing on separate page 2017-05-19 11:21:40 +02:00
Hakim El Hattab
955075bfc4 adjust autplay position when notes are bottom-aligned 2017-05-19 10:46:13 +02:00
Hakim El Hattab
b1a7b0799f low width speaker notes mode no longer uses vh 2017-05-19 10:20:06 +02:00
Hakim El Hattab
9a7d491ede adjust speaker notes layout on mobile devices 2017-05-19 09:51:01 +02:00
Hakim El Hattab
7ae18c6b1e 'no notes on this slide' placeholder 2017-05-18 16:03:20 +02:00
Hakim El Hattab
052a3f0c71 speaker notes tweak 2017-05-18 16:00:48 +02:00
Hakim El Hattab
b7b3fe3ed4 comment typo 2017-05-18 15:40:17 +02:00
Hakim El Hattab
453a888797 fix error with multiple decimal em in safari 2017-05-18 15:35:25 +02:00
Hakim El Hattab
6dde00fb2e improve controls on touch devices 2017-05-18 14:11:48 +02:00
Hakim El Hattab
fb1b8a2790 revise progress to make them easier to override 2017-05-18 09:58:25 +02:00
Hakim El Hattab
a5e175d59f fix up arrow position 2017-05-18 09:42:01 +02:00
Hakim El Hattab
d770f32bb9 control layout tweaks 2017-05-17 17:10:17 +02:00
Hakim El Hattab
c966672aa4 adjust control layouts when there are no vertical/horiozontal slides 2017-05-17 15:20:45 +02:00
Hakim El Hattab
b784bd56d1 more flexible control size using em 2017-05-17 14:45:01 +02:00
Hakim El Hattab
13733edaa8 control opacity tweak 2017-05-16 15:51:20 +02:00
Hakim El Hattab
67507ccb9d controlsHints -> controlsTutorial 2017-05-16 15:40:50 +02:00
Hakim El Hattab
9e013ccbb2 in/out transitions for controls 2017-05-16 15:31:05 +02:00
Hakim El Hattab
617c17be3c add controlsHint option, animates vertical arrow first time we encounter a vertical slide 2017-05-16 15:04:32 +02:00
Hakim El Hattab
58dc6b7c36 adjust controls layout when there are no vertical or horizontal slides in the deck 2017-05-16 09:45:37 +02:00
Hakim El Hattab
f8b5813e59 prevent flicker on hover 2017-05-16 09:45:37 +02:00
Hakim El Hattab
16c03a5b03 spacing adjustment 2017-05-16 09:45:37 +02:00
Hakim El Hattab
92049d8244 fix unclickable slides in overview when controls were edge-aligned 2017-05-16 09:45:37 +02:00
Hakim El Hattab
2a0a6cbabc reduce control spacing 2017-05-16 09:45:37 +02:00
Hakim El Hattab
54a2137c0d fix responsive issue with speaker notes 2017-05-16 09:45:37 +02:00
Hakim El Hattab
2cc5ae946b new, fixed, speaker notes layout 2017-05-16 09:45:37 +02:00
Hakim El Hattab
44a355b6e9 'controls-placement' -> 'controls-layout', cut back on controls spacing 2017-05-16 09:45:37 +02:00
Hakim El Hattab
10545d41cc simplify control styling using currentColor 2017-05-16 09:45:37 +02:00
Hakim El Hattab
2155415767 more flexible back arrow controls option 2017-05-16 09:45:37 +02:00
Hakim El Hattab
e45a425575 default to bottom right controls, rename soften arrows option 2017-05-16 09:45:37 +02:00
Hakim El Hattab
4fb8e78eb4 collapse control element size when corner aligned 2017-05-16 09:45:37 +02:00
Hakim El Hattab
a9fcaa6f9e new controls are used by default, add config options 2017-05-16 09:45:37 +02:00
Hakim El Hattab
8a09557699 control size tweaks 2017-05-16 09:45:37 +02:00
Hakim El Hattab
69c72b9e08 invert colors of controls based on current background 2017-05-16 09:45:37 +02:00
Hakim El Hattab
ce4537f883 new controls responsively move to bottom right for small displays 2017-05-16 09:45:37 +02:00
Hakim El Hattab
1319016957 new optional controls aligned to screen edges 2017-05-16 09:45:37 +02:00
Hakim El Hattab
963e5c8678 correct target for cssmin 2017-05-16 09:44:36 +02:00
Ben Tsai
0d1be9920f Fix typo
"proceding" → "proceeding"
2017-05-10 20:36:45 -04:00
Hakim El Hattab
ada8003183 Merge pull request #1887 from tristansokol/tristans/add-useavailableport
adds `useAvailablePort` option when serving page with connect.
2017-05-05 14:11:07 +02:00
Hakim El Hattab
00570ea5ce Merge pull request #1884 from demoneaux/upgrade-deps
Upgrade Grunt dependencies and standardise on a consistent file format.
2017-05-05 14:10:24 +02:00
Tristan Sokol
d948c2cd6b adds useAvailablePort option when serving page with connect. 2017-05-02 17:54:29 -07:00
Benjamin Tan
b294323854 Upgrade Grunt dependencies and standardise on a consistent file format.
Closes #1226, #1538.
2017-05-01 12:16:30 +08:00
Greg Denehy
b86b667d25 Changes to fix failed jshint test related to Key Binding API 2017-04-30 19:42:45 +09:30
Greg Denehy
e16508477a Fixed notes.js to account for upstream updates 2017-04-30 17:51:38 +09:30
Greg Denehy
f8bc679182 Merge branch 'dev' into plugin-key-bindings 2017-04-30 17:42:16 +09:30
Greg Denehy
40a46e1c0c Added description of custom key binding API to readme 2017-04-30 17:19:01 +09:30
Greg Denehy
e48e1e19b9 Changed custom key binding config properties to use 'keyCode' instead of 'code' 2017-04-30 16:35:35 +09:30
Greg Denehy
8bf9986fa2 Pass through key event when calling keyboardCondition() to allow conditional function to filter on key codes 2017-04-30 15:24:42 +09:30
Greg Denehy
7297474b2e Added programatic support for custom key bindings with optional descriptions to be added to the help screen 2017-04-30 15:23:04 +09:30
Hakim El Hattab
360bc94006 new fix for prematurely autoplaying background videos 2017-04-27 18:49:20 +02:00
Hakim El Hattab
9f4ed56bb3 larger headings for background sections 2017-04-27 16:42:24 +02:00
Hakim El Hattab
caccf67d3a add for iframe backgrounds 2017-04-27 16:39:49 +02:00
Hakim El Hattab
b19dc7fc80 don't autoplay background videos in overview mode 2017-04-27 16:36:25 +02:00
Hakim El Hattab
8e93a1ddf9 3.5.0 2017-04-26 14:21:54 +02:00
Hakim El Hattab
0c3d89bfce minor tweak for #1564 2017-04-21 09:35:51 +02:00
Adam Spiers
715cf0ba11 optionally display pacing advice based on slide timings
Add an option to display advice on whether the current pace of the
presentation is on track for the right timing (shown as green), and if
not, whether the presenter should speed up (shown as red) or has the
luxury of slowing down (blue).

The pacing timer can be enabled by configuring by the `defaultTiming`
parameter in the `Reveal` configuration block, which specifies the
number of seconds per slide.  120 can be a reasonable rule of thumb.
Timings can also be given per slide `<section>` by setting the
`data-timing` attribute.  Both values are in numbers of seconds.

When the option is enabled, clicking on the timers will reset the timer
to the beginning of the current slide, i.e. as if pacing was perfectly
on track, not to zero as if the presentation had just begun.
2017-04-20 16:11:10 +01:00
Adam Spiers
921a605567 document clock and timer in speaker notes window 2017-04-20 15:18:15 +01:00
Adam Spiers
9c7fda43e9 don't show negative signs inside minutes/seconds elements 2017-04-20 15:18:15 +01:00
Adam Spiers
933eba8789 round decreasing timers to mirror increasing timers 2017-04-20 15:18:15 +01:00
Adam Spiers
1eada3b360 avoid deleting existing classes when muting time elements
and make muting work for negative values
2017-04-20 15:18:15 +01:00
Adam Spiers
b1b4ee270b don't mute minutes when hours is unmuted 2017-04-20 15:18:15 +01:00
Adam Spiers
89b0c5a8d0 use opacity for muted clock elements
This allows us to use different colours for different timers,
which will be useful when we add a pacing timer.
2017-04-20 15:18:15 +01:00
Adam Spiers
a161acaba9 extract time display code into new _displayTime() function
This will allow us to reuse the display code for displaying
an additional pacing timer.
2017-04-20 15:18:15 +01:00
Adam Spiers
eb23e58114 Allow popup window access to Reveal API 2017-04-20 15:18:15 +01:00
Adam Spiers
ef9cbbbbb9 add new getSlides() API
This can be used by plugins which are concerned with helping the
presenter with their pace.
2017-04-20 15:18:15 +01:00
Adam Spiers
40912ace1f clarify getTotalSlides() returns the number of slides 2017-04-20 15:18:15 +01:00
Adam Spiers
d75afd6108 expose getPastSlideCount() via public API
This can be used by plugins which are concerned with helping the
presenter with their pace.
2017-04-20 15:18:15 +01:00
Adam Spiers
eac37990e1 clarify meaning of getProgress() value 2017-04-20 15:18:15 +01:00
Hakim El Hattab
9bbd5f2735 formatting 2017-04-07 10:10:11 +02:00
Hakim El Hattab
2289b92961 Merge pull request #1851 from astone123/master
Fix data-background-video autoplay on iOS Safari
2017-04-07 10:02:58 +02:00
Hakim El Hattab
d1d44cf6b7 formatting 2017-04-07 09:55:55 +02:00
Hakim El Hattab
30f2af0ac5 Merge pull request #1844 from riezebosch/pdf-print-stretch
print-pdf layout slide contents to fit stretch elements
2017-04-07 09:54:39 +02:00
Hakim El Hattab
8ec5e00062 Merge pull request #1843 from riezebosch/pdf-print-callback
print-pdf using callback iso timer
2017-04-07 09:42:24 +02:00
Hakim El Hattab
1babc8d31c Merge pull request #1866 from christianp/mathjax-cdn
replace cdn.mathjax.org with cdnjs
2017-04-07 09:33:05 +02:00
Christian Lawson-Perfect
9495b64d2c replace cdn.mathjax.org with cdnjs
cdn.mathjax.org is shutting down: https://www.mathjax.org/cdn-shutting-down/

This changes the default MathJax URL in the math plugin, as well as
references in README.md and test/examples/math.html
2017-04-05 12:48:56 +01:00
Hakim El Hattab
c3e96f1f0e make pdf page height offset configurable 2017-04-04 14:02:54 +02:00
Hakim El Hattab
2584a6d970 new cli and in-browser pdf printing compatible fix for #1804 2017-04-04 13:37:01 +02:00
Hakim El Hattab
3ea7e2ff59 allow fullscreen for background iframes 2017-03-30 16:26:49 +02:00
Hakim El Hattab
a0a3b4f80d add autoPlayMedia config option, overrides individual autoplay settings 2017-03-23 11:44:02 +01:00
ADAM STONE
d9dd9a92fb Fix video background autoplay on iOS 2017-03-17 22:47:25 -04:00
Manuel Riezebosch
34f3773bf0 print-pdf layout slide contents to fit stretch elements
layout() and thereby layoutSlideContents() is never invoked
when isPrintingPdf() is true so stretch elements are not
sized correctly.
This is ensured now by invoking the layoutSlideContents
from SetupPDF(). There seems no need to scale down
like in other PR's is suggested.
2017-03-14 19:16:08 +01:00
Manuel Riezebosch
9a7c7ce93a print-pdf using callback iso timer
Use window.callPhantom icw page. onCallback to wait for pdf-ready event.
From: http://stackoverflow.com/a/28925479/129269
2017-03-14 18:54:04 +01:00
Hakim El Hattab
7e6fb9ec87 avoid npe on iframe postMessage 2017-03-14 09:06:39 +01:00
RobertBaron
f070ba47ec Allow whitespace on background-images, w3 compliance 2017-02-23 19:03:15 -06:00
Hakim El Hattab
b143e5976b tweaks to showSlideNumber config #1833 2017-02-20 11:49:36 +01:00
Hakim El Hattab
8f7e4bfd41 Merge branch 'slidenum' of https://github.com/malcomio/reveal.js into dev 2017-02-20 11:41:31 +01:00
Hakim El Hattab
5565d08612 note about deploying multiplex server with now #1830 2017-02-20 11:37:18 +01:00
Malcolm Young
95bca847d6 correct config name in README 2017-02-17 15:19:15 +00:00
Malcolm Young
da23d682c6 allow configuration of which view slide number appears on - fixes #1791 2017-02-17 15:08:57 +00:00
Hakim El Hattab
1cee8998a0 fix overview rendering issues in latest chrome #1649 2017-02-17 10:50:52 +01:00
Hakim El Hattab
fa70a7a517 phantom export throws error if reveal.js isn't present 2017-02-15 11:43:57 +01:00
Hakim El Hattab
bef8109506 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2017-02-15 11:19:25 +01:00
Hakim El Hattab
a349ff43c5 new phantom pdf export script that works with 3.4.0 #1815 2017-02-15 11:19:02 +01:00
Hakim El Hattab
313a23ba2b merge autoplay conflict #1771 2017-02-14 14:51:43 +01:00
Hakim El Hattab
909efab7df fix readme conflict 2017-02-14 14:42:22 +01:00
Hakim El Hattab
bc1ca1a58a updated pdf docs 2017-02-14 14:40:12 +01:00
Hakim El Hattab
2f54af4614 update readme re: pdf exports #1823 2017-02-14 14:38:57 +01:00
Hakim El Hattab
8b97ff3126 Merge pull request #1823 from gilxa1226/master
Update to README.md for PDF printing
2017-02-14 14:25:55 +01:00
Hakim El Hattab
5ad66f3779 docs for #1816 and remove showHelp 2017-02-09 11:37:47 +01:00
Hakim El Hattab
1749f0d019 Merge pull request #1816 from Frazer/patch-1
added toggleHelp function
2017-02-09 11:31:00 +01:00
Hakim El Hattab
adc326139a update deserialize regex to work with decimals 2017-02-08 12:56:51 +01:00
Frazer Kirkman
2a1303f3c1 added override parameter to toggleHelp function 2017-02-07 19:53:58 +01:00
gilxa1226
d7b34b6e0f Update README.md to include block for pdf printing 2017-02-07 07:44:52 -05:00
gilxa1226
bcfb65658f Update README.md 2017-02-07 07:43:41 -05:00
Frazer Kirkman
bede9a22e8 added toggleHelp function
this way a key can be given ability to toggleHelp on and off.  Previously Reveal.showHelp could open the help screen, but no way to close it.
2017-02-05 18:42:59 +01:00
Hakim El Hattab
9f99ac8b84 adjust comment for display config value #1325 2017-02-02 10:47:39 +01:00
Hakim El Hattab
8a0dca2ba0 Merge branch 'issue-1324' of https://github.com/mojavelinux/reveal.js into dev 2017-02-02 10:42:21 +01:00
Hakim El Hattab
cc43ff21ef Merge branch 'master' of https://github.com/Bramas/reveal.js into dev 2017-02-01 11:13:40 +01:00
Hakim El Hattab
2c9e226fab warning about cube/page being deprecated #1774 2017-02-01 10:33:50 +01:00
Hakim El Hattab
f496613dd3 improved fragment notes support #1636 2017-01-31 17:08:08 +01:00
Hakim El Hattab
c49f76d271 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2017-01-31 16:48:55 +01:00
Hakim El Hattab
1413cbc1a9 Merge pull request #1636 from traff/master
For a fragment: allow to show a separate note defined in it
2017-01-31 16:47:29 +01:00
Hakim El Hattab
dc159f2825 Merge pull request #1644 from rajgoel/dev
Turn off preview links locally
2017-01-31 16:45:07 +01:00
Hakim El Hattab
7daa0e04de make background videos work on ipad #1778 2017-01-31 16:24:06 +01:00
Hakim El Hattab
981a8b98e4 Merge pull request #1728 from opdavies/sass-extension
support .sass themes
2017-01-31 15:49:51 +01:00
Hakim El Hattab
581da02def Merge pull request #1764 from demoneaux/package-json
Shift `dependencies` to `devDependencies`.
2017-01-31 15:11:38 +01:00
Hakim El Hattab
eada86c8fd recommend using textarea wrapper for inline markdown #1780 2017-01-31 15:07:03 +01:00
Hakim El Hattab
02a6b0515e fix markdown typo, update comment #1780 2017-01-31 15:02:59 +01:00
Hakim El Hattab
37f3da6095 Merge branch 'patch-2' of https://github.com/ccqgithub/reveal.js into dev 2017-01-31 15:02:26 +01:00
Hakim El Hattab
3617eaccb6 note about showNotes in PDF exports #1800 2017-01-30 14:50:17 +01:00
Hakim El Hattab
fa01fa366a typo 2017-01-30 14:38:14 +01:00
Hakim El Hattab
c018d04197 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2017-01-30 14:33:52 +01:00
Hakim El Hattab
3bcd167ce9 Merge pull request #1803 from bitjson/patch-1
correct grunt option usage
2017-01-30 14:20:41 +01:00
Hakim El Hattab
cd36c9274f Merge branch 'master' of github.com:hakimel/reveal.js into dev 2017-01-25 11:01:40 +01:00
Hakim El Hattab
9f8e4d5742 3.4.1 2017-01-25 10:51:25 +01:00
Hakim El Hattab
953d302f8b adjust pdf margins instead of heights to fix #1804 2017-01-25 10:46:03 +01:00
Hakim El Hattab
84202fa072 adjust pdf margins instead of heights to fix #1804 2017-01-25 10:43:26 +01:00
Hakim El Hattab
d9dcff1503 additional fix for empty pages in pdf exports #1804 2017-01-24 15:29:34 +01:00
Hakim El Hattab
286b69b61f fix empty pages in pdf exports (closes #1804) 2017-01-24 15:29:27 +01:00
Hakim El Hattab
934c2e9730 additional fix for empty pages in pdf exports #1804 2017-01-24 15:27:37 +01:00
Hakim El Hattab
d4133f0160 fix empty pages in pdf exports (closes #1804) 2017-01-24 14:48:36 +01:00
Jason Dreyzehner
e3ca5e84a3 correct grunt option usage 2017-01-23 21:26:33 -05:00
Hakim El Hattab
a6ecbfa732 merge info links in index 2017-01-23 11:23:45 +01:00
Hakim El Hattab
08e6cc5a3c Merge pull request #1794 from pkubowicz/index-history
Remove 'history: true' from index.html
2017-01-23 11:16:48 +01:00
Hakim El Hattab
cb16f27dd3 Merge pull request #1768 from demoneaux/background-images
Allow background images without protocols to have query hashes/parameters.
2017-01-23 11:11:28 +01:00
Hakim El Hattab
e8164c1392 2017 2017-01-20 10:35:01 +01:00
Hakim El Hattab
20238ee1d6 make backgrounds (iframes) interactive when the foreground is empty 2017-01-19 12:16:30 +01:00
Hakim El Hattab
98de9327a7 remove unused argument 2017-01-19 12:08:28 +01:00
Hakim El Hattab
941b86b6c3 works with video, defaults to (same as for images) 2017-01-18 10:43:29 +01:00
Hakim El Hattab
84090b882f fix race condition by updating backgrounds after slide visibility 2017-01-17 18:37:43 +01:00
Hakim El Hattab
f9e5467000 prevent autoplaying backgrounds from playing if slide is hidden 2017-01-17 13:19:10 +01:00
Hakim El Hattab
a38207f1d7 wait for in-slide video/audio to load before playing, reuse same autoplay logic for slide backgrounds 2017-01-16 16:11:20 +01:00
Piotr Kubowicz
4afd854037 Remove 'history: true' from index.html
Readme says the default is 'history: false', so it may be surprising
for users - it's easy to miss the contradicting setting in index.html
2017-01-15 16:35:31 +01:00
Hakim El Hattab
568c7516f7 fix unclosed code block 2017-01-10 14:43:47 +01:00
Hakim El Hattab
fb8414f4cb 3.4.0 2017-01-10 13:47:33 +01:00
Hakim El Hattab
a144134b42 Merge branch 'dev' of github.com:hakimel/reveal.js 2017-01-10 13:45:52 +01:00
Season Chen
5f76234566 support complex markdown
support <textarea data-template> `some code` </textarea>
2016-12-23 13:08:23 +08:00
Hakim El Hattab
97bb6e9b58 fragments inherit visibility to avoid conflicts with parent slide visibility 2016-12-15 14:06:17 +01:00
Hakim El Hattab
f2bd9d2970 don't show error message while iframe fades in #1577 2016-12-13 16:16:51 +01:00
Hakim El Hattab
001d4d94d3 Merge branch 'add-refused-to-display-tips-to-link-preview' of https://github.com/Huxpro/reveal.js into dev 2016-12-13 15:57:43 +01:00
Hakim El Hattab
40c4db1e04 always use lowercase reveal.js 2016-12-13 15:52:34 +01:00
Hakim El Hattab
63d3b59ab2 Merge pull request #1767 from demoneaux/readme
Add note about head.js to readme.
2016-12-13 15:50:30 +01:00
Markku Roponen
962c6c133b #1770, set 'data-paused-by-reveal' attribute only for the media elements, which are not already in paused state. 2016-12-13 16:02:26 +02:00
Markku Roponen
da40eafccd #1770, added second argument for setAttribute 2016-12-12 16:44:24 +02:00
Markku Roponen
54bfad62d7 #1770, fixed function name. 2016-12-12 16:41:52 +02:00
Markku Roponen
6831f6c174 #1770, resume playback for paused media. 2016-12-12 16:30:07 +02:00
Benjamin Tan
441a26cf90 Allow background images without protocols to have query hashes/parameters.
Closes #1603.
2016-12-11 18:14:02 +08:00
Benjamin Tan
4d0f1adc40 Add note about head.js to readme.
Closes #1569.
2016-12-11 16:29:07 +08:00
Benjamin Tan
90b301d0a0 Enable passing options for parsing Markdown.
Closes #1163, #1495.
2016-12-08 17:41:55 +08:00
Benjamin Tan
22de402888 Shift dependencies to devDependencies.
The `reveal.js` npm module is typically installed to access the CSS/JS
assets for Reveal.js. For those that want to run the plugins, they would
clone the whole repository. Hence, it doesn’t make sense to include
those as `dependencies`, which will increase download times.

Closes #1734.
2016-12-08 15:26:16 +08:00
Benjamin Tan
713702a0ab Reduce required Node.js version to 4.0.0.
The development workflow can be used with Node 4+, not just Node 6. We
should avoid showing warnings and errors when users are installing this
package via npm/yarn.

Ref. #1729, #1743.
Closes #1725.
2016-12-06 11:38:17 +01:00
Hakim El Hattab
2bd6b563be Merge pull request #1760 from demoneaux/package-json
Reduce required Node.js version to 4.0.0.
2016-12-06 11:37:31 +01:00
Benjamin Tan
03ac4a2e8e Reduce required Node.js version to 4.0.0.
The development workflow can be used with Node 4+, not just Node 6. We
should avoid showing warnings and errors when users are installing this
package via npm/yarn.

Ref. #1729, #1743.
Closes #1725.
2016-12-06 18:12:41 +08:00
Hakim El Hattab
e4e5cc1083 Merge pull request #1740 from christinakayastha/feature/printing-remove-slide-number
Hide slide number when in paper or pdf print view
2016-12-01 10:36:03 +01:00
Hakim El Hattab
f0dfb5b5e3 merge package version conflicts 2016-12-01 10:34:02 +01:00
Hakim El Hattab
b4d46d2b7c update dependencies to work with latest node #1743 2016-12-01 10:32:44 +01:00
Hakim El Hattab
3de1521a39 Merge pull request #1743 from haf/patch-1
Bump node engine in packages.json
2016-12-01 10:31:44 +01:00
Hakim El Hattab
e460b2bd4b Merge pull request #1747 from spencermathews/feature/readme-defaults-fix
Defaults in README are not current
2016-12-01 10:23:44 +01:00
Hakim El Hattab
67ac871397 Merge pull request #1757 from daanmichiels/correct-copyright
include contributors in (c)
2016-12-01 10:22:44 +01:00
Hakim El Hattab
775d510c2f Merge pull request #1756 from jmpp/better-data-trim
Implementing a better data-trim
2016-12-01 10:18:50 +01:00
Daan Michiels
785dbddd28 correct copyright message to include contributors 2016-11-25 12:36:57 -06:00
J.M. Cléry
35162c1f5e Better version of data-trim on code snippets 2016-11-22 23:42:21 +01:00
Spencer Mathews
21c1fafa52 Update README.md to reflect current defaults in js/reveal.js 2016-11-15 13:14:56 -08:00
Hakim El Hattab
19188205de add pdf-ready event; dispatched when the presentation is laid out and ready to print 2016-11-09 11:56:55 +01:00
Henrik Feldt
a8586b3ab3 Bump node engine in packages.json 2016-11-09 11:11:34 +01:00
Christi Kaes
80e28774dd Don't remove slide-number in pdf view 2016-10-30 14:11:10 -04:00
christikaes
659822a8b5 Hide slide number when in paper or pdf print view 2016-10-30 11:31:20 -04:00
Oliver Davies
b78cca5831 Support sass extension for custom themes 2016-10-16 09:53:19 +01:00
Hakim El Hattab
ca37d4e5b9 remove debug code 2016-10-12 13:21:22 +02:00
Hakim El Hattab
7547b893d4 fixes ff overview rendering bug #1649 2016-10-10 12:11:35 +02:00
Hakim El Hattab
e76855e257 remove unused dom lookup 2016-10-06 11:01:44 +02:00
Hakim El Hattab
0b9233cf4a attempt at fixing ff transition bug #1627 2016-10-05 14:00:40 +02:00
Hakim El Hattab
ce55d1a179 fix merge conflict for #1634 2016-10-05 12:21:21 +02:00
Hakim El Hattab
02f95f4de6 code format tweaks 2016-10-05 12:00:21 +02:00
Maarten Schroeven
7e99626b14 only use nodeType 1 and 3 (only relevant types) 2016-10-05 11:54:46 +02:00
Maarten Schroeven
ab33b31f0a limit text written to the status div 2016-10-05 11:54:46 +02:00
CH
2cf00254a1 renamed grunt 'base' option to 'root' (#1660)
* Allow slides to be served away from revealjs server location

The previous 'base' option conflicts with Grunt's 'base' option.
Changing it to 'root' avoids this. Further, updating to a newer Grunt
allows multiple parameters to be used. therefore `grunt serve --root="."
--root="pathtomyslides"` allows you to keep your slide content separate
from JS/CSS and such

* Live reload for relocated base

* Updated packages to match origin/dev

* Updated packages to match origin/dev

* Ensure root is an array
2016-10-05 11:45:37 +02:00
Hakim El Hattab
693a370f06 remove issue comment 2016-10-05 11:36:56 +02:00
Gerald
969885a7dc ignore delta=0 mousewheel event
fix #1607
2016-10-05 11:29:47 +02:00
Hakim El Hattab
0b6585bd44 prevent exception when initializing with no slides #1678 #1679 2016-10-05 11:23:41 +02:00
Jaiden Mispy
3c36ee6cff Add note to README about how to disable scaling 2016-10-05 11:16:41 +02:00
chadmorrow
ea8964ddbf autoSlide duration with playbackRate
The autoSlide duration of media elements with data-autoplay now takes the playbackRate of said media element into account when setting the duration so that autoSlide and the media element stay in sync.
2016-10-05 11:12:27 +02:00
Hakim El Hattab
255bde174c Merge branch 'r400-linux' of https://github.com/jroper/reveal.js into dev 2016-10-05 11:07:10 +02:00
James Roper
1301de9e39 Logitech R400 on Ubuntu blackout button support
On Ubuntu 16.04, the Logitech R400's blackout button gets mapped to 'v'
(keyCode 86). I don't know why this is, but since nothing else is
currently using 'v', this allows it to be supported out of the box.
2016-10-01 22:00:00 +10:00
Hakim El Hattab
ec76f4790c speaker layouts in server side notes plugin 2016-09-21 14:10:45 +02:00
Hakim El Hattab
da5709919b layout selector for speaker view; includes four options 2016-09-21 13:54:42 +02:00
Hakim El Hattab
79728e25cd autoplay support for content inside of fragments 2016-09-20 13:41:38 +02:00
Hakim El Hattab
bc4fc65da4 none/fade/slide transitions use flat transform style, prevents blurred content #1002 2016-08-01 09:15:34 +02:00
Asvin Goel
a652e0a8ea Allow switching off preview links
The data-preview-link=false tag can be used to switch off preview links
2016-07-21 12:15:07 +02:00
Asvin Goel
c1d94f1b60 Merge pull request #12 from hakimel/dev
Syncing to current version
2016-07-21 12:09:08 +02:00
Dmitry Trofimov
86a3f0276b For a fragment: allow to show a separate note defined in it
When a slide has several fragments it could be convenient to define a note for each of them. In this case we need to show only this specific note defined in a fragment and not others. General note of a slide shouldn't be also shown, as a more specific one should have greater relevance in this case.
2016-07-04 16:57:01 +02:00
Hakim El Hattab
304b0292be null computed style to avoid npe 2016-07-04 14:46:46 +02:00
Hakim El Hattab
ab2bb869a3 null check to avoid occasional npe 2016-07-04 13:32:03 +02:00
Hakim El Hattab
6447b59ac5 ready flag on .reveal container 2016-07-01 08:44:27 +02:00
Charles Grigg
59f3395c7f Update JSDocs and fix typos 2016-06-29 23:10:55 -04:00
Hakim El Hattab
541bcf2123 update dependencies based on retire.js info #1473 2016-06-28 15:48:09 +02:00
Hakim El Hattab
e7de1bd8b0 merge retire.js #1473 2016-06-28 15:43:11 +02:00
Hakim El Hattab
9639b53ff4 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-06-28 15:36:08 +02:00
Hakim El Hattab
8f47b17230 Merge pull request #1628 from davidjb/markdown-doc-fix
Detail markdown plugin attributes & defaults
2016-06-28 14:46:05 +02:00
Quentin Bramas
338a7b0ff9 add 'npm build' script that launch grunt 2016-06-28 14:31:37 +02:00
Hakim El Hattab
1da1ff0d6d use first fragment's data-autoslide value when there is no current fragment 2016-06-27 11:13:09 +02:00
Hakim El Hattab
65a90cc75d remove unused dom reference 2016-06-22 09:31:05 +02:00
Hakim El Hattab
e4634f20e8 revise simple.md so that slide 1.1 and 1.2 correctly break into separate slides 2016-06-22 09:24:09 +02:00
Hakim El Hattab
8d7ff10ce3 Merge branch 'bug/markdownSetOptions' of https://github.com/snowyu/reveal.js into dev 2016-06-22 09:20:24 +02:00
David Beitey
1fe20cb42a Detail markdown plugin attributes & defaults
Expands the details already given by highlighting the defaults for all attributes and clarifying what's required.
2016-06-22 15:10:31 +10:00
Hakim El Hattab
8d4cb810d6 move speaker notes into page container when printing pdf 2016-06-21 14:21:42 +02:00
Hakim El Hattab
bac187f3a0 request fullscreen on documentElement instead of body (#1621 #1624) 2016-06-21 11:33:07 +02:00
Hakim El Hattab
a12a17b2d7 request fullscreen on documentElement instead of body (#1621 #1624) 2016-06-21 11:30:12 +02:00
Hakim El Hattab
ce777e4c4b Revert "fix theme backgrounds in firefox fullscreen mode #1386"
This reverts commit b7e0d9b1c7.
2016-06-21 11:27:24 +02:00
Hakim El Hattab
b7e0d9b1c7 fix theme backgrounds in firefox fullscreen mode #1386 2016-06-20 10:27:04 +02:00
Hakim El Hattab
8162855d23 increase default font sizes, adjust config defaults for less margings and larger max scale #1605 2016-06-10 10:58:40 +02:00
Hakim El Hattab
6bfa48a667 prevent repeated initialization #1616 2016-06-10 10:41:16 +02:00
Hakim El Hattab
d78a8046dc Merge branch 'Timothep-master' into dev 2016-06-10 10:13:06 +02:00
Timothep
ad86772f20 Horizontal 2-1 View for the speaker notes instead of a vertical 1-2 2016-06-10 10:12:54 +02:00
Timothep
02123205a0 Added a description of the undocumented timer-reset feature 2016-06-10 10:12:54 +02:00
Hakim El Hattab
64aa3b2647 Merge branch 'master' of https://github.com/dhyegofernando/reveal.js into dev 2016-06-10 10:09:21 +02:00
Hakim El Hattab
ca92d22adc add showHelp to api #1611 2016-06-10 10:04:54 +02:00
Hakim El Hattab
7d6cc9f3ec Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-06-03 13:57:09 +02:00
Hakim El Hattab
c2997c605d text alignment 2016-06-03 13:56:52 +02:00
Hakim El Hattab
6b4bdd2c90 hdpi slides banner 2016-06-03 13:54:42 +02:00
Hakim El Hattab
f9ae4122f7 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-06-03 10:15:34 +02:00
Hakim El Hattab
904f9878d3 slides banner 2016-06-03 10:15:26 +02:00
Hakim El Hattab
4321266276 include layout for notes outside of pdf exports 2016-05-26 10:09:09 +02:00
Hakim El Hattab
3111d3b1ae support for 'separate-page' layout for notes in PDF exports #1518 2016-05-26 09:57:27 +02:00
Hakim El Hattab
e93afb7289 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-05-23 12:03:39 +02:00
Hakim El Hattab
a8c4109244 Update README.md
more in-depth documentation of slide backgrounds #1542
2016-05-23 11:59:29 +02:00
Hakim El Hattab
fd97d56894 Merge pull request #1537 from vincentbernat/fix/dark-background-simple-theme
make theme "simple" use white titles on dark backgrounds
2016-05-23 10:57:47 +02:00
Hakim El Hattab
9cd7f3f37b code format 2016-05-23 10:54:40 +02:00
Hakim El Hattab
884d3cd177 Merge pull request #1585 from jasonkiss/feature/disabled-buttons
set/remove @disabled on navigation buttons
2016-05-23 10:52:14 +02:00
Hakim El Hattab
e2fa1d966c ocd 2016-05-23 10:50:39 +02:00
Hakim El Hattab
2418a12cb9 Merge pull request #1586 from jasonkiss/feature/accessible-speaker-notes
make speaker notes keyboard accessible
2016-05-23 10:48:39 +02:00
Hakim El Hattab
6593ac3d5f moz selection color in theme template #1575 2016-05-23 10:38:46 +02:00
Hakim El Hattab
3483aacfa7 Merge pull request #1575 from aniqah/firefox-selection-colour
Add selection colour for Mozilla Firefox
2016-05-23 10:36:54 +02:00
Hakim El Hattab
2503b1a2e8 merge readme conflict #1595 2016-05-23 10:34:58 +02:00
Hakim El Hattab
c5c0290cca Merge branch 'patch-1' of https://github.com/tiagorg/reveal.js into dev 2016-05-23 10:28:32 +02:00
Tiago Garcia
187114f472 Removing duplicated "position" property at pdf.css
Found that by running css-lint on the code
2016-05-21 11:36:49 -07:00
Tristan Sokol
b79f1fac13 Add minor imporovements to the PDF export instructions 2016-05-19 16:47:25 -07:00
Jason Kiss
dec6d1745b make speaker notes keyboard accessible
Places div.speaker-notes in default kbd Tab order, and when focused,
prevent slide navigation with up/down arrows, allowing up/down arrow
keys to scroll div.speaker-notes.
2016-05-10 11:02:45 +12:00
Jason Kiss
fb8bbaac00 set/remove @disabled on navigation buttons
Keeps disabled buttons out of kbd tab order and indicates to assistive
tech like screen readers that button is disabled. Otherwise buttons
that aren’t enabled remain in kbd Tab order and screen readers announce
them as buttons, but they don’t work.
2016-05-10 10:03:05 +12:00
黄玄
e2a8634057 add refused-to-display tips in link-preview-overlay 2016-05-02 01:42:11 +08:00
Hakim El Hattab
2a79d054d4 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-04-29 09:26:41 +02:00
Hakim El Hattab
3d49b1dea3 Merge pull request #1571 from adius/patch-1
Simplify full setup
2016-04-29 09:26:28 +02:00
Hakim El Hattab
ce7d494ae9 tweak formatting to match rest of slide 2016-04-29 09:25:05 +02:00
Hakim El Hattab
2d54bc6823 Merge pull request #1572 from jesstelford/zoom-content-size
More natural zooming on block level elements
2016-04-29 09:24:25 +02:00
Hakim El Hattab
9b11915c3a fix pdf bg layering, simplify code 2016-04-28 17:07:26 +02:00
Hakim El Hattab
5558103522 make max pages per slide limit configurable 2016-04-28 11:31:11 +02:00
Hakim El Hattab
fcb6ea8385 prevent pages from overflowing when printing to pdf 2016-04-28 11:16:36 +02:00
Aniqah Mair
d1a3656108 Add selection colour for Mozilla Firefox
Defines the highlight colour when selecting slide content using Mozilla
Firefox to match other browsers, instead of being the default colour.
2016-04-27 14:50:03 -04:00
Hakim El Hattab
66c4e6a77f use scrollHeight instead of custom measurement 2016-04-27 11:12:16 +02:00
Jess Telford
a0e6da6a9c More natural zooming on block level elements
Switching a `display: block` element to `display: inline-block` allows calculating the bounds based on the contents of the div rather than the entire container (which is often `width: 100%`).

This provides a much more natural zoom, especially for paragraphs and code examples.
2016-04-26 07:27:59 +10:00
Adrian Sieber
87b082340f Simplify full setup 2016-04-24 09:39:23 +00:00
Hakim El Hattab
539e774d31 3.3.0 2016-04-18 15:29:51 +02:00
Hakim El Hattab
fc3e4d7f23 change introduction 2016-04-18 14:50:36 +02:00
Hakim El Hattab
1efa52486c readme tweak for #1535 2016-04-13 15:37:04 +02:00
Hakim El Hattab
f0ee41a22d Merge branch '1549' of https://github.com/RopoMen/reveal.js into dev 2016-04-13 15:26:06 +02:00
Hakim El Hattab
5dd9067150 overview now works with percentage based width/height #1247 2016-04-13 15:21:30 +02:00
Hakim El Hattab
cb092e60bf Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2016-04-10 12:09:02 +02:00
Hakim El Hattab
a6507afcb4 widen watch for html files, required for updates to demo.html 2016-04-10 12:07:49 +02:00
Hakim El Hattab
87b24dd457 merge conflict 2016-04-10 12:07:10 +02:00
Hakim El Hattab
5a7ac78d4b lazy load iframe in demo 2016-04-10 11:57:38 +02:00
Hakim El Hattab
0fedfbe4c8 Merge branch 'update-headjs' of https://github.com/booi/reveal.js into dev 2016-04-10 11:56:32 +02:00
Ruben Oostinga
2dc546f5ba Fix watching for markdown files
`./*.md` didn't work `*.md` does work
2016-04-09 12:33:46 +02:00
Markku Roponen
a63c8cab92 Fixes #1549, now UA match is limiting out MS Edge and Chrome detection is improved. Also improved UserAgent access by storing it in to a local variable, it was accessed so many times in different places. 2016-04-08 15:47:27 +03:00
Hakim El Hattab
e83e275a4c Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-04-07 10:31:56 +02:00
Hakim El Hattab
d6406e433e new multiplex server courtesy of now.sh (closes #1377) 2016-04-07 10:31:41 +02:00
Hakim El Hattab
492e2e2e62 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-04-07 10:25:31 +02:00
Hakim El Hattab
f85a1e9f1a remove test content 2016-04-07 10:25:10 +02:00
Hakim El Hattab
07c2355604 support for standalone multiplexing 2016-04-07 10:24:44 +02:00
Hakim El Hattab
eca7113f59 Update README.md 2016-04-07 09:55:44 +02:00
Hakim El Hattab
f98b5ccdca Update README.md
readme tweaks
2016-04-07 09:55:04 +02:00
Hakim El Hattab
8789baae29 Merge pull request #1545 from ducin/master
Table of contents added in README.md
2016-04-07 09:51:51 +02:00
Hakim El Hattab
520fa4986e generalize scroll offset prevention 2016-04-07 09:07:19 +02:00
Tomasz Ducin
37ac67dba5 Table of contents added in README.md 2016-04-02 19:43:15 +02:00
Vincent Bernat
a9566dfbd4 make theme "simple" use white titles on dark backgrounds
This is similar to what is done in the "white" theme.
2016-03-24 16:25:01 +01:00
Hakim El Hattab
00b9c2b929 minor tweaks 2016-03-20 18:57:30 +01:00
Hakim El Hattab
4e416fdc58 remove unintentionally added file 2016-03-20 18:52:12 +01:00
Hakim El Hattab
3d0969166f new empty template at index.html, move old index to demo.html #1526 2016-03-20 18:50:23 +01:00
Hakim El Hattab
2625a9292e add 'shuffle' config value and API method #1506 #1089 2016-03-20 17:57:52 +01:00
Brandon Ooi
1a5f299599 update headjs to v1.0.3 2016-03-16 13:57:15 -07:00
Dhyego Fernando
587d16ceef fix(PDF Export): Mark as important width, height and add zoom properties to fix CSS rules which were overrided by inline styles 2016-03-10 13:50:35 -04:00
Hakim El Hattab
0dbdd8a366 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-03-10 16:03:09 +01:00
Hakim El Hattab
de2ab07334 slides link 2016-03-10 16:02:36 +01:00
Hakim El Hattab
0c5ce1e731 Merge pull request #1523 from demoneaux/readme-fix
Make PDF export section less OS X specific.
2016-03-09 10:05:11 +01:00
Hakim El Hattab
ef137fd01f server notes plugin no longer syncs overview mode #1446 2016-03-09 10:02:25 +01:00
Hakim El Hattab
8e3a7f03d1 notes plugin no longer syncs overview mode #1446 2016-03-09 09:57:58 +01:00
Hakim El Hattab
922677ac66 fix notes regex #1522 #1392 2016-03-09 09:37:19 +01:00
Benjamin Tan
ac2a3fff75 Make PDF export section less OS X specific.
Closes #1073.
2016-03-07 19:15:59 +08:00
Hakim El Hattab
7cee887815 Merge branch 'patch-1' of https://github.com/LaurentTreguier/reveal.js into dev 2016-03-07 08:58:58 +01:00
Hakim El Hattab
db46896613 Merge pull request #1522 from demoneaux/notes-fix
Fix query parameter issue in notes plugin.
2016-03-07 08:53:27 +01:00
Hakim El Hattab
e3d681e7c6 Merge pull request #1521 from demoneaux/unused-dependencies
Remove unused dependencies.
2016-03-07 08:52:25 +01:00
Benjamin Tan
6d0b52026a Fix query parameter issue in notes plugin.
Closes #1392.
2016-03-06 18:28:08 +08:00
Benjamin Tan
9eb56f8146 Remove unused dependencies. 2016-03-06 16:52:02 +08:00
Hakim El Hattab
0eb2d81f35 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-03-04 14:47:01 +01:00
Hakim El Hattab
c6b6ae4397 Merge pull request #1484 from omer727/patch-1
Fixing spelling typo and GitHub proper camelcase for brand name
2016-03-04 14:46:33 +01:00
Hakim El Hattab
acc40095d5 use css to scale slides up in safari 2016-02-29 11:31:00 +01:00
LaurentTreguier
219a60053a Change ".video" to ".reveal .video"
I don't know if this is supposed to be this way ?
2016-02-17 20:07:53 +01:00
Hakim El Hattab
191dbe68d5 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-22 11:09:39 +01:00
Hakim El Hattab
c93fbf1ddc readme tweak 2016-01-22 11:02:05 +01:00
Hakim El Hattab
fc1c239743 add barebones example to readme 2016-01-22 10:59:02 +01:00
omer727
6af739f81c Fixing spelling typo and GitHub proper camelcase for brand name 2016-01-17 14:42:56 +02:00
Hakim El Hattab
d0bb69d427 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-11 10:34:01 +01:00
Hakim El Hattab
8a40bb481e note about showNotes in PDF exports 2016-01-11 10:33:40 +01:00
Hakim El Hattab
fdb75176e7 merge #1220 2016-01-11 10:17:02 +01:00
Hakim El Hattab
12acf08ca5 Merge branch 'jetzhliu-patch-1' of https://github.com/jetzhliu/reveal.js into dev 2016-01-11 10:05:42 +01:00
Hakim El Hattab
fba12abd6a Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-11 10:05:25 +01:00
Hakim El Hattab
3c46733a54 Merge pull request #1476 from prtksxna/patch-1
Remove rebase conflict in README.md
2016-01-11 10:02:40 +01:00
Prateek Saxena
7eca84254e Remove rebase conflict in README.md 2016-01-11 05:19:28 +05:30
Hakim El Hattab
19a69b2c89 code format 2016-01-08 14:33:34 +01:00
Hakim El Hattab
3df2129bd6 Merge branch 'patch-1' of https://github.com/danieltdt/reveal.js into dev 2016-01-08 14:32:03 +01:00
Hakim El Hattab
993526ff67 fix broken iframe in backgrounds example 2016-01-08 14:18:53 +01:00
Hakim El Hattab
3d33d27b86 tweak implementation of #1376 2016-01-08 14:16:42 +01:00
Hakim El Hattab
c0ea2cd980 same code format 2016-01-08 14:02:16 +01:00
Hakim El Hattab
daa5f031bf Merge branch 'patch-2' of https://github.com/teawithfruit/reveal.js into dev 2016-01-08 14:00:50 +01:00
Hakim El Hattab
8ec529d767 rebuild css 2016-01-08 13:59:12 +01:00
Hakim El Hattab
a5750f03c0 merge conflict 2016-01-08 13:58:35 +01:00
Hakim El Hattab
06cdd9b7cd include speaker view keyboard shortcut when applicable #1466 2016-01-08 13:49:06 +01:00
Hakim El Hattab
4ee6769e0f tweaked fragment examples 2016-01-08 11:05:59 +01:00
Hakim El Hattab
52aec94800 center help overlay with flexbox 2016-01-08 10:58:13 +01:00
Bjoern Kimminich
7621e1085d added retire.js to build process
-allows security vulnerability check in used npm-dependencies and own scripts
-execute with ```grunt retire```
2016-01-08 10:51:35 +01:00
Hakim El Hattab
ddd0e85f41 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-08 10:49:40 +01:00
Hakim El Hattab
c3919756f1 resolve conflict 2016-01-08 10:48:10 +01:00
Hakim El Hattab
ee877845d8 add new fragment styles to readme #1445 2016-01-08 10:41:20 +01:00
Hakim El Hattab
76faeccd3e Merge branch 'fragments' of https://github.com/kewitz/reveal.js into dev 2016-01-08 10:39:02 +01:00
Hakim El Hattab
3bb7cf528c Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-08 10:37:51 +01:00
Hakim El Hattab
2a86465434 tweak to pdf print isntructions 2016-01-08 10:35:25 +01:00
Hakim El Hattab
1450d21595 Merge pull request #1450 from Quintasan/fix-printing-readme
Chromium users need to check Background graphics option when printing.
2016-01-08 10:29:45 +01:00
Hakim El Hattab
b7644a3bf7 expose version number through #1451 2016-01-08 10:26:53 +01:00
Hakim El Hattab
fb00a5d613 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-08 10:25:44 +01:00
Hakim El Hattab
1d6848a782 merge conflict 2016-01-08 10:21:35 +01:00
Hakim El Hattab
19a801799a Merge pull request #1472 from vicapow/master
Add the grunt-cli as a dependency instead of assuming global grunt.
2016-01-08 10:14:34 +01:00
Victor Powell
4881281ea1 Add the grunt-cli as a dependency instead of assuming global grunt. 2016-01-06 13:01:58 -08:00
Hakim El Hattab
fcb4b05de7 Merge branch 'master' of github.com:hakimel/reveal.js into dev 2016-01-04 09:31:46 +01:00
Hakim El Hattab
e448cf8cd1 Merge pull request #1459 from appleboy/patch-1
remove redundant spaces.
2016-01-04 09:31:12 +01:00
Hakim El Hattab
c2298865cb Merge pull request #1467 from ismith/spelling_fix
Fix spelling error in print-pdf plugin
2016-01-04 09:30:36 +01:00
Hakim El Hattab
18b644cf8f ©️ ©️ ©️ ©️ ©️ closes #1469 2016-01-04 09:29:55 +01:00
Ian Smith
5da75aef01 Fix spelling error in print-pdf plugin 2015-12-27 12:35:13 -06:00
Bjoern Kimminich
de4efa5d19 updated to mustache 2.2.1
prevents XSS vulnerability (see https://github.com/janl/mustache.js/pull/388)
2015-12-21 23:17:53 +01:00
Bjoern Kimminich
5abf5001a8 ignoring IntelliJ IDEA files 2015-12-21 23:02:57 +01:00
Hakim El Hattab
91c6db71ca update to highlight.js 9.0.0 2015-12-14 09:49:05 +01:00
Bo-Yi Wu
07affa2750 remove redundant spaces. 2015-12-08 14:14:42 +08:00
Razvan Caliman
d06981c60c Merge branch 'muted-video' of github.com:oslego/reveal.js into muted-video 2015-12-03 09:47:23 +00:00
Razvan Caliman
b49664621f add option to mute background videos (updated) 2015-12-03 09:43:32 +00:00
Michał Zając
de4406f26c Chromium users need to check Background graphics option when printing. 2015-11-30 10:46:21 +01:00
Leonardo Kewitz
2909440fde Clean version of the new transitions. 2015-11-22 18:52:42 -02:00
Leonardo Kewitz
d457b9270a Added 4 fragment transitions effect. 2015-11-22 18:34:25 -02:00
Hakim El Hattab
6949ebc762 tweak 2015-11-19 15:44:50 +01:00
Hakim El Hattab
0e763c7171 2x playback controls for retina displays 2015-11-19 15:39:29 +01:00
Hakim El Hattab
c8319b9b1a add autoSlideMethod to default config 2015-11-19 15:35:12 +01:00
Hakim El Hattab
0cd4e2c84f Merge branch 'dev' of github.com:hakimel/reveal.js into dev 2015-11-19 15:30:43 +01:00
Hakim El Hattab
bbe38ad263 Merge pull request #1437 from der-michik/autoslide-direction
Add an option to auto-slide right only
2015-11-19 15:30:35 +01:00
MichiK
a398a02edb Fix build error 2015-11-19 13:51:22 +01:00
MichiK
4a45557b57 Add a more flexible autoSlideMethod option
Auto-sliding will now use the method specified in the config if it is
a function or default to navigateNext.
2015-11-19 13:00:01 +01:00
Hakim El Hattab
bef2722eed simplify condition #1434 2015-11-19 10:38:52 +01:00
Hakim El Hattab
31550d09e4 Merge pull request #1434 from mikemellor11/master
stops parallax failing if only the single horizontal slide and multiple vertical
2015-11-19 09:51:37 +01:00
MichiK
c0afa01e6a Add autoSlideRight option
When the autoSlideRight config option is active, the auto-sliding
will always navigate to the right and never down even if slides are
present there. This allows hidden "bonus slides" in presentations
which can be displayed as needed but won't show up automatically.
2015-11-18 22:00:35 +01:00
Hakim El Hattab
833622edcd update parallax background docs #1436 2015-11-18 10:36:48 +01:00
Mike Mellor
3e42929f90 check for 0 division, stops parallax failing if only the single horizontal slide and multiple vertical 2015-11-13 15:13:30 +00:00
Riceball LEE
16ebf2a783 * [bug] the markdown plugin can not render highlight codes for marked.setOptions(highlight) 2015-11-11 07:37:08 +00:00
Riceball LEE
6952931451 * update marked.js version to 0.3.5 2015-11-10 21:40:46 +00:00
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
teawithfruit
43f0d08155 fixed loading 2015-11-02 10:37:16 +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
Liu Zhanhong
625831b993 format note content when creating slide
In html content, marked allow `Inline-Level Grammar` but not `Block-Level Grammar`, so when I write following:
```
note:
* a
* b
* c
```
it become:
```html
<p><em> a
</em> b</p>
<ul>
<li>c</li>
</ul>
```
unbelievable!
2015-10-19 19:50:43 +08: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
Alex Batista
ec119e79a7 UPDATED - Improvement on spaces and indentation 2015-09-29 21:09:41 -03:00
Alex Batista
c1cb328e19 UPDATED - Improvement on spaces and indentation 2015-09-29 21:07:02 -03:00
Alex Batista
e258db0994 UPDATED - Improvement of code. Now none flag is used, but the readyState property from video element 2015-09-29 21:01:50 -03:00
Alex Batista
28e01908c4 Merge branch 'master' of https://github.com/alexbatista/reveal.js
Conflicts:
	js/reveal.js
2015-09-29 20:56:04 -03:00
Alex Batista
92a6996754 Improvement of code. Now none flag is used, but the readyState property from video element 2015-09-29 20:49:25 -03:00
Alex Batista
b0d6e5578f improvement on spaces and indentation 2015-09-29 15:18:17 -03: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
Alex Batista
bcfd0aae3c bug fix - when the first section has a background-video, the vido do not execute. Now, it's work 2015-09-28 23:04:47 -03: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
Razvan Caliman
8bbc2971ac add option to mute background videos 2015-09-19 15:55:48 +01:00
David Banham
076aee5ae6 Update location of multiplex demo server 2015-09-17 15:39:21 +10:00
Wendy Smoak
d6d4c68013 Add the data-noescape attribute and example 2015-09-13 09:14:12 -04: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
Dan Allen
ccbc7ed6bc resolves #1324 allow display property to be configured
- allow display property apply to current slide to be configured
2015-08-07 23:04:23 -06: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
jzgdev
cee64858dd Gruntfile.js: watch tasks restructured 2015-07-01 22:51:01 -07: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
Philipp A.
a96cabaf70 Fixed last header having a border-bottom
`<tbody/>` is automatically inserted, so we can guarantee that this affects all ths and tds in the last row of the table *body* and the head is left untouched
2015-05-03 17:40:11 +02: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
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
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 Teixeira
f79210c6c1 Add support for custom notes.html file
It would be nice if we could define a custom notes.html file.

Actually, I'm used to compile my js files before releasing my app and, using selectors like `script[src$="notes.js"]`, doesn't work :(

So, what do you think about it?
2015-03-05 18:54:34 -03:00
Ken Dale
67140f2369 Add plain class for plain images 2015-02-13 19:43:47 -05:00
Chris Lawrence
54082a8d76 Merge remote-tracking branch 'upstream/master' 2014-11-30 21:26:17 -05:00
David Banham
a078c87f10 Listen to custom mapped togglePause keys
This resolves issue #941
2014-06-25 23:22:13 +10:00
Chris Lawrence
09de278be0 Merge remote-tracking branch 'upstream/master' 2014-06-22 22:35:53 -04: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
Chris Lawrence
ac76644456 Merge remote-tracking branch 'upstream/master' 2014-04-13 14:05:51 -04:00
Chris Lawrence
d1d6cca272 Merge branch 'master' of github.com:lordsutch/reveal.js 2014-01-07 22:30:43 -05:00
Chris Lawrence
97d4eb1056 Merge remote-tracking branch 'upstream/master' 2013-10-30 22:32:43 -04:00
Chris Lawrence
55f220109c Merge remote-tracking branch 'upstream/master' 2013-09-15 20:19:47 -04:00
Chris Lawrence
d8fb09fb64 Merge remote-tracking branch 'upstream/master' 2013-08-26 02:25:38 -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
76 changed files with 11802 additions and 5668 deletions

6
.gitignore vendored
View File

@@ -1,8 +1,14 @@
.idea/
*.iml
*.iws
*.eml
out/
.DS_Store
.svn
log/*.log
tmp/**
node_modules/
package-lock.json
.sass-cache
css/reveal.min.css
js/reveal.min.js

View File

@@ -1,5 +1,5 @@
language: node_js
node_js:
- 0.10
before_script:
- npm install -g grunt-cli
- 4
after_script:
- npm run build -- retire

View File

@@ -1,6 +1,10 @@
/* global module:false */
module.exports = function(grunt) {
var port = grunt.option('port') || 8000;
var root = grunt.option('root') || '.';
if (!Array.isArray(root)) root = [root];
// Project configuration
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
@@ -8,10 +12,10 @@ module.exports = function(grunt) {
banner:
'/*!\n' +
' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
' * http://lab.hakim.se/reveal-js\n' +
' * http://revealjs.com\n' +
' * MIT licensed\n' +
' *\n' +
' * Copyright (C) 2015 Hakim El Hattab, http://hakim.se\n' +
' * Copyright (C) 2018 Hakim El Hattab, http://hakim.se\n' +
' */'
},
@@ -21,7 +25,8 @@ module.exports = function(grunt) {
uglify: {
options: {
banner: '<%= meta.banner %>\n'
banner: '<%= meta.banner %>\n',
ie8: true
},
build: {
src: 'js/reveal.js',
@@ -31,34 +36,31 @@ module.exports = function(grunt) {
sass: {
core: {
files: {
'css/reveal.css': 'css/reveal.scss',
}
src: 'css/reveal.scss',
dest: 'css/reveal.css'
},
themes: {
files: [
{
expand: true,
cwd: 'css/theme/source',
src: ['*.scss'],
dest: 'css/theme',
ext: '.css'
}
]
expand: true,
cwd: 'css/theme/source',
src: ['*.sass', '*.scss'],
dest: 'css/theme',
ext: '.css'
}
},
autoprefixer: {
dist: {
core: {
src: 'css/reveal.css'
}
},
cssmin: {
options: {
compatibility: 'ie9'
},
compress: {
files: {
'css/reveal.min.css': [ 'css/reveal.css' ]
}
src: 'css/reveal.css',
dest: 'css/reveal.min.css'
}
},
@@ -67,7 +69,8 @@ module.exports = function(grunt) {
curly: false,
eqeqeq: true,
immed: true,
latedef: true,
esnext: true,
latedef: 'nofunc',
newcap: true,
noarg: true,
sub: true,
@@ -75,6 +78,7 @@ module.exports = function(grunt) {
eqnull: true,
browser: true,
expr: true,
loopfunc: true,
globals: {
head: false,
module: false,
@@ -91,34 +95,41 @@ module.exports = function(grunt) {
server: {
options: {
port: port,
base: '.',
base: root,
livereload: true,
open: true
open: true,
useAvailablePort: true
}
}
},
zip: {
'reveal-js-presentation.zip': [
'index.html',
'css/**',
'js/**',
'lib/**',
'images/**',
'plugin/**'
]
bundle: {
src: [
'index.html',
'css/**',
'js/**',
'lib/**',
'images/**',
'plugin/**',
'**.md'
],
dest: 'reveal-js-presentation.zip'
}
},
watch: {
options: {
livereload: true
},
js: {
files: [ 'Gruntfile.js', 'js/reveal.js' ],
tasks: 'js'
},
theme: {
files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
files: [
'css/theme/source/*.sass',
'css/theme/source/*.scss',
'css/theme/template/*.sass',
'css/theme/template/*.scss'
],
tasks: 'css-themes'
},
css: {
@@ -126,21 +137,33 @@ module.exports = function(grunt) {
tasks: 'css-core'
},
html: {
files: [ 'index.html']
files: root.map(path => path + '/*.html')
},
markdown: {
files: root.map(path => path + '/*.md')
},
options: {
livereload: true
}
},
retire: {
js: [ 'js/reveal.js', 'lib/js/*.js', 'plugin/**/*.js' ],
node: [ '.' ]
}
});
// Dependencies
grunt.loadNpmTasks( 'grunt-contrib-qunit' );
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
grunt.loadNpmTasks( 'grunt-contrib-connect' );
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
grunt.loadNpmTasks( 'grunt-contrib-qunit' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
grunt.loadNpmTasks( 'grunt-sass' );
grunt.loadNpmTasks( 'grunt-contrib-connect' );
grunt.loadNpmTasks( 'grunt-autoprefixer' );
grunt.loadNpmTasks( 'grunt-retire' );
grunt.loadNpmTasks( 'grunt-sass' );
grunt.loadNpmTasks( 'grunt-zip' );
// Default task

View File

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

731
README.md

File diff suppressed because it is too large Load Diff

27
bower.json Normal file
View File

@@ -0,0 +1,27 @@
{
"name": "reveal.js",
"version": "3.7.0",
"main": [
"js/reveal.js",
"css/reveal.css"
],
"homepage": "http://revealjs.com",
"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

@@ -38,7 +38,8 @@
.share-reveal,
.state-background,
.reveal .progress,
.reveal .backgrounds {
.reveal .backgrounds,
.reveal .slide-number {
display: none !important;
}
@@ -141,7 +142,7 @@
.reveal .slides section {
visibility: visible !important;
position: static !important;
width: 100% !important;
width: auto !important;
height: auto !important;
display: block !important;
overflow: visible !important;
@@ -199,4 +200,4 @@
font-size: 0.8em;
}
}
}

View File

@@ -1,15 +1,9 @@
/* 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;
@@ -29,12 +23,10 @@ html {
overflow: visible;
}
/* SECTION 2: Remove any elements not needed in print.
This would include navigation, ads, sidebars, etc. */
/* Remove any elements not needed in print. */
.nestedarrow,
.reveal .controls,
.reveal .progress,
.reveal .slide-number,
.reveal .playback,
.reveal.overview,
.fork-reveal,
@@ -43,16 +35,7 @@ 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 {
}
/* 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;
}
@@ -61,8 +44,6 @@ h1,h2,h3,h4,h5,h6 {
font-family: Courier, 'Courier New', monospace !important;
}
/* SECTION 5: more reveal.js specific additions by @skypanther */
ul, ol, div, p {
visibility: visible;
position: static;
@@ -79,8 +60,9 @@ ul, ol, div, p {
}
.reveal .slides {
position: static;
width: 100%;
height: auto;
width: 100% !important;
height: auto !important;
zoom: 1 !important;
left: auto;
top: auto;
@@ -90,23 +72,22 @@ ul, ol, div, p {
overflow: visible;
display: block;
-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%;
perspective: none;
perspective-origin: 50% 50%;
}
.reveal .slides section {
page-break-after: always !important;
.reveal .slides .pdf-page {
position: relative;
overflow: hidden;
z-index: 1;
page-break-after: always;
}
.reveal .slides section {
visibility: visible !important;
position: relative !important;
display: block !important;
position: relative !important;
position: absolute !important;
margin: 0 !important;
padding: 0 !important;
@@ -115,43 +96,69 @@ ul, ol, div, p {
opacity: 1 !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;
transform-style: flat !important;
transform: none !important;
}
.reveal section.stack {
position: relative !important;
margin: 0 !important;
padding: 0 !important;
page-break-after: avoid !important;
height: auto !important;
min-height: auto !important;
}
.reveal img {
box-shadow: none;
}
.reveal .roll {
overflow: visible;
line-height: 1em;
}
/* Slide backgrounds are placed inside of their slide when exporting to PDF */
.reveal section .slide-background {
.reveal .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;
height: 100%;
z-index: auto !important;
}
/* Display slide speaker notes when 'showNotes' is enabled */
.reveal.show-notes {
max-width: none;
max-height: none;
}
.reveal .speaker-notes-pdf {
display: block;
width: 100%;
height: auto;
max-height: none;
top: auto;
right: auto;
bottom: auto;
left: auto;
z-index: 100;
}
/* Layout option which makes notes appear on a separate page */
.reveal .speaker-notes-pdf[data-layout="separate-page"] {
position: relative;
color: inherit;
background-color: transparent;
padding: 20px;
page-break-after: always;
border: 0;
}
/* 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

View File

@@ -1,9 +1,9 @@
/*!
* reveal.js
* http://lab.hakim.se/reveal-js
* http://revealjs.com
* MIT licensed
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* Copyright (C) 2018 Hakim El Hattab, http://hakim.se
*/
@@ -23,7 +23,7 @@ html, body, .reveal div, .reveal span, .reveal applet, .reveal object, .reveal i
.reveal article, .reveal aside, .reveal canvas, .reveal details, .reveal embed,
.reveal figure, .reveal figcaption, .reveal footer, .reveal header, .reveal hgroup,
.reveal menu, .reveal nav, .reveal output, .reveal ruby, .reveal section, .reveal summary,
.reveal time, .reveal mark, .reveal audio, video {
.reveal time, .reveal mark, .reveal audio, .reveal video {
margin: 0;
padding: 0;
border: 0;
@@ -69,13 +69,13 @@ body {
&.visible {
opacity: 1;
visibility: visible;
visibility: inherit;
}
}
.reveal .slides section .fragment.grow {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
transform: scale( 1.3 );
@@ -84,7 +84,7 @@ body {
.reveal .slides section .fragment.shrink {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
transform: scale( 0.7 );
@@ -101,7 +101,7 @@ body {
.reveal .slides section .fragment.fade-out {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
opacity: 0;
@@ -111,29 +111,78 @@ body {
.reveal .slides section .fragment.semi-fade-out {
opacity: 1;
visibility: visible;
visibility: inherit;
&.visible {
opacity: 0.5;
visibility: visible;
visibility: inherit;
}
}
.reveal .slides section .fragment.strike {
opacity: 1;
visibility: inherit;
&.visible {
text-decoration: line-through;
}
}
.reveal .slides section .fragment.fade-up {
transform: translate(0, 20%);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.fade-down {
transform: translate(0, -20%);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.fade-right {
transform: translate(-20%, 0);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.fade-left {
transform: translate(20%, 0);
&.visible {
transform: translate(0, 0);
}
}
.reveal .slides section .fragment.fade-in-then-out,
.reveal .slides section .fragment.current-visible {
opacity: 0;
visibility: hidden;
&.current-fragment {
opacity: 1;
visibility: visible;
visibility: inherit;
}
}
.reveal .slides section .fragment.fade-in-then-semi-out {
opacity: 0;
visibility: hidden;
&.visible {
opacity: 0.5;
visibility: inherit;
}
&.current-fragment {
opacity: 1;
visibility: inherit;
}
}
@@ -144,7 +193,7 @@ body {
.reveal .slides section .fragment.highlight-blue,
.reveal .slides section .fragment.highlight-current-blue {
opacity: 1;
visibility: visible;
visibility: inherit;
}
.reveal .slides section .fragment.highlight-red.visible {
color: #ff2c2d
@@ -202,88 +251,279 @@ body {
* CONTROLS
*********************************************/
@keyframes bounce-right {
0%, 10%, 25%, 40%, 50% {transform: translateX(0);}
20% {transform: translateX(10px);}
30% {transform: translateX(-5px);}
}
@keyframes bounce-down {
0%, 10%, 25%, 40%, 50% {transform: translateY(0);}
20% {transform: translateY(10px);}
30% {transform: translateY(-5px);}
}
$controlArrowSize: 3.6em;
$controlArrowSpacing: 1.4em;
$controlArrowLength: 2.6em;
$controlArrowThickness: 0.5em;
$controlsArrowAngle: 45deg;
$controlsArrowAngleHover: 40deg;
$controlsArrowAngleActive: 36deg;
@mixin controlsArrowTransform( $angle ) {
&:before {
transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( $angle );
}
&:after {
transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( -$angle );
}
}
.reveal .controls {
$spacing: 12px;
display: none;
position: fixed;
width: 110px;
height: 110px;
z-index: 30;
right: 10px;
bottom: 10px;
-webkit-user-select: none;
}
.reveal .controls div {
position: absolute;
opacity: 0.05;
width: 0;
height: 0;
border: 12px solid transparent;
transform: scale(.9999);
transition: all 0.2s ease;
top: auto;
bottom: $spacing;
right: $spacing;
left: auto;
z-index: 1;
color: #000;
pointer-events: none;
font-size: 10px;
-webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
button {
position: absolute;
padding: 0;
background-color: transparent;
border: 0;
outline: 0;
cursor: pointer;
color: currentColor;
transform: scale(.9999);
transition: color 0.2s ease,
opacity 0.2s ease,
transform 0.2s ease;
z-index: 2; // above slides
pointer-events: auto;
font-size: inherit;
visibility: hidden;
opacity: 0;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
}
.controls-arrow:before,
.controls-arrow:after {
content: '';
position: absolute;
top: 0;
left: 0;
width: $controlArrowLength;
height: $controlArrowThickness;
border-radius: $controlArrowThickness/2;
background-color: currentColor;
transition: all 0.15s ease, background-color 0.8s ease;
transform-origin: floor(($controlArrowThickness/2)*10)/10 50%;
will-change: transform;
}
.controls-arrow {
position: relative;
width: $controlArrowSize;
height: $controlArrowSize;
@include controlsArrowTransform( $controlsArrowAngle );
&:hover {
@include controlsArrowTransform( $controlsArrowAngleHover );
}
&:active {
@include controlsArrowTransform( $controlsArrowAngleActive );
}
}
.navigate-left {
right: $controlArrowSize + $controlArrowSpacing*2;
bottom: $controlArrowSpacing + $controlArrowSize/2;
transform: translateX( -10px );
}
.navigate-right {
right: 0;
bottom: $controlArrowSpacing + $controlArrowSize/2;
transform: translateX( 10px );
.controls-arrow {
transform: rotate( 180deg );
}
&.highlight {
animation: bounce-right 2s 50 both ease-out;
}
}
.navigate-up {
right: $controlArrowSpacing + $controlArrowSize/2;
bottom: $controlArrowSpacing*2 + $controlArrowSize;
transform: translateY( -10px );
.controls-arrow {
transform: rotate( 90deg );
}
}
.navigate-down {
right: $controlArrowSpacing + $controlArrowSize/2;
bottom: 0;
transform: translateY( 10px );
.controls-arrow {
transform: rotate( -90deg );
}
&.highlight {
animation: bounce-down 2s 50 both ease-out;
}
}
// Back arrow style: "faded":
// Deemphasize backwards navigation arrows in favor of drawing
// attention to forwards navigation
&[data-controls-back-arrows="faded"] .navigate-left.enabled,
&[data-controls-back-arrows="faded"] .navigate-up.enabled {
opacity: 0.3;
&:hover {
opacity: 1;
}
}
// Back arrow style: "hidden":
// Never show arrows for backwards navigation
&[data-controls-back-arrows="hidden"] .navigate-left.enabled,
&[data-controls-back-arrows="hidden"] .navigate-up.enabled {
opacity: 0;
visibility: hidden;
}
// Any control button that can be clicked is "enabled"
.enabled {
visibility: visible;
opacity: 0.9;
cursor: pointer;
transform: none;
}
// Any control button that leads to showing or hiding
// a fragment
.enabled.fragmented {
opacity: 0.5;
}
.enabled:hover,
.enabled.fragmented:hover {
opacity: 1;
}
}
.reveal .controls div.enabled {
opacity: 0.7;
cursor: pointer;
// Adjust the layout when there are no vertical slides
.reveal:not(.has-vertical-slides) .controls .navigate-left {
bottom: $controlArrowSpacing;
right: 0.5em + $controlArrowSpacing + $controlArrowSize;
}
.reveal .controls div.enabled:active {
margin-top: 1px;
.reveal:not(.has-vertical-slides) .controls .navigate-right {
bottom: $controlArrowSpacing;
right: 0.5em;
}
.reveal .controls div.navigate-left {
top: 42px;
// Adjust the layout when there are no horizontal slides
.reveal:not(.has-horizontal-slides) .controls .navigate-up {
right: $controlArrowSpacing;
bottom: $controlArrowSpacing + $controlArrowSize;
}
.reveal:not(.has-horizontal-slides) .controls .navigate-down {
right: $controlArrowSpacing;
bottom: 0.5em;
}
border-right-width: 22px;
border-right-color: #000;
}
.reveal .controls div.navigate-left.fragmented {
opacity: 0.3;
// Invert arrows based on background color
.reveal.has-dark-background .controls {
color: #fff;
}
.reveal.has-light-background .controls {
color: #000;
}
// Disable active states on touch devices
.reveal.no-hover .controls .controls-arrow:hover,
.reveal.no-hover .controls .controls-arrow:active {
@include controlsArrowTransform( $controlsArrowAngle );
}
// Edge aligned controls layout
@media screen and (min-width: 500px) {
$spacing: 8px;
.reveal .controls[data-controls-layout="edges"] {
& {
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.reveal .controls div.navigate-right {
left: 74px;
top: 42px;
border-left-width: 22px;
border-left-color: #000;
}
.reveal .controls div.navigate-right.fragmented {
opacity: 0.3;
.navigate-left,
.navigate-right,
.navigate-up,
.navigate-down {
bottom: auto;
right: auto;
}
.reveal .controls div.navigate-up {
left: 42px;
border-bottom-width: 22px;
border-bottom-color: #000;
}
.reveal .controls div.navigate-up.fragmented {
opacity: 0.3;
.navigate-left {
top: 50%;
left: $spacing;
margin-top: -$controlArrowSize/2;
}
.reveal .controls div.navigate-down {
left: 42px;
top: 74px;
border-top-width: 22px;
border-top-color: #000;
}
.reveal .controls div.navigate-down.fragmented {
opacity: 0.3;
.navigate-right {
top: 50%;
right: $spacing;
margin-top: -$controlArrowSize/2;
}
.navigate-up {
top: $spacing;
left: 50%;
margin-left: -$controlArrowSize/2;
}
.navigate-down {
bottom: $spacing;
left: 50%;
margin-left: -$controlArrowSize/2;
}
}
}
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
position: fixed;
position: absolute;
display: none;
height: 3px;
width: 100%;
@@ -292,21 +532,22 @@ body {
z-index: 10;
background-color: rgba( 0, 0, 0, 0.2 );
color: #fff;
}
.reveal .progress:after {
content: '';
display: block;
position: absolute;
height: 20px;
height: 10px;
width: 100%;
top: -20px;
top: -10px;
}
.reveal .progress span {
display: block;
height: 100%;
width: 0px;
background-color: #000;
background-color: currentColor;
transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
}
@@ -315,13 +556,25 @@ body {
*********************************************/
.reveal .slide-number {
position: fixed;
position: absolute;
display: block;
right: 15px;
bottom: 15px;
opacity: 0.5;
right: 8px;
bottom: 8px;
z-index: 31;
font-family: Helvetica, sans-serif;
font-size: 12px;
line-height: 1;
color: #fff;
background-color: rgba( 0, 0, 0, 0.4 );
padding: 5px;
}
.reveal .slide-number a {
color: currentColor;
}
.reveal .slide-number-delimiter {
margin: 0 3px;
}
/*********************************************
@@ -336,6 +589,16 @@ body {
touch-action: none;
}
// Mobile Safari sometimes overlays a header at the top
// of the page when in landscape mode. Using fixed
// positioning ensures that reveal.js reduces its height
// when this header is visible.
@media only screen and (orientation : landscape) {
.reveal.ua-iphone {
position: fixed;
}
}
.reveal .slides {
position: absolute;
width: 100%;
@@ -345,6 +608,7 @@ body {
bottom: 0;
left: 0;
margin: auto;
pointer-events: none;
overflow: visible;
z-index: 1;
@@ -363,9 +627,10 @@ body {
position: absolute;
width: 100%;
padding: 20px 0px;
pointer-events: auto;
z-index: 10;
transform-style: preserve-3d;
transform-style: flat;
transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
@@ -391,6 +656,7 @@ body {
.reveal .slides>section.stack {
padding-top: 0;
padding-bottom: 0;
pointer-events: none;
}
.reveal .slides>section.present,
@@ -400,6 +666,13 @@ body {
opacity: 1;
}
.reveal .slides>section:empty,
.reveal .slides>section>section:empty,
.reveal .slides>section[data-background-interactive],
.reveal .slides>section>section[data-background-interactive] {
pointer-events: none;
}
.reveal.center,
.reveal.center .slides,
.reveal.center .slides section {
@@ -432,8 +705,14 @@ body {
*********************************************/
@mixin transition-global($style) {
.reveal .slides>section[data-transition=#{$style}],
.reveal.#{$style} .slides>section:not([data-transition]) {
.reveal .slides section[data-transition=#{$style}],
.reveal.#{$style} .slides section:not([data-transition]) {
@content;
}
}
@mixin transition-stack($style) {
.reveal .slides section[data-transition=#{$style}].stack,
.reveal.#{$style} .slides section.stack {
@content;
}
}
@@ -496,6 +775,10 @@ body {
*********************************************/
@each $stylename in default, convex {
@include transition-stack(#{$stylename}) {
transform-style: preserve-3d;
}
@include transition-horizontal-past(#{$stylename}) {
transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
}
@@ -514,6 +797,10 @@ body {
* CONCAVE TRANSITION
*********************************************/
@include transition-stack(concave) {
transform-style: preserve-3d;
}
@include transition-horizontal-past(concave) {
transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
}
@@ -553,6 +840,10 @@ body {
/*********************************************
* CUBE TRANSITION
*
* WARNING:
* this is deprecated and will be removed in a
* future version.
*********************************************/
.reveal.cube .slides {
@@ -564,6 +855,7 @@ body {
min-height: 700px;
backface-visibility: hidden;
box-sizing: border-box;
transform-style: preserve-3d;
}
.reveal.center.cube .slides section {
min-height: 0;
@@ -624,6 +916,10 @@ body {
/*********************************************
* PAGE TRANSITION
*
* WARNING:
* this is deprecated and will be removed in a
* future version.
*********************************************/
.reveal.page .slides {
@@ -635,6 +931,7 @@ body {
padding: 30px;
min-height: 700px;
box-sizing: border-box;
transform-style: preserve-3d;
}
.reveal.page .slides section.past {
z-index: 12;
@@ -737,6 +1034,25 @@ body {
z-index: 100;
transition: all 1s ease;
}
.reveal .pause-overlay .resume-button {
position: absolute;
bottom: 20px;
right: 20px;
color: #ccc;
border-radius: 2px;
padding: 6px 14px;
border: 2px solid #ccc;
font-size: 16px;
background: transparent;
cursor: pointer;
&:hover {
color: #fff;
border-color: #fff;
}
}
.reveal.paused .pause-overlay {
visibility: visible;
opacity: 1;
@@ -807,13 +1123,21 @@ body {
height: 100%;
opacity: 0;
visibility: hidden;
overflow: hidden;
background-color: rgba( 0, 0, 0, 0 );
transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
}
.reveal .slide-background-content {
position: absolute;
width: 100%;
height: 100%;
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
}
.reveal .slide-background.stack {
@@ -823,6 +1147,7 @@ body {
.reveal .slide-background.present {
opacity: 1;
visibility: visible;
z-index: 2;
}
.print-pdf .reveal .slide-background {
@@ -839,7 +1164,11 @@ body {
max-height: none;
top: 0;
left: 0;
object-fit: cover;
}
.reveal .slide-background[data-background-size="contain"] video {
object-fit: contain;
}
/* Immediate transition style */
.reveal[data-background-transition=none]>.backgrounds .slide-background,
@@ -969,8 +1298,15 @@ body {
perspective-origin: 50% 50%;
perspective: 700px;
.slides {
// Fixes overview rendering errors in FF48+, not applied to
// other browsers since it degrades performance
-moz-transform-style: preserve-3d;
}
.slides section {
height: 700px;
height: 100%;
top: 0 !important;
opacity: 1 !important;
overflow: hidden;
visibility: visible !important;
@@ -1000,6 +1336,10 @@ body {
.backgrounds {
perspective: inherit;
// Fixes overview rendering errors in FF48+, not applied to
// other browsers since it degrades performance
-moz-transform-style: preserve-3d;
}
.backgrounds .slide-background {
@@ -1010,6 +1350,10 @@ body {
outline: 10px solid rgba(150,150,150,0.1);
outline-offset: 10px;
}
.backgrounds .slide-background.stack {
overflow: visible;
}
}
// Disable transitions transitions while we're activating
@@ -1024,10 +1368,6 @@ body {
transition: none;
}
.reveal.overview-animated .slides {
transition: transform 0.4s ease;
}
/*********************************************
* RTL SUPPORT
@@ -1125,6 +1465,7 @@ body {
display: inline-block;
width: 40px;
height: 40px;
line-height: 36px;
padding: 0 10px;
float: right;
opacity: 0.6;
@@ -1152,6 +1493,7 @@ body {
.reveal .overlay .viewport {
position: absolute;
display: flex;
top: 40px;
right: 0;
bottom: 0;
@@ -1175,6 +1517,23 @@ body {
visibility: visible;
}
.reveal .overlay.overlay-preview.loaded .viewport-inner {
position: absolute;
z-index: -1;
left: 0;
top: 45%;
width: 100%;
text-align: center;
letter-spacing: normal;
}
.reveal .overlay.overlay-preview .x-frame-error {
opacity: 0;
transition: opacity 0.3s ease 0.3s;
}
.reveal .overlay.overlay-preview.loaded .x-frame-error {
opacity: 1;
}
.reveal .overlay.overlay-preview.loaded .spinner {
opacity: 0;
visibility: hidden;
@@ -1188,8 +1547,8 @@ body {
.reveal .overlay.overlay-help .viewport .viewport-inner {
width: 600px;
margin: 0 auto;
padding: 60px;
margin: auto;
padding: 20px 20px 80px 20px;
text-align: center;
letter-spacing: normal;
}
@@ -1201,13 +1560,13 @@ body {
.reveal .overlay.overlay-help .viewport .viewport-inner table {
border: 1px solid #fff;
border-collapse: collapse;
font-size: 14px;
font-size: 16px;
}
.reveal .overlay.overlay-help .viewport .viewport-inner table th,
.reveal .overlay.overlay-help .viewport .viewport-inner table td {
width: 200px;
padding: 10px;
padding: 14px;
border: 1px solid #fff;
vertical-align: middle;
}
@@ -1224,12 +1583,13 @@ body {
*********************************************/
.reveal .playback {
position: fixed;
position: absolute;
left: 15px;
bottom: 15px;
bottom: 20px;
z-index: 30;
cursor: pointer;
transition: all 400ms ease;
-webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
}
.reveal.overview .playback {
@@ -1288,10 +1648,97 @@ body {
* SPEAKER NOTES
*********************************************/
// Hide on-page notes
.reveal aside.notes {
display: none;
}
// An interface element that can optionally be used to show the
// speaker notes to all viewers, on top of the presentation
.reveal .speaker-notes {
display: none;
position: absolute;
width: 25vw;
height: 100%;
top: 0;
left: 100%;
padding: 14px 18px 14px 18px;
z-index: 1;
font-size: 18px;
line-height: 1.4;
border: 1px solid rgba( 0, 0, 0, 0.05 );
color: #222;
background-color: #f5f5f5;
overflow: auto;
box-sizing: border-box;
text-align: left;
font-family: Helvetica, sans-serif;
-webkit-overflow-scrolling: touch;
.notes-placeholder {
color: #ccc;
font-style: italic;
}
&:focus {
outline: none;
}
&:before {
content: 'Speaker notes';
display: block;
margin-bottom: 10px;
opacity: 0.5;
}
}
.reveal.show-notes {
max-width: 75vw;
overflow: visible;
}
.reveal.show-notes .speaker-notes {
display: block;
}
@media screen and (min-width: 1600px) {
.reveal .speaker-notes {
font-size: 20px;
}
}
@media screen and (max-width: 1024px) {
.reveal.show-notes {
border-left: 0;
max-width: none;
max-height: 70%;
overflow: visible;
}
.reveal.show-notes .speaker-notes {
top: 100%;
left: 0;
width: 100%;
height: (30/0.7)*1%;
}
}
@media screen and (max-width: 600px) {
.reveal.show-notes {
max-height: 60%;
}
.reveal.show-notes .speaker-notes {
top: 100%;
height: (40/0.6)*1%;
}
.reveal .speaker-notes {
font-size: 14px;
}
}
/*********************************************
* ZOOM PLUGIN
@@ -1315,5 +1762,3 @@ body {
.zoomed .reveal .roll span:after {
visibility: hidden;
}

View File

@@ -1,10 +1,10 @@
## Dependencies
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
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 proceeding: 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 `npm run build -- css-themes`.
Each theme file does four things in the following order:
@@ -19,5 +19,3 @@ This is where you override the default theme. Either by specifying variables (se
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.
When you are done, run `grunt css-themes` to compile the Sass file to CSS and you are ready to use your new theme.

View File

@@ -1,26 +1,26 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@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
*/
@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: #f7f2d3;
background: -moz-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #ffffff), color-stop(100%, #f7f2d3));
background: -webkit-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -o-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -ms-radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: radial-gradient(center, circle cover, #ffffff 0%, #f7f2d3 100%);
background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3));
background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
background-color: #f7f3de; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #333; }
@@ -29,17 +29,28 @@ body {
background: rgba(79, 64, 28, 0.99);
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
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
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #333;
font-family: 'League Gothic', Impact, sans-serif;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -70,17 +81,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -97,7 +113,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -107,9 +126,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -120,7 +136,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -139,16 +156,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -158,25 +174,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -193,18 +215,18 @@ body {
.reveal a {
color: #8b743d;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #c0a76e;
color: #c0a86e;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #564726; }
background: #564826; }
/*********************************************
* IMAGES
@@ -215,10 +237,14 @@ body {
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; }
-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);
@@ -228,44 +254,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #8b743d; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #8b743d; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #8b743d; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #8b743d; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #c0a76e; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #c0a76e; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #c0a76e; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #c0a76e; }
.reveal .controls {
color: #8b743d; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #8b743d; }
.reveal .progress span {
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);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #8b743d; }
@media print {
.backgrounds {
background-color: #f7f3de; } }

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
/**
* Black theme for reveal.js. This is the opposite of the 'white' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By 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; }
@@ -15,8 +15,8 @@ body {
background-color: #222; }
.reveal {
font-family: 'Source Sans Pro', Helvetica, sans-serif;
font-size: 38px;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-size: 42px;
font-weight: normal;
color: #fff; }
@@ -25,17 +25,28 @@ body {
background: #bee4fd;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-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 {
.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-family: "Source Sans Pro", Helvetica, sans-serif;
font-weight: 600;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +77,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +109,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,9 +122,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -116,7 +132,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -135,16 +152,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,25 +170,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -189,9 +211,9 @@ body {
.reveal a {
color: #42affa;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #8dcffc;
@@ -200,7 +222,7 @@ body {
.reveal .roll span:after {
color: #fff;
background: #068ee9; }
background: #068de9; }
/*********************************************
* IMAGES
@@ -211,10 +233,14 @@ body {
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; }
-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);
@@ -224,44 +250,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #42affa; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #42affa; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #42affa; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #42affa; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #8dcffc; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #8dcffc; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #8dcffc; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #8dcffc; }
.reveal .controls {
color: #42affa; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #42affa; }
.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); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #42affa; }
@media print {
.backgrounds {
background-color: #222; } }

View File

@@ -1,4 +1,3 @@
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
/**
* Blood theme for reveal.js
* Author: Walther http://github.com/Walther
@@ -10,6 +9,7 @@
* For other themes, change $codeBackground accordingly.
*
*/
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
/*********************************************
* GLOBAL STYLES
*********************************************/
@@ -18,8 +18,8 @@ body {
background-color: #222; }
.reveal {
font-family: Ubuntu, 'sans-serif';
font-size: 36px;
font-family: Ubuntu, "sans-serif";
font-size: 40px;
font-weight: normal;
color: #eee; }
@@ -28,17 +28,28 @@ body {
background: #a23;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-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 {
.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-family: Ubuntu, "sans-serif";
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -69,17 +80,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -96,7 +112,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -106,9 +125,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -119,7 +135,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -138,16 +155,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -157,25 +173,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -192,18 +214,18 @@ body {
.reveal a {
color: #a23;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #dd5567;
color: #dd5566;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #6a1521; }
background: #6a1520; }
/*********************************************
* IMAGES
@@ -214,10 +236,14 @@ body {
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; }
-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);
@@ -227,53 +253,38 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #a23; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #a23; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #a23; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #a23; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #dd5567; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #dd5567; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #dd5567; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #dd5567; }
.reveal .controls {
color: #a23; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #a23; }
.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); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #a23; }
@media print {
.backgrounds {
background-color: #222; } }
.reveal p {
font-weight: 300;
text-shadow: 1px 1px #222; }
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
font-weight: 700; }
.reveal p code {

View File

@@ -1,5 +1,3 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* League theme for reveal.js.
*
@@ -7,6 +5,8 @@
*
* 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
*********************************************/
@@ -21,8 +21,8 @@ body {
background-color: #2b2b2b; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #eee; }
@@ -31,17 +31,28 @@ body {
background: #FF5E99;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-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 {
.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-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -72,17 +83,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -99,7 +115,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -109,9 +128,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -122,7 +138,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -141,16 +158,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -160,25 +176,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -195,18 +217,18 @@ body {
.reveal a {
color: #13DAEC;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #71ebf4;
color: #71e9f4;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #0d9ba5; }
background: #0d99a5; }
/*********************************************
* IMAGES
@@ -217,10 +239,14 @@ body {
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; }
-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);
@@ -230,44 +256,24 @@ body {
/*********************************************
* 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: #71ebf4; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #71ebf4; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #71ebf4; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #71ebf4; }
.reveal .controls {
color: #13DAEC; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #13DAEC; }
.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); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #13DAEC; }
@media print {
.backgrounds {
background-color: #2b2b2b; } }

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized Dark theme for reveal.js.
* Author: Achim Staebler
*/
@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
*/
@@ -19,8 +19,8 @@ body {
background-color: #002b36; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #93a1a1; }
@@ -29,17 +29,28 @@ body {
background: #d33682;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #d33682;
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 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee8d5;
font-family: 'League Gothic', Impact, sans-serif;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -70,17 +81,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -97,7 +113,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -107,9 +126,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -120,7 +136,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -139,16 +156,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -158,25 +174,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -193,18 +215,18 @@ body {
.reveal a {
color: #268bd2;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #78bae6;
color: #78b9e6;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #1a6291; }
background: #1a6091; }
/*********************************************
* IMAGES
@@ -215,10 +237,14 @@ body {
border: 4px solid #93a1a1;
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; }
-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);
@@ -228,44 +254,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #268bd2; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #268bd2; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #268bd2; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #268bd2; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #78bae6; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #78bae6; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #78bae6; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #78bae6; }
.reveal .controls {
color: #268bd2; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #268bd2; }
.reveal .progress span {
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);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #268bd2; }
@media print {
.backgrounds {
background-color: #002b36; } }

View File

@@ -1,10 +1,10 @@
@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
*********************************************/
@@ -13,8 +13,8 @@ body {
background-color: #111; }
.reveal {
font-family: 'Open Sans', sans-serif;
font-size: 30px;
font-family: "Open Sans", sans-serif;
font-size: 40px;
font-weight: normal;
color: #eee; }
@@ -23,17 +23,28 @@ body {
background: #e7ad52;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #e7ad52;
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 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee;
font-family: 'Montserrat', Impact, sans-serif;
font-family: "Montserrat", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: -0.03em;
@@ -64,17 +75,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -91,7 +107,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -101,9 +120,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -114,7 +130,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -133,16 +150,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -152,25 +168,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -187,9 +209,9 @@ body {
.reveal a {
color: #e7ad52;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #f3d7ac;
@@ -198,7 +220,7 @@ body {
.reveal .roll span:after {
color: #fff;
background: #d0881d; }
background: #d08a1d; }
/*********************************************
* IMAGES
@@ -209,10 +231,14 @@ body {
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; }
-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);
@@ -222,44 +248,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #e7ad52; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #e7ad52; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #e7ad52; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #e7ad52; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #f3d7ac; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #f3d7ac; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #f3d7ac; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #f3d7ac; }
.reveal .controls {
color: #e7ad52; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #e7ad52; }
.reveal .progress span {
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);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #e7ad52; }
@media print {
.backgrounds {
background-color: #111; } }

View File

@@ -15,8 +15,8 @@ body {
background-color: #F0F1EB; }
.reveal {
font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
font-size: 36px;
font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
font-size: 40px;
font-weight: normal;
color: #000; }
@@ -25,17 +25,28 @@ body {
background: #26351C;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #26351C;
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 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #383D3D;
font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +77,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +109,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,9 +122,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -116,7 +132,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -135,16 +152,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,25 +170,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -189,12 +211,12 @@ body {
.reveal a {
color: #51483D;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #8b7b69;
color: #8b7c69;
text-shadow: none;
border: none; }
@@ -211,10 +233,14 @@ body {
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; }
-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);
@@ -224,44 +250,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #51483D; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #51483D; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #51483D; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #51483D; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #8b7b69; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #8b7b69; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #8b7b69; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #8b7b69; }
.reveal .controls {
color: #51483D; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #51483D; }
.reveal .progress span {
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);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #51483D; }
@media print {
.backgrounds {
background-color: #F0F1EB; } }

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,6 +5,11 @@
* 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);
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
*********************************************/
@@ -15,8 +18,8 @@ body {
background-color: #fff; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #000; }
@@ -25,17 +28,28 @@ body {
background: rgba(0, 0, 0, 0.99);
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
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
*********************************************/
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #000;
font-family: 'News Cycle', Impact, sans-serif;
font-family: "News Cycle", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +80,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +112,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,9 +125,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -116,7 +135,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -135,16 +155,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,25 +173,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -189,9 +214,9 @@ body {
.reveal a {
color: #00008B;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #0000f1;
@@ -211,10 +236,14 @@ body {
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; }
-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);
@@ -224,44 +253,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #00008B; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #00008B; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #00008B; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #00008B; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #0000f1; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #0000f1; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #0000f1; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #0000f1; }
.reveal .controls {
color: #00008B; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #00008B; }
.reveal .progress span {
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);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #00008B; }
@media print {
.backgrounds {
background-color: #fff; } }

View File

@@ -1,10 +1,10 @@
@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
*/
@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; }
@@ -22,8 +22,8 @@ body {
background-color: #f7fbfc; }
.reveal {
font-family: 'Open Sans', sans-serif;
font-size: 36px;
font-family: "Open Sans", sans-serif;
font-size: 40px;
font-weight: normal;
color: #333; }
@@ -32,17 +32,28 @@ body {
background: #134674;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #134674;
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 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #333;
font-family: 'Quicksand', sans-serif;
font-family: "Quicksand", sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: -0.08em;
@@ -73,17 +84,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -100,7 +116,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -110,9 +129,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -123,7 +139,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -142,16 +159,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -161,25 +177,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -196,18 +218,18 @@ body {
.reveal a {
color: #3b759e;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #74a8cb;
color: #74a7cb;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #264d66; }
background: #264c66; }
/*********************************************
* IMAGES
@@ -218,10 +240,14 @@ body {
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; }
-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);
@@ -231,44 +257,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #3b759e; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #3b759e; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #3b759e; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #3b759e; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #74a8cb; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #74a8cb; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #74a8cb; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #74a8cb; }
.reveal .controls {
color: #3b759e; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #3b759e; }
.reveal .progress span {
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);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #3b759e; }
@media print {
.backgrounds {
background-color: #f7fbfc; } }

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/league-gothic/league-gothic.css);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
/**
* Solarized Light theme for reveal.js.
* Author: Achim Staebler
*/
@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
*/
@@ -19,8 +19,8 @@ body {
background-color: #fdf6e3; }
.reveal {
font-family: 'Lato', sans-serif;
font-size: 36px;
font-family: "Lato", sans-serif;
font-size: 40px;
font-weight: normal;
color: #657b83; }
@@ -29,17 +29,28 @@ body {
background: #d33682;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-selection {
color: #fff;
background: #d33682;
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 {
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #586e75;
font-family: 'League Gothic', Impact, sans-serif;
font-family: "League Gothic", Impact, sans-serif;
font-weight: normal;
line-height: 1.2;
letter-spacing: normal;
@@ -70,17 +81,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -97,7 +113,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -107,9 +126,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -120,7 +136,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -139,16 +156,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -158,25 +174,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -193,18 +215,18 @@ body {
.reveal a {
color: #268bd2;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #78bae6;
color: #78b9e6;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #1a6291; }
background: #1a6091; }
/*********************************************
* IMAGES
@@ -215,10 +237,14 @@ body {
border: 4px solid #657b83;
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; }
-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);
@@ -228,44 +254,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #268bd2; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #268bd2; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #268bd2; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #268bd2; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #78bae6; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #78bae6; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #78bae6; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #78bae6; }
.reveal .controls {
color: #268bd2; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #268bd2; }
.reveal .progress span {
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);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #268bd2; }
@media print {
.backgrounds {
background-color: #fdf6e3; } }

View File

@@ -1,7 +1,7 @@
/**
* Black theme for reveal.js. This is the opposite of the 'white' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By Hakim El Hattab, http://hakim.se
*/
@@ -21,7 +21,7 @@ $backgroundColor: #222;
$mainColor: #fff;
$headingColor: #fff;
$mainFontSize: 38px;
$mainFontSize: 42px;
$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingTextShadow: none;

View File

@@ -28,7 +28,6 @@ $backgroundColor: $coal;
// Main text
$mainFont: Ubuntu, 'sans-serif';
$mainFontSize: 36px;
$mainColor: #eee;
// Headings

View File

@@ -27,7 +27,6 @@ $headingTextShadow: none;
$headingLetterSpacing: -0.03em;
$headingTextTransform: none;
$selectionBackgroundColor: #e7ad52;
$mainFontSize: 30px;
// Theme template ------------------------------

View File

@@ -31,6 +31,11 @@ $linkColor: #00008B;
$linkColorHover: lighten( $linkColor, 20% );
$selectionBackgroundColor: rgba(0, 0, 0, 0.99);
section.has-dark-background {
&, h1, h2, h3, h4, h5, h6 {
color: #fff;
}
}
// Theme template ------------------------------

View File

@@ -1,7 +1,7 @@
/**
* White theme for reveal.js. This is the opposite of the 'black' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By Hakim El Hattab, http://hakim.se
*/
@@ -21,7 +21,7 @@ $backgroundColor: #fff;
$mainColor: #222;
$headingColor: #222;
$mainFontSize: 38px;
$mainFontSize: 42px;
$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingTextShadow: none;

View File

@@ -6,7 +6,7 @@ $backgroundColor: #2b2b2b;
// Primary/body text
$mainFont: 'Lato', sans-serif;
$mainFontSize: 36px;
$mainFontSize: 40px;
$mainColor: #eee;
// Vertical spacing between blocks of text

View File

@@ -22,8 +22,14 @@ body {
text-shadow: none;
}
.reveal .slides>section,
.reveal .slides>section>section {
::-moz-selection {
color: $selectionColor;
background: $selectionBackgroundColor;
text-shadow: none;
}
.reveal .slides section,
.reveal .slides section>section {
line-height: 1.3;
font-weight: inherit;
}
@@ -128,11 +134,6 @@ body {
margin-left: 40px;
}
.reveal q,
.reveal blockquote {
quotes: none;
}
.reveal blockquote {
display: block;
position: relative;
@@ -168,8 +169,10 @@ body {
box-shadow: 0px 0px 6px rgba(0,0,0,0.3);
}
.reveal code {
font-family: monospace;
text-transform: none;
}
.reveal pre code {
@@ -178,8 +181,6 @@ body {
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC;
}
.reveal table {
@@ -209,15 +210,18 @@ body {
text-align: right;
}
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none;
}
.reveal sup {
vertical-align: super;
font-size: smaller;
}
.reveal sub {
vertical-align: sub;
font-size: smaller;
}
.reveal small {
@@ -269,6 +273,11 @@ body {
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 .15s linear;
-moz-transition: all .15s linear;
@@ -287,40 +296,8 @@ body {
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: $linkColor;
}
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: $linkColor;
}
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: $linkColor;
}
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: $linkColor;
}
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: $linkColorHover;
}
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: $linkColorHover;
}
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: $linkColorHover;
}
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: $linkColorHover;
.reveal .controls {
color: $linkColor;
}
@@ -330,20 +307,19 @@ body {
.reveal .progress {
background: rgba(0,0,0,0.2);
color: $linkColor;
}
.reveal .progress span {
background: $linkColor;
-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);
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);
}
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: $linkColor;
@media print {
.backgrounds {
background-color: $backgroundColor;
}
}

View File

@@ -1,9 +1,9 @@
@import url(../../lib/font/source-sans-pro/source-sans-pro.css);
/**
* White theme for reveal.js. This is the opposite of the 'black' theme.
*
* Copyright (C) 2015 Hakim El Hattab, http://hakim.se
* By 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; }
@@ -15,8 +15,8 @@ body {
background-color: #fff; }
.reveal {
font-family: 'Source Sans Pro', Helvetica, sans-serif;
font-size: 38px;
font-family: "Source Sans Pro", Helvetica, sans-serif;
font-size: 42px;
font-weight: normal;
color: #222; }
@@ -25,17 +25,28 @@ body {
background: #98bdef;
text-shadow: none; }
.reveal .slides > section, .reveal .slides > section > section {
::-moz-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 {
.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-family: "Source Sans Pro", Helvetica, sans-serif;
font-weight: 600;
line-height: 1.2;
letter-spacing: normal;
@@ -66,17 +77,22 @@ body {
line-height: 1.3; }
/* Ensure certain elements are never larger than the slide itself */
.reveal img, .reveal video, .reveal iframe {
.reveal img,
.reveal video,
.reveal iframe {
max-width: 95%;
max-height: 95%; }
.reveal strong, .reveal b {
.reveal strong,
.reveal b {
font-weight: bold; }
.reveal em {
font-style: italic; }
.reveal ol, .reveal dl, .reveal ul {
.reveal ol,
.reveal dl,
.reveal ul {
display: inline-block;
text-align: left;
margin: 0 0 0 1em; }
@@ -93,7 +109,10 @@ body {
.reveal ul ul ul {
list-style-type: circle; }
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
.reveal ul ul,
.reveal ul ol,
.reveal ol ol,
.reveal ol ul {
display: block;
margin-left: 40px; }
@@ -103,9 +122,6 @@ body {
.reveal dd {
margin-left: 40px; }
.reveal q, .reveal blockquote {
quotes: none; }
.reveal blockquote {
display: block;
position: relative;
@@ -116,7 +132,8 @@ body {
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 {
.reveal blockquote p:first-child,
.reveal blockquote p:last-child {
display: inline-block; }
.reveal q {
@@ -135,16 +152,15 @@ body {
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
.reveal code {
font-family: monospace; }
font-family: monospace;
text-transform: none; }
.reveal pre code {
display: block;
padding: 5px;
overflow: auto;
max-height: 400px;
word-wrap: normal;
background: #3F3F3F;
color: #DCDCDC; }
word-wrap: normal; }
.reveal table {
margin: auto;
@@ -154,25 +170,31 @@ body {
.reveal table th {
font-weight: bold; }
.reveal table th, .reveal table td {
.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"] {
.reveal table th[align="center"],
.reveal table td[align="center"] {
text-align: center; }
.reveal table th[align="right"], .reveal table td[align="right"] {
.reveal table th[align="right"],
.reveal table td[align="right"] {
text-align: right; }
.reveal table tr:last-child td {
.reveal table tbody tr:last-child th,
.reveal table tbody tr:last-child td {
border-bottom: none; }
.reveal sup {
vertical-align: super; }
vertical-align: super;
font-size: smaller; }
.reveal sub {
vertical-align: sub; }
vertical-align: sub;
font-size: smaller; }
.reveal small {
display: inline-block;
@@ -189,18 +211,18 @@ body {
.reveal a {
color: #2a76dd;
text-decoration: none;
-webkit-transition: color 0.15s ease;
-moz-transition: color 0.15s ease;
transition: color 0.15s ease; }
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:hover {
color: #6ca2e8;
color: #6ca0e8;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #1a54a1; }
background: #1a53a1; }
/*********************************************
* IMAGES
@@ -211,10 +233,14 @@ body {
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; }
-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);
@@ -224,44 +250,24 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
border-right-color: #2a76dd; }
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
border-left-color: #2a76dd; }
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
border-bottom-color: #2a76dd; }
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
border-top-color: #2a76dd; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #6ca2e8; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #6ca2e8; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #6ca2e8; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #6ca2e8; }
.reveal .controls {
color: #2a76dd; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
background: rgba(0, 0, 0, 0.2);
color: #2a76dd; }
.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); }
/*********************************************
* SLIDE NUMBER
* PRINT BACKGROUND
*********************************************/
.reveal .slide-number {
color: #2a76dd; }
@media print {
.backgrounds {
background-color: #fff; } }

416
demo.html Normal file
View File

@@ -0,0 +1,416 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<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="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
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]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h1>Reveal.js</h1>
<h3>The HTML Presentation Framework</h3>
<p>
<small>Created by <a href="http://hakim.se">Hakim El Hattab</a> and <a href="https://github.com/hakimel/reveal.js/graphs/contributors">contributors</a></small>
</p>
</section>
<section>
<h2>Hello There</h2>
<p>
reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do.
</p>
</section>
<!-- Example of nested vertical slides -->
<section>
<section>
<h2>Vertical Slides</h2>
<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>Nested slides are useful for adding additional detail underneath a high level horizontal slide.</p>
</section>
<section>
<h2>Basement Level 2</h2>
<p>That's it, time to go back up.</p>
<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>
<section>
<h2>Slides</h2>
<p>
Not a coder? Not a problem. There's a fully-featured visual editor for authoring these, try it out at <a href="https://slides.com" target="_blank">https://slides.com</a>.
</p>
</section>
<section>
<h2>Point of View</h2>
<p>
Press <strong>ESC</strong> to enter the slide overview.
</p>
<p>
Hold down alt and click on any element to zoom in on it using <a href="http://lab.hakim.se/zoom-js">zoom.js</a>. Alt + click anywhere to zoom back out.
</p>
</section>
<section>
<h2>Touch Optimized</h2>
<p>
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>
<span style="display: inline-block;" class="fragment fade-right">fade-right, </span>
<span style="display: inline-block;" class="fragment fade-up">up, </span>
<span style="display: inline-block;" class="fragment fade-down">down, </span>
<span style="display: inline-block;" class="fragment fade-left">left</span>
</p>
<p class="fragment fade-in-then-out">fade-in-then-out</p>
<p class="fragment fade-in-then-semi-out">fade-in-then-semi-out</p>
<p>Highlight <span class="fragment highlight-red">red</span> <span class="fragment highlight-blue">blue</span> <span class="fragment highlight-green">green</span></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>
<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>
<li>Or here</li>
<li>Or here</li>
</ul>
</section>
<section>
<h2>Fantastic Ordered List</h2>
<ol>
<li>One is smaller than...</li>
<li>Two is smaller than...</li>
<li>Three!</li>
</ol>
</section>
<section>
<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>
<h2>Clever Quotes</h2>
<p>
These guys come in two forms, inline: <q cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">The nice thing about standards is that there are so many to choose from</q> and block:
</p>
<blockquote cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
&ldquo;For years there has been a theory that millions of monkeys typing at random on millions of typewriters would
reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.&rdquo;
</blockquote>
</section>
<section>
<h2>Intergalactic Interconnections</h2>
<p>
You can link between slides internally,
<a href="#/2/3">like this</a>.
</p>
</section>
<section>
<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">
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>, here's an example:</p>
<iframe data-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 . 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>Much more</h2>
<ul>
<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 style="text-align: left;">
<h1>THE END</h1>
<p>
- <a href="https://slides.com">Try the online editor</a> <br>
- <a href="https://github.com/hakimel/reveal.js">Source code &amp; documentation</a>
</p>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
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/search/search.js', async: true },
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>

View File

@@ -1,23 +1,15 @@
<!doctype html>
<html lang="en">
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<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="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<title>reveal.js</title>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css" id="theme">
<link rel="stylesheet" href="css/theme/black.css">
<!-- Code syntax highlighting -->
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
@@ -28,384 +20,30 @@
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]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h1>Reveal.js</h1>
<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>Hello There</h2>
<p>
reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do.
</p>
</section>
<!-- Example of nested vertical slides -->
<section>
<section>
<h2>Vertical Slides</h2>
<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>Nested slides are useful for adding additional detail underneath a high level horizontal slide.</p>
</section>
<section>
<h2>Basement Level 2</h2>
<p>That's it, time to go back up.</p>
<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>
<section>
<h2>Slides</h2>
<p>
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>
<section>
<h2>Point of View</h2>
<p>
Press <strong>ESC</strong> to enter the slide overview.
</p>
<p>
Hold down alt and click on any element to zoom in on it using <a href="http://lab.hakim.se/zoom-js">zoom.js</a>. Alt + click anywhere to zoom back out.
</p>
</section>
<section>
<h2>Touch Optimized</h2>
<p>
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>
<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>&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 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 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>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 style="word-wrap: break-word;">&lt;section data-background-transition="zoom"&gt;</code></pre>
</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>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>
<li>Or here</li>
<li>Or here</li>
</ul>
</section>
<section>
<h2>Fantastic Ordered List</h2>
<ol>
<li>One is smaller than...</li>
<li>Two is smaller than...</li>
<li>Three!</li>
</ol>
</section>
<section>
<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>
<h2>Clever Quotes</h2>
<p>
These guys come in two forms, inline: <q cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
&ldquo;The nice thing about standards is that there are so many to choose from&rdquo;</q> and block:
</p>
<blockquote cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
&ldquo;For years there has been a theory that millions of monkeys typing at random on millions of typewriters would
reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.&rdquo;
</blockquote>
</section>
<section>
<h2>Intergalactic Interconnections</h2>
<p>
You can link between slides internally,
<a href="#/2/3">like this</a>.
</p>
</section>
<section>
<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">
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>, here's an example:</p>
<iframe src="//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 . 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>Much more</h2>
<ul>
<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 style="text-align: left;">
<h1>THE END</h1>
<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>
<section>Slide 1</section>
<section>Slide 2</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
// More info about config & dependencies:
// - https://github.com/hakimel/reveal.js#configuration
// - https://github.com/hakimel/reveal.js#dependencies
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// 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, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },
{ src: 'plugin/notes/notes.js', async: true },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -6,112 +6,75 @@ based on dark.css by Ivan Sagalaev
*/
.hljs {
display: block; padding: 0.5em;
background: #3F3F3F;
color: #DCDCDC;
display: block;
overflow-x: auto;
padding: 0.5em;
background: #3f3f3f;
color: #dcdcdc;
}
.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;
.hljs-selector-tag,
.hljs-tag {
color: #e3ceab;
}
.django .hljs-template_tag,
.django .hljs-variable,
.django .hljs-filter .hljs-argument {
color: #DCDCDC;
.hljs-template-tag {
color: #dcdcdc;
}
.hljs-number,
.hljs-date {
color: #8CD0D3;
.hljs-number {
color: #8cd0d3;
}
.dos .hljs-envvar,
.dos .hljs-stream,
.hljs-variable,
.apache .hljs-sqbracket {
color: #EFDCBC;
.hljs-template-variable,
.hljs-attribute {
color: #efdcbc;
}
.dos .hljs-flow,
.diff .hljs-change,
.python .exception,
.python .hljs-built_in,
.hljs-literal,
.tex .hljs-special {
color: #EFEFAF;
.hljs-literal {
color: #efefaf;
}
.diff .hljs-chunk,
.hljs-subst {
color: #8F8F8F;
color: #8f8f8f;
}
.dos .hljs-keyword,
.python .hljs-decorator,
.hljs-title,
.haskell .hljs-type,
.diff .hljs-header,
.ruby .hljs-class .hljs-parent,
.apache .hljs-tag,
.nginx .hljs-built_in,
.tex .hljs-command,
.hljs-prompt {
color: #efef8f;
.hljs-name,
.hljs-selector-id,
.hljs-selector-class,
.hljs-section,
.hljs-type {
color: #efef8f;
}
.dos .hljs-winutils,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-string {
color: #DCA3A3;
.hljs-symbol,
.hljs-bullet,
.hljs-link {
color: #dca3a3;
}
.diff .hljs-deletion,
.hljs-deletion,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.sql .hljs-aggregate,
.hljs-javadoc,
.smalltalk .hljs-class,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.css .hljs-rules .hljs-value,
.hljs-attr_selector,
.hljs-pseudo,
.apache .hljs-cbracket,
.tex .hljs-formula,
.coffeescript .hljs-attribute {
color: #CC9393;
.hljs-builtin-name {
color: #cc9393;
}
.hljs-shebang,
.diff .hljs-addition,
.hljs-addition,
.hljs-comment,
.java .hljs-annotation,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype {
color: #7F9F7F;
.hljs-quote,
.hljs-meta {
color: #7f9f7f;
}
.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
opacity: 0.5;
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: bold;
}

14
lib/js/head.min.js vendored
View File

@@ -1,8 +1,6 @@
/**
Head JS The only script in your <HEAD>
Copyright Tero Piirainen (tipiirai)
License MIT / http://bit.ly/mit-license
Version 0.96
http://headjs.com
*/(function(a){function z(){d||(d=!0,s(e,function(a){p(a)}))}function y(c,d){var e=a.createElement("script");e.type="text/"+(c.type||"javascript"),e.src=c.src||c,e.async=!1,e.onreadystatechange=e.onload=function(){var a=e.readyState;!d.done&&(!a||/loaded|complete/.test(a))&&(d.done=!0,d())},(a.body||b).appendChild(e)}function x(a,b){if(a.state==o)return b&&b();if(a.state==n)return k.ready(a.name,b);if(a.state==m)return a.onpreload.push(function(){x(a,b)});a.state=n,y(a.url,function(){a.state=o,b&&b(),s(g[a.name],function(a){p(a)}),u()&&d&&s(g.ALL,function(a){p(a)})})}function w(a,b){a.state===undefined&&(a.state=m,a.onpreload=[],y({src:a.url,type:"cache"},function(){v(a)}))}function v(a){a.state=l,s(a.onpreload,function(a){a.call()})}function u(a){a=a||h;var b;for(var c in a){if(a.hasOwnProperty(c)&&a[c].state!=o)return!1;b=!0}return b}function t(a){return Object.prototype.toString.call(a)=="[object Function]"}function s(a,b){if(!!a){typeof a=="object"&&(a=[].slice.call(a));for(var c=0;c<a.length;c++)b.call(a,a[c],c)}}function r(a){var b;if(typeof a=="object")for(var c in a)a[c]&&(b={name:c,url:a[c]});else b={name:q(a),url:a};var d=h[b.name];if(d&&d.url===b.url)return d;h[b.name]=b;return b}function q(a){var b=a.split("/"),c=b[b.length-1],d=c.indexOf("?");return d!=-1?c.substring(0,d):c}function p(a){a._done||(a(),a._done=1)}var b=a.documentElement,c,d,e=[],f=[],g={},h={},i=a.createElement("script").async===!0||"MozAppearance"in a.documentElement.style||window.opera,j=window.head_conf&&head_conf.head||"head",k=window[j]=window[j]||function(){k.ready.apply(null,arguments)},l=1,m=2,n=3,o=4;i?k.js=function(){var a=arguments,b=a[a.length-1],c={};t(b)||(b=null),s(a,function(d,e){d!=b&&(d=r(d),c[d.name]=d,x(d,b&&e==a.length-2?function(){u(c)&&p(b)}:null))});return k}:k.js=function(){var a=arguments,b=[].slice.call(a,1),d=b[0];if(!c){f.push(function(){k.js.apply(null,a)});return k}d?(s(b,function(a){t(a)||w(r(a))}),x(r(a[0]),t(d)?d:function(){k.js.apply(null,b)})):x(r(a[0]));return k},k.ready=function(b,c){if(b==a){d?p(c):e.push(c);return k}t(b)&&(c=b,b="ALL");if(typeof b!="string"||!t(c))return k;var f=h[b];if(f&&f.state==o||b=="ALL"&&u()&&d){p(c);return k}var i=g[b];i?i.push(c):i=g[b]=[c];return k},k.ready(a,function(){u()&&s(g.ALL,function(a){p(a)}),k.feature&&k.feature("domloaded",!0)});if(window.addEventListener)a.addEventListener("DOMContentLoaded",z,!1),window.addEventListener("load",z,!1);else if(window.attachEvent){a.attachEvent("onreadystatechange",function(){a.readyState==="complete"&&z()});var A=1;try{A=window.frameElement}catch(B){}!A&&b.doScroll&&function(){try{b.doScroll("left"),z()}catch(a){setTimeout(arguments.callee,1);return}}(),window.attachEvent("onload",z)}!a.readyState&&a.addEventListener&&(a.readyState="loading",a.addEventListener("DOMContentLoaded",handler=function(){a.removeEventListener("DOMContentLoaded",handler,!1),a.readyState="complete"},!1)),setTimeout(function(){c=!0,s(f,function(a){a()})},300)})(document)
/*! head.core - v1.0.2 */
(function(n,t){"use strict";function r(n){a[a.length]=n}function k(n){var t=new RegExp(" ?\\b"+n+"\\b");c.className=c.className.replace(t,"")}function p(n,t){for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}function tt(){var t,e,f,o;c.className=c.className.replace(/ (w-|eq-|gt-|gte-|lt-|lte-|portrait|no-portrait|landscape|no-landscape)\d+/g,"");t=n.innerWidth||c.clientWidth;e=n.outerWidth||n.screen.width;u.screen.innerWidth=t;u.screen.outerWidth=e;r("w-"+t);p(i.screens,function(n){t>n?(i.screensCss.gt&&r("gt-"+n),i.screensCss.gte&&r("gte-"+n)):t<n?(i.screensCss.lt&&r("lt-"+n),i.screensCss.lte&&r("lte-"+n)):t===n&&(i.screensCss.lte&&r("lte-"+n),i.screensCss.eq&&r("e-q"+n),i.screensCss.gte&&r("gte-"+n))});f=n.innerHeight||c.clientHeight;o=n.outerHeight||n.screen.height;u.screen.innerHeight=f;u.screen.outerHeight=o;u.feature("portrait",f>t);u.feature("landscape",f<t)}function it(){n.clearTimeout(b);b=n.setTimeout(tt,50)}var y=n.document,rt=n.navigator,ut=n.location,c=y.documentElement,a=[],i={screens:[240,320,480,640,768,800,1024,1280,1440,1680,1920],screensCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!1},browsers:[{ie:{min:6,max:11}}],browserCss:{gt:!0,gte:!1,lt:!0,lte:!1,eq:!0},html5:!0,page:"-page",section:"-section",head:"head"},v,u,s,w,o,h,l,d,f,g,nt,e,b;if(n.head_conf)for(v in n.head_conf)n.head_conf[v]!==t&&(i[v]=n.head_conf[v]);u=n[i.head]=function(){u.ready.apply(null,arguments)};u.feature=function(n,t,i){return n?(Object.prototype.toString.call(t)==="[object Function]"&&(t=t.call()),r((t?"":"no-")+n),u[n]=!!t,i||(k("no-"+n),k(n),u.feature()),u):(c.className+=" "+a.join(" "),a=[],u)};u.feature("js",!0);s=rt.userAgent.toLowerCase();w=/mobile|android|kindle|silk|midp|phone|(windows .+arm|touch)/.test(s);u.feature("mobile",w,!0);u.feature("desktop",!w,!0);s=/(chrome|firefox)[ \/]([\w.]+)/.exec(s)||/(iphone|ipad|ipod)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(android)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(webkit|opera)(?:.*version)?[ \/]([\w.]+)/.exec(s)||/(msie) ([\w.]+)/.exec(s)||/(trident).+rv:(\w.)+/.exec(s)||[];o=s[1];h=parseFloat(s[2]);switch(o){case"msie":case"trident":o="ie";h=y.documentMode||h;break;case"firefox":o="ff";break;case"ipod":case"ipad":case"iphone":o="ios";break;case"webkit":o="safari"}for(u.browser={name:o,version:h},u.browser[o]=!0,l=0,d=i.browsers.length;l<d;l++)for(f in i.browsers[l])if(o===f)for(r(f),g=i.browsers[l][f].min,nt=i.browsers[l][f].max,e=g;e<=nt;e++)h>e?(i.browserCss.gt&&r("gt-"+f+e),i.browserCss.gte&&r("gte-"+f+e)):h<e?(i.browserCss.lt&&r("lt-"+f+e),i.browserCss.lte&&r("lte-"+f+e)):h===e&&(i.browserCss.lte&&r("lte-"+f+e),i.browserCss.eq&&r("eq-"+f+e),i.browserCss.gte&&r("gte-"+f+e));else r("no-"+f);r(o);r(o+parseInt(h,10));i.html5&&o==="ie"&&h<9&&p("abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|progress|section|summary|time|video".split("|"),function(n){y.createElement(n)});p(ut.pathname.split("/"),function(n,u){if(this.length>2&&this[u+1]!==t)u&&r(this.slice(u,u+1).join("-").toLowerCase()+i.section);else{var f=n||"index",e=f.indexOf(".");e>0&&(f=f.substring(0,e));c.id=f.toLowerCase()+i.page;u||r("root"+i.section)}});u.screen={height:n.screen.height,width:n.screen.width};tt();b=0;n.addEventListener?n.addEventListener("resize",it,!1):n.attachEvent("onresize",it)})(window);
/*! head.css3 - v1.0.0 */
(function(n,t){"use strict";function a(n){for(var r in n)if(i[n[r]]!==t)return!0;return!1}function r(n){var t=n.charAt(0).toUpperCase()+n.substr(1),i=(n+" "+c.join(t+" ")+t).split(" ");return!!a(i)}var h=n.document,o=h.createElement("i"),i=o.style,s=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),c="Webkit Moz O ms Khtml".split(" "),l=n.head_conf&&n.head_conf.head||"head",u=n[l],f={gradient:function(){var n="background-image:";return i.cssText=(n+s.join("gradient(linear,left top,right bottom,from(#9f9),to(#fff));"+n)+s.join("linear-gradient(left top,#eee,#fff);"+n)).slice(0,-n.length),!!i.backgroundImage},rgba:function(){return i.cssText="background-color:rgba(0,0,0,0.5)",!!i.backgroundColor},opacity:function(){return o.style.opacity===""},textshadow:function(){return i.textShadow===""},multiplebgs:function(){i.cssText="background:url(https://),url(https://),red url(https://)";var n=(i.background||"").match(/url/g);return Object.prototype.toString.call(n)==="[object Array]"&&n.length===3},boxshadow:function(){return r("boxShadow")},borderimage:function(){return r("borderImage")},borderradius:function(){return r("borderRadius")},cssreflections:function(){return r("boxReflect")},csstransforms:function(){return r("transform")},csstransitions:function(){return r("transition")},touch:function(){return"ontouchstart"in n},retina:function(){return n.devicePixelRatio>1},fontface:function(){var t=u.browser.name,n=u.browser.version;switch(t){case"ie":return n>=9;case"chrome":return n>=13;case"ff":return n>=6;case"ios":return n>=5;case"android":return!1;case"webkit":return n>=5.1;case"opera":return n>=10;default:return!1}}};for(var e in f)f[e]&&u.feature(e,f[e].call(),!0);u.feature()})(window);
/*! head.load - v1.0.3 */
(function(n,t){"use strict";function w(){}function u(n,t){if(n){typeof n=="object"&&(n=[].slice.call(n));for(var i=0,r=n.length;i<r;i++)t.call(n,n[i],i)}}function it(n,i){var r=Object.prototype.toString.call(i).slice(8,-1);return i!==t&&i!==null&&r===n}function s(n){return it("Function",n)}function a(n){return it("Array",n)}function et(n){var i=n.split("/"),t=i[i.length-1],r=t.indexOf("?");return r!==-1?t.substring(0,r):t}function f(n){(n=n||w,n._done)||(n(),n._done=1)}function ot(n,t,r,u){var f=typeof n=="object"?n:{test:n,success:!t?!1:a(t)?t:[t],failure:!r?!1:a(r)?r:[r],callback:u||w},e=!!f.test;return e&&!!f.success?(f.success.push(f.callback),i.load.apply(null,f.success)):e||!f.failure?u():(f.failure.push(f.callback),i.load.apply(null,f.failure)),i}function v(n){var t={},i,r;if(typeof n=="object")for(i in n)!n[i]||(t={name:i,url:n[i]});else t={name:et(n),url:n};return(r=c[t.name],r&&r.url===t.url)?r:(c[t.name]=t,t)}function y(n){n=n||c;for(var t in n)if(n.hasOwnProperty(t)&&n[t].state!==l)return!1;return!0}function st(n){n.state=ft;u(n.onpreload,function(n){n.call()})}function ht(n){n.state===t&&(n.state=nt,n.onpreload=[],rt({url:n.url,type:"cache"},function(){st(n)}))}function ct(){var n=arguments,t=n[n.length-1],r=[].slice.call(n,1),f=r[0];return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(f?(u(r,function(n){s(n)||!n||ht(v(n))}),b(v(n[0]),s(f)?f:function(){i.load.apply(null,r)})):b(v(n[0])),i)}function lt(){var n=arguments,t=n[n.length-1],r={};return(s(t)||(t=null),a(n[0]))?(n[0].push(t),i.load.apply(null,n[0]),i):(u(n,function(n){n!==t&&(n=v(n),r[n.name]=n)}),u(n,function(n){n!==t&&(n=v(n),b(n,function(){y(r)&&f(t)}))}),i)}function b(n,t){if(t=t||w,n.state===l){t();return}if(n.state===tt){i.ready(n.name,t);return}if(n.state===nt){n.onpreload.push(function(){b(n,t)});return}n.state=tt;rt(n,function(){n.state=l;t();u(h[n.name],function(n){f(n)});o&&y()&&u(h.ALL,function(n){f(n)})})}function at(n){n=n||"";var t=n.split("?")[0].split(".");return t[t.length-1].toLowerCase()}function rt(t,i){function e(t){t=t||n.event;u.onload=u.onreadystatechange=u.onerror=null;i()}function o(f){f=f||n.event;(f.type==="load"||/loaded|complete/.test(u.readyState)&&(!r.documentMode||r.documentMode<9))&&(n.clearTimeout(t.errorTimeout),n.clearTimeout(t.cssTimeout),u.onload=u.onreadystatechange=u.onerror=null,i())}function s(){if(t.state!==l&&t.cssRetries<=20){for(var i=0,f=r.styleSheets.length;i<f;i++)if(r.styleSheets[i].href===u.href){o({type:"load"});return}t.cssRetries++;t.cssTimeout=n.setTimeout(s,250)}}var u,h,f;i=i||w;h=at(t.url);h==="css"?(u=r.createElement("link"),u.type="text/"+(t.type||"css"),u.rel="stylesheet",u.href=t.url,t.cssRetries=0,t.cssTimeout=n.setTimeout(s,500)):(u=r.createElement("script"),u.type="text/"+(t.type||"javascript"),u.src=t.url);u.onload=u.onreadystatechange=o;u.onerror=e;u.async=!1;u.defer=!1;t.errorTimeout=n.setTimeout(function(){e({type:"timeout"})},7e3);f=r.head||r.getElementsByTagName("head")[0];f.insertBefore(u,f.lastChild)}function vt(){for(var t,u=r.getElementsByTagName("script"),n=0,f=u.length;n<f;n++)if(t=u[n].getAttribute("data-headjs-load"),!!t){i.load(t);return}}function yt(n,t){var v,p,e;return n===r?(o?f(t):d.push(t),i):(s(n)&&(t=n,n="ALL"),a(n))?(v={},u(n,function(n){v[n]=c[n];i.ready(n,function(){y(v)&&f(t)})}),i):typeof n!="string"||!s(t)?i:(p=c[n],p&&p.state===l||n==="ALL"&&y()&&o)?(f(t),i):(e=h[n],e?e.push(t):e=h[n]=[t],i)}function e(){if(!r.body){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(e,50);return}o||(o=!0,vt(),u(d,function(n){f(n)}))}function k(){r.addEventListener?(r.removeEventListener("DOMContentLoaded",k,!1),e()):r.readyState==="complete"&&(r.detachEvent("onreadystatechange",k),e())}var r=n.document,d=[],h={},c={},ut="async"in r.createElement("script")||"MozAppearance"in r.documentElement.style||n.opera,o,g=n.head_conf&&n.head_conf.head||"head",i=n[g]=n[g]||function(){i.ready.apply(null,arguments)},nt=1,ft=2,tt=3,l=4,p;if(r.readyState==="complete")e();else if(r.addEventListener)r.addEventListener("DOMContentLoaded",k,!1),n.addEventListener("load",e,!1);else{r.attachEvent("onreadystatechange",k);n.attachEvent("onload",e);p=!1;try{p=!n.frameElement&&r.documentElement}catch(wt){}p&&p.doScroll&&function pt(){if(!o){try{p.doScroll("left")}catch(t){n.clearTimeout(i.readyTimeout);i.readyTimeout=n.setTimeout(pt,50);return}e()}}()}i.load=i.js=ut?lt:ct;i.test=ot;i.ready=yt;i.ready(r,function(){y()&&u(h.ALL,function(n){f(n)});i.feature&&i.feature("domloaded",!0)})})(window);

View File

@@ -1,13 +1,14 @@
{
"name": "reveal.js",
"version": "3.1.0",
"version": "3.7.0",
"description": "The HTML Presentation Framework",
"homepage": "http://lab.hakim.se/reveal-js",
"homepage": "http://revealjs.com",
"subdomain": "revealjs",
"main": "js/reveal.js",
"scripts": {
"test": "grunt test",
"start": ""
"start": "grunt serve",
"build": "grunt"
},
"author": {
"name": "Hakim El Hattab",
@@ -19,31 +20,24 @@
"url": "git://github.com/hakimel/reveal.js.git"
},
"engines": {
"node": "~0.10.0"
},
"dependencies": {
"underscore": "~1.5.1",
"express": "~2.5.9",
"mustache": "~0.7.2",
"socket.io": "~0.9.16"
"node": ">=4.0.0"
},
"devDependencies": {
"grunt-contrib-qunit": "~0.5.2",
"grunt-contrib-jshint": "~0.6.4",
"grunt-contrib-cssmin": "~0.12.2",
"grunt-contrib-uglify": "~0.2.4",
"grunt-contrib-watch": "~0.5.3",
"grunt-sass": "~0.14.0",
"grunt-contrib-connect": "~0.8.0",
"grunt-autoprefixer": "~1.0.1",
"grunt-zip": "~0.7.0",
"grunt": "~0.4.0",
"node-sass": "~0.9.3"
"express": "^4.16.2",
"grunt": "^1.0.1",
"grunt-autoprefixer": "^3.0.4",
"grunt-cli": "^1.2.0",
"grunt-contrib-connect": "^1.0.2",
"grunt-contrib-cssmin": "^2.2.1",
"grunt-contrib-jshint": "^1.1.0",
"grunt-contrib-qunit": "^2.0.0",
"grunt-contrib-uglify": "^3.3.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-sass": "^2.0.0",
"grunt-retire": "^1.0.7",
"grunt-zip": "~0.17.1",
"mustache": "^2.3.0",
"socket.io": "^1.7.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

@@ -99,6 +99,13 @@
</script>
</section>
<!-- Images -->
<section data-markdown>
<script type="text/template">
![Sample image](https://s3.amazonaws.com/static.slid.es/logo/v2/slides-symbol-512x512.png)
</script>
</section>
</div>
</div>

View File

@@ -29,3 +29,8 @@ Content 3.1
## External 3.2
Content 3.2
## External 3.3
![External Image](https://s3.amazonaws.com/static.slid.es/logo/v2/slides-symbol-512x512.png)

View File

@@ -4,33 +4,26 @@
* of external markdown documents.
*/
(function( root, factory ) {
if( typeof exports === 'object' ) {
if (typeof define === 'function' && define.amd) {
root.marked = require( './marked' );
root.RevealMarkdown = factory( root.marked );
root.RevealMarkdown.initialize();
} else if( typeof exports === 'object' ) {
module.exports = factory( require( './marked' ) );
}
else {
} 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 hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( lang, code ) {
return hljs.highlightAuto( lang, code ).value;
}
});
}
var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$',
DEFAULT_NOTES_SEPARATOR = 'note:',
DEFAULT_NOTES_SEPARATOR = 'notes?:',
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$',
DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR = '\\\.slide:\\\s*?(\\\S.+?)$';
var SCRIPT_END_PLACEHOLDER = '__SCRIPT_END__';
/**
* Retrieves the markdown contents of a slide section
@@ -38,11 +31,15 @@
*/
function getMarkdownFromSlide( section ) {
var template = section.querySelector( 'script' );
// look for a <script> or <textarea data-template> wrapper
var template = section.querySelector( '[data-template]' ) || section.querySelector( 'script' );
// 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 leadingWs = text.match( /^\n?(\s*)/ )[1].length,
leadingTabs = text.match( /^\n?(\t*)/ )[1].length;
@@ -112,9 +109,13 @@
var notesMatch = content.split( new RegExp( options.notesSeparator, 'mgi' ) );
if( notesMatch.length === 2 ) {
content = notesMatch[0] + '<aside class="notes" data-markdown>' + notesMatch[1].trim() + '</aside>';
content = notesMatch[0] + '<aside class="notes">' + marked(notesMatch[1].trim()) + '</aside>';
}
// prevent script end tags in the content from interfering
// with parsing
content = content.replace( /<\/script>/g, SCRIPT_END_PLACEHOLDER );
return '<script type="text/template">' + content + '</script>';
}
@@ -177,7 +178,7 @@
markdownSections += '<section '+ options.attributes +'>';
sectionStack[i].forEach( function( child ) {
markdownSections += '<section data-markdown>' + createMarkdownSlide( child, options ) + '</section>';
markdownSections += '<section data-markdown>' + createMarkdownSlide( child, options ) + '</section>';
} );
markdownSections += '</section>';
@@ -379,6 +380,24 @@
return {
initialize: function() {
if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}
if( typeof hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( code, lang ) {
return hljs.highlightAuto( code, [lang] ).value;
}
});
}
var options = Reveal.getConfig().markdown;
if ( options ) {
marked.setOptions( options );
}
processSlides();
convertSlides();
},

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 || 'https://cdn.mathjax.org/mathjax/latest/MathJax.js';
options.mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js';
options.config = options.config || 'TeX-AMS_HTML-full';
options.tex2jax = options.tex2jax || {
inlineMath: [['$','$'],['\\(','\\)']] ,
skipTags: ['script','noscript','style','textarea','pre'] };
loadScript( options.mathjax + '?config=' + options.config, function() {
MathJax.Hub.Config({
messageStyle: 'none',
tex2jax: { inlineMath: [['$','$'],['\\(','\\)']] },
tex2jax: options.tex2jax,
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,37 +1,45 @@
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) {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream(opts.baseDir + '/index.html').pipe(res);
var stream = fs.createReadStream(opts.baseDir + '/index.html');
stream.on('error', function( error ) {
res.write('<style>body{font-family: sans-serif;}</style><h2>reveal.js multiplex server.</h2><a href="/token">Generate token</a>');
res.end();
});
stream.on('readable', function() {
stream.pipe(res);
});
});
app.get("/token", function(req,res) {
@@ -47,7 +55,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,51 +1,34 @@
(function() {
// 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 );
}());
// post once the page is loaded, so the client follows also on "open URL".
window.addEventListener( 'load', post );
// 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

@@ -0,0 +1,19 @@
{
"name": "reveal-js-multiplex",
"version": "1.0.0",
"description": "reveal.js multiplex server",
"homepage": "http://revealjs.com",
"scripts": {
"start": "node index.js"
},
"engines": {
"node": "~4.1.1"
},
"dependencies": {
"express": "~4.13.3",
"grunt-cli": "~0.1.13",
"mustache": "~2.2.1",
"socket.io": "~1.3.7"
},
"license": "MIT"
}

View File

@@ -41,10 +41,15 @@
}
// When a new notes window connects, post our current state
socket.on( 'connect', function( data ) {
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 );

View File

@@ -1,37 +1,40 @@
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 ) {
io.on( 'connection', function( socket ) {
socket.on( 'connect', function( data ) {
socket.broadcast.emit( 'connect', data );
socket.on( 'new-subscriber', function( data ) {
socket.broadcast.emit( 'new-subscriber', data );
});
socket.on( 'statechanged', function( data ) {
delete data.state.overview;
socket.broadcast.emit( 'statechanged', data );
});
socket.on( 'statechanged-speaker', function( data ) {
delete data.state.overview;
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 ) {
@@ -52,7 +55,7 @@ app.get( '/notes/:socketId', function( req, res ) {
});
// Actually listen
app.listen( opts.port || null );
server.listen( opts.port || null );
var brown = '\033[33m',
green = '\033[32m',
@@ -62,5 +65,5 @@ 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( '2. Click on the link in your JS console to go to the notes page' );
console.log( '3. Advance through your slides and your notes will advance automatically' );

View File

@@ -8,6 +8,7 @@
<style>
body {
font-family: Helvetica;
font-size: 18px;
}
#current-slide,
@@ -30,15 +31,26 @@
position: absolute;
top: 10px;
left: 10px;
font-weight: bold;
font-size: 14px;
z-index: 2;
color: rgba( 255, 255, 255, 0.9 );
}
.overlay-element {
height: 34px;
line-height: 34px;
padding: 0 10px;
text-shadow: none;
background: rgba( 220, 220, 220, 0.8 );
color: #222;
font-size: 14px;
}
.overlay-element.interactive:hover {
background: rgba( 220, 220, 220, 1 );
}
#current-slide {
position: absolute;
width: 65%;
width: 60%;
height: 100%;
top: 0;
left: 0;
@@ -47,19 +59,20 @@
#upcoming-slide {
position: absolute;
width: 35%;
width: 40%;
height: 40%;
right: 0;
top: 0;
}
/* Speaker controls */
#speaker-controls {
position: absolute;
top: 40%;
right: 0;
width: 35%;
width: 40%;
height: 60%;
overflow: auto;
font-size: 18px;
}
@@ -124,26 +137,108 @@
font-size: 1.2em;
}
/* Layout selector */
#speaker-layout {
position: absolute;
top: 10px;
right: 10px;
color: #222;
z-index: 10;
}
#speaker-layout select {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
border: 0;
box-shadow: 0;
cursor: pointer;
opacity: 0;
font-size: 1em;
background-color: transparent;
-moz-appearance: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
#speaker-layout select:focus {
outline: none;
box-shadow: none;
}
.clear {
clear: both;
}
@media screen and (max-width: 1080px) {
#speaker-controls {
font-size: 16px;
}
/* Speaker layout: Wide */
body[data-speaker-layout="wide"] #current-slide,
body[data-speaker-layout="wide"] #upcoming-slide {
width: 50%;
height: 45%;
padding: 6px;
}
@media screen and (max-width: 900px) {
#speaker-controls {
font-size: 14px;
}
body[data-speaker-layout="wide"] #current-slide {
top: 0;
left: 0;
}
@media screen and (max-width: 800px) {
#speaker-controls {
font-size: 12px;
}
body[data-speaker-layout="wide"] #upcoming-slide {
top: 0;
left: 50%;
}
body[data-speaker-layout="wide"] #speaker-controls {
top: 45%;
left: 0;
width: 100%;
height: 50%;
font-size: 1.25em;
}
/* Speaker layout: Tall */
body[data-speaker-layout="tall"] #current-slide,
body[data-speaker-layout="tall"] #upcoming-slide {
width: 45%;
height: 50%;
padding: 6px;
}
body[data-speaker-layout="tall"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="tall"] #upcoming-slide {
top: 50%;
left: 0;
}
body[data-speaker-layout="tall"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 45%;
width: 55%;
height: 100%;
font-size: 1.25em;
}
/* Speaker layout: Notes only */
body[data-speaker-layout="notes-only"] #current-slide,
body[data-speaker-layout="notes-only"] #upcoming-slide {
display: none;
}
body[data-speaker-layout="notes-only"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 0;
width: 100%;
height: 100%;
font-size: 1.25em;
}
</style>
@@ -152,7 +247,7 @@
<body>
<div id="current-slide"></div>
<div id="upcoming-slide"><span class="label">UPCOMING:</span></div>
<div id="upcoming-slide"><span class="overlay-element label">Upcoming</span></div>
<div id="speaker-controls">
<div class="speaker-controls-time">
<h4 class="label">Time <span class="reset-button">Click to Reset</span></h4>
@@ -170,6 +265,10 @@
<div class="value"></div>
</div>
</div>
<div id="speaker-layout" class="overlay-element interactive">
<span class="speaker-layout-label"></span>
<select class="speaker-layout-dropdown"></select>
</div>
<script src="/socket.io/socket.io.js"></script>
<script src="/plugin/markdown/marked.js"></script>
@@ -182,11 +281,20 @@
currentState,
currentSlide,
upcomingSlide,
layoutLabel,
layoutDropdown,
connected = false;
var socket = io.connect( window.location.origin ),
socketId = '{{socketId}}';
var SPEAKER_LAYOUTS = {
'default': 'Default',
'wide': 'Wide',
'tall': 'Tall',
'notes-only': 'Notes only'
};
socket.on( 'statechanged', function( data ) {
// ignore data from sockets that aren't ours
@@ -195,7 +303,6 @@
if( connected === false ) {
connected = true;
setupIframes( data );
setupKeyboard();
setupNotes();
setupTimer();
@@ -206,13 +313,28 @@
} );
setupLayout();
// 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( 'connect', { socketId: socketId } );
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 } );
}
}
@@ -267,7 +389,7 @@
/**
* Creates the preview iframes.
*/
function setupIframes( data ) {
function setupIframes() {
var params = [
'receiver',
@@ -277,9 +399,8 @@
'backgroundTransition=none'
].join( '&' );
var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = '/?' + params + '&postMessageEvents=true' + hash;
var upcomingURL = '/?' + params + '&controls=false' + hash;
var currentURL = '/?' + params + '&postMessageEvents=true';
var upcomingURL = '/?' + params + '&controls=false';
currentSlide = document.createElement( 'iframe' );
currentSlide.setAttribute( 'width', 1280 );
@@ -351,6 +472,74 @@
}
/**
* Sets up the speaker view layout and layout selector.
*/
function setupLayout() {
layoutDropdown = document.querySelector( '.speaker-layout-dropdown' );
layoutLabel = document.querySelector( '.speaker-layout-label' );
// Render the list of available layouts
for( var id in SPEAKER_LAYOUTS ) {
var option = document.createElement( 'option' );
option.setAttribute( 'value', id );
option.textContent = SPEAKER_LAYOUTS[ id ];
layoutDropdown.appendChild( option );
}
// Monitor the dropdown for changes
layoutDropdown.addEventListener( 'change', function( event ) {
setLayout( layoutDropdown.value );
}, false );
// Restore any currently persisted layout
setLayout( getLayout() );
}
/**
* Sets a new speaker view layout. The layout is persisted
* in local storage.
*/
function setLayout( value ) {
var title = SPEAKER_LAYOUTS[ value ];
layoutLabel.innerHTML = 'Layout' + ( title ? ( ': ' + title ) : '' );
layoutDropdown.value = value;
document.body.setAttribute( 'data-speaker-layout', value );
// Persist locally
if( window.localStorage ) {
window.localStorage.setItem( 'reveal-speaker-layout', value );
}
}
/**
* Returns the ID of the most recently set speaker layout
* or our default layout if none has been set.
*/
function getLayout() {
if( window.localStorage ) {
var layout = window.localStorage.getItem( 'reveal-speaker-layout' );
if( layout ) {
return layout;
}
}
// Default to the first record in the layouts hash
for( var id in SPEAKER_LAYOUTS ) {
return id;
}
}
function zeroPadInteger( num ) {
var str = '00' + parseInt( num );

View File

@@ -8,6 +8,7 @@
<style>
body {
font-family: Helvetica;
font-size: 18px;
}
#current-slide,
@@ -30,15 +31,42 @@
position: absolute;
top: 10px;
left: 10px;
font-weight: bold;
font-size: 14px;
z-index: 2;
color: rgba( 255, 255, 255, 0.9 );
}
#connection-status {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 20;
padding: 30% 20% 20% 20%;
font-size: 18px;
color: #222;
background: #fff;
text-align: center;
box-sizing: border-box;
line-height: 1.4;
}
.overlay-element {
height: 34px;
line-height: 34px;
padding: 0 10px;
text-shadow: none;
background: rgba( 220, 220, 220, 0.8 );
color: #222;
font-size: 14px;
}
.overlay-element.interactive:hover {
background: rgba( 220, 220, 220, 1 );
}
#current-slide {
position: absolute;
width: 65%;
width: 60%;
height: 100%;
top: 0;
left: 0;
@@ -47,20 +75,20 @@
#upcoming-slide {
position: absolute;
width: 35%;
width: 40%;
height: 40%;
right: 0;
top: 0;
}
/* Speaker controls */
#speaker-controls {
position: absolute;
top: 40%;
right: 0;
width: 35%;
width: 40%;
height: 60%;
overflow: auto;
font-size: 18px;
}
@@ -70,6 +98,7 @@
}
.speaker-controls-time .label,
.speaker-controls-pace .label,
.speaker-controls-notes .label {
text-transform: uppercase;
font-weight: normal;
@@ -78,7 +107,7 @@
margin: 0;
}
.speaker-controls-time {
.speaker-controls-time, .speaker-controls-pace {
border-bottom: 1px solid rgba( 200, 200, 200, 0.5 );
margin-bottom: 10px;
padding: 10px 16px;
@@ -99,6 +128,13 @@
.speaker-controls-time .timer,
.speaker-controls-time .clock {
width: 50%;
}
.speaker-controls-time .timer,
.speaker-controls-time .clock,
.speaker-controls-time .pacing .hours-value,
.speaker-controls-time .pacing .minutes-value,
.speaker-controls-time .pacing .seconds-value {
font-size: 1.9em;
}
@@ -112,7 +148,23 @@
}
.speaker-controls-time span.mute {
color: #bbb;
opacity: 0.3;
}
.speaker-controls-time .pacing-title {
margin-top: 5px;
}
.speaker-controls-time .pacing.ahead {
color: blue;
}
.speaker-controls-time .pacing.on-track {
color: green;
}
.speaker-controls-time .pacing.behind {
color: red;
}
.speaker-controls-notes {
@@ -125,24 +177,124 @@
font-size: 1.2em;
}
/* Layout selector */
#speaker-layout {
position: absolute;
top: 10px;
right: 10px;
color: #222;
z-index: 10;
}
#speaker-layout select {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
border: 0;
box-shadow: 0;
cursor: pointer;
opacity: 0;
font-size: 1em;
background-color: transparent;
-moz-appearance: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
#speaker-layout select:focus {
outline: none;
box-shadow: none;
}
.clear {
clear: both;
}
/* Speaker layout: Wide */
body[data-speaker-layout="wide"] #current-slide,
body[data-speaker-layout="wide"] #upcoming-slide {
width: 50%;
height: 45%;
padding: 6px;
}
body[data-speaker-layout="wide"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="wide"] #upcoming-slide {
top: 0;
left: 50%;
}
body[data-speaker-layout="wide"] #speaker-controls {
top: 45%;
left: 0;
width: 100%;
height: 50%;
font-size: 1.25em;
}
/* Speaker layout: Tall */
body[data-speaker-layout="tall"] #current-slide,
body[data-speaker-layout="tall"] #upcoming-slide {
width: 45%;
height: 50%;
padding: 6px;
}
body[data-speaker-layout="tall"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="tall"] #upcoming-slide {
top: 50%;
left: 0;
}
body[data-speaker-layout="tall"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 45%;
width: 55%;
height: 100%;
font-size: 1.25em;
}
/* Speaker layout: Notes only */
body[data-speaker-layout="notes-only"] #current-slide,
body[data-speaker-layout="notes-only"] #upcoming-slide {
display: none;
}
body[data-speaker-layout="notes-only"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 0;
width: 100%;
height: 100%;
font-size: 1.25em;
}
@media screen and (max-width: 1080px) {
#speaker-controls {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 16px;
}
}
@media screen and (max-width: 900px) {
#speaker-controls {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 14px;
}
}
@media screen and (max-width: 800px) {
#speaker-controls {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 12px;
}
}
@@ -152,8 +304,10 @@
<body>
<div id="connection-status">Loading speaker view...</div>
<div id="current-slide"></div>
<div id="upcoming-slide"><span class="label">UPCOMING:</span></div>
<div id="upcoming-slide"><span class="overlay-element label">Upcoming</span></div>
<div id="speaker-controls">
<div class="speaker-controls-time">
<h4 class="label">Time <span class="reset-button">Click to Reset</span></h4>
@@ -164,6 +318,11 @@
<span class="hours-value">00</span><span class="minutes-value">:00</span><span class="seconds-value">:00</span>
</div>
<div class="clear"></div>
<h4 class="label pacing-title" style="display: none">Pacing Time to finish current slide</h4>
<div class="pacing" style="display: none">
<span class="hours-value">00</span><span class="minutes-value">:00</span><span class="seconds-value">:00</span>
</div>
</div>
<div class="speaker-controls-notes hidden">
@@ -171,6 +330,10 @@
<div class="value"></div>
</div>
</div>
<div id="speaker-layout" class="overlay-element interactive">
<span class="speaker-layout-label"></span>
<select class="speaker-layout-dropdown"></select>
</div>
<script src="../../plugin/markdown/marked.js"></script>
<script>
@@ -182,12 +345,35 @@
currentState,
currentSlide,
upcomingSlide,
layoutLabel,
layoutDropdown,
connected = false;
var SPEAKER_LAYOUTS = {
'default': 'Default',
'wide': 'Wide',
'tall': 'Tall',
'notes-only': 'Notes only'
};
setupLayout();
var connectionStatus = document.querySelector( '#connection-status' );
var connectionTimeout = setTimeout( function() {
connectionStatus.innerHTML = 'Error connecting to main window.<br>Please try closing and reopening the speaker view.';
}, 5000 );
window.addEventListener( 'message', function( event ) {
clearTimeout( connectionTimeout );
connectionStatus.style.display = 'none';
var data = JSON.parse( event.data );
// The overview mode is only useful to the reveal.js instance
// where navigation occurs so we don't sync it
if( data.state ) delete data.state.overview;
// Messages sent by the notes plugin inside of the main window
if( data && data.namespace === 'reveal-notes' ) {
if( data.type === 'connect' ) {
@@ -203,8 +389,10 @@
// 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 ) ) {
else if( /slidechanged|fragmentshown|fragmenthidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
window.opener.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ]} ), '*' );
}
}
@@ -239,6 +427,7 @@
// 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 );
}
@@ -264,10 +453,17 @@
* 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.
*
* Block F5 default handling, it reloads and disconnects
* the speaker notes window.
*/
function setupKeyboard() {
document.addEventListener( 'keydown', function( event ) {
if( event.keyCode === 116 || ( event.metaKey && event.keyCode === 82 ) ) {
event.preventDefault();
return false;
}
currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'triggerKey', args: [ event.keyCode ] }), '*' );
} );
@@ -287,9 +483,10 @@
'backgroundTransition=none'
].join( '&' );
var urlSeparator = /\?/.test(data.url) ? '&' : '?';
var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = data.url + '?' + params + '&postMessageEvents=true' + hash;
var upcomingURL = data.url + '?' + params + '&controls=false' + hash;
var currentURL = data.url + urlSeparator + params + '&postMessageEvents=true' + hash;
var upcomingURL = data.url + urlSeparator + params + '&controls=false' + hash;
currentSlide = document.createElement( 'iframe' );
currentSlide.setAttribute( 'width', 1280 );
@@ -315,6 +512,47 @@
}
function getTimings() {
var slides = Reveal.getSlides();
var defaultTiming = Reveal.getConfig().defaultTiming;
if (defaultTiming == null) {
return null;
}
var timings = [];
for ( var i in slides ) {
var slide = slides[i];
var timing = defaultTiming;
if( slide.hasAttribute( 'data-timing' )) {
var t = slide.getAttribute( 'data-timing' );
timing = parseInt(t);
if( isNaN(timing) ) {
console.warn("Could not parse timing '" + t + "' of slide " + i + "; using default of " + defaultTiming);
timing = defaultTiming;
}
}
timings.push(timing);
}
return timings;
}
/**
* Return the number of seconds allocated for presenting
* all slides up to and including this one.
*/
function getTimeAllocated(timings) {
var slides = Reveal.getSlides();
var allocated = 0;
var currentSlide = Reveal.getSlidePastCount();
for (var i in slides.slice(0, currentSlide + 1)) {
allocated += timings[i];
}
return allocated;
}
/**
* Create the timer and clock and start updating them
* at an interval.
@@ -322,28 +560,78 @@
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' );
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' ),
pacingTitleEl = timeEl.querySelector( '.pacing-title' ),
pacingEl = timeEl.querySelector( '.pacing' ),
pacingHoursEl = pacingEl.querySelector( '.hours-value' ),
pacingMinutesEl = pacingEl.querySelector( '.minutes-value' ),
pacingSecondsEl = pacingEl.querySelector( '.seconds-value' );
var timings = getTimings();
if (timings !== null) {
pacingTitleEl.style.removeProperty('display');
pacingEl.style.removeProperty('display');
}
function _displayTime( hrEl, minEl, secEl, time) {
var sign = Math.sign(time) == -1 ? "-" : "";
time = Math.abs(Math.round(time / 1000));
var seconds = time % 60;
var minutes = Math.floor( time / 60 ) % 60 ;
var hours = Math.floor( time / ( 60 * 60 )) ;
hrEl.innerHTML = sign + zeroPadInteger( hours );
if (hours == 0) {
hrEl.classList.add( 'mute' );
}
else {
hrEl.classList.remove( 'mute' );
}
minEl.innerHTML = ':' + zeroPadInteger( minutes );
if (hours == 0 && minutes == 0) {
minEl.classList.add( 'mute' );
}
else {
minEl.classList.remove( 'mute' );
}
secEl.innerHTML = ':' + zeroPadInteger( seconds );
}
function _updateTimer() {
var diff, hours, minutes, seconds,
now = new Date();
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 );
_displayTime( hoursEl, minutesEl, secondsEl, diff );
if (timings !== null) {
_updatePacing(diff);
}
}
function _updatePacing(diff) {
var slideEndTiming = getTimeAllocated(timings) * 1000;
var currentSlide = Reveal.getSlidePastCount();
var currentSlideTiming = timings[currentSlide] * 1000;
var timeLeftCurrentSlide = slideEndTiming - diff;
if (timeLeftCurrentSlide < 0) {
pacingEl.className = 'pacing behind';
}
else if (timeLeftCurrentSlide < currentSlideTiming) {
pacingEl.className = 'pacing on-track';
}
else {
pacingEl.className = 'pacing ahead';
}
_displayTime( pacingHoursEl, pacingMinutesEl, pacingSecondsEl, timeLeftCurrentSlide );
}
@@ -353,14 +641,112 @@
// Then update every second
setInterval( _updateTimer, 1000 );
timeEl.addEventListener( 'click', function() {
start = new Date();
function _resetTimer() {
if (timings == null) {
start = new Date();
}
else {
// Reset timer to beginning of current slide
var slideEndTiming = getTimeAllocated(timings) * 1000;
var currentSlide = Reveal.getSlidePastCount();
var currentSlideTiming = timings[currentSlide] * 1000;
var previousSlidesTiming = slideEndTiming - currentSlideTiming;
var now = new Date();
start = new Date(now.getTime() - previousSlidesTiming);
}
_updateTimer();
}
timeEl.addEventListener( 'click', function() {
_resetTimer();
return false;
} );
}
/**
* Sets up the speaker view layout and layout selector.
*/
function setupLayout() {
layoutDropdown = document.querySelector( '.speaker-layout-dropdown' );
layoutLabel = document.querySelector( '.speaker-layout-label' );
// Render the list of available layouts
for( var id in SPEAKER_LAYOUTS ) {
var option = document.createElement( 'option' );
option.setAttribute( 'value', id );
option.textContent = SPEAKER_LAYOUTS[ id ];
layoutDropdown.appendChild( option );
}
// Monitor the dropdown for changes
layoutDropdown.addEventListener( 'change', function( event ) {
setLayout( layoutDropdown.value );
}, false );
// Restore any currently persisted layout
setLayout( getLayout() );
}
/**
* Sets a new speaker view layout. The layout is persisted
* in local storage.
*/
function setLayout( value ) {
var title = SPEAKER_LAYOUTS[ value ];
layoutLabel.innerHTML = 'Layout' + ( title ? ( ': ' + title ) : '' );
layoutDropdown.value = value;
document.body.setAttribute( 'data-speaker-layout', value );
// Persist locally
if( supportsLocalStorage() ) {
window.localStorage.setItem( 'reveal-speaker-layout', value );
}
}
/**
* Returns the ID of the most recently set speaker layout
* or our default layout if none has been set.
*/
function getLayout() {
if( supportsLocalStorage() ) {
var layout = window.localStorage.getItem( 'reveal-speaker-layout' );
if( layout ) {
return layout;
}
}
// Default to the first record in the layouts hash
for( var id in SPEAKER_LAYOUTS ) {
return id;
}
}
function supportsLocalStorage() {
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
return true;
}
catch( e ) {
return false;
}
}
function zeroPadInteger( num ) {
var str = '00' + parseInt( num );

View File

@@ -11,10 +11,23 @@
*/
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=1100,height=700' );
function openNotes( notesFilePath ) {
if( !notesFilePath ) {
var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path
jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path
notesFilePath = jsFileLocation + 'notes.html';
}
var notesPopup = window.open( notesFilePath, 'reveal.js - Notes', 'width=1100,height=700' );
if( !notesPopup ) {
alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' );
return;
}
// Allow popup window access to Reveal API
notesPopup.Reveal = window.Reveal;
/**
* Connect to the notes window through a postmessage handshake.
@@ -45,22 +58,40 @@ var RevealNotes = (function() {
/**
* Posts the current slide data to the notes window
*/
function post() {
function post( event ) {
var slideElement = Reveal.getCurrentSlide(),
notesElement = slideElement.querySelector( 'aside.notes' );
notesElement = slideElement.querySelector( 'aside.notes' ),
fragmentElement = slideElement.querySelector( '.current-fragment' );
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 a fragment
if( fragmentElement ) {
var fragmentNotes = fragmentElement.querySelector( 'aside.notes' );
if( fragmentNotes ) {
notesElement = fragmentNotes;
}
else if( fragmentElement.hasAttribute( 'data-notes' ) ) {
messageData.notes = fragmentElement.getAttribute( 'data-notes' );
messageData.whitespace = 'pre-wrap';
// In case there are slide notes
notesElement = null;
}
}
// Look for notes defined in an aside element
@@ -94,6 +125,7 @@ var RevealNotes = (function() {
}
connect();
}
if( !/receiver/i.test( window.location.search ) ) {
@@ -104,16 +136,9 @@ var RevealNotes = (function() {
}
// 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();
openNotes();
}
}, false );
Reveal.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() {
openNotes();
} );
}

View File

@@ -2,32 +2,18 @@
* phantomjs script for printing presentations to PDF.
*
* Example:
* phantomjs print-pdf.js "http://lab.hakim.se/reveal-js?print-pdf" reveal-demo.pdf
* phantomjs print-pdf.js "http://revealjs.com?print-pdf" reveal-demo.pdf
*
* By Manuel Bieh (https://github.com/manuelbieh)
* @author Manuel Bieh (https://github.com/manuelbieh)
* @author Hakim El Hattab (https://github.com/hakimel)
* @author Manuel Riezebosch (https://github.com/riezebosch)
*/
// html2pdf.js
var page = new WebPage();
var system = require( 'system' );
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 = {
width: Math.round( slideWidth * 2 ),
height: Math.round( slideHeight * 2 ),
border: 0
};
var probePage = new WebPage();
var printPage = new WebPage();
var inputFile = system.args[1] || 'index.html?print-pdf';
var outputFile = system.args[2] || 'slides.pdf';
@@ -36,13 +22,46 @@ if( outputFile.match( /\.pdf$/gi ) === null ) {
outputFile += '.pdf';
}
console.log( 'Printing PDF (Paper size: '+ page.paperSize.width + 'x' + page.paperSize.height +')' );
console.log( 'Export PDF: Reading reveal.js config [1/4]' );
page.open( inputFile, function( status ) {
window.setTimeout( function() {
console.log( 'Printed succesfully' );
page.render( outputFile );
phantom.exit();
}, 1000 );
probePage.open( inputFile, function( status ) {
console.log( 'Export PDF: Preparing print layout [2/4]' );
var config = probePage.evaluate( function() {
return Reveal.getConfig();
} );
if( config ) {
printPage.paperSize = {
width: Math.floor( config.width * ( 1 + config.margin ) ),
height: Math.floor( config.height * ( 1 + config.margin ) ),
border: 0
};
printPage.open( inputFile, function( status ) {
console.log( 'Export PDF: Preparing pdf [3/4]')
printPage.evaluate( function() {
Reveal.isReady() ? window.callPhantom() : Reveal.addEventListener( 'pdf-ready', window.callPhantom );
} );
} );
printPage.onCallback = function( data ) {
// For some reason we need to "jump the queue" for syntax highlighting to work.
// See: http://stackoverflow.com/a/3580132/129269
setTimeout( function() {
console.log( 'Export PDF: Writing file [4/4]' );
printPage.render( outputFile );
console.log( 'Export PDF: Finished successfully!' );
phantom.exit();
}, 0 );
};
}
else {
console.log( 'Export PDF: Unable to read reveal.js config. Make sure the input address points to a reveal.js page.' );
phantom.exit( 1 );
}
} );

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 isNotesAndIframe = (function(){
return window.RevealNotes && !(self == top);
})();
if(!hasTouch && !isNotesAndIframe){
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://hakim-static.s3.amazonaws.com/reveal-js/remotes.ne.min.js');
}
})(window);

View File

@@ -19,111 +19,117 @@ var RevealSearch = (function() {
function Hilitor(id, tag)
{
var targetNode = document.getElementById(id) || document.body;
var hiliteTag = tag || "EM";
var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM|SPAN)$");
var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"];
var wordColor = [];
var colorIdx = 0;
var matchRegex = "";
var matchingSlides = [];
var targetNode = document.getElementById(id) || document.body;
var hiliteTag = tag || "EM";
var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$");
var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"];
var wordColor = [];
var colorIdx = 0;
var matchRegex = "";
var matchingSlides = [];
this.setRegex = function(input)
{
input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|");
matchRegex = new RegExp("(" + input + ")","i");
}
this.setRegex = function(input)
{
input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|");
matchRegex = new RegExp("(" + input + ")","i");
}
this.getRegex = function()
{
return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " ");
}
this.getRegex = function()
{
return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " ");
}
// recursively apply word highlighting
this.hiliteWords = function(node)
{
if(node == undefined || !node) return;
if(!matchRegex) return;
if(skipTags.test(node.nodeName)) return;
// recursively apply word highlighting
this.hiliteWords = function(node)
{
if(node == undefined || !node) return;
if(!matchRegex) return;
if(skipTags.test(node.nodeName)) return;
if(node.hasChildNodes()) {
for(var i=0; i < node.childNodes.length; i++)
this.hiliteWords(node.childNodes[i]);
}
if(node.nodeType == 3) { // NODE_TEXT
if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) {
//find the slide's section element and save it in our list of matching slides
var secnode = node.parentNode;
while (secnode.nodeName != 'SECTION') {
secnode = secnode.parentNode;
}
var slideIndex = Reveal.getIndices(secnode);
var slidelen = matchingSlides.length;
var alreadyAdded = false;
for (var i=0; i < slidelen; i++) {
if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) {
alreadyAdded = true;
}
}
if (! alreadyAdded) {
matchingSlides.push(slideIndex);
}
if(!wordColor[regs[0].toLowerCase()]) {
wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length];
}
if(node.hasChildNodes()) {
for(var i=0; i < node.childNodes.length; i++)
this.hiliteWords(node.childNodes[i]);
}
if(node.nodeType == 3) { // NODE_TEXT
if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) {
//find the slide's section element and save it in our list of matching slides
var secnode = node;
while (secnode != null && secnode.nodeName != 'SECTION') {
secnode = secnode.parentNode;
}
var match = document.createElement(hiliteTag);
match.appendChild(document.createTextNode(regs[0]));
match.style.backgroundColor = wordColor[regs[0].toLowerCase()];
match.style.fontStyle = "inherit";
match.style.color = "#000";
var slideIndex = Reveal.getIndices(secnode);
var slidelen = matchingSlides.length;
var alreadyAdded = false;
for (var i=0; i < slidelen; i++) {
if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) {
alreadyAdded = true;
}
}
if (! alreadyAdded) {
matchingSlides.push(slideIndex);
}
var after = node.splitText(regs.index);
after.nodeValue = after.nodeValue.substring(regs[0].length);
node.parentNode.insertBefore(match, after);
}
}
};
if(!wordColor[regs[0].toLowerCase()]) {
wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length];
}
// remove highlighting
this.remove = function()
{
var arr = document.getElementsByTagName(hiliteTag);
while(arr.length && (el = arr[0])) {
el.parentNode.replaceChild(el.firstChild, el);
}
};
var match = document.createElement(hiliteTag);
match.appendChild(document.createTextNode(regs[0]));
match.style.backgroundColor = wordColor[regs[0].toLowerCase()];
match.style.fontStyle = "inherit";
match.style.color = "#000";
// start highlighting at target node
this.apply = function(input)
{
if(input == undefined || !input) return;
this.remove();
this.setRegex(input);
this.hiliteWords(targetNode);
return matchingSlides;
};
var after = node.splitText(regs.index);
after.nodeValue = after.nodeValue.substring(regs[0].length);
node.parentNode.insertBefore(match, after);
}
}
};
// remove highlighting
this.remove = function()
{
var arr = document.getElementsByTagName(hiliteTag);
while(arr.length && (el = arr[0])) {
el.parentNode.replaceChild(el.firstChild, el);
}
};
// start highlighting at target node
this.apply = function(input)
{
if(input == undefined || !input) return;
this.remove();
this.setRegex(input);
this.hiliteWords(targetNode);
return matchingSlides;
};
}
function openSearch() {
//ensure the search term input dialog is visible and has focus:
var inputboxdiv = document.getElementById("searchinputdiv");
var inputbox = document.getElementById("searchinput");
inputbox.style.display = "inline";
inputboxdiv.style.display = "inline";
inputbox.focus();
inputbox.select();
}
function closeSearch() {
var inputboxdiv = document.getElementById("searchinputdiv");
inputboxdiv.style.display = "none";
if(myHilitor) myHilitor.remove();
}
function toggleSearch() {
var inputbox = document.getElementById("searchinput");
if (inputbox.style.display !== "inline") {
var inputboxdiv = document.getElementById("searchinputdiv");
if (inputboxdiv.style.display !== "inline") {
openSearch();
}
else {
inputbox.style.display = "none";
myHilitor.remove();
closeSearch();
}
}
@@ -132,19 +138,27 @@ function Hilitor(id, tag)
if (searchboxDirty) {
var searchstring = document.getElementById("searchinput").value;
//find the keyword amongst the slides
myHilitor = new Hilitor("slidecontent");
matchedSlides = myHilitor.apply(searchstring);
currentMatchedIndex = 0;
if (searchstring === '') {
if(myHilitor) myHilitor.remove();
matchedSlides = null;
}
else {
//find the keyword amongst the slides
myHilitor = new Hilitor("slidecontent");
matchedSlides = myHilitor.apply(searchstring);
currentMatchedIndex = 0;
}
}
//navigate to the next slide that has the keyword, wrapping to the first if necessary
if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) {
currentMatchedIndex = 0;
}
if (matchedSlides.length > currentMatchedIndex) {
Reveal.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v);
currentMatchedIndex++;
if (matchedSlides) {
//navigate to the next slide that has the keyword, wrapping to the first if necessary
if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) {
currentMatchedIndex = 0;
}
if (matchedSlides.length > currentMatchedIndex) {
Reveal.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v);
currentMatchedIndex++;
}
}
}
@@ -155,19 +169,20 @@ function Hilitor(id, tag)
var searchElement = document.createElement( 'div' );
searchElement.id = "searchinputdiv";
searchElement.classList.add( 'searchdiv' );
searchElement.style.position = 'absolute';
searchElement.style.top = '10px';
searchElement.style.left = '10px';
//embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/:
searchElement.style.position = 'absolute';
searchElement.style.top = '10px';
searchElement.style.right = '10px';
searchElement.style.zIndex = 10;
//embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/:
searchElement.innerHTML = '<span><input type="search" id="searchinput" class="searchinput" style="vertical-align: top;"/><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJiSURBVHjatFZNaxNBGH5md+Mmu92NVdKDRipSAyqCghgQD4L4cRe86UUtAQ+eFCxoa4/25EXBFi8eBE+eRPoDhB6KgiiixdAPCEkx2pjvTXadd9yNsflwuyUDD/O+u8PzzDPvzOwyx3EwyCZhwG3gAkp7MnpjgbopjsltcD4gjuXZZKeAR348MYLYTm3LzOs/y3j3JTfZxgXWXmTuwPHIc4VmoOmv5IrI53+AO2DdHLjkDWQ3GoEEVFXtXQOvkSnPWcyUceviLhwbDYv8/XIVj97kse7TodLvZXxYxrPUHkQ1ufXs3FEdybEIxucySOesoNvUgWU1cP3MkCBfTFdw9fGaAMVmRELq7LBw2Q3/FaAxxWIRpw+ZIr/7IouPqzUBiqmdHAv7EuhRAwf1er2Vy4x1jW3b2d5Jfvu5IPp7l2LYbcgCFFNb+FoJ7oBqEAqFMPNqFcmEgVMJDfMT+1tvN0pNjERlMS6QA5pFOKxiKVPFhakPeL3It+WGJUDxt2wFR+JhzI7v5ctkd8DXOZAkCYYxhO+lKm4+Xfqz/rIixBuNBl7eOYzkQQNzqX249mRl6zUgEcYkaJrGhUwBinVdh6IouPzwE6/DL5w4oLkH8y981aDf+uq6hlKpJESiUdNfDZi7/ehG9K6KfiA3pml0PLcsq+cSMTj2NL9ukc4UOmz7AZ3+crkC4mHujFvXNaMFB3bEr8xPS6p5O+jXxq4VZtaen7/PwzrntjcLUE0iHPS1Ud1cdiEJl/8WivZk0wXd7zWOMkeF8s0CcAmkNrC2nvXZDbbbN73ccYnZoH9bfgswAFzAe9/h3dbKAAAAAElFTkSuQmCC" id="searchbutton" class="searchicon" style="vertical-align: top; margin-top: -1px;"/></span>';
dom.wrapper.appendChild( searchElement );
}
document.getElementById("searchbutton").addEventListener( 'click', function(event) {
document.getElementById( 'searchbutton' ).addEventListener( 'click', function(event) {
doSearch();
}, false );
document.getElementById("searchinput").addEventListener( 'keyup', function( event ) {
document.getElementById( 'searchinput' ).addEventListener( 'keyup', function( event ) {
switch (event.keyCode) {
case 13:
event.preventDefault();
@@ -179,18 +194,13 @@ function Hilitor(id, tag)
}
}, false );
// Open the search when the 's' key is hit (yes, this conflicts with the notes plugin, disabling for now)
/*
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 ) {
if( event.key == "F" && (event.ctrlKey || event.metaKey) ) { //Control+Shift+f
event.preventDefault();
openSearch();
toggleSearch();
}
}, false );
*/
if( window.Reveal ) Reveal.registerKeyboardShortcut( 'Ctrl-Shift-F', 'Search' );
closeSearch();
return { open: openSearch };
})();

View File

@@ -1,30 +1,27 @@
// Custom reveal.js integration
(function(){
var isEnabled = true;
var revealElement = document.querySelector( '.reveal' );
if( revealElement ) {
document.querySelector( '.reveal .slides' ).addEventListener( 'mousedown', function( event ) {
var modifier = ( Reveal.getConfig().zoomKey ? Reveal.getConfig().zoomKey : 'alt' ) + 'Key';
revealElement.addEventListener( 'mousedown', function( event ) {
var defaultModifier = /Linux/.test( window.navigator.platform ) ? 'ctrl' : 'alt';
var zoomPadding = 20;
var revealScale = Reveal.getScale();
var modifier = ( Reveal.getConfig().zoomKey ? Reveal.getConfig().zoomKey : defaultModifier ) + 'Key';
var zoomLevel = ( Reveal.getConfig().zoomLevel ? Reveal.getConfig().zoomLevel : 2 );
if( event[ modifier ] && isEnabled ) {
event.preventDefault();
if( event[ modifier ] && !Reveal.isOverview() ) {
event.preventDefault();
var bounds = event.target.getBoundingClientRect();
zoom.to({
x: event.clientX,
y: event.clientY,
scale: zoomLevel,
pan: false
});
}
} );
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
});
}
} );
Reveal.addEventListener( 'overviewshown', function() { isEnabled = false; } );
Reveal.addEventListener( 'overviewhidden', function() { isEnabled = true; } );
}
})();
/*!
@@ -273,6 +270,3 @@ var zoom = (function(){
}
})();

View File

@@ -169,7 +169,7 @@
transition: 'linear',
math: {
// mathjax: 'http://cdn.mathjax.org/mathjax/latest/MathJax.js',
// mathjax: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js',
config: 'TeX-AMS_HTML-full'
},

View File

@@ -93,7 +93,7 @@
<h2>Video background</h2>
</section>
<section data-background-iframe="https://slides.com">
<section data-background-iframe="https://slides.com/news/make-better-presentations/embed?style=hidden&autoSlide=4000">
<h2>Iframe background</h2>
</section>

View File

@@ -1,244 +0,0 @@
/**
* 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;
}

File diff suppressed because it is too large Load Diff

436
test/qunit-2.5.0.css Normal file
View File

@@ -0,0 +1,436 @@
/*!
* QUnit 2.5.0
* https://qunitjs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2018-01-10T02:56Z
*/
/** Font Family and Sizes */
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult {
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
}
#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
#qunit-tests { font-size: smaller; }
/** Resets */
#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
margin: 0;
padding: 0;
}
/** Header (excluding toolbar) */
#qunit-header {
padding: 0.5em 0 0.5em 1em;
color: #8699A4;
background-color: #0D3349;
font-size: 1.5em;
line-height: 1em;
font-weight: 400;
border-radius: 5px 5px 0 0;
}
#qunit-header a {
text-decoration: none;
color: #C2CCD1;
}
#qunit-header a:hover,
#qunit-header a:focus {
color: #FFF;
}
#qunit-banner {
height: 5px;
}
#qunit-filteredTest {
padding: 0.5em 1em 0.5em 1em;
color: #366097;
background-color: #F4FF77;
}
#qunit-userAgent {
padding: 0.5em 1em 0.5em 1em;
color: #FFF;
background-color: #2B81AF;
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
}
/** Toolbar */
#qunit-testrunner-toolbar {
padding: 0.5em 1em 0.5em 1em;
color: #5E740B;
background-color: #EEE;
}
#qunit-testrunner-toolbar .clearfix {
height: 0;
clear: both;
}
#qunit-testrunner-toolbar label {
display: inline-block;
}
#qunit-testrunner-toolbar input[type=checkbox],
#qunit-testrunner-toolbar input[type=radio] {
margin: 3px;
vertical-align: -2px;
}
#qunit-testrunner-toolbar input[type=text] {
box-sizing: border-box;
height: 1.6em;
}
.qunit-url-config,
.qunit-filter,
#qunit-modulefilter {
display: inline-block;
line-height: 2.1em;
}
.qunit-filter,
#qunit-modulefilter {
float: right;
position: relative;
margin-left: 1em;
}
.qunit-url-config label {
margin-right: 0.5em;
}
#qunit-modulefilter-search {
box-sizing: border-box;
width: 400px;
}
#qunit-modulefilter-search-container:after {
position: absolute;
right: 0.3em;
content: "\25bc";
color: black;
}
#qunit-modulefilter-dropdown {
/* align with #qunit-modulefilter-search */
box-sizing: border-box;
width: 400px;
position: absolute;
right: 0;
top: 50%;
margin-top: 0.8em;
border: 1px solid #D3D3D3;
border-top: none;
border-radius: 0 0 .25em .25em;
color: #000;
background-color: #F5F5F5;
z-index: 99;
}
#qunit-modulefilter-dropdown a {
color: inherit;
text-decoration: none;
}
#qunit-modulefilter-dropdown .clickable.checked {
font-weight: bold;
color: #000;
background-color: #D2E0E6;
}
#qunit-modulefilter-dropdown .clickable:hover {
color: #FFF;
background-color: #0D3349;
}
#qunit-modulefilter-actions {
display: block;
overflow: auto;
/* align with #qunit-modulefilter-dropdown-list */
font: smaller/1.5em sans-serif;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > * {
box-sizing: border-box;
max-height: 2.8em;
display: block;
padding: 0.4em;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > button {
float: right;
font: inherit;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > :last-child {
/* insert padding to align with checkbox margins */
padding-left: 3px;
}
#qunit-modulefilter-dropdown-list {
max-height: 200px;
overflow-y: auto;
margin: 0;
border-top: 2px groove threedhighlight;
padding: 0.4em 0 0;
font: smaller/1.5em sans-serif;
}
#qunit-modulefilter-dropdown-list li {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#qunit-modulefilter-dropdown-list .clickable {
display: block;
padding-left: 0.15em;
}
/** Tests: Pass/Fail */
#qunit-tests {
list-style-position: inside;
}
#qunit-tests li {
padding: 0.4em 1em 0.4em 1em;
border-bottom: 1px solid #FFF;
list-style-position: inside;
}
#qunit-tests > li {
display: none;
}
#qunit-tests li.running,
#qunit-tests li.pass,
#qunit-tests li.fail,
#qunit-tests li.skipped,
#qunit-tests li.aborted {
display: list-item;
}
#qunit-tests.hidepass {
position: relative;
}
#qunit-tests.hidepass li.running,
#qunit-tests.hidepass li.pass:not(.todo) {
visibility: hidden;
position: absolute;
width: 0;
height: 0;
padding: 0;
border: 0;
margin: 0;
}
#qunit-tests li strong {
cursor: pointer;
}
#qunit-tests li.skipped strong {
cursor: default;
}
#qunit-tests li a {
padding: 0.5em;
color: #C2CCD1;
text-decoration: none;
}
#qunit-tests li p a {
padding: 0.25em;
color: #6B6464;
}
#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;
}
.qunit-source {
margin: 0.6em 0 0.3em;
}
.qunit-collapsed {
display: none;
}
#qunit-tests table {
border-collapse: collapse;
margin-top: 0.2em;
}
#qunit-tests th {
text-align: right;
vertical-align: top;
padding: 0 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 {
color: #374E0C;
background-color: #E0F2BE;
text-decoration: none;
}
#qunit-tests ins {
color: #500;
background-color: #FFCACA;
text-decoration: none;
}
/*** Test Counts */
#qunit-tests b.counts { color: #000; }
#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: #999; }
#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;
}
#qunit-tests .fail { color: #000; background-color: #EE5757; }
#qunit-tests .fail .test-name,
#qunit-tests .fail .module-name { color: #000; }
#qunit-tests .fail .test-actual { color: #EE5757; }
#qunit-tests .fail .test-expected { color: #008000; }
#qunit-banner.qunit-fail { background-color: #EE5757; }
/*** Aborted tests */
#qunit-tests .aborted { color: #000; background-color: orange; }
/*** Skipped tests */
#qunit-tests .skipped {
background-color: #EBECE9;
}
#qunit-tests .qunit-todo-label,
#qunit-tests .qunit-skipped-label {
background-color: #F4FF77;
display: inline-block;
font-style: normal;
color: #366097;
line-height: 1.8em;
padding: 0 0.5em;
margin: -0.4em 0.4em -0.4em 0;
}
#qunit-tests .qunit-todo-label {
background-color: #EEE;
}
/** Result */
#qunit-testresult {
color: #2B81AF;
background-color: #D2E0E6;
border-bottom: 1px solid #FFF;
}
#qunit-testresult .clearfix {
height: 0;
clear: both;
}
#qunit-testresult .module-name {
font-weight: 700;
}
#qunit-testresult-display {
padding: 0.5em 1em 0.5em 1em;
width: 85%;
float:left;
}
#qunit-testresult-controls {
padding: 0.5em 1em 0.5em 1em;
width: 10%;
float:left;
}
/** Fixture */
#qunit-fixture {
position: absolute;
top: -10000px;
left: -10000px;
width: 1000px;
height: 1000px;
}

5188
test/qunit-2.5.0.js Normal file

File diff suppressed because it is too large Load Diff

12
test/simple.md Normal file
View File

@@ -0,0 +1,12 @@
## Slide 1.1
```js
var a = 1;
```
## Slide 1.2
## Slide 2

View File

@@ -7,7 +7,7 @@
<title>reveal.js - Test Markdown Element Attributes</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
<link rel="stylesheet" href="qunit-2.5.0.css">
</head>
<body style="overflow: auto;">
@@ -126,7 +126,7 @@
<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="qunit-2.5.0.js"></script>
<script src="test-markdown-element-attributes.js"></script>

View File

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

View File

@@ -0,0 +1,36 @@
<!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-2.5.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="simple.md" data-separator="^\r?\n\r?\n\r?\n" data-separator-vertical="^\r?\n\r?\n"></section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="../plugin/highlight/highlight.js"></script>
<script src="../plugin/markdown/marked.js"></script>
<script src="../plugin/markdown/markdown.js"></script>
<script src="qunit-2.5.0.js"></script>
<script src="test-markdown-external.js"></script>
</body>
</html>

View File

@@ -0,0 +1,20 @@
Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Markdown' );
QUnit.test( 'Vertical separator', function( assert ) {
assert.strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' );
});
QUnit.test( 'Horizontal separator', function( assert ) {
assert.strictEqual( document.querySelectorAll( '.reveal .slides>section' ).length, 2, 'found two slides' );
});
QUnit.test( 'Language highlighter', function( assert ) {
assert.strictEqual( document.querySelectorAll( '.hljs-keyword' ).length, 1, 'got rendered highlight tag.' );
assert.strictEqual( document.querySelector( '.hljs-keyword' ).innerHTML, 'var', 'the same keyword: var.' );
});
} );
Reveal.initialize();

View File

@@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Test Markdown Options</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-2.5.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>
<script type="text/template">
## Testing Markdown Options
This "slide" should contain 'smart' quotes.
</script>
</section>
</div>
</div>
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="qunit-2.5.0.js"></script>
<script src="test-markdown-options.js"></script>
</body>
</html>

View File

@@ -0,0 +1,27 @@
Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Markdown' );
QUnit.test( 'Options are set', function( assert ) {
assert.strictEqual( marked.defaults.smartypants, true );
});
QUnit.test( 'Smart quotes are activated', function( assert ) {
var text = document.querySelector( '.reveal .slides>section>p' ).textContent;
assert.strictEqual( /['"]/.test( text ), false );
assert.strictEqual( /[“”‘’]/.test( text ), true );
});
} );
Reveal.initialize({
dependencies: [
{ src: '../plugin/markdown/marked.js' },
// Test loading JS files with query strings
{ src: '../plugin/markdown/markdown.js?query=string' },
],
markdown: {
smartypants: true
}
});

View File

@@ -7,7 +7,7 @@
<title>reveal.js - Test Markdown Attributes</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
<link rel="stylesheet" href="qunit-2.5.0.css">
</head>
<body style="overflow: auto;">
@@ -120,7 +120,7 @@
<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="qunit-2.5.0.js"></script>
<script src="test-markdown-slide-attributes.js"></script>

View File

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

View File

@@ -7,13 +7,13 @@
<title>reveal.js - Test Markdown</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
<link rel="stylesheet" href="qunit-2.5.0.css">
</head>
<body style="overflow: auto;">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div id="qunit-fixture"></div>
<div class="reveal" style="display: none;">
@@ -44,7 +44,7 @@
<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="qunit-2.5.0.js"></script>
<script src="test-markdown.js"></script>

View File

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

View File

@@ -8,7 +8,7 @@
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="../css/print/pdf.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
<link rel="stylesheet" href="qunit-2.5.0.css">
</head>
<body style="overflow: auto;">
@@ -75,7 +75,7 @@
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="qunit-2.5.0.js"></script>
<script src="test-pdf.js"></script>

View File

@@ -1,15 +1,12 @@
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' );
QUnit.test( 'Reveal.isReady', function( assert ) {
assert.strictEqual( Reveal.isReady(), true, 'returns true' );
});
} );
Reveal.initialize({ pdf: true });

View File

@@ -7,7 +7,7 @@
<title>reveal.js - Tests</title>
<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
<link rel="stylesheet" href="qunit-2.5.0.css">
</head>
<body style="overflow: auto;">
@@ -24,10 +24,11 @@
<img data-src="fake-url.png">
<video data-src="fake-url.mp4"></video>
<audio data-src="fake-url.mp3"></audio>
<aside class="notes">speaker notes 1</aside>
</section>
<section>
<section data-background="examples/assets/image2.png">
<section data-background="examples/assets/image2.png" data-notes="speaker notes 2">
<h1>2.1</h1>
</section>
<section>
@@ -77,7 +78,7 @@
<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="qunit-1.12.0.js"></script>
<script src="qunit-2.5.0.js"></script>
<script src="test.js"></script>

View File

@@ -1,4 +1,3 @@
// These tests expect the DOM to contain a presentation
// with the following slide structure:
//
@@ -8,7 +7,6 @@
// 3 - Two fragments with same data-fragment-index
// 4
Reveal.addEventListener( 'ready', function() {
// ---------------------------------------------------------------
@@ -16,16 +14,16 @@ Reveal.addEventListener( 'ready', function() {
QUnit.module( 'DOM' );
test( 'Initial slides classes', function() {
QUnit.test( 'Initial slides classes', function( assert ) {
var horizontalSlides = document.querySelectorAll( '.reveal .slides>section' )
strictEqual( document.querySelectorAll( '.reveal .slides section.past' ).length, 0, 'no .past slides' );
strictEqual( document.querySelectorAll( '.reveal .slides section.present' ).length, 1, 'one .present slide' );
strictEqual( document.querySelectorAll( '.reveal .slides>section.future' ).length, horizontalSlides.length - 1, 'remaining horizontal slides are .future' );
assert.strictEqual( document.querySelectorAll( '.reveal .slides section.past' ).length, 0, 'no .past slides' );
assert.strictEqual( document.querySelectorAll( '.reveal .slides section.present' ).length, 1, 'one .present slide' );
assert.strictEqual( document.querySelectorAll( '.reveal .slides>section.future' ).length, horizontalSlides.length - 1, 'remaining horizontal slides are .future' );
strictEqual( document.querySelectorAll( '.reveal .slides section.stack' ).length, 2, 'two .stacks' );
assert.strictEqual( document.querySelectorAll( '.reveal .slides section.stack' ).length, 2, 'two .stacks' );
ok( document.querySelectorAll( '.reveal .slides section.stack' )[0].querySelectorAll( '.future' ).length > 0, 'vertical slides are given .future' );
assert.ok( document.querySelectorAll( '.reveal .slides section.stack' )[0].querySelectorAll( '.future' ).length > 0, 'vertical slides are given .future' );
});
// ---------------------------------------------------------------
@@ -33,195 +31,203 @@ Reveal.addEventListener( 'ready', function() {
QUnit.module( 'API' );
test( 'Reveal.isReady', function() {
strictEqual( Reveal.isReady(), true, 'returns true' );
QUnit.test( 'Reveal.isReady', function( assert ) {
assert.strictEqual( Reveal.isReady(), true, 'returns true' );
});
test( 'Reveal.isOverview', function() {
strictEqual( Reveal.isOverview(), false, 'false by default' );
QUnit.test( 'Reveal.isOverview', function( assert ) {
assert.strictEqual( Reveal.isOverview(), false, 'false by default' );
Reveal.toggleOverview();
strictEqual( Reveal.isOverview(), true, 'true after toggling on' );
assert.strictEqual( Reveal.isOverview(), true, 'true after toggling on' );
Reveal.toggleOverview();
strictEqual( Reveal.isOverview(), false, 'false after toggling off' );
assert.strictEqual( Reveal.isOverview(), false, 'false after toggling off' );
});
test( 'Reveal.isPaused', function() {
strictEqual( Reveal.isPaused(), false, 'false by default' );
QUnit.test( 'Reveal.isPaused', function( assert ) {
assert.strictEqual( Reveal.isPaused(), false, 'false by default' );
Reveal.togglePause();
strictEqual( Reveal.isPaused(), true, 'true after pausing' );
assert.strictEqual( Reveal.isPaused(), true, 'true after pausing' );
Reveal.togglePause();
strictEqual( Reveal.isPaused(), false, 'false after resuming' );
assert.strictEqual( Reveal.isPaused(), false, 'false after resuming' );
});
test( 'Reveal.isFirstSlide', function() {
QUnit.test( 'Reveal.isFirstSlide', function( assert ) {
Reveal.slide( 0, 0 );
strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' );
assert.strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' );
Reveal.slide( 1, 0 );
strictEqual( Reveal.isFirstSlide(), false, 'false after Reveal.slide( 1, 0 )' );
assert.strictEqual( Reveal.isFirstSlide(), false, 'false after Reveal.slide( 1, 0 )' );
Reveal.slide( 0, 0 );
strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' );
assert.strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' );
});
test( 'Reveal.isFirstSlide after vertical slide', function() {
QUnit.test( 'Reveal.isFirstSlide after vertical slide', function( assert ) {
Reveal.slide( 1, 1 );
Reveal.slide( 0, 0 );
strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( 0, 0 )' );
assert.strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( 0, 0 )' );
});
test( 'Reveal.isLastSlide', function() {
QUnit.test( 'Reveal.isLastSlide', function( assert ) {
Reveal.slide( 0, 0 );
strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' );
assert.strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' );
var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1;
Reveal.slide( lastSlideIndex, 0 );
strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( '+ lastSlideIndex +', 0 )' );
assert.strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( '+ lastSlideIndex +', 0 )' );
Reveal.slide( 0, 0 );
strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' );
assert.strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' );
});
test( 'Reveal.isLastSlide after vertical slide', function() {
QUnit.test( 'Reveal.isLastSlide after vertical slide', function( assert ) {
var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1;
Reveal.slide( 1, 1 );
Reveal.slide( lastSlideIndex );
strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( '+ lastSlideIndex +', 0 )' );
assert.strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( 1, 1 ) and then Reveal.slide( '+ lastSlideIndex +', 0 )' );
});
test( 'Reveal.getTotalSlides', function() {
strictEqual( Reveal.getTotalSlides(), 8, 'eight slides in total' );
QUnit.test( 'Reveal.getTotalSlides', function( assert ) {
assert.strictEqual( Reveal.getTotalSlides(), 8, 'eight slides in total' );
});
test( 'Reveal.getIndices', function() {
QUnit.test( 'Reveal.getIndices', function( assert ) {
var indices = Reveal.getIndices();
ok( indices.hasOwnProperty( 'h' ), 'h exists' );
ok( indices.hasOwnProperty( 'v' ), 'v exists' );
ok( indices.hasOwnProperty( 'f' ), 'f exists' );
assert.ok( indices.hasOwnProperty( 'h' ), 'h exists' );
assert.ok( indices.hasOwnProperty( 'v' ), 'v exists' );
assert.ok( indices.hasOwnProperty( 'f' ), 'f exists' );
Reveal.slide( 1, 0 );
strictEqual( Reveal.getIndices().h, 1, 'h 1' );
strictEqual( Reveal.getIndices().v, 0, 'v 0' );
assert.strictEqual( Reveal.getIndices().h, 1, 'h 1' );
assert.strictEqual( Reveal.getIndices().v, 0, 'v 0' );
Reveal.slide( 1, 2 );
strictEqual( Reveal.getIndices().h, 1, 'h 1' );
strictEqual( Reveal.getIndices().v, 2, 'v 2' );
assert.strictEqual( Reveal.getIndices().h, 1, 'h 1' );
assert.strictEqual( Reveal.getIndices().v, 2, 'v 2' );
Reveal.slide( 0, 0 );
strictEqual( Reveal.getIndices().h, 0, 'h 0' );
strictEqual( Reveal.getIndices().v, 0, 'v 0' );
assert.strictEqual( Reveal.getIndices().h, 0, 'h 0' );
assert.strictEqual( Reveal.getIndices().v, 0, 'v 0' );
});
test( 'Reveal.getSlide', function() {
equal( Reveal.getSlide( 0 ), document.querySelector( '.reveal .slides>section:first-child' ), 'gets correct first slide' );
equal( Reveal.getSlide( 1 ), document.querySelector( '.reveal .slides>section:nth-child(2)' ), 'no v index returns stack' );
equal( Reveal.getSlide( 1, 0 ), document.querySelector( '.reveal .slides>section:nth-child(2)>section:nth-child(1)' ), 'v index 0 returns first vertical child' );
equal( Reveal.getSlide( 1, 1 ), document.querySelector( '.reveal .slides>section:nth-child(2)>section:nth-child(2)' ), 'v index 1 returns second vertical child' );
QUnit.test( 'Reveal.getSlide', function( assert ) {
assert.equal( Reveal.getSlide( 0 ), document.querySelector( '.reveal .slides>section:first-child' ), 'gets correct first slide' );
assert.equal( Reveal.getSlide( 1 ), document.querySelector( '.reveal .slides>section:nth-child(2)' ), 'no v index returns stack' );
assert.equal( Reveal.getSlide( 1, 0 ), document.querySelector( '.reveal .slides>section:nth-child(2)>section:nth-child(1)' ), 'v index 0 returns first vertical child' );
assert.equal( Reveal.getSlide( 1, 1 ), document.querySelector( '.reveal .slides>section:nth-child(2)>section:nth-child(2)' ), 'v index 1 returns second vertical child' );
strictEqual( Reveal.getSlide( 100 ), undefined, 'undefined when out of horizontal bounds' );
strictEqual( Reveal.getSlide( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
assert.strictEqual( Reveal.getSlide( 100 ), undefined, 'undefined when out of horizontal bounds' );
assert.strictEqual( Reveal.getSlide( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
});
test( 'Reveal.getSlideBackground', function() {
equal( Reveal.getSlideBackground( 0 ), document.querySelector( '.reveal .backgrounds>.slide-background:first-child' ), 'gets correct first background' );
equal( Reveal.getSlideBackground( 1 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2)' ), 'no v index returns stack' );
equal( Reveal.getSlideBackground( 1, 0 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2) .slide-background:nth-child(1)' ), 'v index 0 returns first vertical child' );
equal( Reveal.getSlideBackground( 1, 1 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2) .slide-background:nth-child(2)' ), 'v index 1 returns second vertical child' );
QUnit.test( 'Reveal.getSlideBackground', function( assert ) {
assert.equal( Reveal.getSlideBackground( 0 ), document.querySelector( '.reveal .backgrounds>.slide-background:first-child' ), 'gets correct first background' );
assert.equal( Reveal.getSlideBackground( 1 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2)' ), 'no v index returns stack' );
assert.equal( Reveal.getSlideBackground( 1, 0 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2) .slide-background:nth-child(2)' ), 'v index 0 returns first vertical child' );
assert.equal( Reveal.getSlideBackground( 1, 1 ), document.querySelector( '.reveal .backgrounds>.slide-background:nth-child(2) .slide-background:nth-child(3)' ), 'v index 1 returns second vertical child' );
strictEqual( Reveal.getSlideBackground( 100 ), undefined, 'undefined when out of horizontal bounds' );
strictEqual( Reveal.getSlideBackground( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
assert.strictEqual( Reveal.getSlideBackground( 100 ), undefined, 'undefined when out of horizontal bounds' );
assert.strictEqual( Reveal.getSlideBackground( 1, 100 ), undefined, 'undefined when out of vertical bounds' );
});
test( 'Reveal.getPreviousSlide/getCurrentSlide', function() {
QUnit.test( 'Reveal.getSlideNotes', function( assert ) {
Reveal.slide( 0, 0 );
assert.ok( Reveal.getSlideNotes() === 'speaker notes 1', 'works with <aside class="notes">' );
Reveal.slide( 1, 0 );
assert.ok( Reveal.getSlideNotes() === 'speaker notes 2', 'works with <section data-notes="">' );
});
QUnit.test( 'Reveal.getPreviousSlide/getCurrentSlide', function( assert ) {
Reveal.slide( 0, 0 );
Reveal.slide( 1, 0 );
var firstSlide = document.querySelector( '.reveal .slides>section:first-child' );
var secondSlide = document.querySelector( '.reveal .slides>section:nth-child(2)>section' );
equal( Reveal.getPreviousSlide(), firstSlide, 'previous is slide #0' );
equal( Reveal.getCurrentSlide(), secondSlide, 'current is slide #1' );
assert.equal( Reveal.getPreviousSlide(), firstSlide, 'previous is slide #0' );
assert.equal( Reveal.getCurrentSlide(), secondSlide, 'current is slide #1' );
});
test( 'Reveal.getProgress', function() {
QUnit.test( 'Reveal.getProgress', function( assert ) {
Reveal.slide( 0, 0 );
strictEqual( Reveal.getProgress(), 0, 'progress is 0 on first slide' );
assert.strictEqual( Reveal.getProgress(), 0, 'progress is 0 on first slide' );
var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1;
Reveal.slide( lastSlideIndex, 0 );
strictEqual( Reveal.getProgress(), 1, 'progress is 1 on last slide' );
assert.strictEqual( Reveal.getProgress(), 1, 'progress is 1 on last slide' );
});
test( 'Reveal.getScale', function() {
ok( typeof Reveal.getScale() === 'number', 'has scale' );
QUnit.test( 'Reveal.getScale', function( assert ) {
assert.ok( typeof Reveal.getScale() === 'number', 'has scale' );
});
test( 'Reveal.getConfig', function() {
ok( typeof Reveal.getConfig() === 'object', 'has config' );
QUnit.test( 'Reveal.getConfig', function( assert ) {
assert.ok( typeof Reveal.getConfig() === 'object', 'has config' );
});
test( 'Reveal.configure', function() {
strictEqual( Reveal.getConfig().loop, false, '"loop" is false to start with' );
QUnit.test( 'Reveal.configure', function( assert ) {
assert.strictEqual( Reveal.getConfig().loop, false, '"loop" is false to start with' );
Reveal.configure({ loop: true });
strictEqual( Reveal.getConfig().loop, true, '"loop" has changed to true' );
assert.strictEqual( Reveal.getConfig().loop, true, '"loop" has changed to true' );
Reveal.configure({ loop: false, customTestValue: 1 });
strictEqual( Reveal.getConfig().customTestValue, 1, 'supports custom values' );
assert.strictEqual( Reveal.getConfig().customTestValue, 1, 'supports custom values' );
});
test( 'Reveal.availableRoutes', function() {
QUnit.test( 'Reveal.availableRoutes', function( assert ) {
Reveal.slide( 0, 0 );
deepEqual( Reveal.availableRoutes(), { left: false, up: false, down: false, right: true }, 'correct for first slide' );
assert.deepEqual( Reveal.availableRoutes(), { left: false, up: false, down: false, right: true }, 'correct for first slide' );
Reveal.slide( 1, 0 );
deepEqual( Reveal.availableRoutes(), { left: true, up: false, down: true, right: true }, 'correct for vertical slide' );
assert.deepEqual( Reveal.availableRoutes(), { left: true, up: false, down: true, right: true }, 'correct for vertical slide' );
});
test( 'Reveal.next', function() {
QUnit.test( 'Reveal.next', function( assert ) {
Reveal.slide( 0, 0 );
// Step through vertical child slides
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 1, v: 0, f: undefined } );
assert.deepEqual( Reveal.getIndices(), { h: 1, v: 0, f: undefined } );
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 1, v: 1, f: undefined } );
assert.deepEqual( Reveal.getIndices(), { h: 1, v: 1, f: undefined } );
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 1, v: 2, f: undefined } );
assert.deepEqual( Reveal.getIndices(), { h: 1, v: 2, f: undefined } );
// Step through fragments
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: -1 } );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: -1 } );
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 } );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 } );
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 } );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 } );
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 } );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 } );
});
test( 'Reveal.next at end', function() {
QUnit.test( 'Reveal.next at end', function( assert ) {
Reveal.slide( 3 );
// We're at the end, this should have no effect
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } );
assert.deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } );
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } );
assert.deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } );
});
@@ -230,121 +236,123 @@ Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Fragments' );
test( 'Sliding to fragments', function() {
QUnit.test( 'Sliding to fragments', function( assert ) {
Reveal.slide( 2, 0, -1 );
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: -1 }, 'Reveal.slide( 2, 0, -1 )' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: -1 }, 'Reveal.slide( 2, 0, -1 )' );
Reveal.slide( 2, 0, 0 );
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'Reveal.slide( 2, 0, 0 )' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'Reveal.slide( 2, 0, 0 )' );
Reveal.slide( 2, 0, 2 );
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'Reveal.slide( 2, 0, 2 )' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'Reveal.slide( 2, 0, 2 )' );
Reveal.slide( 2, 0, 1 );
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'Reveal.slide( 2, 0, 1 )' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'Reveal.slide( 2, 0, 1 )' );
});
test( 'Hiding all fragments', function() {
QUnit.test( 'Hiding all fragments', function( assert ) {
var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' );
Reveal.slide( 2, 0, 0 );
strictEqual( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 1, 'one fragment visible when index is 0' );
assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 1, 'one fragment visible when index is 0' );
Reveal.slide( 2, 0, -1 );
strictEqual( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 0, 'no fragments visible when index is -1' );
assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 0, 'no fragments visible when index is -1' );
});
test( 'Current fragment', function() {
QUnit.test( 'Current fragment', function( assert ) {
var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' );
Reveal.slide( 2, 0 );
strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment at index -1' );
assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment at index -1' );
Reveal.slide( 2, 0, 0 );
strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 1, 'one current fragment at index 0' );
assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 1, 'one current fragment at index 0' );
Reveal.slide( 1, 0, 0 );
strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment when navigating to previous slide' );
assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment when navigating to previous slide' );
Reveal.slide( 3, 0, 0 );
strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment when navigating to next slide' );
assert.strictEqual( fragmentSlide.querySelectorAll( '.fragment.current-fragment' ).length, 0, 'no current fragment when navigating to next slide' );
});
test( 'Stepping through fragments', function() {
QUnit.test( 'Stepping through fragments', function( assert ) {
Reveal.slide( 2, 0, -1 );
// forwards:
Reveal.next();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'next() goes to next fragment' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'next() goes to next fragment' );
Reveal.right();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'right() goes to next fragment' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'right() goes to next fragment' );
Reveal.down();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'down() goes to next fragment' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'down() goes to next fragment' );
Reveal.down(); // moves to f #3
// backwards:
Reveal.prev();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'prev() goes to prev fragment' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'prev() goes to prev fragment' );
Reveal.left();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'left() goes to prev fragment' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'left() goes to prev fragment' );
Reveal.up();
deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'up() goes to prev fragment' );
assert.deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'up() goes to prev fragment' );
});
test( 'Stepping past fragments', function() {
QUnit.test( 'Stepping past fragments', function( assert ) {
var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' );
Reveal.slide( 0, 0, 0 );
equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 0, 'no fragments visible when on previous slide' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 0, 'no fragments visible when on previous slide' );
Reveal.slide( 3, 0, 0 );
equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 3, 'all fragments visible when on future slide' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 3, 'all fragments visible when on future slide' );
});
test( 'Fragment indices', function() {
QUnit.test( 'Fragment indices', function( assert ) {
var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(2)' );
Reveal.slide( 3, 0, 0 );
equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 2, 'both fragments of same index are shown' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment.visible' ).length, 2, 'both fragments of same index are shown' );
// This slide has three fragments, first one is index 0, second and third have index 1
Reveal.slide( 2, 2, 0 );
equal( Reveal.getIndices().f, 0, 'returns correct index for first fragment' );
assert.equal( Reveal.getIndices().f, 0, 'returns correct index for first fragment' );
Reveal.slide( 2, 2, 1 );
equal( Reveal.getIndices().f, 1, 'returns correct index for two fragments with same index' );
assert.equal( Reveal.getIndices().f, 1, 'returns correct index for two fragments with same index' );
});
test( 'Index generation', function() {
QUnit.test( 'Index generation', function( assert ) {
var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(1)' );
// These have no indices defined to start with
equal( fragmentSlide.querySelectorAll( '.fragment' )[0].getAttribute( 'data-fragment-index' ), '0' );
equal( fragmentSlide.querySelectorAll( '.fragment' )[1].getAttribute( 'data-fragment-index' ), '1' );
equal( fragmentSlide.querySelectorAll( '.fragment' )[2].getAttribute( 'data-fragment-index' ), '2' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[0].getAttribute( 'data-fragment-index' ), '0' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[1].getAttribute( 'data-fragment-index' ), '1' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[2].getAttribute( 'data-fragment-index' ), '2' );
});
test( 'Index normalization', function() {
QUnit.test( 'Index normalization', function( assert ) {
var fragmentSlide = document.querySelector( '#fragment-slides>section:nth-child(3)' );
// These start out as 1-4-4 and should normalize to 0-1-1
equal( fragmentSlide.querySelectorAll( '.fragment' )[0].getAttribute( 'data-fragment-index' ), '0' );
equal( fragmentSlide.querySelectorAll( '.fragment' )[1].getAttribute( 'data-fragment-index' ), '1' );
equal( fragmentSlide.querySelectorAll( '.fragment' )[2].getAttribute( 'data-fragment-index' ), '1' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[0].getAttribute( 'data-fragment-index' ), '0' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[1].getAttribute( 'data-fragment-index' ), '1' );
assert.equal( fragmentSlide.querySelectorAll( '.fragment' )[2].getAttribute( 'data-fragment-index' ), '1' );
});
asyncTest( 'fragmentshown event', function() {
expect( 2 );
QUnit.test( 'fragmentshown event', function( assert ) {
assert.expect( 2 );
var done = assert.async( 2 );
var _onEvent = function( event ) {
ok( true, 'event fired' );
assert.ok( true, 'event fired' );
done();
}
Reveal.addEventListener( 'fragmentshown', _onEvent );
@@ -356,16 +364,16 @@ Reveal.addEventListener( 'ready', function() {
Reveal.next();
Reveal.prev(); // shouldn't fire fragmentshown
start();
Reveal.removeEventListener( 'fragmentshown', _onEvent );
});
asyncTest( 'fragmenthidden event', function() {
expect( 2 );
QUnit.test( 'fragmenthidden event', function( assert ) {
assert.expect( 2 );
var done = assert.async( 2 );
var _onEvent = function( event ) {
ok( true, 'event fired' );
assert.ok( true, 'event fired' );
done();
}
Reveal.addEventListener( 'fragmenthidden', _onEvent );
@@ -376,8 +384,6 @@ Reveal.addEventListener( 'ready', function() {
Reveal.prev();
Reveal.next(); // shouldn't fire fragmenthidden
start();
Reveal.removeEventListener( 'fragmenthidden', _onEvent );
});
@@ -387,50 +393,52 @@ Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Auto Sliding' );
test( 'Reveal.isAutoSliding', function() {
strictEqual( Reveal.isAutoSliding(), false, 'false by default' );
QUnit.test( 'Reveal.isAutoSliding', function( assert ) {
assert.strictEqual( Reveal.isAutoSliding(), false, 'false by default' );
Reveal.configure({ autoSlide: 10000 });
strictEqual( Reveal.isAutoSliding(), true, 'true after starting' );
assert.strictEqual( Reveal.isAutoSliding(), true, 'true after starting' );
Reveal.configure({ autoSlide: 0 });
strictEqual( Reveal.isAutoSliding(), false, 'false after setting to 0' );
assert.strictEqual( Reveal.isAutoSliding(), false, 'false after setting to 0' );
});
test( 'Reveal.toggleAutoSlide', function() {
QUnit.test( 'Reveal.toggleAutoSlide', function( assert ) {
Reveal.configure({ autoSlide: 10000 });
Reveal.toggleAutoSlide();
strictEqual( Reveal.isAutoSliding(), false, 'false after first toggle' );
assert.strictEqual( Reveal.isAutoSliding(), false, 'false after first toggle' );
Reveal.toggleAutoSlide();
strictEqual( Reveal.isAutoSliding(), true, 'true after second toggle' );
assert.strictEqual( Reveal.isAutoSliding(), true, 'true after second toggle' );
Reveal.configure({ autoSlide: 0 });
});
asyncTest( 'autoslidepaused', function() {
expect( 1 );
QUnit.test( 'autoslidepaused', function( assert ) {
assert.expect( 1 );
var done = assert.async();
var _onEvent = function( event ) {
ok( true, 'event fired' );
assert.ok( true, 'event fired' );
done();
}
Reveal.addEventListener( 'autoslidepaused', _onEvent );
Reveal.configure({ autoSlide: 10000 });
Reveal.toggleAutoSlide();
start();
// cleanup
Reveal.configure({ autoSlide: 0 });
Reveal.removeEventListener( 'autoslidepaused', _onEvent );
});
asyncTest( 'autoslideresumed', function() {
expect( 1 );
QUnit.test( 'autoslideresumed', function( assert ) {
assert.expect( 1 );
var done = assert.async();
var _onEvent = function( event ) {
ok( true, 'event fired' );
assert.ok( true, 'event fired' );
done();
}
Reveal.addEventListener( 'autoslideresumed', _onEvent );
@@ -438,8 +446,6 @@ Reveal.addEventListener( 'ready', function() {
Reveal.toggleAutoSlide();
Reveal.toggleAutoSlide();
start();
// cleanup
Reveal.configure({ autoSlide: 0 });
Reveal.removeEventListener( 'autoslideresumed', _onEvent );
@@ -451,36 +457,36 @@ Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Configuration' );
test( 'Controls', function() {
QUnit.test( 'Controls', function( assert ) {
var controlsElement = document.querySelector( '.reveal>.controls' );
Reveal.configure({ controls: false });
equal( controlsElement.style.display, 'none', 'controls are hidden' );
assert.equal( controlsElement.style.display, 'none', 'controls are hidden' );
Reveal.configure({ controls: true });
equal( controlsElement.style.display, 'block', 'controls are visible' );
assert.equal( controlsElement.style.display, 'block', 'controls are visible' );
});
test( 'Progress', function() {
QUnit.test( 'Progress', function( assert ) {
var progressElement = document.querySelector( '.reveal>.progress' );
Reveal.configure({ progress: false });
equal( progressElement.style.display, 'none', 'progress are hidden' );
assert.equal( progressElement.style.display, 'none', 'progress are hidden' );
Reveal.configure({ progress: true });
equal( progressElement.style.display, 'block', 'progress are visible' );
assert.equal( progressElement.style.display, 'block', 'progress are visible' );
});
test( 'Loop', function() {
QUnit.test( 'Loop', function( assert ) {
Reveal.configure({ loop: true });
Reveal.slide( 0, 0 );
Reveal.left();
notEqual( Reveal.getIndices().h, 0, 'looped from start to end' );
assert.notEqual( Reveal.getIndices().h, 0, 'looped from start to end' );
Reveal.right();
equal( Reveal.getIndices().h, 0, 'looped from end to start' );
assert.equal( Reveal.getIndices().h, 0, 'looped from end to start' );
Reveal.configure({ loop: false });
});
@@ -491,34 +497,34 @@ Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Lazy-Loading' );
test( 'img with data-src', function() {
strictEqual( document.querySelectorAll( '.reveal section img[src]' ).length, 1, 'Image source has been set' );
QUnit.test( 'img with data-src', function( assert ) {
assert.strictEqual( document.querySelectorAll( '.reveal section img[src]' ).length, 1, 'Image source has been set' );
});
test( 'video with data-src', function() {
strictEqual( document.querySelectorAll( '.reveal section video[src]' ).length, 1, 'Video source has been set' );
QUnit.test( 'video with data-src', function( assert ) {
assert.strictEqual( document.querySelectorAll( '.reveal section video[src]' ).length, 1, 'Video source has been set' );
});
test( 'audio with data-src', function() {
strictEqual( document.querySelectorAll( '.reveal section audio[src]' ).length, 1, 'Audio source has been set' );
QUnit.test( 'audio with data-src', function( assert ) {
assert.strictEqual( document.querySelectorAll( '.reveal section audio[src]' ).length, 1, 'Audio source has been set' );
});
test( 'iframe with data-src', function() {
QUnit.test( 'iframe with data-src', function( assert ) {
Reveal.slide( 0, 0 );
strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' );
assert.strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' );
Reveal.slide( 2, 1 );
strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 1, 'Iframe source is set' );
assert.strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 1, 'Iframe source is set' );
Reveal.slide( 2, 2 );
strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' );
assert.strictEqual( document.querySelectorAll( '.reveal section iframe[src]' ).length, 0, 'Iframe source is not set' );
});
test( 'background images', function() {
QUnit.test( 'background images', function( assert ) {
var imageSource1 = Reveal.getSlide( 0 ).getAttribute( 'data-background-image' );
var imageSource2 = Reveal.getSlide( 1, 0 ).getAttribute( 'data-background' );
// check that the images are applied to the background elements
ok( Reveal.getSlideBackground( 0 ).style.backgroundImage.indexOf( imageSource1 ) !== -1, 'data-background-image worked' );
ok( Reveal.getSlideBackground( 1, 0 ).style.backgroundImage.indexOf( imageSource2 ) !== -1, 'data-background worked' );
assert.ok( Reveal.getSlideBackground( 0 ).querySelector( '.slide-background-content' ).style.backgroundImage.indexOf( imageSource1 ) !== -1, 'data-background-image worked' );
assert.ok( Reveal.getSlideBackground( 1, 0 ).querySelector( '.slide-background-content' ).style.backgroundImage.indexOf( imageSource2 ) !== -1, 'data-background worked' );
});
@@ -527,11 +533,13 @@ Reveal.addEventListener( 'ready', function() {
QUnit.module( 'Events' );
asyncTest( 'slidechanged', function() {
expect( 3 );
QUnit.test( 'slidechanged', function( assert ) {
assert.expect( 3 );
var done = assert.async( 3 );
var _onEvent = function( event ) {
ok( true, 'event fired' );
assert.ok( true, 'event fired' );
done();
}
Reveal.addEventListener( 'slidechanged', _onEvent );
@@ -542,17 +550,17 @@ Reveal.addEventListener( 'ready', function() {
Reveal.slide( 3, 0 ); // should trigger
Reveal.next(); // should do nothing
start();
Reveal.removeEventListener( 'slidechanged', _onEvent );
});
asyncTest( 'paused', function() {
expect( 1 );
QUnit.test( 'paused', function( assert ) {
assert.expect( 1 );
var done = assert.async();
var _onEvent = function( event ) {
ok( true, 'event fired' );
assert.ok( true, 'event fired' );
done();
}
Reveal.addEventListener( 'paused', _onEvent );
@@ -560,16 +568,16 @@ Reveal.addEventListener( 'ready', function() {
Reveal.togglePause();
Reveal.togglePause();
start();
Reveal.removeEventListener( 'paused', _onEvent );
});
asyncTest( 'resumed', function() {
expect( 1 );
QUnit.test( 'resumed', function( assert ) {
assert.expect( 1 );
var done = assert.async();
var _onEvent = function( event ) {
ok( true, 'event fired' );
assert.ok( true, 'event fired' );
done();
}
Reveal.addEventListener( 'resumed', _onEvent );
@@ -577,13 +585,9 @@ Reveal.addEventListener( 'ready', function() {
Reveal.togglePause();
Reveal.togglePause();
start();
Reveal.removeEventListener( 'resumed', _onEvent );
});
} );
Reveal.initialize();