jekyll-theme-newtype 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +66 -0
  4. data/_includes/footer.html +4 -0
  5. data/_includes/head.html +22 -0
  6. data/_includes/header.html +31 -0
  7. data/_includes/navbar.html +9 -0
  8. data/_includes/post_preview.html +10 -0
  9. data/_includes/sidebar.html +1 -0
  10. data/_layouts/category_index.html +11 -0
  11. data/_layouts/default.html +29 -0
  12. data/_layouts/home.html +7 -0
  13. data/_layouts/page.html +5 -0
  14. data/_layouts/post.html +5 -0
  15. data/_layouts/slides.html +50 -0
  16. data/_sass/newtype.scss +32 -0
  17. data/_sass/skeleton/base/_base-styles.scss +37 -0
  18. data/_sass/skeleton/base/_functions.scss +17 -0
  19. data/_sass/skeleton/base/_normalize.scss +428 -0
  20. data/_sass/skeleton/base/_typography.scss +29 -0
  21. data/_sass/skeleton/base/_utils.scss +20 -0
  22. data/_sass/skeleton/base/_variables.scss +32 -0
  23. data/_sass/skeleton/modules/_buttons.scss +147 -0
  24. data/_sass/skeleton/modules/_code.scss +18 -0
  25. data/_sass/skeleton/modules/_forms.scss +88 -0
  26. data/_sass/skeleton/modules/_grid.scss +116 -0
  27. data/_sass/skeleton/modules/_lists.scss +32 -0
  28. data/_sass/skeleton/modules/_media-queries.scss +22 -0
  29. data/_sass/skeleton/modules/_spacing.scss +26 -0
  30. data/_sass/skeleton/modules/_tables.scss +19 -0
  31. data/_sass/skeleton/normalize.scss +427 -0
  32. data/_sass/skeleton/skeleton.scss +418 -0
  33. data/_sass/syntax.scss +60 -0
  34. data/assets/bullet.svg +13 -0
  35. data/assets/revealjs/.gitignore +13 -0
  36. data/assets/revealjs/.travis.yml +7 -0
  37. data/assets/revealjs/CONTRIBUTING.md +23 -0
  38. data/assets/revealjs/Gruntfile.js +192 -0
  39. data/assets/revealjs/LICENSE +19 -0
  40. data/assets/revealjs/README.md +1238 -0
  41. data/assets/revealjs/bower.json +27 -0
  42. data/assets/revealjs/css/print/paper.css +203 -0
  43. data/assets/revealjs/css/print/pdf.css +178 -0
  44. data/assets/revealjs/css/reveal.css +1555 -0
  45. data/assets/revealjs/css/reveal.scss +1717 -0
  46. data/assets/revealjs/css/theme/README.md +21 -0
  47. data/assets/revealjs/css/theme/beige.css +268 -0
  48. data/assets/revealjs/css/theme/black.css +264 -0
  49. data/assets/revealjs/css/theme/blood.css +287 -0
  50. data/assets/revealjs/css/theme/league.css +270 -0
  51. data/assets/revealjs/css/theme/moon.css +268 -0
  52. data/assets/revealjs/css/theme/night.css +262 -0
  53. data/assets/revealjs/css/theme/serif.css +264 -0
  54. data/assets/revealjs/css/theme/simple.css +267 -0
  55. data/assets/revealjs/css/theme/sky.css +271 -0
  56. data/assets/revealjs/css/theme/solarized.css +268 -0
  57. data/assets/revealjs/css/theme/source/beige.scss +39 -0
  58. data/assets/revealjs/css/theme/source/black.scss +49 -0
  59. data/assets/revealjs/css/theme/source/blood.scss +78 -0
  60. data/assets/revealjs/css/theme/source/league.scss +34 -0
  61. data/assets/revealjs/css/theme/source/moon.scss +57 -0
  62. data/assets/revealjs/css/theme/source/night.scss +34 -0
  63. data/assets/revealjs/css/theme/source/serif.scss +35 -0
  64. data/assets/revealjs/css/theme/source/simple.scss +43 -0
  65. data/assets/revealjs/css/theme/source/sky.scss +46 -0
  66. data/assets/revealjs/css/theme/source/solarized.scss +63 -0
  67. data/assets/revealjs/css/theme/source/white.scss +49 -0
  68. data/assets/revealjs/css/theme/template/mixins.scss +29 -0
  69. data/assets/revealjs/css/theme/template/settings.scss +43 -0
  70. data/assets/revealjs/css/theme/template/theme.scss +316 -0
  71. data/assets/revealjs/css/theme/white.css +264 -0
  72. data/assets/revealjs/demo.html +410 -0
  73. data/assets/revealjs/index.html +49 -0
  74. data/assets/revealjs/js/reveal.js +5239 -0
  75. data/assets/revealjs/lib/css/zenburn.css +80 -0
  76. data/assets/revealjs/lib/font/league-gothic/LICENSE +2 -0
  77. data/assets/revealjs/lib/font/league-gothic/league-gothic.css +10 -0
  78. data/assets/revealjs/lib/font/league-gothic/league-gothic.eot +0 -0
  79. data/assets/revealjs/lib/font/league-gothic/league-gothic.ttf +0 -0
  80. data/assets/revealjs/lib/font/league-gothic/league-gothic.woff +0 -0
  81. data/assets/revealjs/lib/font/source-sans-pro/LICENSE +45 -0
  82. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
  83. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.ttf +0 -0
  84. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
  85. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
  86. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.ttf +0 -0
  87. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
  88. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
  89. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.ttf +0 -0
  90. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
  91. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot +0 -0
  92. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf +0 -0
  93. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff +0 -0
  94. data/assets/revealjs/lib/font/source-sans-pro/source-sans-pro.css +39 -0
  95. data/assets/revealjs/lib/js/classList.js +2 -0
  96. data/assets/revealjs/lib/js/head.min.js +9 -0
  97. data/assets/revealjs/lib/js/html5shiv.js +7 -0
  98. data/assets/revealjs/package.json +43 -0
  99. data/assets/revealjs/plugin/highlight/highlight.js +77 -0
  100. data/assets/revealjs/plugin/markdown/markdown.js +412 -0
  101. data/assets/revealjs/plugin/markdown/marked.js +6 -0
  102. data/assets/revealjs/plugin/math/math.js +67 -0
  103. data/assets/revealjs/plugin/multiplex/client.js +13 -0
  104. data/assets/revealjs/plugin/multiplex/index.js +64 -0
  105. data/assets/revealjs/plugin/multiplex/master.js +34 -0
  106. data/assets/revealjs/plugin/multiplex/package.json +19 -0
  107. data/assets/revealjs/plugin/notes/notes.html +759 -0
  108. data/assets/revealjs/plugin/notes/notes.js +155 -0
  109. data/assets/revealjs/plugin/notes-server/client.js +65 -0
  110. data/assets/revealjs/plugin/notes-server/index.js +69 -0
  111. data/assets/revealjs/plugin/notes-server/notes.html +585 -0
  112. data/assets/revealjs/plugin/print-pdf/print-pdf.js +69 -0
  113. data/assets/revealjs/plugin/search/search.js +206 -0
  114. data/assets/revealjs/plugin/zoom-js/zoom.js +272 -0
  115. data/assets/revealjs/test/examples/assets/image1.png +0 -0
  116. data/assets/revealjs/test/examples/assets/image2.png +0 -0
  117. data/assets/revealjs/test/examples/barebones.html +41 -0
  118. data/assets/revealjs/test/examples/embedded-media.html +49 -0
  119. data/assets/revealjs/test/examples/math.html +185 -0
  120. data/assets/revealjs/test/examples/slide-backgrounds.html +144 -0
  121. data/assets/revealjs/test/examples/slide-transitions.html +101 -0
  122. data/assets/revealjs/test/qunit-1.12.0.css +244 -0
  123. data/assets/revealjs/test/qunit-1.12.0.js +2212 -0
  124. data/assets/revealjs/test/test-markdown-element-attributes.html +134 -0
  125. data/assets/revealjs/test/test-markdown-element-attributes.js +46 -0
  126. data/assets/revealjs/test/test-markdown-external.html +36 -0
  127. data/assets/revealjs/test/test-markdown-external.js +24 -0
  128. data/assets/revealjs/test/test-markdown-options.html +41 -0
  129. data/assets/revealjs/test/test-markdown-options.js +26 -0
  130. data/assets/revealjs/test/test-markdown-slide-attributes.html +128 -0
  131. data/assets/revealjs/test/test-markdown-slide-attributes.js +47 -0
  132. data/assets/revealjs/test/test-markdown.html +52 -0
  133. data/assets/revealjs/test/test-markdown.js +15 -0
  134. data/assets/revealjs/test/test-pdf.html +83 -0
  135. data/assets/revealjs/test/test-pdf.js +15 -0
  136. data/assets/revealjs/test/test.html +86 -0
  137. data/assets/revealjs/test/test.js +597 -0
  138. data/assets/social-github.svg +14 -0
  139. data/assets/social-twitter.png +0 -0
  140. data/assets/social-twitter.svg +12 -0
  141. data/assets/style.scss +4 -0
  142. metadata +226 -0
