1
1
// Custom reveal.js integration
2
2
( function ( ) {
3
- document . querySelector ( '.reveal' ) . addEventListener ( 'click' , function ( event ) {
4
- if ( event . altKey ) {
3
+ var isEnabled = true ;
4
+
5
+ document . querySelector ( '.reveal' ) . addEventListener ( 'mousedown' , function ( event ) {
6
+ if ( event . altKey && isEnabled ) {
5
7
event . preventDefault ( ) ;
6
8
zoom . to ( { element : event . target , pan : false } ) ;
7
9
}
8
10
} ) ;
11
+
12
+ Reveal . addEventListener ( 'overviewshown' , function ( ) { isEnabled = false ; } ) ;
13
+ Reveal . addEventListener ( 'overviewhidden' , function ( ) { isEnabled = true ; } ) ;
9
14
} ) ( ) ;
10
15
11
16
/*!
12
17
* zoom.js 0.2 (modified version for use with reveal.js)
13
18
* http://lab.hakim.se/zoom-js
14
19
* MIT licensed
15
- *
20
+ *
16
21
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
17
22
*/
18
23
var zoom = ( function ( ) {
19
24
20
25
// The current zoom level (scale)
21
26
var level = 1 ;
22
-
27
+
23
28
// The current mouse position, used for panning
24
29
var mouseX = 0 ,
25
30
mouseY = 0 ;
26
-
31
+
27
32
// Timeout before pan is activated
28
33
var panEngageTimeout = - 1 ,
29
34
panUpdateInterval = - 1 ;
@@ -36,7 +41,7 @@ var zoom = (function(){
36
41
'msTransform' in document . body . style ||
37
42
'OTransform' in document . body . style ||
38
43
'transform' in document . body . style ;
39
-
44
+
40
45
if ( supportsTransforms ) {
41
46
// The easing that will be applied when we zoom in/out
42
47
document . body . style . transition = 'transform 0.8s ease' ;
@@ -45,7 +50,7 @@ var zoom = (function(){
45
50
document . body . style . MozTransition = '-moz-transform 0.8s ease' ;
46
51
document . body . style . WebkitTransition = '-webkit-transform 0.8s ease' ;
47
52
}
48
-
53
+
49
54
// Zoom out if the user hits escape
50
55
document . addEventListener ( 'keyup' , function ( event ) {
51
56
if ( level !== 1 && event . keyCode === 27 ) {
@@ -62,21 +67,21 @@ var zoom = (function(){
62
67
} , false ) ;
63
68
64
69
/**
65
- * Applies the CSS required to zoom in, prioritizes use of CSS3
70
+ * Applies the CSS required to zoom in, prioritizes use of CSS3
66
71
* transforms but falls back on zoom for IE.
67
- *
68
- * @param {Number } pageOffsetX
69
- * @param {Number } pageOffsetY
70
- * @param {Number } elementOffsetX
71
- * @param {Number } elementOffsetY
72
- * @param {Number } scale
72
+ *
73
+ * @param {Number } pageOffsetX
74
+ * @param {Number } pageOffsetY
75
+ * @param {Number } elementOffsetX
76
+ * @param {Number } elementOffsetY
77
+ * @param {Number } scale
73
78
*/
74
79
function magnify ( pageOffsetX , pageOffsetY , elementOffsetX , elementOffsetY , scale ) {
75
80
76
81
if ( supportsTransforms ) {
77
82
var origin = pageOffsetX + 'px ' + pageOffsetY + 'px' ,
78
83
transform = 'translate(' + - elementOffsetX + 'px,' + - elementOffsetY + 'px) scale(' + scale + ')' ;
79
-
84
+
80
85
document . body . style . transformOrigin = origin ;
81
86
document . body . style . OTransformOrigin = origin ;
82
87
document . body . style . msTransformOrigin = origin ;
@@ -121,15 +126,15 @@ var zoom = (function(){
121
126
}
122
127
123
128
/**
124
- * Pan the document when the mosue cursor approaches the edges
129
+ * Pan the document when the mosue cursor approaches the edges
125
130
* of the window.
126
131
*/
127
132
function pan ( ) {
128
133
var range = 0.12 ,
129
134
rangeX = window . innerWidth * range ,
130
135
rangeY = window . innerHeight * range ,
131
136
scrollOffset = getScrollOffset ( ) ;
132
-
137
+
133
138
// Up
134
139
if ( mouseY < rangeY ) {
135
140
window . scroll ( scrollOffset . x , scrollOffset . y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) ) ;
@@ -159,7 +164,7 @@ var zoom = (function(){
159
164
return {
160
165
/**
161
166
* Zooms in on either a rectangle or HTML element.
162
- *
167
+ *
163
168
* @param {Object } options
164
169
* - element: HTML element to zoom in on
165
170
* OR
@@ -232,7 +237,7 @@ var zoom = (function(){
232
237
if ( currentOptions && currentOptions . element ) {
233
238
scrollOffset . x -= ( window . innerWidth - ( currentOptions . width * currentOptions . scale ) ) / 2 ;
234
239
}
235
-
240
+
236
241
magnify ( scrollOffset . x , scrollOffset . y , 0 , 0 , 1 ) ;
237
242
238
243
level = 1 ;
@@ -241,11 +246,11 @@ var zoom = (function(){
241
246
// Alias
242
247
magnify : function ( options ) { this . to ( options ) } ,
243
248
reset : function ( ) { this . out ( ) } ,
244
-
249
+
245
250
zoomLevel : function ( ) {
246
251
return level ;
247
252
}
248
253
}
249
-
254
+
250
255
} ) ( ) ;
251
256
0 commit comments