keydown 0.7.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.travis.yml +3 -0
- data/LICENSE +1 -1
- data/README.md +16 -15
- data/VERSION +1 -1
- data/keydown.gemspec +9 -6
- data/lib/keydown.rb +9 -22
- data/lib/keydown/html_helpers.rb +12 -0
- data/lib/keydown/{lib/slide.rb → slide.rb} +16 -19
- data/lib/keydown/{lib/slidedeck.rb → slidedeck.rb} +20 -5
- data/lib/keydown/tasks.rb +5 -0
- data/lib/keydown/tasks/base.rb +15 -0
- data/lib/keydown/tasks/generate.rb +5 -1
- data/lib/keydown/tasks/slides.rb +1 -1
- data/lib/version.rb +1 -1
- data/spec/lib/html_helpers_spec.rb +26 -0
- data/spec/lib/slide_spec.rb +29 -17
- data/spec/lib/slidedeck_spec.rb +41 -13
- data/spec/spec_helper.rb +2 -6
- data/spec/tasks/generate_spec.rb +41 -20
- data/spec/tasks/slides_spec.rb +83 -44
- data/templates/deck.js/code.html.haml +1 -0
- data/templates/deck.js/index.html.haml +54 -0
- data/templates/deck.js/slide.html.haml +6 -0
- data/templates/generate/css/%presentation_name%.css +12 -1
- data/templates/generate/deck.js/core/deck.core.css +394 -0
- data/templates/generate/deck.js/core/deck.core.js +461 -0
- data/templates/generate/deck.js/core/deck.core.scss +432 -0
- data/templates/generate/deck.js/extensions/codemirror/CONTRIBUTORS.txt +2 -0
- data/templates/generate/deck.js/extensions/codemirror/MIT-LICENSE.txt +21 -0
- data/templates/generate/deck.js/extensions/codemirror/README.md +120 -0
- data/templates/generate/deck.js/extensions/codemirror/VERSION.txt +1 -0
- data/templates/generate/deck.js/extensions/codemirror/codemirror.js +21 -0
- data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.css +89 -0
- data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.js +213 -0
- data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.scss +107 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clike/clike.js +247 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clike/index.html +102 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clojure/clojure.js +207 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clojure/index.html +85 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/LICENSE +22 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/coffeescript.js +325 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/index.html +722 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/css/css.js +124 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/css/index.html +56 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.css +3 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.js +13 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/diff/index.html +99 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/haskell/haskell.js +242 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/haskell/index.html +60 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/htmlmixed.js +79 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/index.html +52 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/javascript/index.html +78 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/javascript/javascript.js +348 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/lua/index.html +72 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/lua/lua.js +138 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/php/index.html +49 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/php/php.js +115 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/plsql/index.html +63 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/plsql/plsql.js +217 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/python/LICENSE.txt +21 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/python/index.html +123 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/python/python.js +321 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/r/LICENSE +24 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/r/index.html +74 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/r/r.js +141 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/rst/index.html +526 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.css +75 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.js +333 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/ruby/LICENSE +24 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/ruby/index.html +172 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/ruby/ruby.js +195 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/scheme/index.html +65 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/scheme/scheme.js +202 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/index.html +56 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/smalltalk.js +122 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/sparql/index.html +41 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/sparql/sparql.js +143 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/stex/index.html +96 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/stex/stex.js +167 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/velocity/index.html +103 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/velocity/velocity.js +146 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xml/index.html +42 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xml/xml.js +231 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/index.html +60 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/xmlpure.js +481 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/yaml/index.html +68 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/yaml/yaml.js +95 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/cobalt.css +17 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/default.css +19 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/elegant.css +9 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/neat.css +8 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/night.css +20 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.css +41 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.html +6 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.js +118 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.scss +46 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.css +13 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.html +2 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.js +125 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.scss +15 -0
- data/templates/generate/deck.js/extensions/menu/deck.menu.css +24 -0
- data/templates/generate/deck.js/extensions/menu/deck.menu.js +127 -0
- data/templates/generate/deck.js/extensions/menu/deck.menu.scss +29 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.css +43 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.html +3 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.js +83 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.scss +56 -0
- data/templates/generate/deck.js/extensions/scale/deck.scale.css +16 -0
- data/templates/generate/deck.js/extensions/scale/deck.scale.js +155 -0
- data/templates/generate/deck.js/extensions/scale/deck.scale.scss +17 -0
- data/templates/generate/deck.js/extensions/status/deck.status.css +14 -0
- data/templates/generate/deck.js/extensions/status/deck.status.html +6 -0
- data/templates/generate/deck.js/extensions/status/deck.status.js +42 -0
- data/templates/generate/deck.js/extensions/status/deck.status.scss +16 -0
- data/templates/generate/deck.js/support/jquery.1.6.4.min.js +4 -0
- data/templates/generate/deck.js/support/modernizr.custom.js +4 -0
- data/templates/generate/deck.js/themes/style/neon.css +114 -0
- data/templates/generate/deck.js/themes/style/neon.scss +139 -0
- data/templates/generate/deck.js/themes/style/swiss.css +75 -0
- data/templates/generate/deck.js/themes/style/swiss.scss +91 -0
- data/templates/generate/deck.js/themes/style/web-2.0.css +187 -0
- data/templates/generate/deck.js/themes/style/web-2.0.scss +214 -0
- data/templates/generate/deck.js/themes/transition/fade.css +44 -0
- data/templates/generate/deck.js/themes/transition/fade.scss +70 -0
- data/templates/generate/deck.js/themes/transition/horizontal-slide.css +79 -0
- data/templates/generate/deck.js/themes/transition/horizontal-slide.scss +94 -0
- data/templates/generate/deck.js/themes/transition/vertical-slide.css +97 -0
- data/templates/generate/deck.js/themes/transition/vertical-slide.scss +116 -0
- data/templates/keydown.css.erb +27 -23
- metadata +171 -32
- data/Gemfile.lock +0 -41
- data/templates/generate/css/rocks.css +0 -392
- data/templates/generate/css/syntax_highlighting.css +0 -135
- data/templates/generate/js/rocks.js +0 -419
- data/templates/rocks/index.rhtml +0 -132
- data/templates/rocks/slide.rhtml +0 -10
@@ -1,419 +0,0 @@
|
|
1
|
-
(function() {
|
2
|
-
var doc = document;
|
3
|
-
var disableBuilds = true;
|
4
|
-
|
5
|
-
var ctr = 0;
|
6
|
-
var spaces = /\s+/, a1 = [''];
|
7
|
-
|
8
|
-
var toArray = function(list) {
|
9
|
-
return Array.prototype.slice.call(list || [], 0);
|
10
|
-
};
|
11
|
-
|
12
|
-
var byId = function(id) {
|
13
|
-
if (typeof id == 'string') {
|
14
|
-
return doc.getElementById(id);
|
15
|
-
}
|
16
|
-
return id;
|
17
|
-
};
|
18
|
-
|
19
|
-
var query = function(query, root) {
|
20
|
-
if (!query) {
|
21
|
-
return [];
|
22
|
-
}
|
23
|
-
if (typeof query != 'string') {
|
24
|
-
return toArray(query);
|
25
|
-
}
|
26
|
-
if (typeof root == 'string') {
|
27
|
-
root = byId(root);
|
28
|
-
if (!root) {
|
29
|
-
return [];
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
root = root || document;
|
34
|
-
var rootIsDoc = (root.nodeType == 9);
|
35
|
-
var doc = rootIsDoc ? root : (root.ownerDocument || document);
|
36
|
-
|
37
|
-
// rewrite the query to be ID rooted
|
38
|
-
if (!rootIsDoc || ('>~+'.indexOf(query.charAt(0)) >= 0)) {
|
39
|
-
root.id = root.id || ('qUnique' + (ctr++));
|
40
|
-
query = '#' + root.id + ' ' + query;
|
41
|
-
}
|
42
|
-
// don't choke on something like ".yada.yada >"
|
43
|
-
if ('>~+'.indexOf(query.slice(-1)) >= 0) {
|
44
|
-
query += ' *';
|
45
|
-
}
|
46
|
-
|
47
|
-
return toArray(doc.querySelectorAll(query));
|
48
|
-
};
|
49
|
-
|
50
|
-
var strToArray = function(s) {
|
51
|
-
if (typeof s == 'string' || s instanceof String) {
|
52
|
-
if (s.indexOf(' ') < 0) {
|
53
|
-
a1[0] = s;
|
54
|
-
return a1;
|
55
|
-
} else {
|
56
|
-
return s.split(spaces);
|
57
|
-
}
|
58
|
-
}
|
59
|
-
return s;
|
60
|
-
};
|
61
|
-
|
62
|
-
var addClass = function(node, classStr) {
|
63
|
-
classStr = strToArray(classStr);
|
64
|
-
var cls = ' ' + node.className + ' ';
|
65
|
-
for (var i = 0, len = classStr.length, c; i < len; ++i) {
|
66
|
-
c = classStr[i];
|
67
|
-
if (c && cls.indexOf(' ' + c + ' ') < 0) {
|
68
|
-
cls += c + ' ';
|
69
|
-
}
|
70
|
-
}
|
71
|
-
node.className = cls.trim();
|
72
|
-
};
|
73
|
-
|
74
|
-
var removeClass = function(node, classStr) {
|
75
|
-
var cls;
|
76
|
-
if (classStr !== undefined) {
|
77
|
-
classStr = strToArray(classStr);
|
78
|
-
cls = ' ' + node.className + ' ';
|
79
|
-
for (var i = 0, len = classStr.length; i < len; ++i) {
|
80
|
-
cls = cls.replace(' ' + classStr[i] + ' ', ' ');
|
81
|
-
}
|
82
|
-
cls = cls.trim();
|
83
|
-
} else {
|
84
|
-
cls = '';
|
85
|
-
}
|
86
|
-
if (node.className != cls) {
|
87
|
-
node.className = cls;
|
88
|
-
}
|
89
|
-
};
|
90
|
-
|
91
|
-
var toggleClass = function(node, classStr) {
|
92
|
-
var cls = ' ' + node.className + ' ';
|
93
|
-
if (cls.indexOf(' ' + classStr.trim() + ' ') >= 0) {
|
94
|
-
removeClass(node, classStr);
|
95
|
-
} else {
|
96
|
-
addClass(node, classStr);
|
97
|
-
}
|
98
|
-
};
|
99
|
-
|
100
|
-
var ua = navigator.userAgent;
|
101
|
-
var isFF = parseFloat(ua.split('Firefox/')[1]) || undefined;
|
102
|
-
var isWK = parseFloat(ua.split('WebKit/')[1]) || undefined;
|
103
|
-
var isOpera = parseFloat(ua.split('Opera/')[1]) || undefined;
|
104
|
-
|
105
|
-
var canTransition = (function() {
|
106
|
-
var ver = parseFloat(ua.split('Version/')[1]) || undefined;
|
107
|
-
// test to determine if this browser can handle CSS transitions.
|
108
|
-
var cachedCanTransition =
|
109
|
-
(isWK || (isFF && isFF > 3.6 ) || (isOpera && ver >= 10.5));
|
110
|
-
return function() {
|
111
|
-
return cachedCanTransition;
|
112
|
-
}
|
113
|
-
})();
|
114
|
-
|
115
|
-
//
|
116
|
-
// Slide class
|
117
|
-
//
|
118
|
-
var Slide = function(node, idx) {
|
119
|
-
this._node = node;
|
120
|
-
if (idx >= 0) {
|
121
|
-
this._count = idx + 1;
|
122
|
-
}
|
123
|
-
if (this._node) {
|
124
|
-
addClass(this._node, 'slide distant-slide');
|
125
|
-
}
|
126
|
-
this._makeCounter();
|
127
|
-
this._makeBuildList();
|
128
|
-
};
|
129
|
-
|
130
|
-
Slide.prototype = {
|
131
|
-
_node: null,
|
132
|
-
_count: 0,
|
133
|
-
_buildList: [],
|
134
|
-
_visited: false,
|
135
|
-
_currentState: '',
|
136
|
-
_states: [ 'distant-slide', 'far-past',
|
137
|
-
'past', 'current', 'future',
|
138
|
-
'far-future', 'distant-slide' ],
|
139
|
-
setState: function(state) {
|
140
|
-
if (typeof state != 'string') {
|
141
|
-
state = this._states[state];
|
142
|
-
}
|
143
|
-
if (state == 'current' && !this._visited) {
|
144
|
-
this._visited = true;
|
145
|
-
this._makeBuildList();
|
146
|
-
}
|
147
|
-
removeClass(this._node, this._states);
|
148
|
-
addClass(this._node, state);
|
149
|
-
this._currentState = state;
|
150
|
-
|
151
|
-
// delay first auto run. Really wish this were in CSS.
|
152
|
-
/*
|
153
|
-
this._runAutos();
|
154
|
-
*/
|
155
|
-
var _t = this;
|
156
|
-
setTimeout(function() {
|
157
|
-
_t._runAutos();
|
158
|
-
}, 400);
|
159
|
-
},
|
160
|
-
_makeCounter: function() {
|
161
|
-
if (!this._count || !this._node) {
|
162
|
-
return;
|
163
|
-
}
|
164
|
-
var c = doc.createElement('span');
|
165
|
-
c.innerHTML = this._count;
|
166
|
-
c.className = 'counter';
|
167
|
-
this._node.appendChild(c);
|
168
|
-
},
|
169
|
-
_makeBuildList: function() {
|
170
|
-
this._buildList = [];
|
171
|
-
if (disableBuilds) {
|
172
|
-
return;
|
173
|
-
}
|
174
|
-
if (this._node) {
|
175
|
-
this._buildList = query('[data-build] > *', this._node);
|
176
|
-
}
|
177
|
-
this._buildList.forEach(function(el) {
|
178
|
-
addClass(el, 'to-build');
|
179
|
-
});
|
180
|
-
},
|
181
|
-
_runAutos: function() {
|
182
|
-
if (this._currentState != 'current') {
|
183
|
-
return;
|
184
|
-
}
|
185
|
-
// find the next auto, slice it out of the list, and run it
|
186
|
-
var idx = -1;
|
187
|
-
this._buildList.some(function(n, i) {
|
188
|
-
if (n.hasAttribute('data-auto')) {
|
189
|
-
idx = i;
|
190
|
-
return true;
|
191
|
-
}
|
192
|
-
return false;
|
193
|
-
});
|
194
|
-
if (idx >= 0) {
|
195
|
-
var elem = this._buildList.splice(idx, 1)[0];
|
196
|
-
var transitionEnd = isWK ? 'webkitTransitionEnd' : (isFF ? 'mozTransitionEnd' : 'oTransitionEnd');
|
197
|
-
var _t = this;
|
198
|
-
if (canTransition()) {
|
199
|
-
var l = function(evt) {
|
200
|
-
elem.parentNode.removeEventListener(transitionEnd, l, false);
|
201
|
-
_t._runAutos();
|
202
|
-
};
|
203
|
-
elem.parentNode.addEventListener(transitionEnd, l, false);
|
204
|
-
removeClass(elem, 'to-build');
|
205
|
-
} else {
|
206
|
-
setTimeout(function() {
|
207
|
-
removeClass(elem, 'to-build');
|
208
|
-
_t._runAutos();
|
209
|
-
}, 400);
|
210
|
-
}
|
211
|
-
}
|
212
|
-
},
|
213
|
-
buildNext: function() {
|
214
|
-
if (!this._buildList.length) {
|
215
|
-
return false;
|
216
|
-
}
|
217
|
-
removeClass(this._buildList.shift(), 'to-build');
|
218
|
-
return true;
|
219
|
-
}
|
220
|
-
};
|
221
|
-
|
222
|
-
//
|
223
|
-
// SlideShow class
|
224
|
-
//
|
225
|
-
var SlideShow = function(slides) {
|
226
|
-
this._slides = (slides || []).map(function(el, idx) {
|
227
|
-
return new Slide(el, idx);
|
228
|
-
});
|
229
|
-
|
230
|
-
this.init();
|
231
|
-
var _t = this;
|
232
|
-
doc.addEventListener('keydown',
|
233
|
-
function(e) {
|
234
|
-
_t.handleKeys(e);
|
235
|
-
}, false);
|
236
|
-
doc.addEventListener('mousewheel',
|
237
|
-
function(e) {
|
238
|
-
_t.handleWheel(e);
|
239
|
-
}, false);
|
240
|
-
doc.addEventListener('DOMMouseScroll',
|
241
|
-
function(e) {
|
242
|
-
_t.handleWheel(e);
|
243
|
-
}, false);
|
244
|
-
doc.addEventListener('touchstart',
|
245
|
-
function(e) {
|
246
|
-
_t.handleTouchStart(e);
|
247
|
-
}, false);
|
248
|
-
doc.addEventListener('touchend',
|
249
|
-
function(e) {
|
250
|
-
_t.handleTouchEnd(e);
|
251
|
-
}, false);
|
252
|
-
window.addEventListener('popstate',
|
253
|
-
function(e) {
|
254
|
-
if (e.state === null) {
|
255
|
-
_t.init();
|
256
|
-
} else {
|
257
|
-
_t.current = e.state;
|
258
|
-
}
|
259
|
-
_t.go();
|
260
|
-
}, false);
|
261
|
-
this._update();
|
262
|
-
};
|
263
|
-
|
264
|
-
SlideShow.prototype = {
|
265
|
-
_slides: [],
|
266
|
-
_update: function(dontPush) {
|
267
|
-
document.querySelector('#presentation-counter').innerText = this.current;
|
268
|
-
if (history.pushState) {
|
269
|
-
if (!dontPush) {
|
270
|
-
history.pushState(this.current, 'Slide ' + this.current, '#slide' + this.current);
|
271
|
-
}
|
272
|
-
} else {
|
273
|
-
window.location.hash = 'slide' + this.current;
|
274
|
-
}
|
275
|
-
for (var x = this.current - 1; x < this.current + 7; x++) {
|
276
|
-
if (this._slides[x - 4]) {
|
277
|
-
this._slides[x - 4].setState(Math.max(0, x - this.current));
|
278
|
-
}
|
279
|
-
}
|
280
|
-
},
|
281
|
-
|
282
|
-
current: 0,
|
283
|
-
init: function() {
|
284
|
-
var h = window.location.hash;
|
285
|
-
try {
|
286
|
-
this.current = parseInt(h.split('#slide')[1], 10);
|
287
|
-
} catch (e) { /* squeltch */
|
288
|
-
}
|
289
|
-
this.current = current = isNaN(this.current) ? 1 : this.current;
|
290
|
-
},
|
291
|
-
next: function() {
|
292
|
-
if (!this._slides[this.current - 1].buildNext()) {
|
293
|
-
this.current = Math.min(this.current + 1, this._slides.length);
|
294
|
-
this._update();
|
295
|
-
}
|
296
|
-
},
|
297
|
-
prev: function() {
|
298
|
-
this.current = Math.max(this.current - 1, 1);
|
299
|
-
this._update();
|
300
|
-
},
|
301
|
-
go: function() {
|
302
|
-
this._update(true);
|
303
|
-
},
|
304
|
-
|
305
|
-
_notesOn: false,
|
306
|
-
showNotes: function() {
|
307
|
-
var isOn = this._notesOn = !this._notesOn;
|
308
|
-
query('.notes').forEach(function(el) {
|
309
|
-
el.style.display = (notesOn) ? 'block' : 'none';
|
310
|
-
});
|
311
|
-
},
|
312
|
-
switch3D: function() {
|
313
|
-
toggleClass(document.body, 'three-d');
|
314
|
-
},
|
315
|
-
handleWheel: function(e) {
|
316
|
-
var delta = 0;
|
317
|
-
if (e.wheelDelta) {
|
318
|
-
delta = e.wheelDelta / 120;
|
319
|
-
if (isOpera) {
|
320
|
-
delta = -delta;
|
321
|
-
}
|
322
|
-
} else if (e.detail) {
|
323
|
-
delta = -e.detail / 3;
|
324
|
-
}
|
325
|
-
|
326
|
-
if (delta > 0) {
|
327
|
-
this.prev();
|
328
|
-
return;
|
329
|
-
}
|
330
|
-
if (delta < 0) {
|
331
|
-
this.next();
|
332
|
-
return;
|
333
|
-
}
|
334
|
-
},
|
335
|
-
handleKeys: function(e) {
|
336
|
-
|
337
|
-
if (/^(input|textarea)$/i.test(e.target.nodeName)) return;
|
338
|
-
|
339
|
-
switch (e.keyCode) {
|
340
|
-
case 37: // left arrow
|
341
|
-
this.prev(); break;
|
342
|
-
case 39: // right arrow
|
343
|
-
case 32: // space
|
344
|
-
this.next(); break;
|
345
|
-
case 33: // pageup
|
346
|
-
this.prev(); break;
|
347
|
-
case 34: // pagedown
|
348
|
-
this.next(); break;
|
349
|
-
case 50: // 2
|
350
|
-
this.showNotes(); break;
|
351
|
-
case 51: // 3
|
352
|
-
this.switch3D(); break;
|
353
|
-
}
|
354
|
-
},
|
355
|
-
_touchStartX: 0,
|
356
|
-
handleTouchStart: function(e) {
|
357
|
-
this._touchStartX = e.touches[0].pageX;
|
358
|
-
},
|
359
|
-
handleTouchEnd: function(e) {
|
360
|
-
var delta = this._touchStartX - e.changedTouches[0].pageX;
|
361
|
-
var SWIPE_SIZE = 150;
|
362
|
-
if (delta > SWIPE_SIZE) {
|
363
|
-
this.next();
|
364
|
-
} else if (delta < -SWIPE_SIZE) {
|
365
|
-
this.prev();
|
366
|
-
}
|
367
|
-
}
|
368
|
-
};
|
369
|
-
|
370
|
-
// Initialize
|
371
|
-
var slideshow = new SlideShow(query('.slide'));
|
372
|
-
|
373
|
-
document.querySelector('#toggle-counter').addEventListener('click', toggleCounter, false);
|
374
|
-
document.querySelector('#toggle-size').addEventListener('click', toggleSize, false);
|
375
|
-
document.querySelector('#toggle-transitions').addEventListener('click', toggleTransitions, false);
|
376
|
-
document.querySelector('#toggle-gradients').addEventListener('click', toggleGradients, false);
|
377
|
-
|
378
|
-
var counters = document.querySelectorAll('.counter');
|
379
|
-
var slides = document.querySelectorAll('.slide');
|
380
|
-
|
381
|
-
function toggleCounter() {
|
382
|
-
toArray(counters).forEach(function(el) {
|
383
|
-
el.style.display = (el.offsetHeight) ? 'none' : 'block';
|
384
|
-
});
|
385
|
-
}
|
386
|
-
|
387
|
-
function toggleSize() {
|
388
|
-
toArray(slides).forEach(function(el) {
|
389
|
-
if (!/reduced/.test(el.className)) {
|
390
|
-
addClass(el, 'reduced');
|
391
|
-
}
|
392
|
-
else {
|
393
|
-
removeClass(el, 'reduced');
|
394
|
-
}
|
395
|
-
});
|
396
|
-
}
|
397
|
-
|
398
|
-
function toggleTransitions() {
|
399
|
-
toArray(slides).forEach(function(el) {
|
400
|
-
if (!/no-transitions/.test(el.className)) {
|
401
|
-
addClass(el, 'no-transitions');
|
402
|
-
}
|
403
|
-
else {
|
404
|
-
removeClass(el, 'no-transitions');
|
405
|
-
}
|
406
|
-
});
|
407
|
-
}
|
408
|
-
|
409
|
-
function toggleGradients() {
|
410
|
-
toArray(slides).forEach(function(el) {
|
411
|
-
if (!/no-gradients/.test(el.className)) {
|
412
|
-
addClass(el, 'no-gradients');
|
413
|
-
}
|
414
|
-
else {
|
415
|
-
removeClass(el, 'no-gradients');
|
416
|
-
}
|
417
|
-
});
|
418
|
-
}
|
419
|
-
})();
|
data/templates/rocks/index.rhtml
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<!--
|
3
|
-
Original Project, HTML5 Rocks 'Slides Template' Copyright 2010 Google Inc.
|
4
|
-
|
5
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
you may not use this file except in compliance with the License.
|
7
|
-
You may obtain a copy of the License at
|
8
|
-
|
9
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
|
11
|
-
Unless required by applicable law or agreed to in writing, software
|
12
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
See the License for the specific language governing permissions and
|
15
|
-
limitations under the License.
|
16
|
-
|
17
|
-
Original slides: Marcin Wichary (mwichary@google.com)
|
18
|
-
Modifications: Ernest Delgado (ernestd@google.com)
|
19
|
-
Alex Russell (slightlyoff@chromium.org)
|
20
|
-
Brad Neuberg
|
21
|
-
|
22
|
-
Keydown generates an HTML5 Rocks-style presentation from a Markdown file, adding
|
23
|
-
the ability to full screen backgrounds, CSS overrides, and additional JavaScript.
|
24
|
-
|
25
|
-
Keydown (http://infews.github.com/keydown), Copyright 2010 Infews LLC
|
26
|
-
-->
|
27
|
-
<html manifest="cache.manifest">
|
28
|
-
<head>
|
29
|
-
<!--[if gte IE 9]>
|
30
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
31
|
-
<![endif]-->
|
32
|
-
|
33
|
-
<!--[if lt IE 9]>
|
34
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1"/>
|
35
|
-
<![endif]-->
|
36
|
-
|
37
|
-
<meta charset="utf-8"/>
|
38
|
-
<title><%= title %></title>
|
39
|
-
<link href="http://fonts.googleapis.com/css?family=Droid+Sans|Droid+Sans+Mono|Permanent+Marker|Lobster|Ruslan+Display" rel="stylesheet" type="text/css"/>
|
40
|
-
|
41
|
-
<!--
|
42
|
-
Original HTML5 Rocks CSS extracted for readability
|
43
|
-
-->
|
44
|
-
<link href="css/rocks.css" rel="stylesheet" type="text/css"/>
|
45
|
-
|
46
|
-
<!--
|
47
|
-
Keydown provided CSS & your custom CSS
|
48
|
-
-->
|
49
|
-
<% css_files.each do |css_file| %>
|
50
|
-
<link href="<%= css_file %>" rel="stylesheet" type="text/css"/>
|
51
|
-
<% end %>
|
52
|
-
|
53
|
-
</head>
|
54
|
-
<body>
|
55
|
-
<div class="presentation">
|
56
|
-
<div id="presentation-counter"></div>
|
57
|
-
<div class="slides">
|
58
|
-
<!--
|
59
|
-
First slide has Title, Instructions & options. Remove (or display:none) this slide if you like
|
60
|
-
-->
|
61
|
-
<div class="slide">
|
62
|
-
<section class="middle">
|
63
|
-
<h1><%= title %></h1>
|
64
|
-
|
65
|
-
<p>
|
66
|
-
Press <span class="key"><b>→</b></span>, scroll, or swipe to advance
|
67
|
-
</p>
|
68
|
-
|
69
|
-
<h3>
|
70
|
-
Options
|
71
|
-
</h3>
|
72
|
-
<ul>
|
73
|
-
<li>
|
74
|
-
<input type="checkbox" id="toggle-size"/>
|
75
|
-
<label for="toggle-size">
|
76
|
-
<span>Grow</span>
|
77
|
-
</label>
|
78
|
-
</li>
|
79
|
-
<li>
|
80
|
-
<input type="checkbox" id="toggle-transitions" checked/>
|
81
|
-
<label for="toggle-transitions">
|
82
|
-
<span>Transitions</span>
|
83
|
-
</label>
|
84
|
-
</li>
|
85
|
-
<li>
|
86
|
-
<input type="checkbox" id="toggle-gradients" checked/>
|
87
|
-
<label for="toggle-gradients">
|
88
|
-
<span>Gradients</span>
|
89
|
-
</label>
|
90
|
-
</li>
|
91
|
-
<li>
|
92
|
-
<input type="checkbox" id="toggle-counter" checked/>
|
93
|
-
<label for="toggle-counter">
|
94
|
-
<span>Slide numbers</span>
|
95
|
-
</label>
|
96
|
-
</li>
|
97
|
-
</ul>
|
98
|
-
<p>
|
99
|
-
Made with <a href="http://infews.github.com/keydown"><b>Keydown</b></a>
|
100
|
-
</p>
|
101
|
-
<p>
|
102
|
-
<a href="http://www.w3.org/html/logo/">
|
103
|
-
<img src="http://www.w3.org/html/logo/badge/html5-badge-h-css3-graphics-semantics.png" width="197" height="64" alt="HTML5 Powered with CSS3 / Styling, Graphics, 3D & Effects, and Semantics" title="HTML5 Powered with CSS3 / Styling, Graphics, 3D & Effects, and Semantics">
|
104
|
-
</a>
|
105
|
-
</p>
|
106
|
-
</section>
|
107
|
-
</div>
|
108
|
-
<% slides.each do |slide| %>
|
109
|
-
<%= slide.to_html %>
|
110
|
-
<% end %>
|
111
|
-
</div>
|
112
|
-
</div>
|
113
|
-
|
114
|
-
<!--
|
115
|
-
Original HTML5 Rocks JavaScript extracted for readability
|
116
|
-
-->
|
117
|
-
<script src="js/rocks.js" type="text/javascript"></script>
|
118
|
-
|
119
|
-
<!--[if lt IE 9]>
|
120
|
-
<script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
|
121
|
-
<script>CFInstall.check({ mode: "overlay" });</script>
|
122
|
-
<![endif]-->
|
123
|
-
|
124
|
-
<!--
|
125
|
-
Keydown puts your custom JS here
|
126
|
-
-->
|
127
|
-
<% js_files.each do |js_file| %>
|
128
|
-
<script src="<%= js_file %>" type="text/javascript"></script>
|
129
|
-
<% end %>
|
130
|
-
|
131
|
-
</body>
|
132
|
-
</html>
|