BeamerReveal

 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={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},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={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};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);
          });
      });
    },
  };
};

index.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)

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



( run in 2.165 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )