mirror of
https://github.com/hakimel/reveal.js.git
synced 2025-09-20 03:21:29 +02:00
Compare commits
4 Commits
5.2.0
...
fix/speake
Author | SHA1 | Date | |
---|---|---|---|
|
c69adfb022 | ||
|
47ee25dd19 | ||
|
94716f9e51 | ||
|
b3fd27d071 |
@@ -1444,7 +1444,8 @@ $controlsArrowAngleActive: 36deg;
|
|||||||
}
|
}
|
||||||
|
|
||||||
.reveal [data-preview-image],
|
.reveal [data-preview-image],
|
||||||
.reveal [data-preview-video] {
|
.reveal [data-preview-video],
|
||||||
|
.reveal [data-preview-link]:not(a):not([data-preview-link=false]) {
|
||||||
cursor: zoom-in;
|
cursor: zoom-in;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
dist/reveal.css
vendored
2
dist/reveal.css
vendored
File diff suppressed because one or more lines are too long
2
dist/reveal.esm.js
vendored
2
dist/reveal.esm.js
vendored
File diff suppressed because one or more lines are too long
2
dist/reveal.esm.js.map
vendored
2
dist/reveal.esm.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/reveal.js
vendored
2
dist/reveal.js
vendored
File diff suppressed because one or more lines are too long
2
dist/reveal.js.map
vendored
2
dist/reveal.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -4,7 +4,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
|
||||||
<title>reveal.js - Slide Transitions</title>
|
<title>reveal.js - Ligthbox</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="../dist/reveal.css">
|
<link rel="stylesheet" href="../dist/reveal.css">
|
||||||
<link rel="stylesheet" href="../dist/theme/black.css" id="theme">
|
<link rel="stylesheet" href="../dist/theme/black.css" id="theme">
|
||||||
@@ -82,8 +82,46 @@
|
|||||||
|
|
||||||
<div class="r-vstack items-start">
|
<div class="r-vstack items-start">
|
||||||
<h5>Iframes</h5>
|
<h5>Iframes</h5>
|
||||||
|
<a href="https://hakim.se">https://hakim.se | data-preview-link</a>
|
||||||
<a data-preview-link href="https://hakim.se">https://hakim.se | data-preview-link</a>
|
<a data-preview-link href="https://hakim.se">https://hakim.se | data-preview-link</a>
|
||||||
|
<br />
|
||||||
<a data-preview-link="false" href="https://hakim.se">https://hakim.se | data-preview-link=false</a>
|
<a data-preview-link="false" href="https://hakim.se">https://hakim.se | data-preview-link=false</a>
|
||||||
|
<br />
|
||||||
|
<figure>
|
||||||
|
<figcaption>Preview link from an image</figcaption>
|
||||||
|
<img height="50" src="https://static.slid.es/images/alphabet/v1/a.png" data-preview-link="https://hakim.se">
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section style="text-align: left;">
|
||||||
|
|
||||||
|
<h2>Lightbox</h2>
|
||||||
|
|
||||||
|
<div class="r-hstack items-start justify-start">
|
||||||
|
<div class="r-vstack items-start">
|
||||||
|
<h5>Images</h5>
|
||||||
|
<figure>
|
||||||
|
<img height="100" src="https://static.slid.es/images/alphabet/v1/a.png" data-preview-image data-preview-fit="contain">
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="width: 1px; height: 20vh; margin: 0 3rem;background-color: #222;"></div>
|
||||||
|
|
||||||
|
<div class="r-vstack items-start">
|
||||||
|
<h5>Videos</h5>
|
||||||
|
<figure>
|
||||||
|
<video height="100" src="https://static.slid.es/site/homepage/v1/homepage-video-editor.mp4" data-preview-video></video>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="width: 1px; height: 20vh; margin: 0 3rem;background-color: #222;"></div>
|
||||||
|
|
||||||
|
<div class="r-vstack items-start">
|
||||||
|
<h5>Iframes</h5>
|
||||||
|
<a style="font-size: 28px;" data-preview-link href="https://hakim.se">https://hakim.se</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@@ -190,6 +190,10 @@ export default class Keyboard {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( this.Reveal.isOverlayOpen() && !['Escape', 'f', 'c'].includes(event.key) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if( this.Reveal.isPaused() && resumeKeyCodes.indexOf( keyCode ) === -1 ) {
|
if( this.Reveal.isPaused() && resumeKeyCodes.indexOf( keyCode ) === -1 ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -363,6 +367,10 @@ export default class Keyboard {
|
|||||||
this.Reveal.toggleJumpToSlide();
|
this.Reveal.toggleJumpToSlide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// C
|
||||||
|
else if( keyCode === 67 && this.Reveal.isOverlayOpen() ) {
|
||||||
|
this.Reveal.closeOverlay();
|
||||||
|
}
|
||||||
// ?
|
// ?
|
||||||
else if( ( keyCode === 63 || keyCode === 191 ) && event.shiftKey ) {
|
else if( ( keyCode === 63 || keyCode === 191 ) && event.shiftKey ) {
|
||||||
this.Reveal.toggleHelp();
|
this.Reveal.toggleHelp();
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
* Handles the display of reveal.js' overlay elements used
|
* Handles the display of reveal.js' overlay elements used
|
||||||
* to preview iframes, images & videos.
|
* to preview iframes, images & videos.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export default class Overlay {
|
export default class Overlay {
|
||||||
|
|
||||||
constructor( Reveal ) {
|
constructor( Reveal ) {
|
||||||
@@ -13,13 +14,15 @@ export default class Overlay {
|
|||||||
this.linkPreviewSelector = null;
|
this.linkPreviewSelector = null;
|
||||||
this.mediaPreviewSelector = '[data-preview-image], [data-preview-video]';
|
this.mediaPreviewSelector = '[data-preview-image], [data-preview-video]';
|
||||||
|
|
||||||
|
this.state = {};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
|
|
||||||
// Enable link previews globally
|
// Enable link previews globally
|
||||||
if( this.Reveal.getConfig().previewLinks ) {
|
if( this.Reveal.getConfig().previewLinks ) {
|
||||||
this.linkPreviewSelector = 'a[href]:not([data-preview-link=false])';
|
this.linkPreviewSelector = 'a[href]:not([data-preview-link=false]), [data-preview-link]:not(a):not([data-preview-link=false])';
|
||||||
}
|
}
|
||||||
// Enable link previews for individual elements
|
// Enable link previews for individual elements
|
||||||
else {
|
else {
|
||||||
@@ -62,6 +65,8 @@ export default class Overlay {
|
|||||||
|
|
||||||
this.close();
|
this.close();
|
||||||
|
|
||||||
|
this.state.previewIframe = url;
|
||||||
|
|
||||||
this.createOverlay( 'r-overlay-preview' );
|
this.createOverlay( 'r-overlay-preview' );
|
||||||
this.dom.dataset.state = 'loading';
|
this.dom.dataset.state = 'loading';
|
||||||
|
|
||||||
@@ -113,9 +118,11 @@ export default class Overlay {
|
|||||||
|
|
||||||
this.close();
|
this.close();
|
||||||
|
|
||||||
|
const fitMode = trigger ? trigger.dataset.previewFit || 'scale-down' : 'scale-down';
|
||||||
|
|
||||||
this.createOverlay( 'r-overlay-preview' );
|
this.createOverlay( 'r-overlay-preview' );
|
||||||
this.dom.dataset.state = 'loading';
|
this.dom.dataset.state = 'loading';
|
||||||
this.dom.dataset.previewFit = trigger ? trigger.dataset.previewFit || 'scale-down' : 'scale-down';
|
this.dom.dataset.previewFit = fitMode;
|
||||||
|
|
||||||
this.viewport.innerHTML =
|
this.viewport.innerHTML =
|
||||||
`<header class="r-overlay-header">
|
`<header class="r-overlay-header">
|
||||||
@@ -128,6 +135,8 @@ export default class Overlay {
|
|||||||
|
|
||||||
if( mediaType === 'image' ) {
|
if( mediaType === 'image' ) {
|
||||||
|
|
||||||
|
this.state = { previewImage: url, previewFit: fitMode }
|
||||||
|
|
||||||
const img = document.createElement( 'img', {} );
|
const img = document.createElement( 'img', {} );
|
||||||
img.src = url;
|
img.src = url;
|
||||||
contentElement.appendChild( img );
|
contentElement.appendChild( img );
|
||||||
@@ -151,6 +160,8 @@ export default class Overlay {
|
|||||||
}
|
}
|
||||||
else if( mediaType === 'video' ) {
|
else if( mediaType === 'video' ) {
|
||||||
|
|
||||||
|
this.state = { previewVideo: url, previewFit: fitMode }
|
||||||
|
|
||||||
const video = document.createElement( 'video' );
|
const video = document.createElement( 'video' );
|
||||||
video.autoplay = this.dom.dataset.previewAutoplay === 'false' ? false : true;
|
video.autoplay = this.dom.dataset.previewAutoplay === 'false' ? false : true;
|
||||||
video.controls = this.dom.dataset.previewControls === 'false' ? false : true;
|
video.controls = this.dom.dataset.previewControls === 'false' ? false : true;
|
||||||
@@ -257,7 +268,9 @@ export default class Overlay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isOpen() {
|
isOpen() {
|
||||||
|
|
||||||
return !!this.dom;
|
return !!this.dom;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -268,6 +281,11 @@ export default class Overlay {
|
|||||||
if( this.dom ) {
|
if( this.dom ) {
|
||||||
this.dom.remove();
|
this.dom.remove();
|
||||||
this.dom = null;
|
this.dom = null;
|
||||||
|
|
||||||
|
this.state = {};
|
||||||
|
|
||||||
|
this.Reveal.dispatchEvent({ type: 'closeoverlay' });
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -275,6 +293,29 @@ export default class Overlay {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getState() {
|
||||||
|
|
||||||
|
return this.state;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
setState( state ) {
|
||||||
|
|
||||||
|
if( state.previewIframe ) {
|
||||||
|
this.showIframePreview( state.previewIframe );
|
||||||
|
}
|
||||||
|
else if( state.previewImage ) {
|
||||||
|
this.showMediaPreview( state.previewImage, 'image' );
|
||||||
|
}
|
||||||
|
else if( state.previewVideo ) {
|
||||||
|
this.showMediaPreview( state.previewVideo, 'video' );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
onSlidesClicked( event ) {
|
onSlidesClicked( event ) {
|
||||||
|
|
||||||
const target = event.target;
|
const target = event.target;
|
||||||
@@ -284,7 +325,7 @@ export default class Overlay {
|
|||||||
|
|
||||||
// Was a link preview clicked?
|
// Was a link preview clicked?
|
||||||
if( linkTarget ) {
|
if( linkTarget ) {
|
||||||
let url = linkTarget.getAttribute( 'href' );
|
let url = linkTarget.getAttribute( 'href' ) || linkTarget.getAttribute( 'data-preview-link' );
|
||||||
if( url ) {
|
if( url ) {
|
||||||
this.showIframePreview( url );
|
this.showIframePreview( url );
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
@@ -2210,7 +2210,8 @@ export default function( revealElement, options ) {
|
|||||||
indexv: indices.v,
|
indexv: indices.v,
|
||||||
indexf: indices.f,
|
indexf: indices.f,
|
||||||
paused: isPaused(),
|
paused: isPaused(),
|
||||||
overview: overview.isActive()
|
overview: overview.isActive(),
|
||||||
|
...overlay.getState()
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2236,6 +2237,8 @@ export default function( revealElement, options ) {
|
|||||||
if( typeof overviewFlag === 'boolean' && overviewFlag !== overview.isActive() ) {
|
if( typeof overviewFlag === 'boolean' && overviewFlag !== overview.isActive() ) {
|
||||||
overview.toggle( overviewFlag );
|
overview.toggle( overviewFlag );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
overlay.setState( state );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -414,14 +414,25 @@
|
|||||||
}
|
}
|
||||||
// Messages sent by the reveal.js inside of the current slide preview
|
// Messages sent by the reveal.js inside of the current slide preview
|
||||||
else if( data && data.namespace === 'reveal' ) {
|
else if( data && data.namespace === 'reveal' ) {
|
||||||
|
const supportedEvents = [
|
||||||
|
'slidechanged',
|
||||||
|
'fragmentshown',
|
||||||
|
'fragmenthidden',
|
||||||
|
'paused',
|
||||||
|
'resumed',
|
||||||
|
'showiframepreview',
|
||||||
|
'showmediapreview'
|
||||||
|
];
|
||||||
|
|
||||||
if( /ready/.test( data.eventName ) ) {
|
if( /ready/.test( data.eventName ) ) {
|
||||||
// Send a message back to notify that the handshake is complete
|
// Send a message back to notify that the handshake is complete
|
||||||
window.opener.postMessage( JSON.stringify({ namespace: 'reveal-notes', type: 'connected'} ), '*' );
|
window.opener.postMessage( JSON.stringify({ namespace: 'reveal-notes', type: 'connected'} ), '*' );
|
||||||
}
|
}
|
||||||
else if( /slidechanged|fragmentshown|fragmenthidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
|
else if( /closeoverlay/.test( data.eventName ) ) {
|
||||||
|
dispatchStateToMainWindow( data.state );
|
||||||
|
}
|
||||||
|
else if( supportedEvents.includes( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
|
||||||
dispatchStateToMainWindow( data.state );
|
dispatchStateToMainWindow( data.state );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user