@@ -10,8 +10,8 @@ export default class Overlay {
10
10
11
11
this . onSlidesClicked = this . onSlidesClicked . bind ( this ) ;
12
12
13
- this . linkPreviewSelector = null ;
14
- this . mediaPreviewSelector = '[data-preview-image], [data-preview-video]' ;
13
+ this . iframeTriggerSelector = null ;
14
+ this . mediaTriggerSelector = '[data-preview-image], [data-preview-video]' ;
15
15
16
16
this . state = { } ;
17
17
@@ -21,18 +21,18 @@ export default class Overlay {
21
21
22
22
// Enable link previews globally
23
23
if ( this . Reveal . getConfig ( ) . previewLinks ) {
24
- this . linkPreviewSelector = 'a[href]:not([data-preview-link=false]), [data-preview-link]:not(a):not([data-preview-link=false])' ;
24
+ this . iframeTriggerSelector = 'a[href]:not([data-preview-link=false]), [data-preview-link]:not(a):not([data-preview-link=false])' ;
25
25
}
26
26
// Enable link previews for individual elements
27
27
else {
28
- this . linkPreviewSelector = '[data-preview-link]:not([data-preview-link=false])' ;
28
+ this . iframeTriggerSelector = '[data-preview-link]:not([data-preview-link=false])' ;
29
29
}
30
30
31
- this . hasLinkPreviews = this . Reveal . getSlidesElement ( ) . querySelectorAll ( this . linkPreviewSelector ) . length > 0 ;
32
- this . hasMediaPreviews = this . Reveal . getSlidesElement ( ) . querySelectorAll ( this . mediaPreviewSelector ) . length > 0 ;
31
+ const hasLinkPreviews = this . Reveal . getSlidesElement ( ) . querySelectorAll ( this . iframeTriggerSelector ) . length > 0 ;
32
+ const hasMediaPreviews = this . Reveal . getSlidesElement ( ) . querySelectorAll ( this . mediaTriggerSelector ) . length > 0 ;
33
33
34
34
// Only add the listener when there are previewable elements in the slides
35
- if ( this . hasLinkPreviews || this . hasMediaPreviews ) {
35
+ if ( hasLinkPreviews || hasMediaPreviews ) {
36
36
this . Reveal . getSlidesElement ( ) . addEventListener ( 'click' , this . onSlidesClicked , false ) ;
37
37
}
38
38
else {
@@ -56,11 +56,11 @@ export default class Overlay {
56
56
}
57
57
58
58
/**
59
- * Opens a preview window for the target URL.
59
+ * Opens a lightbox that previews the target URL.
60
60
*
61
- * @param {string } url - url for preview iframe src
61
+ * @param {string } url - url for lightbox iframe src
62
62
*/
63
- showIframePreview ( url ) {
63
+ previewIframe ( url ) {
64
64
65
65
this . close ( ) ;
66
66
@@ -95,19 +95,19 @@ export default class Overlay {
95
95
this . close ( ) ;
96
96
} , false ) ;
97
97
98
- this . Reveal . dispatchEvent ( { type : 'showiframepreview ' , data : { url } } ) ;
98
+ this . Reveal . dispatchEvent ( { type : 'previewiframe ' , data : { url } } ) ;
99
99
100
100
}
101
101
102
102
/**
103
- * Opens a preview window that provides a larger view of the
103
+ * Opens a lightbox window that provides a larger view of the
104
104
* given image/video.
105
105
*
106
106
* @param {string } url - url to the image/video to preview
107
107
* @param {image|video } mediaType
108
108
* @param {string } [fitMode] - the fit mode to use for the preview
109
109
*/
110
- showMediaPreview ( url , mediaType , fitMode ) {
110
+ previewMedia ( url , mediaType , fitMode ) {
111
111
112
112
if ( mediaType !== 'image' && mediaType !== 'video' ) {
113
113
console . warn ( 'Please specify a valid media type to preview (image|video)' ) ;
@@ -155,6 +155,8 @@ export default class Overlay {
155
155
this . close ( ) ;
156
156
} , false ) ;
157
157
158
+ this . Reveal . dispatchEvent ( { type : 'previewimage' , data : { url } } ) ;
159
+
158
160
}
159
161
else if ( mediaType === 'video' ) {
160
162
@@ -179,6 +181,8 @@ export default class Overlay {
179
181
`<span class="r-overlay-error">Unable to load video.</span>` ;
180
182
} , false ) ;
181
183
184
+ this . Reveal . dispatchEvent ( { type : 'previewvideo' , data : { url } } ) ;
185
+
182
186
}
183
187
else {
184
188
throw new Error ( 'Please specify a valid media type to preview' ) ;
@@ -189,7 +193,17 @@ export default class Overlay {
189
193
event . preventDefault ( ) ;
190
194
} , false ) ;
191
195
192
- this . Reveal . dispatchEvent ( { type : 'showmediapreview' , data : { mediaType, url } } ) ;
196
+ }
197
+
198
+ previewImage ( url , fitMode ) {
199
+
200
+ this . previewMedia ( url , 'image' , fitMode ) ;
201
+
202
+ }
203
+
204
+ previewVideo ( url , fitMode ) {
205
+
206
+ this . previewMedia ( url , 'video' , fitMode ) ;
193
207
194
208
}
195
209
@@ -300,13 +314,13 @@ export default class Overlay {
300
314
setState ( state ) {
301
315
302
316
if ( state . previewIframe ) {
303
- this . showIframePreview ( state . previewIframe ) ;
317
+ this . previewIframe ( state . previewIframe ) ;
304
318
}
305
319
else if ( state . previewImage ) {
306
- this . showMediaPreview ( state . previewImage , 'image' , state . previewFit ) ;
320
+ this . previewImage ( state . previewImage , state . previewFit ) ;
307
321
}
308
322
else if ( state . previewVideo ) {
309
- this . showMediaPreview ( state . previewVideo , 'video' , state . previewFit ) ;
323
+ this . previewVideo ( state . previewVideo , state . previewFit ) ;
310
324
}
311
325
else {
312
326
this . close ( ) ;
@@ -318,27 +332,27 @@ export default class Overlay {
318
332
319
333
const target = event . target ;
320
334
321
- const linkTarget = target . closest ( this . linkPreviewSelector ) ;
322
- const mediaTarget = target . closest ( this . mediaPreviewSelector ) ;
335
+ const linkTarget = target . closest ( this . iframeTriggerSelector ) ;
336
+ const mediaTarget = target . closest ( this . mediaTriggerSelector ) ;
323
337
324
- // Was a link preview clicked?
338
+ // Was an iframe lightbox trigger clicked?
325
339
if ( linkTarget ) {
326
340
if ( event . metaKey || event . shiftKey || event . altKey ) {
327
341
// Let the browser handle meta keys naturally so users can cmd+click, cmd+shift+click, shift+click, alt+click, etc.
328
342
return ;
329
343
}
330
344
let url = linkTarget . getAttribute ( 'href' ) || linkTarget . getAttribute ( 'data-preview-link' ) ;
331
345
if ( url ) {
332
- this . showIframePreview ( url ) ;
346
+ this . previewIframe ( url ) ;
333
347
event . preventDefault ( ) ;
334
348
}
335
349
}
336
- // Was a media preview clicked?
350
+ // Was a media lightbox trigger clicked?
337
351
else if ( mediaTarget ) {
338
352
if ( mediaTarget . hasAttribute ( 'data-preview-image' ) ) {
339
353
let url = mediaTarget . dataset . previewImage || mediaTarget . getAttribute ( 'src' ) ;
340
354
if ( url ) {
341
- this . showMediaPreview ( url , 'image' , mediaTarget . dataset . previewFit ) ;
355
+ this . previewImage ( url , mediaTarget . dataset . previewFit ) ;
342
356
event . preventDefault ( ) ;
343
357
}
344
358
}
@@ -351,7 +365,7 @@ export default class Overlay {
351
365
}
352
366
}
353
367
if ( url ) {
354
- this . showMediaPreview ( url , 'video' , mediaTarget . dataset . previewFit ) ;
368
+ this . previewVideo ( url , mediaTarget . dataset . previewFit ) ;
355
369
event . preventDefault ( ) ;
356
370
}
357
371
}
0 commit comments