@@ -0,0 +1,206 @@
1
+ /*
2
+ * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
3
+ * by navigatating to that slide and highlighting it.
4
+ *
5
+ * By Jon Snyder <snyder.jon@gmail.com>, February 2013
6
+ */
7
+
8
+ var RevealSearch = (function() {
9
+
10
+ var matchedSlides;
11
+ var currentMatchedIndex;
12
+ var searchboxDirty;
13
+ var myHilitor;
14
+
15
+ // Original JavaScript code by Chirp Internet: www.chirp.com.au
16
+ // Please acknowledge use of this code by including this header.
17
+ // 2/2013 jon: modified regex to display any match, not restricted to word boundaries.
18
+
19
+ function Hilitor(id, tag)
20
+ {
21
+
22
+ var targetNode = document.getElementById(id) || document.body;
23
+ var hiliteTag = tag || "EM";
24
+ var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$");
25
+ var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"];
26
+ var wordColor = [];
27
+ var colorIdx = 0;
28
+ var matchRegex = "";
29
+ var matchingSlides = [];
30
+
31
+ this.setRegex = function(input)
32
+ {
33
+ input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|");
34
+ matchRegex = new RegExp("(" + input + ")","i");
35
+ }
36
+
37
+ this.getRegex = function()
38
+ {
39
+ return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " ");
40
+ }
41
+
42
+ // recursively apply word highlighting
43
+ this.hiliteWords = function(node)
44
+ {
45
+ if(node == undefined || !node) return;
46
+ if(!matchRegex) return;
47
+ if(skipTags.test(node.nodeName)) return;
48
+
49
+ if(node.hasChildNodes()) {
50
+ for(var i=0; i < node.childNodes.length; i++)
51
+ this.hiliteWords(node.childNodes[i]);
52
+ }
53
+ if(node.nodeType == 3) { // NODE_TEXT
54
+ if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) {
55
+ //find the slide's section element and save it in our list of matching slides
56
+ var secnode = node;
57
+ while (secnode != null && secnode.nodeName != 'SECTION') {
58
+ secnode = secnode.parentNode;
59
+ }
60
+
61
+ var slideIndex = Reveal.getIndices(secnode);
62
+ var slidelen = matchingSlides.length;
63
+ var alreadyAdded = false;
64
+ for (var i=0; i < slidelen; i++) {
65
+ if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) {
66
+ alreadyAdded = true;
67
+ }
68
+ }
69
+ if (! alreadyAdded) {
70
+ matchingSlides.push(slideIndex);
71
+ }
72
+
73
+ if(!wordColor[regs[0].toLowerCase()]) {
74
+ wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length];
75
+ }
76
+
77
+ var match = document.createElement(hiliteTag);
78
+ match.appendChild(document.createTextNode(regs[0]));
79
+ match.style.backgroundColor = wordColor[regs[0].toLowerCase()];
80
+ match.style.fontStyle = "inherit";
81
+ match.style.color = "#000";
82
+
83
+ var after = node.splitText(regs.index);
84
+ after.nodeValue = after.nodeValue.substring(regs[0].length);
85
+ node.parentNode.insertBefore(match, after);
86
+ }
87
+ }
88
+ };
89
+
90
+ // remove highlighting
91
+ this.remove = function()
92
+ {
93
+ var arr = document.getElementsByTagName(hiliteTag);
94
+ while(arr.length && (el = arr[0])) {
95
+ el.parentNode.replaceChild(el.firstChild, el);
96
+ }
97
+ };
98
+
99
+ // start highlighting at target node
100
+ this.apply = function(input)
101
+ {
102
+ if(input == undefined || !input) return;
103
+ this.remove();
104
+ this.setRegex(input);
105
+ this.hiliteWords(targetNode);
106
+ return matchingSlides;
107
+ };
108
+
109
+ }
110
+
111
+ function openSearch() {
112
+ //ensure the search term input dialog is visible and has focus:
113
+ var inputboxdiv = document.getElementById("searchinputdiv");
114
+ var inputbox = document.getElementById("searchinput");
115
+ inputboxdiv.style.display = "inline";
116
+ inputbox.focus();
117
+ inputbox.select();
118
+ }
119
+
120
+ function closeSearch() {
121
+ var inputboxdiv = document.getElementById("searchinputdiv");
122
+ inputboxdiv.style.display = "none";
123
+ if(myHilitor) myHilitor.remove();
124
+ }
125
+
126
+ function toggleSearch() {
127
+ var inputboxdiv = document.getElementById("searchinputdiv");
128
+ if (inputboxdiv.style.display !== "inline") {
129
+ openSearch();
130
+ }
131
+ else {
132
+ closeSearch();
133
+ }
134
+ }
135
+
136
+ function doSearch() {
137
+ //if there's been a change in the search term, perform a new search:
138
+ if (searchboxDirty) {
139
+ var searchstring = document.getElementById("searchinput").value;
140
+
141
+ if (searchstring === '') {
142
+ if(myHilitor) myHilitor.remove();
143
+ matchedSlides = null;
144
+ }
145
+ else {
146
+ //find the keyword amongst the slides
147
+ myHilitor = new Hilitor("slidecontent");
148
+ matchedSlides = myHilitor.apply(searchstring);
149
+ currentMatchedIndex = 0;
150
+ }
151
+ }
152
+
153
+ if (matchedSlides) {
154
+ //navigate to the next slide that has the keyword, wrapping to the first if necessary
155
+ if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) {
156
+ currentMatchedIndex = 0;
157
+ }
158
+ if (matchedSlides.length > currentMatchedIndex) {
159
+ Reveal.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v);
160
+ currentMatchedIndex++;
161
+ }
162
+ }
163
+ }
164
+
165
+ var dom = {};
166
+ dom.wrapper = document.querySelector( '.reveal' );
167
+
168
+ if( !dom.wrapper.querySelector( '.searchbox' ) ) {
169
+ var searchElement = document.createElement( 'div' );
170
+ searchElement.id = "searchinputdiv";
171
+ searchElement.classList.add( 'searchdiv' );
172
+ searchElement.style.position = 'absolute';
173
+ searchElement.style.top = '10px';
174
+ searchElement.style.right = '10px';
175
+ searchElement.style.zIndex = 10;
176
+ //embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/:
177
+ 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>';
178
+ dom.wrapper.appendChild( searchElement );
179
+ }
180
+
181
+ document.getElementById("searchbutton").addEventListener( 'click', function(event) {
182
+ doSearch();
183
+ }, false );
184
+
185
+ document.getElementById("searchinput").addEventListener( 'keyup', function( event ) {
186
+ switch (event.keyCode) {
187
+ case 13:
188
+ event.preventDefault();
189
+ doSearch();
190
+ searchboxDirty = false;
191
+ break;
192
+ default:
193
+ searchboxDirty = true;
194
+ }
195
+ }, false );
196
+
197
+ document.addEventListener( 'keydown', function( event ) {
198
+ if( event.key == "F" && (event.ctrlKey || event.metaKey) ) {//Control+Shift+f
199
+ event.preventDefault();
200
+ toggleSearch();
201
+ }
202
+ }, false );
203
+ if( window.Reveal ) Reveal.registerKeyboardShortcut( 'Ctrl-Shift-F', 'Search' );
204
+ closeSearch();
205
+ return { open: openSearch };
206
+ })();
@@ -0,0 +1,272 @@
1
+ // Custom reveal.js integration
2
+ (function(){
3
+ var revealElement = document.querySelector( '.reveal' );
4
+ if( revealElement ) {
5
+
6
+ revealElement.addEventListener( 'mousedown', function( event ) {
7
+ var defaultModifier = /Linux/.test( window.navigator.platform ) ? 'ctrl' : 'alt';
8
+
9
+ var modifier = ( Reveal.getConfig().zoomKey ? Reveal.getConfig().zoomKey : defaultModifier ) + 'Key';
10
+ var zoomLevel = ( Reveal.getConfig().zoomLevel ? Reveal.getConfig().zoomLevel : 2 );
11
+
12
+ if( event[ modifier ] && !Reveal.isOverview() ) {
13
+ event.preventDefault();
14
+
15
+ zoom.to({
16
+ x: event.clientX,
17
+ y: event.clientY,
18
+ scale: zoomLevel,
19
+ pan: false
20
+ });
21
+ }
22
+ } );
23
+
24
+ }
25
+ })();
26
+
27
+ /*!
28
+ * zoom.js 0.3 (modified for use with reveal.js)
29
+ * http://lab.hakim.se/zoom-js
30
+ * MIT licensed
31
+ *
32
+ * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
33
+ */
34
+ var zoom = (function(){
35
+
36
+ // The current zoom level (scale)
37
+ var level = 1;
38
+
39
+ // The current mouse position, used for panning
40
+ var mouseX = 0,
41
+ mouseY = 0;
42
+
43
+ // Timeout before pan is activated
44
+ var panEngageTimeout = -1,
45
+ panUpdateInterval = -1;
46
+
47
+ // Check for transform support so that we can fallback otherwise
48
+ var supportsTransforms = 'WebkitTransform' in document.body.style ||
49
+ 'MozTransform' in document.body.style ||
50
+ 'msTransform' in document.body.style ||
51
+ 'OTransform' in document.body.style ||
52
+ 'transform' in document.body.style;
53
+
54
+ if( supportsTransforms ) {
55
+ // The easing that will be applied when we zoom in/out
56
+ document.body.style.transition = 'transform 0.8s ease';
57
+ document.body.style.OTransition = '-o-transform 0.8s ease';
58
+ document.body.style.msTransition = '-ms-transform 0.8s ease';
59
+ document.body.style.MozTransition = '-moz-transform 0.8s ease';
60
+ document.body.style.WebkitTransition = '-webkit-transform 0.8s ease';
61
+ }
62
+
63
+ // Zoom out if the user hits escape
64
+ document.addEventListener( 'keyup', function( event ) {
65
+ if( level !== 1 && event.keyCode === 27 ) {
66
+ zoom.out();
67
+ }
68
+ } );
69
+
70
+ // Monitor mouse movement for panning
71
+ document.addEventListener( 'mousemove', function( event ) {
72
+ if( level !== 1 ) {
73
+ mouseX = event.clientX;
74
+ mouseY = event.clientY;
75
+ }
76
+ } );
77
+
78
+ /**
79
+ * Applies the CSS required to zoom in, prefers the use of CSS3
80
+ * transforms but falls back on zoom for IE.
81
+ *
82
+ * @param {Object} rect
83
+ * @param {Number} scale
84
+ */
85
+ function magnify( rect, scale ) {
86
+
87
+ var scrollOffset = getScrollOffset();
88
+
89
+ // Ensure a width/height is set
90
+ rect.width = rect.width || 1;
91
+ rect.height = rect.height || 1;
92
+
93
+ // Center the rect within the zoomed viewport
94
+ rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2;
95
+ rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2;
96
+
97
+ if( supportsTransforms ) {
98
+ // Reset
99
+ if( scale === 1 ) {
100
+ document.body.style.transform = '';
101
+ document.body.style.OTransform = '';
102
+ document.body.style.msTransform = '';
103
+ document.body.style.MozTransform = '';
104
+ document.body.style.WebkitTransform = '';
105
+ }
106
+ // Scale
107
+ else {
108
+ var origin = scrollOffset.x +'px '+ scrollOffset.y +'px',
109
+ transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')';
110
+
111
+ document.body.style.transformOrigin = origin;
112
+ document.body.style.OTransformOrigin = origin;
113
+ document.body.style.msTransformOrigin = origin;
114
+ document.body.style.MozTransformOrigin = origin;
115
+ document.body.style.WebkitTransformOrigin = origin;
116
+
117
+ document.body.style.transform = transform;
118
+ document.body.style.OTransform = transform;
119
+ document.body.style.msTransform = transform;
120
+ document.body.style.MozTransform = transform;
121
+ document.body.style.WebkitTransform = transform;
122
+ }
123
+ }
124
+ else {
125
+ // Reset
126
+ if( scale === 1 ) {
127
+ document.body.style.position = '';
128
+ document.body.style.left = '';
129
+ document.body.style.top = '';
130
+ document.body.style.width = '';
131
+ document.body.style.height = '';
132
+ document.body.style.zoom = '';
133
+ }
134
+ // Scale
135
+ else {
136
+ document.body.style.position = 'relative';
137
+ document.body.style.left = ( - ( scrollOffset.x + rect.x ) / scale ) + 'px';
138
+ document.body.style.top = ( - ( scrollOffset.y + rect.y ) / scale ) + 'px';
139
+ document.body.style.width = ( scale * 100 ) + '%';
140
+ document.body.style.height = ( scale * 100 ) + '%';
141
+ document.body.style.zoom = scale;
142
+ }
143
+ }
144
+
145
+ level = scale;
146
+
147
+ if( document.documentElement.classList ) {
148
+ if( level !== 1 ) {
149
+ document.documentElement.classList.add( 'zoomed' );
150
+ }
151
+ else {
152
+ document.documentElement.classList.remove( 'zoomed' );
153
+ }
154
+ }
155
+ }
156
+
157
+ /**
158
+ * Pan the document when the mosue cursor approaches the edges
159
+ * of the window.
160
+ */
161
+ function pan() {
162
+ var range = 0.12,
163
+ rangeX = window.innerWidth * range,
164
+ rangeY = window.innerHeight * range,
165
+ scrollOffset = getScrollOffset();
166
+
167
+ // Up
168
+ if( mouseY < rangeY ) {
169
+ window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) );
170
+ }
171
+ // Down
172
+ else if( mouseY > window.innerHeight - rangeY ) {
173
+ window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) );
174
+ }
175
+
176
+ // Left
177
+ if( mouseX < rangeX ) {
178
+ window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y );
179
+ }
180
+ // Right
181
+ else if( mouseX > window.innerWidth - rangeX ) {
182
+ window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y );
183
+ }
184
+ }
185
+
186
+ function getScrollOffset() {
187
+ return {
188
+ x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset,
189
+ y: window.scrollY !== undefined ? window.scrollY : window.pageYOffset
190
+ }
191
+ }
192
+
193
+ return {
194
+ /**
195
+ * Zooms in on either a rectangle or HTML element.
196
+ *
197
+ * @param {Object} options
198
+ * - element: HTML element to zoom in on
199
+ * OR
200
+ * - x/y: coordinates in non-transformed space to zoom in on
201
+ * - width/height: the portion of the screen to zoom in on
202
+ * - scale: can be used instead of width/height to explicitly set scale
203
+ */
204
+ to: function( options ) {
205
+
206
+ // Due to an implementation limitation we can't zoom in
207
+ // to another element without zooming out first
208
+ if( level !== 1 ) {
209
+ zoom.out();
210
+ }
211
+ else {
212
+ options.x = options.x || 0;
213
+ options.y = options.y || 0;
214
+
215
+ // If an element is set, that takes precedence
216
+ if( !!options.element ) {
217
+ // Space around the zoomed in element to leave on screen
218
+ var padding = 20;
219
+ var bounds = options.element.getBoundingClientRect();
220
+
221
+ options.x = bounds.left - padding;
222
+ options.y = bounds.top - padding;
223
+ options.width = bounds.width + ( padding * 2 );
224
+ options.height = bounds.height + ( padding * 2 );
225
+ }
226
+
227
+ // If width/height values are set, calculate scale from those values
228
+ if( options.width !== undefined && options.height !== undefined ) {
229
+ options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 );
230
+ }
231
+
232
+ if( options.scale > 1 ) {
233
+ options.x *= options.scale;
234
+ options.y *= options.scale;
235
+
236
+ magnify( options, options.scale );
237
+
238
+ if( options.pan !== false ) {
239
+
240
+ // Wait with engaging panning as it may conflict with the
241
+ // zoom transition
242
+ panEngageTimeout = setTimeout( function() {
243
+ panUpdateInterval = setInterval( pan, 1000 / 60 );
244
+ }, 800 );
245
+
246
+ }
247
+ }
248
+ }
249
+ },
250
+
251
+ /**
252
+ * Resets the document zoom state to its default.
253
+ */
254
+ out: function() {
255
+ clearTimeout( panEngageTimeout );
256
+ clearInterval( panUpdateInterval );
257
+
258
+ magnify( { x: 0, y: 0 }, 1 );
259
+
260
+ level = 1;
261
+ },
262
+
263
+ // Alias
264
+ magnify: function( options ) { this.to( options ) },
265
+ reset: function() { this.out() },
266
+
267
+ zoomLevel: function() {
268
+ return level;
269
+ }
270
+ }
271
+
272
+ })();
@@ -0,0 +1,41 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+
7
+ <title>reveal.js - Barebones</title>
8
+
9
+ <link rel="stylesheet" href="../../css/reveal.css">
10
+ </head>
11
+
12
+ <body>
13
+
14
+ <div class="reveal">
15
+
16
+ <div class="slides">
17
+
18
+ <section>
19
+ <h2>Barebones Presentation</h2>
20
+ <p>This example contains the bare minimum includes and markup required to run a reveal.js presentation.</p>
21
+ </section>
22
+
23
+ <section>
24
+ <h2>No Theme</h2>
25
+ <p>There's no theme included, so it will fall back on browser defaults.</p>
26
+ </section>
27
+
28
+ </div>
29
+
30
+ </div>
31
+
32
+ <script src="../../js/reveal.js"></script>
33
+
34
+ <script>
35
+
36
+ Reveal.initialize();
37
+
38
+ </script>
39
+
40
+ </body>
41
+ </html>
@@ -0,0 +1,49 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+
7
+ <title>reveal.js - Embedded Media</title>
8
+
9
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
10
+
11
+ <link rel="stylesheet" href="../../css/reveal.css">
12
+ <link rel="stylesheet" href="../../css/theme/default.css" id="theme">
13
+ </head>
14
+
15
+ <body>
16
+
17
+ <div class="reveal">
18
+
19
+ <div class="slides">
20
+
21
+ <section>
22
+ <h2>Embedded Media Test</h2>
23
+ </section>
24
+
25
+ <section>
26
+ <iframe data-autoplay width="420" height="345" src="http://www.youtube.com/embed/l3RQZ4mcr1c"></iframe>
27
+ </section>
28
+
29
+ <section>
30
+ <h2>Empty Slide</h2>
31
+ </section>
32
+
33
+ </div>
34
+
35
+ </div>
36
+
37
+ <script src="../../lib/js/head.min.js"></script>
38
+ <script src="../../js/reveal.js"></script>
39
+
40
+ <script>
41
+
42
+ Reveal.initialize({
43
+ transition: 'linear'
44
+ });
45
+
46
+ </script>
47
+
48
+ </body>
49
+ </html>