view release on metacpan or search on metacpan
beamer-reveal-example-notes-4940D9B0-3334-11F1-8059-A02A0361802B.tex view on Meta::CPAN
\end{frame}
\subsection{Pimping your slides}
\begin{frame}
{And even more good news}
{\ldots almost seems to good to be true\ldots}
\small
However, now you can pimp your slides like never before. You can incorporate:
\begin{itemize}
\item videos and audio fragments
\item animated GIFs and LaTeX animations
\item iframe content
\end{itemize}
without being tied to Acrobat reader.
In addition, there are some extra features
\begin{itemize}
\item press '?' for keyboard help, amongst which you will find:
\item press 'm' to open the slide menu on the left
\item press 'o' to get an overview of the slides
\item press 's' to start a speaker view
beamer-reveal-example-notes-6DF34466-3346-11F1-B68D-A1AAB65F3B63.tex view on Meta::CPAN
\end{frame}
\subsection{Pimping your slides}
\begin{frame}
{And even more good news}
{\ldots almost seems to good to be true\ldots}
\small
However, now you can pimp your slides like never before. You can incorporate:
\begin{itemize}
\item videos and audio fragments
\item animated GIFs and LaTeX animations
\item iframe content
\end{itemize}
without being tied to Acrobat reader.
In addition, there are some extra features
\begin{itemize}
\item press '?' for keyboard help, amongst which you will find:
\item press 'm' to open the slide menu on the left
\item press 'o' to get an overview of the slides
\item press 's' to start a speaker view
beamer-reveal-example.html view on Meta::CPAN
// Change the presentation direction to be RTL
rtl: false,
// see https://revealjs.com/vertical-slides/#navigation-mode
navigationMode: 'linear',
// Randomizes the order of slides each time the presentation loads
shuffle: false,
// Turns fragments on and off globally
fragments: true,
// Flags whether to include the current fragment in the URL,
// so that reloading brings you to the same fragment position
fragmentInURL: false,
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: false,
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: true,
// Flags if it should be possible to pause the presentation (blackout)
beamer-reveal-example.tex view on Meta::CPAN
\end{frame}
\subsection{Pimping your slides}
\begin{frame}
{And even more good news}
{\ldots almost seems to good to be true\ldots}
\small
However, now you can pimp your slides like never before. You can incorporate:
\begin{itemize}
\item videos and audio fragments
\item animated GIFs and LaTeX animations
\item iframe content
\end{itemize}
without being tied to Acrobat reader.
In addition, there are some extra features
\begin{itemize}
\item press '?' for keyboard help, amongst which you will find:
\item press 'm' to open the slide menu on the left
\item press 'o' to get an overview of the slides
\item press 's' to start a speaker view
beamer-reveal-example_files/libs/revealjs/dist/reveal.css view on Meta::CPAN
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se
*/
.reveal .r-stretch,.reveal .stretch{max-width:none;max-height:none}.reveal pre.r-stretch code,.reveal pre.stretch code{height:100%;max-height:100%;box-sizing:border-box}.reveal .r-fit-text{display:inline-block;white-space:nowrap}.reveal .r-stack{disp...
beamer-reveal-example_files/libs/revealjs/dist/reveal.esm.js view on Meta::CPAN
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se
*/
const e=(e,t)=>{for(let i in t)e[i]=t[i];return e},t=(e,t)=>Array.from(e.querySelectorAll(t)),i=(e,t,i)=>{i?e.classList.add(t):e.classList.remove(t)},s=e=>{if("string"==typeof e){if("null"===e)return null;if("true"===e)return!0;if("false"===e)return!...
//# sourceMappingURL=reveal.esm.js.map
beamer-reveal-example_files/libs/revealjs/dist/reveal.esm.js.map view on Meta::CPAN
{"version":3,"file":"reveal.esm.js","sources":["../js/utils/util.js","../js/utils/device.js","../node_modules/fitty/dist/fitty.module.js","../js/controllers/slidecontent.js","../js/utils/constants.js","../js/controllers/slidenumber.js","../js/control...
beamer-reveal-example_files/libs/revealjs/dist/reveal.js view on Meta::CPAN
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Reveal=t()}(this,(function(){"use strict";const e=(e,t)=>{for...
//# sourceMappingURL=reveal.js.map
beamer-reveal-example_files/libs/revealjs/dist/reveal.js.map view on Meta::CPAN
{"version":3,"file":"reveal.js","sources":["../js/utils/util.js","../js/utils/device.js","../node_modules/fitty/dist/fitty.module.js","../js/controllers/slidecontent.js","../js/utils/constants.js","../js/controllers/slidenumber.js","../js/controllers...
beamer-reveal-example_files/libs/revealjs/dist/theme/quarto-534cd8e3a96973385dffff3f4709048d.css view on Meta::CPAN
@import"./fonts/source-sans-pro/source-sans-pro.css";:root{--r-background-color: #fff;--r-main-font: Source Sans Pro, Helvetica, sans-serif;--r-main-font-size: 40px;--r-main-color: #222;--r-block-margin: 12px;--r-heading-margin: 0 0 12px 0;--r-headin...
*
* ansi colors from IPython notebook's
*
* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since
* that seems to be what ansi_up emits
*
*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{back...
beamer-reveal-example_files/libs/revealjs/plugin/highlight/highlight.esm.js view on Meta::CPAN
function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete...
/*!
* reveal.js plugin that adds syntax highlight support.
*/
const Rs={id:"highlight",HIGHLIGHT_STEP_DELIMITER:"|",HIGHLIGHT_LINE_DELIMITER:",",HIGHLIGHT_LINE_RANGE_DELIMITER:"-",hljs:fs,init:function(e){let t=e.getConfig().highlight||{};t.highlightOnLoad="boolean"!=typeof t.highlightOnLoad||t.highlightOnLoad,...
beamer-reveal-example_files/libs/revealjs/plugin/highlight/highlight.js view on Meta::CPAN
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealHighlight=t()}(this,(function(){"use strict";function e...
/*!
* reveal.js plugin that adds syntax highlight support.
*/
const Rs={id:"highlight",HIGHLIGHT_STEP_DELIMITER:"|",HIGHLIGHT_LINE_DELIMITER:",",HIGHLIGHT_LINE_RANGE_DELIMITER:"-",hljs:fs,init:function(e){let t=e.getConfig().highlight||{};t.highlightOnLoad="boolean"!=typeof t.highlightOnLoad||t.highlightOnLoad,...
beamer-reveal-example_files/libs/revealjs/plugin/highlight/plugin.js view on Meta::CPAN
// Run initial highlighting for all code
if( config.highlightOnLoad ) {
Array.from( reveal.getRevealElement().querySelectorAll( 'pre code' ) ).forEach( block => {
Plugin.highlightBlock( block );
} );
}
// If we're printing to PDF, scroll the code highlights of
// all blocks in the deck into view at once
reveal.on( 'pdf-ready', function() {
[].slice.call( reveal.getRevealElement().querySelectorAll( 'pre code[data-line-numbers].current-fragment' ) ).forEach( function( block ) {
Plugin.scrollHighlightedLineIntoView( block, {}, true );
} );
} );
},
/**
* Highlights a code block. If the <code> node has the
* 'data-line-numbers' attribute we also generate slide
* numbers.
*
* If the block contains multiple line highlight steps,
* we clone the block and create a fragment for each step.
*/
highlightBlock: function( block ) {
hljs.highlightElement( block );
// Don't generate line numbers for empty code blocks
if( block.innerHTML.trim().length === 0 ) return;
if( block.hasAttribute( 'data-line-numbers' ) ) {
hljs.lineNumbersBlock( block, { singleLine: true } );
var scrollState = { currentBlock: block };
// If there is more than one highlight step, generate
// fragments
var highlightSteps = Plugin.deserializeHighlightSteps( block.getAttribute( 'data-line-numbers' ) );
if( highlightSteps.length > 1 ) {
// If the original code block has a fragment-index,
// each clone should follow in an incremental sequence
var fragmentIndex = parseInt( block.getAttribute( 'data-fragment-index' ), 10 );
if( typeof fragmentIndex !== 'number' || isNaN( fragmentIndex ) ) {
fragmentIndex = null;
}
// Generate fragments for all steps except the original block
highlightSteps.slice(1).forEach( function( highlight ) {
var fragmentBlock = block.cloneNode( true );
fragmentBlock.setAttribute( 'data-line-numbers', Plugin.serializeHighlightSteps( [ highlight ] ) );
fragmentBlock.classList.add( 'fragment' );
block.parentNode.appendChild( fragmentBlock );
Plugin.highlightLines( fragmentBlock );
if( typeof fragmentIndex === 'number' ) {
fragmentBlock.setAttribute( 'data-fragment-index', fragmentIndex );
fragmentIndex += 1;
}
else {
fragmentBlock.removeAttribute( 'data-fragment-index' );
}
// Scroll highlights into view as we step through them
fragmentBlock.addEventListener( 'visible', Plugin.scrollHighlightedLineIntoView.bind( Plugin, fragmentBlock, scrollState ) );
fragmentBlock.addEventListener( 'hidden', Plugin.scrollHighlightedLineIntoView.bind( Plugin, fragmentBlock.previousElementSibling, scrollState ) );
} );
block.removeAttribute( 'data-fragment-index' );
block.setAttribute( 'data-line-numbers', Plugin.serializeHighlightSteps( [ highlightSteps[0] ] ) );
}
// Scroll the first highlight into view when the slide
// becomes visible. Note supported in IE11 since it lacks
// support for Element.closest.
var slide = typeof block.closest === 'function' ? block.closest( 'section:not(.stack)' ) : null;
if( slide ) {
var scrollFirstHighlightIntoView = function() {
beamer-reveal-example_files/libs/revealjs/plugin/highlight/plugin.js view on Meta::CPAN
cancelAnimationFrame( scrollState.animationFrameID );
// Match the scroll position of the currently visible
// code block
if( scrollState.currentBlock ) {
block.scrollTop = scrollState.currentBlock.scrollTop;
}
// Remember the current code block so that we can match
// its scroll position when showing/hiding fragments
scrollState.currentBlock = block;
var highlightBounds = this.getHighlightedLineBounds( block )
var viewportHeight = block.offsetHeight;
// Subtract padding from the viewport height
var blockStyles = getComputedStyle( block );
viewportHeight -= parseInt( blockStyles.paddingTop ) + parseInt( blockStyles.paddingBottom );
// Scroll position which centers all highlights
beamer-reveal-example_files/libs/revealjs/plugin/markdown/markdown.esm.js view on Meta::CPAN
function e(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer...
/*!
* The reveal.js markdown plugin. Handles parsing of
* markdown inside of presentations as well as loading
* of external markdown documents.
*/
const N="__SCRIPT_END__",O=/\[\s*((\d*):)?\s*([\s\d,|-]*)\]/,D={"&":"&","<":"<",">":">",'"':""","'":"'"},B=()=>{let e;function t(e){let t=(e.querySelector("[data-template]")||e.querySelector("script")||e).textContent;t=t.replace(ne...
beamer-reveal-example_files/libs/revealjs/plugin/markdown/markdown.js view on Meta::CPAN
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealMarkdown=t()}(this,(function(){"use strict";function e(...
/*!
* The reveal.js markdown plugin. Handles parsing of
* markdown inside of presentations as well as loading
* of external markdown documents.
*/
const N="__SCRIPT_END__",O=/\[\s*((\d*):)?\s*([\s\d,|-]*)\]/,D={"&":"&","<":"<",">":">",'"':""","'":"'"};return()=>{let e;function t(e){let t=(e.querySelector("[data-template]")||e.querySelector("script")||e).textContent;t=t.replac...
beamer-reveal-example_files/libs/revealjs/plugin/markdown/plugin.js view on Meta::CPAN
// highlight.js is able to read it
code = escapeForHTML( code );
// return `<pre><code ${lineNumbers} class="${language}">${code}</code></pre>`;
return `<pre><code ${lineNumbers} ${lineNumberOffset} class="${language}">${code}</code></pre>`;
};
}
if( animateLists === true ) {
renderer.listitem = text => `<li class="fragment">${text}</li>`;
}
marked.setOptions( {
renderer,
...markedOptions
} );
return processSlides( deck.getRevealElement() ).then( convertSlides );
},
beamer-reveal-example_files/libs/revealjs/plugin/notes/jojo.html view on Meta::CPAN
}
else if( data.type === 'return' ) {
pendingCalls[data.callId](data.result);
delete pendingCalls[data.callId];
}
}
// Messages sent by the reveal.js inside of the current slide preview
else if( data && data.namespace === 'reveal' ) {
const supportedEvents = [
'slidechanged',
'fragmentshown',
'fragmenthidden',
'paused',
'resumed',
'previewiframe',
'previewimage',
'previewvideo',
'closeoverlay'
];
if( /ready/.test( data.eventName ) ) {
// Send a message back to notify that the handshake is complete
beamer-reveal-example_files/libs/revealjs/plugin/notes/jojo.html view on Meta::CPAN
/**
* Called when the main window sends an updated state.
*/
function handleStateMessage( data ) {
// Store the most recently set state to avoid circular loops
// applying the same state
currentState = JSON.stringify( data.state );
// No need for updating the notes in case of fragment changes
if ( data.notes ) {
notes.classList.remove( 'hidden' );
notesValue.style.whiteSpace = data.whitespace;
if( data.markdown ) {
notesValue.innerHTML = marked( data.notes );
}
else {
notesValue.innerHTML = data.notes;
}
}
beamer-reveal-example_files/libs/revealjs/plugin/notes/notes.esm.js view on Meta::CPAN
function e(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer...
beamer-reveal-example_files/libs/revealjs/plugin/notes/notes.js view on Meta::CPAN
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealNotes=t()}(this,(function(){"use strict";function e(){r...
beamer-reveal-example_files/libs/revealjs/plugin/notes/plugin.js view on Meta::CPAN
}
/**
* Posts the current slide data to the notes window.
*/
function post( event ) {
let slideElement = deck.getCurrentSlide(),
notesElements = slideElement.querySelectorAll( 'aside.notes' ),
fragmentElement = slideElement.querySelector( '.current-fragment' );
let messageData = {
namespace: 'reveal-notes',
type: 'state',
notes: '',
markdown: false,
whitespace: 'normal',
state: deck.getState()
};
// Look for notes defined in a slide attribute
if( slideElement.hasAttribute( 'data-notes' ) ) {
messageData.notes = slideElement.getAttribute( 'data-notes' );
messageData.whitespace = 'pre-wrap';
}
// Look for notes defined in a fragment
if( fragmentElement ) {
let fragmentNotes = fragmentElement.querySelector( 'aside.notes' );
if( fragmentNotes ) {
messageData.notes = fragmentNotes.innerHTML;
messageData.markdown = typeof fragmentNotes.getAttribute( 'data-markdown' ) === 'string';
// Ignore other slide notes
notesElements = null;
}
else if( fragmentElement.hasAttribute( 'data-notes' ) ) {
messageData.notes = fragmentElement.getAttribute( 'data-notes' );
messageData.whitespace = 'pre-wrap';
// In case there are slide notes
notesElements = null;
}
}
// Look for notes defined in an aside element
if( notesElements && notesElements.length ) {
// Ignore notes inside of fragments since those are shown
// individually when stepping through fragments
notesElements = Array.from( notesElements ).filter( notesElement => notesElement.closest( '.fragment' ) === null );
messageData.notes = notesElements.map( notesElement => notesElement.innerHTML ).join( '\n' );
messageData.markdown = notesElements[0] && typeof notesElements[0].getAttribute( 'data-markdown' ) === 'string';
}
speakerWindow.postMessage( JSON.stringify( messageData ), '*' );
}
/**
beamer-reveal-example_files/libs/revealjs/plugin/notes/plugin.js view on Meta::CPAN
}
/**
* Called once we have established a connection to the notes
* window.
*/
function onConnected() {
// Monitor events that trigger a change in state
deck.on( 'slidechanged', post );
deck.on( 'fragmentshown', post );
deck.on( 'fragmenthidden', post );
deck.on( 'overviewhidden', post );
deck.on( 'overviewshown', post );
deck.on( 'paused', post );
deck.on( 'resumed', post );
deck.on( 'previewiframe', post );
deck.on( 'previewimage', post );
deck.on( 'previewvideo', post );
deck.on( 'closeoverlay', post );
// Post the initial state
beamer-reveal-example_files/libs/revealjs/plugin/notes/speaker-view.html view on Meta::CPAN
}
else if( data.type === 'return' ) {
pendingCalls[data.callId](data.result);
delete pendingCalls[data.callId];
}
}
// Messages sent by the reveal.js inside of the current slide preview
else if( data && data.namespace === 'reveal' ) {
const supportedEvents = [
'slidechanged',
'fragmentshown',
'fragmenthidden',
'paused',
'resumed',
'previewiframe',
'previewimage',
'previewvideo',
'closeoverlay'
];
if( /ready/.test( data.eventName ) ) {
// Send a message back to notify that the handshake is complete
beamer-reveal-example_files/libs/revealjs/plugin/notes/speaker-view.html view on Meta::CPAN
/**
* Called when the main window sends an updated state.
*/
function handleStateMessage( data ) {
// Store the most recently set state to avoid circular loops
// applying the same state
currentState = JSON.stringify( data.state );
// No need for updating the notes in case of fragment changes
if ( data.notes ) {
notes.classList.remove( 'hidden' );
notesValue.style.whiteSpace = data.whitespace;
if( data.markdown ) {
notesValue.innerHTML = marked( data.notes );
}
else {
notesValue.innerHTML = data.notes;
}
}
beamer-reveal-example_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css view on Meta::CPAN
}
.reveal pre.numberSource code > span {
left: -2.1em;
}
pre.numberSource code > span > a:first-child::before {
left: -0.7em;
}
.reveal pre > code:not(:first-child).fragment {
position: absolute;
top: 0;
left: 0;
width: 100%;
box-sizing: border-box;
}
.reveal div.sourceCode pre code {
min-height: 100%;
}
beamer-reveal-example_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js view on Meta::CPAN
return false;
} else {
return true;
}
} else {
return false;
}
}
const kCodeLineNumbersAttr = "data-code-line-numbers";
const kFragmentIndex = "data-fragment-index";
function initQuartoLineHighlight(deck) {
const divSourceCode = deck
.getRevealElement()
.querySelectorAll("div.sourceCode");
// Process each div created by Pandoc highlighting - numbered line are already included.
divSourceCode.forEach((el) => {
if (el.hasAttribute(kCodeLineNumbersAttr)) {
const codeLineAttr = el.getAttribute(kCodeLineNumbersAttr);
el.removeAttribute(kCodeLineNumbersAttr);
beamer-reveal-example_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js view on Meta::CPAN
const codeBlock = el.querySelectorAll("pre code");
codeBlock.forEach((code) => {
// move attributes on code block
code.setAttribute(kCodeLineNumbersAttr, codeLineAttr);
const scrollState = { currentBlock: code };
// Check if there are steps and duplicate code block accordingly
const highlightSteps = splitLineNumbers(codeLineAttr);
if (highlightSteps.length > 1) {
// If the original code block has a fragment-index,
// each clone should follow in an incremental sequence
let fragmentIndex = parseInt(
code.getAttribute(kFragmentIndex),
10
);
fragmentIndex =
typeof fragmentIndex !== "number" || isNaN(fragmentIndex)
? null
: fragmentIndex;
let stepN = 1;
highlightSteps.slice(1).forEach(
// Generate fragments for all steps except the original block
(step) => {
var fragmentBlock = code.cloneNode(true);
fragmentBlock.setAttribute(
"data-code-line-numbers",
joinLineNumbers([step])
);
fragmentBlock.classList.add("fragment");
// Pandoc sets id on spans we need to keep unique
fragmentBlock
.querySelectorAll(":scope > span")
.forEach((span) => {
if (span.hasAttribute("id")) {
span.setAttribute(
"id",
span.getAttribute("id").concat("-" + stepN)
);
}
});
stepN = ++stepN;
// Add duplicated <code> element after existing one
code.parentNode.appendChild(fragmentBlock);
// Each new <code> element is highlighted based on the new attributes value
highlightCodeBlock(fragmentBlock);
if (typeof fragmentIndex === "number") {
fragmentBlock.setAttribute(kFragmentIndex, fragmentIndex);
fragmentIndex += 1;
} else {
fragmentBlock.removeAttribute(kFragmentIndex);
}
// Scroll highlights into view as we step through them
fragmentBlock.addEventListener(
"visible",
scrollHighlightedLineIntoView.bind(
this,
fragmentBlock,
scrollState
)
);
fragmentBlock.addEventListener(
"hidden",
scrollHighlightedLineIntoView.bind(
this,
fragmentBlock.previousSibling,
scrollState
)
);
}
);
code.removeAttribute(kFragmentIndex);
code.setAttribute(
kCodeLineNumbersAttr,
joinLineNumbers([highlightSteps[0]])
);
beamer-reveal-example_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js view on Meta::CPAN
}
});
}
function highlightCodeBlock(codeBlock) {
const highlightSteps = splitLineNumbers(
codeBlock.getAttribute(kCodeLineNumbersAttr)
);
if (highlightSteps.length) {
// If we have at least one step, we generate fragments
highlightSteps[0].forEach((highlight) => {
// Add expected class on <pre> for reveal CSS
codeBlock.parentNode.classList.add("code-wrapper");
// Select lines to highlight
spanToHighlight = [];
if (typeof highlight.last === "number") {
spanToHighlight = [].slice.call(
codeBlock.querySelectorAll(
":scope > span:nth-of-type(n+" +
beamer-reveal-example_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js view on Meta::CPAN
function scrollHighlightedLineIntoView(block, scrollState, skipAnimation) {
window.cancelAnimationFrame(scrollState.animationFrameID);
// Match the scroll position of the currently visible
// code block
if (scrollState.currentBlock) {
block.scrollTop = scrollState.currentBlock.scrollTop;
}
// Remember the current code block so that we can match
// its scroll position when showing/hiding fragments
scrollState.currentBlock = block;
const highlightBounds = getHighlightedLineBounds(block);
let viewportHeight = block.offsetHeight;
// Subtract padding from the viewport height
const blockStyles = window.getComputedStyle(block);
viewportHeight -=
parseInt(blockStyles.paddingTop) + parseInt(blockStyles.paddingBottom);
beamer-reveal-example_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js view on Meta::CPAN
* The easing function used when scrolling.
*/
function easeInOutQuart(t) {
// easeInOutQuart
return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;
}
function splitLineNumbers(lineNumbersAttr) {
// remove space
lineNumbersAttr = lineNumbersAttr.replace("/s/g", "");
// seperate steps (for fragment)
lineNumbersAttr = lineNumbersAttr.split(delimiters.step);
// for each step, calculate first and last line, if any
return lineNumbersAttr.map((highlights) => {
// detect lines
const lines = highlights.split(delimiters.line);
return lines.map((range) => {
if (/^[\d-]+$/.test(range)) {
range = range.split(delimiters.lineRange);
const firstLine = parseInt(range[0], 10);
beamer-reveal-example_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js view on Meta::CPAN
initQuartoLineHighlight(deck);
// If we're printing to PDF, scroll the code highlights of
// all blocks in the deck into view at once
deck.on("pdf-ready", function () {
[].slice
.call(
deck
.getRevealElement()
.querySelectorAll(
"pre code[data-code-line-numbers].current-fragment"
)
)
.forEach(function (block) {
scrollHighlightedLineIntoView(block, {}, true);
});
});
},
};
};
// Change the presentation direction to be RTL
rtl: false,
// see https://revealjs.com/vertical-slides/#navigation-mode
navigationMode: 'linear',
// Randomizes the order of slides each time the presentation loads
shuffle: false,
// Turns fragments on and off globally
fragments: true,
// Flags whether to include the current fragment in the URL,
// so that reloading brings you to the same fragment position
fragmentInURL: false,
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: false,
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: true,
// Flags if it should be possible to pause the presentation (blackout)
music-ideas.org view on Meta::CPAN
if (STOP_ON.has(id)) {
audio.pause();
audio.currentTime = 0; // optional rewind
}
}
Reveal.on("ready", maybeUpdateMusic); // when Reveal is ready :contentReference[oaicite:1]{index=1}
Reveal.on("slidechanged", maybeUpdateMusic); // run on every slide change :contentReference[oaicite:2]{index=2}
// Optional: stop when a specific fragment is reached
Reveal.on("fragmentshown", (e) => { // fragment events :contentReference[oaicite:3]{index=3}
if (e.fragment?.matches?.("[data-music-stop]")) {
audio.pause();
audio.currentTime = 0;
}
});
</script>
<section id="slide-start-music"> ... </section>
<section> ... </section>
<section id="slide-stop-music"> ... </section>
<!-- Or stop on a fragment -->
<section>
<p class="fragment" data-music-stop>Stop music now</p>
</section>
// simple fading:
<audio id="bgm" preload="auto" loop></audio>
<script type="module">
const audio = document.getElementById("bgm");
quarto/preso.html view on Meta::CPAN
// Change the presentation direction to be RTL
rtl: false,
// see https://revealjs.com/vertical-slides/#navigation-mode
navigationMode: 'linear',
// Randomizes the order of slides each time the presentation loads
shuffle: false,
// Turns fragments on and off globally
fragments: true,
// Flags whether to include the current fragment in the URL,
// so that reloading brings you to the same fragment position
fragmentInURL: false,
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: false,
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: true,
// Flags if it should be possible to pause the presentation (blackout)
quarto/preso_files/libs/revealjs/dist/reveal.css view on Meta::CPAN
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se
*/
.reveal .r-stretch,.reveal .stretch{max-width:none;max-height:none}.reveal pre.r-stretch code,.reveal pre.stretch code{height:100%;max-height:100%;box-sizing:border-box}.reveal .r-fit-text{display:inline-block;white-space:nowrap}.reveal .r-stack{disp...
quarto/preso_files/libs/revealjs/dist/reveal.esm.js view on Meta::CPAN
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se
*/
const e=(e,t)=>{for(let i in t)e[i]=t[i];return e},t=(e,t)=>Array.from(e.querySelectorAll(t)),i=(e,t,i)=>{i?e.classList.add(t):e.classList.remove(t)},s=e=>{if("string"==typeof e){if("null"===e)return null;if("true"===e)return!0;if("false"===e)return!...
//# sourceMappingURL=reveal.esm.js.map
quarto/preso_files/libs/revealjs/dist/reveal.esm.js.map view on Meta::CPAN
{"version":3,"file":"reveal.esm.js","sources":["../js/utils/util.js","../js/utils/device.js","../node_modules/fitty/dist/fitty.module.js","../js/controllers/slidecontent.js","../js/utils/constants.js","../js/controllers/slidenumber.js","../js/control...
quarto/preso_files/libs/revealjs/dist/reveal.js view on Meta::CPAN
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2011-2024 Hakim El Hattab, https://hakim.se
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Reveal=t()}(this,(function(){"use strict";const e=(e,t)=>{for...
//# sourceMappingURL=reveal.js.map