Spaces:
Running
Running
var PdfExport = ( function( _Reveal ){ | |
var Reveal = _Reveal; | |
var setStylesheet = null; | |
var installAltKeyBindings = null; | |
function getRevealJsPath(){ | |
var regex = /\b[^/]+\/reveal.css$/i; | |
var script = Array.from( document.querySelectorAll( 'link' ) ).find( function( e ){ | |
return e.attributes.href && e.attributes.href.value.search( regex ) >= 0; | |
}); | |
if( !script ){ | |
console.error( 'reveal.css could not be found in included <link> elements. Did you rename this file?' ); | |
return ''; | |
} | |
return script.attributes.href.value.replace( regex, '' ); | |
} | |
function setStylesheet3( pdfExport ){ | |
var link = document.querySelector( '#print' ); | |
if( !link ){ | |
link = document.createElement( 'link' ); | |
link.rel = 'stylesheet'; | |
link.id = 'print'; | |
document.querySelector( 'head' ).appendChild( link ); | |
} | |
var style = 'paper'; | |
if( pdfExport ){ | |
style = 'pdf'; | |
} | |
link.href = getRevealJsPath() + 'css/print/' + style + '.css'; | |
} | |
function setStylesheet4( pdfExport ){ | |
} | |
function installAltKeyBindings3(){ | |
} | |
function installAltKeyBindings4(){ | |
if( isPrintingPDF() ){ | |
var config = Reveal.getConfig(); | |
var shortcut = config.pdfExportShortcut || 'E'; | |
window.addEventListener( 'keydown', function( e ){ | |
if( e.target.nodeName.toUpperCase() == 'BODY' | |
&& ( e.key.toUpperCase() == shortcut.toUpperCase() || e.keyCode == shortcut.toUpperCase().charCodeAt( 0 ) ) ){ | |
e.preventDefault(); | |
togglePdfExport(); | |
return false; | |
} | |
}, true ); | |
} | |
} | |
function isPrintingPDF(){ | |
return ( /print-pdf/gi ).test( window.location.search ); | |
} | |
function togglePdfExport(){ | |
var url_doc = new URL( document.URL ); | |
var query_doc = new URLSearchParams( url_doc.searchParams ); | |
if( isPrintingPDF() ){ | |
query_doc.delete( 'print-pdf' ); | |
}else{ | |
query_doc.set( 'print-pdf', '' ); | |
} | |
url_doc.search = ( query_doc.toString() ? '?' + query_doc.toString() : '' ); | |
window.location.href = url_doc.toString(); | |
} | |
function installKeyBindings(){ | |
var config = Reveal.getConfig(); | |
var shortcut = config.pdfExportShortcut || 'E'; | |
Reveal.addKeyBinding({ | |
keyCode: shortcut.toUpperCase().charCodeAt( 0 ), | |
key: shortcut.toUpperCase(), | |
description: 'PDF export mode' | |
}, togglePdfExport ); | |
installAltKeyBindings(); | |
} | |
function install(){ | |
installKeyBindings(); | |
setStylesheet( isPrintingPDF() ); | |
} | |
var Plugin = { | |
} | |
if( Reveal && Reveal.VERSION && Reveal.VERSION.length && Reveal.VERSION[ 0 ] == '3' ){ | |
// reveal 3.x | |
setStylesheet = setStylesheet3; | |
installAltKeyBindings = installAltKeyBindings3; | |
install(); | |
}else{ | |
// must be reveal 4.x | |
setStylesheet = setStylesheet4; | |
installAltKeyBindings = installAltKeyBindings4; | |
Plugin.id = 'pdf-export'; | |
Plugin.init = function( _Reveal ){ | |
Reveal = _Reveal; | |
install(); | |
}; | |
Plugin.togglePdfExport = function () { | |
togglePdfExport(); | |
}; | |
} | |
return Plugin; | |
})( Reveal ); | |