).';\n\n\t\tif( initialized ) throw 'Reveal.js has already been initialized.';\n\n\t\tinitialized = true;\n\n\t\t// Cache references to key DOM elements\n\t\tdom.wrapper = revealElement;\n\t\tdom.slides = revealElement.querySelector( '.slides' );\n\n\t\tif( !dom.slides ) throw 'Unable to find slides container (
).';\n\n\t\t// Compose our config object in order of increasing precedence:\n\t\t// 1. Default reveal.js options\n\t\t// 2. Options provided via Reveal.configure() prior to\n\t\t// initialization\n\t\t// 3. Options passed to the Reveal constructor\n\t\t// 4. Options passed to Reveal.initialize\n\t\t// 5. Query params\n\t\tconfig = { ...defaultConfig, ...config, ...options, ...initOptions, ...Util.getQueryHash() };\n\n\t\t// Legacy support for the ?print-pdf query\n\t\tif( /print-pdf/gi.test( window.location.search ) ) {\n\t\t\tconfig.view = 'print';\n\t\t}\n\n\t\tsetViewport();\n\n\t\t// Force a layout when the whole page, incl fonts, has loaded\n\t\twindow.addEventListener( 'load', layout, false );\n\n\t\t// Register plugins and load dependencies, then move on to #start()\n\t\tplugins.load( config.plugins, config.dependencies ).then( start );\n\n\t\treturn new Promise( resolve => Reveal.on( 'ready', resolve ) );\n\n\t}\n\n\t/**\n\t * Encase the presentation in a reveal.js viewport. The\n\t * extent of the viewport differs based on configuration.\n\t */\n\tfunction setViewport() {\n\n\t\t// Embedded decks use the reveal element as their viewport\n\t\tif( config.embedded === true ) {\n\t\t\tdom.viewport = Util.closest( revealElement, '.reveal-viewport' ) || revealElement;\n\t\t}\n\t\t// Full-page decks use the body as their viewport\n\t\telse {\n\t\t\tdom.viewport = document.body;\n\t\t\tdocument.documentElement.classList.add( 'reveal-full-page' );\n\t\t}\n\n\t\tdom.viewport.classList.add( 'reveal-viewport' );\n\n\t}\n\n\t/**\n\t * Starts up reveal.js by binding input events and navigating\n\t * to the current URL deeplink if there is one.\n\t */\n\tfunction start() {\n\n\t\t// Don't proceed if this instance has been destroyed\n\t\tif( initialized === false ) return;\n\n\t\tready = true;\n\n\t\t// Remove slides hidden with data-visibility\n\t\tremoveHiddenSlides();\n\n\t\t// Make sure we've got all the DOM elements we need\n\t\tsetupDOM();\n\n\t\t// Listen to messages posted to this window\n\t\tsetupPostMessage();\n\n\t\t// Prevent the slides from being scrolled out of view\n\t\tsetupScrollPrevention();\n\n\t\t// Adds bindings for fullscreen mode\n\t\tsetupFullscreen();\n\n\t\t// Resets all vertical slides so that only the first is visible\n\t\tresetVerticalSlides();\n\n\t\t// Updates the presentation to match the current configuration values\n\t\tconfigure();\n\n\t\t// Create slide backgrounds\n\t\tbackgrounds.update( true );\n\n\t\t// Activate the print/scroll view if configured\n\t\tactivateInitialView();\n\n\t\t// Read the initial hash\n\t\tlocation.readURL();\n\n\t\t// Notify listeners that the presentation is ready but use a 1ms\n\t\t// timeout to ensure it's not fired synchronously after #initialize()\n\t\tsetTimeout( () => {\n\t\t\t// Enable transitions now that we're loaded\n\t\t\tdom.slides.classList.remove( 'no-transition' );\n\n\t\t\tdom.wrapper.classList.add( 'ready' );\n\n\t\t\tdispatchEvent({\n\t\t\t\ttype: 'ready',\n\t\t\t\tdata: {\n\t\t\t\t\tindexh,\n\t\t\t\t\tindexv,\n\t\t\t\t\tcurrentSlide\n\t\t\t\t}\n\t\t\t});\n\t\t}, 1 );\n\n\t}\n\n\t/**\n\t * Activates the correct reveal.js view based on our config.\n\t * This is only invoked once during initialization.\n\t */\n\tfunction activateInitialView() {\n\n\t\tconst activatePrintView = config.view === 'print';\n\t\tconst activateScrollView = config.view === 'scroll' || config.view === 'reader';\n\n\t\tif( activatePrintView || activateScrollView ) {\n\n\t\t\tif( activatePrintView ) {\n\t\t\t\tremoveEventListeners();\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttouch.unbind();\n\t\t\t}\n\n\t\t\t// Avoid content flickering during layout\n\t\t\tdom.viewport.classList.add( 'loading-scroll-mode' );\n\n\t\t\tif( activatePrintView ) {\n\t\t\t\t// The document needs to have loaded for the PDF layout\n\t\t\t\t// measurements to be accurate\n\t\t\t\tif( document.readyState === 'complete' ) {\n\t\t\t\t\tprintView.activate();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\twindow.addEventListener( 'load', () => printView.activate() );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tscrollView.activate();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Removes all slides with data-visibility=\"hidden\". This\n\t * is done right before the rest of the presentation is\n\t * initialized.\n\t *\n\t * If you want to show all hidden slides, initialize\n\t * reveal.js with showHiddenSlides set to true.\n\t */\n\tfunction removeHiddenSlides() {\n\n\t\tif( !config.showHiddenSlides ) {\n\t\t\tUtil.queryAll( dom.wrapper, 'section[data-visibility=\"hidden\"]' ).forEach( slide => {\n\t\t\t\tconst parent = slide.parentNode;\n\n\t\t\t\t// If this slide is part of a stack and that stack will be\n\t\t\t\t// empty after removing the hidden slide, remove the entire\n\t\t\t\t// stack\n\t\t\t\tif( parent.childElementCount === 1 && /section/i.test( parent.nodeName ) ) {\n\t\t\t\t\tparent.remove();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tslide.remove();\n\t\t\t\t}\n\n\t\t\t} );\n\t\t}\n\n\t}\n\n\t/**\n\t * Finds and stores references to DOM elements which are\n\t * required by the presentation. If a required element is\n\t * not found, it is created.\n\t */\n\tfunction setupDOM() {\n\n\t\t// Prevent transitions while we're loading\n\t\tdom.slides.classList.add( 'no-transition' );\n\n\t\tif( Device.isMobile ) {\n\t\t\tdom.wrapper.classList.add( 'no-hover' );\n\t\t}\n\t\telse {\n\t\t\tdom.wrapper.classList.remove( 'no-hover' );\n\t\t}\n\n\t\tbackgrounds.render();\n\t\tslideNumber.render();\n\t\tjumpToSlide.render();\n\t\tcontrols.render();\n\t\tprogress.render();\n\t\tnotes.render();\n\n\t\t// Overlay graphic which is displayed during the paused mode\n\t\tdom.pauseOverlay = Util.createSingletonNode( dom.wrapper, 'div', 'pause-overlay', config.controls ? 'Resume presentation ' : null );\n\n\t\tdom.statusElement = createStatusElement();\n\n\t\tdom.wrapper.setAttribute( 'role', 'application' );\n\t}\n\n\t/**\n\t * Creates a hidden div with role aria-live to announce the\n\t * current slide content. Hide the div off-screen to make it\n\t * available only to Assistive Technologies.\n\t *\n\t * @return {HTMLElement}\n\t */\n\tfunction createStatusElement() {\n\n\t\tlet statusElement = dom.wrapper.querySelector( '.aria-status' );\n\t\tif( !statusElement ) {\n\t\t\tstatusElement = document.createElement( 'div' );\n\t\t\tstatusElement.style.position = 'absolute';\n\t\t\tstatusElement.style.height = '1px';\n\t\t\tstatusElement.style.width = '1px';\n\t\t\tstatusElement.style.overflow = 'hidden';\n\t\t\tstatusElement.style.clip = 'rect( 1px, 1px, 1px, 1px )';\n\t\t\tstatusElement.classList.add( 'aria-status' );\n\t\t\tstatusElement.setAttribute( 'aria-live', 'polite' );\n\t\t\tstatusElement.setAttribute( 'aria-atomic','true' );\n\t\t\tdom.wrapper.appendChild( statusElement );\n\t\t}\n\t\treturn statusElement;\n\n\t}\n\n\t/**\n\t * Announces the given text to screen readers.\n\t */\n\tfunction announceStatus( value ) {\n\n\t\tdom.statusElement.textContent = value;\n\n\t}\n\n\t/**\n\t * Converts the given HTML element into a string of text\n\t * that can be announced to a screen reader. Hidden\n\t * elements are excluded.\n\t */\n\tfunction getStatusText( node ) {\n\n\t\tlet text = '';\n\n\t\t// Text node\n\t\tif( node.nodeType === 3 ) {\n\t\t\ttext += node.textContent.trim();\n\t\t}\n\t\t// Element node\n\t\telse if( node.nodeType === 1 ) {\n\n\t\t\tlet isAriaHidden = node.getAttribute( 'aria-hidden' );\n\t\t\tlet isDisplayHidden = window.getComputedStyle( node )['display'] === 'none';\n\t\t\tif( isAriaHidden !== 'true' && !isDisplayHidden ) {\n\n\t\t\t\t// Capture alt text from img and video elements\n\t\t\t\tif( node.tagName === 'IMG' || node.tagName === 'VIDEO' ) {\n\t\t\t\t\tlet altText = node.getAttribute( 'alt' );\n\t\t\t\t\tif( altText ) {\n\t\t\t\t\t\ttext += ensurePunctuation( altText );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tArray.from( node.childNodes ).forEach( child => {\n\t\t\t\t\ttext += getStatusText( child );\n\t\t\t\t} );\n\n\t\t\t\t// Add period after block-level text elements to improve\n\t\t\t\t// screen reader experience\n\t\t\t\tconst textElements = ['P', 'DIV', 'UL', 'OL', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'BLOCKQUOTE'];\n\t\t\t\tif( textElements.includes( node.tagName ) && text.trim() !== '' ) {\n\t\t\t\t\ttext = ensurePunctuation( text );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttext = text.trim();\n\n\t\treturn text === '' ? '' : text + ' ';\n\n\t}\n\n\t/**\n\t * Ensures text ends with proper punctuation by adding a period\n\t * if it doesn't already end with punctuation.\n\t */\n\tfunction ensurePunctuation( text ) {\n\n\t\tconst trimmedText = text.trim();\n\n\t\tif( trimmedText === '' ) {\n\t\t\treturn text;\n\t\t}\n\n\t\treturn !/[.!?]$/.test(trimmedText) ? trimmedText + '.' : trimmedText;\n\n\t}\n\n\t/**\n\t * This is an unfortunate necessity. Some actions – such as\n\t * an input field being focused in an iframe or using the\n\t * keyboard to expand text selection beyond the bounds of\n\t * a slide – can trigger our content to be pushed out of view.\n\t * This scrolling can not be prevented by hiding overflow in\n\t * CSS (we already do) so we have to resort to repeatedly\n\t * checking if the slides have been offset :(\n\t */\n\tfunction setupScrollPrevention() {\n\n\t\tsetInterval( () => {\n\t\t\tif( !scrollView.isActive() && dom.wrapper.scrollTop !== 0 || dom.wrapper.scrollLeft !== 0 ) {\n\t\t\t\tdom.wrapper.scrollTop = 0;\n\t\t\t\tdom.wrapper.scrollLeft = 0;\n\t\t\t}\n\t\t}, 1000 );\n\n\t}\n\n\t/**\n\t * After entering fullscreen we need to force a layout to\n\t * get our presentations to scale correctly. This behavior\n\t * is inconsistent across browsers but a force layout seems\n\t * to normalize it.\n\t */\n\tfunction setupFullscreen() {\n\n\t\tdocument.addEventListener( 'fullscreenchange', onFullscreenChange );\n\t\tdocument.addEventListener( 'webkitfullscreenchange', onFullscreenChange );\n\n\t}\n\n\t/**\n\t * Registers a listener to postMessage events, this makes it\n\t * possible to call all reveal.js API methods from another\n\t * window. For example:\n\t *\n\t * revealWindow.postMessage( JSON.stringify({\n\t * method: 'slide',\n\t * args: [ 2 ]\n\t * }), '*' );\n\t */\n\tfunction setupPostMessage() {\n\n\t\tif( config.postMessage ) {\n\t\t\twindow.addEventListener( 'message', onPostMessage, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies the configuration settings from the config\n\t * object. May be called multiple times.\n\t *\n\t * @param {object} options\n\t */\n\tfunction configure( options ) {\n\n\t\tconst oldConfig = { ...config }\n\n\t\t// New config options may be passed when this method\n\t\t// is invoked through the API after initialization\n\t\tif( typeof options === 'object' ) Util.extend( config, options );\n\n\t\t// Abort if reveal.js hasn't finished loading, config\n\t\t// changes will be applied automatically once ready\n\t\tif( Reveal.isReady() === false ) return;\n\n\t\tconst numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length;\n\n\t\t// The transition is added as a class on the .reveal element\n\t\tdom.wrapper.classList.remove( oldConfig.transition );\n\t\tdom.wrapper.classList.add( config.transition );\n\n\t\tdom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed );\n\t\tdom.wrapper.setAttribute( 'data-background-transition', config.backgroundTransition );\n\n\t\t// Expose our configured slide dimensions as custom props\n\t\tdom.viewport.style.setProperty( '--slide-width', typeof config.width === 'string' ? config.width : config.width + 'px' );\n\t\tdom.viewport.style.setProperty( '--slide-height', typeof config.height === 'string' ? config.height : config.height + 'px' );\n\n\t\tif( config.shuffle ) {\n\t\t\tshuffle();\n\t\t}\n\n\t\tUtil.toggleClass( dom.wrapper, 'embedded', config.embedded );\n\t\tUtil.toggleClass( dom.wrapper, 'rtl', config.rtl );\n\t\tUtil.toggleClass( dom.wrapper, 'center', config.center );\n\n\t\t// Exit the paused mode if it was configured off\n\t\tif( config.pause === false ) {\n\t\t\tresume();\n\t\t}\n\n\t\t// Reset all changes made by auto-animations\n\t\tautoAnimate.reset();\n\n\t\t// Remove existing auto-slide controls\n\t\tif( autoSlidePlayer ) {\n\t\t\tautoSlidePlayer.destroy();\n\t\t\tautoSlidePlayer = null;\n\t\t}\n\n\t\t// Generate auto-slide controls if needed\n\t\tif( numberOfSlides > 1 && config.autoSlide && config.autoSlideStoppable ) {\n\t\t\tautoSlidePlayer = new Playback( dom.wrapper, () => {\n\t\t\t\treturn Math.min( Math.max( ( Date.now() - autoSlideStartTime ) / autoSlide, 0 ), 1 );\n\t\t\t} );\n\n\t\t\tautoSlidePlayer.on( 'click', onAutoSlidePlayerClick );\n\t\t\tautoSlidePaused = false;\n\t\t}\n\n\t\t// Add the navigation mode to the DOM so we can adjust styling\n\t\tif( config.navigationMode !== 'default' ) {\n\t\t\tdom.wrapper.setAttribute( 'data-navigation-mode', config.navigationMode );\n\t\t}\n\t\telse {\n\t\t\tdom.wrapper.removeAttribute( 'data-navigation-mode' );\n\t\t}\n\n\t\tnotes.configure( config, oldConfig );\n\t\tfocus.configure( config, oldConfig );\n\t\tpointer.configure( config, oldConfig );\n\t\tcontrols.configure( config, oldConfig );\n\t\tprogress.configure( config, oldConfig );\n\t\tkeyboard.configure( config, oldConfig );\n\t\tfragments.configure( config, oldConfig );\n\t\tslideNumber.configure( config, oldConfig );\n\n\t\tsync();\n\n\t}\n\n\t/**\n\t * Binds all event listeners.\n\t */\n\tfunction addEventListeners() {\n\n\t\teventsAreBound = true;\n\n\t\twindow.addEventListener( 'resize', onWindowResize, false );\n\n\t\tif( config.touch ) touch.bind();\n\t\tif( config.keyboard ) keyboard.bind();\n\t\tif( config.progress ) progress.bind();\n\t\tif( config.respondToHashChanges ) location.bind();\n\t\tcontrols.bind();\n\t\tfocus.bind();\n\n\t\tdom.slides.addEventListener( 'click', onSlidesClicked, false );\n\t\tdom.slides.addEventListener( 'transitionend', onTransitionEnd, false );\n\t\tdom.pauseOverlay.addEventListener( 'click', resume, false );\n\n\t\tif( config.focusBodyOnPageVisibilityChange ) {\n\t\t\tdocument.addEventListener( 'visibilitychange', onPageVisibilityChange, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Unbinds all event listeners.\n\t */\n\tfunction removeEventListeners() {\n\n\t\teventsAreBound = false;\n\n\t\ttouch.unbind();\n\t\tfocus.unbind();\n\t\tkeyboard.unbind();\n\t\tcontrols.unbind();\n\t\tprogress.unbind();\n\t\tlocation.unbind();\n\n\t\twindow.removeEventListener( 'resize', onWindowResize, false );\n\n\t\tdom.slides.removeEventListener( 'click', onSlidesClicked, false );\n\t\tdom.slides.removeEventListener( 'transitionend', onTransitionEnd, false );\n\t\tdom.pauseOverlay.removeEventListener( 'click', resume, false );\n\n\t}\n\n\t/**\n\t * Uninitializes reveal.js by undoing changes made to the\n\t * DOM and removing all event listeners.\n\t */\n\tfunction destroy() {\n\n\t\tinitialized = false;\n\n\t\t// There's nothing to destroy if this instance hasn't finished\n\t\t// initializing\n\t\tif( ready === false ) return;\n\n\t\tremoveEventListeners();\n\t\tcancelAutoSlide();\n\n\t\t// Destroy controllers\n\t\tnotes.destroy();\n\t\tfocus.destroy();\n\t\toverlay.destroy();\n\t\tplugins.destroy();\n\t\tpointer.destroy();\n\t\tcontrols.destroy();\n\t\tprogress.destroy();\n\t\tbackgrounds.destroy();\n\t\tslideNumber.destroy();\n\t\tjumpToSlide.destroy();\n\n\t\t// Remove event listeners\n\t\tdocument.removeEventListener( 'fullscreenchange', onFullscreenChange );\n\t\tdocument.removeEventListener( 'webkitfullscreenchange', onFullscreenChange );\n\t\tdocument.removeEventListener( 'visibilitychange', onPageVisibilityChange, false );\n\t\twindow.removeEventListener( 'message', onPostMessage, false );\n\t\twindow.removeEventListener( 'load', layout, false );\n\n\t\t// Undo DOM changes\n\t\tif( dom.pauseOverlay ) dom.pauseOverlay.remove();\n\t\tif( dom.statusElement ) dom.statusElement.remove();\n\n\t\tdocument.documentElement.classList.remove( 'reveal-full-page' );\n\n\t\tdom.wrapper.classList.remove( 'ready', 'center', 'has-horizontal-slides', 'has-vertical-slides' );\n\t\tdom.wrapper.removeAttribute( 'data-transition-speed' );\n\t\tdom.wrapper.removeAttribute( 'data-background-transition' );\n\n\t\tdom.viewport.classList.remove( 'reveal-viewport' );\n\t\tdom.viewport.style.removeProperty( '--slide-width' );\n\t\tdom.viewport.style.removeProperty( '--slide-height' );\n\n\t\tdom.slides.style.removeProperty( 'width' );\n\t\tdom.slides.style.removeProperty( 'height' );\n\t\tdom.slides.style.removeProperty( 'zoom' );\n\t\tdom.slides.style.removeProperty( 'left' );\n\t\tdom.slides.style.removeProperty( 'top' );\n\t\tdom.slides.style.removeProperty( 'bottom' );\n\t\tdom.slides.style.removeProperty( 'right' );\n\t\tdom.slides.style.removeProperty( 'transform' );\n\n\t\tArray.from( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) ).forEach( slide => {\n\t\t\tslide.style.removeProperty( 'display' );\n\t\t\tslide.style.removeProperty( 'top' );\n\t\t\tslide.removeAttribute( 'hidden' );\n\t\t\tslide.removeAttribute( 'aria-hidden' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Adds a listener to one of our custom reveal.js events,\n\t * like slidechanged.\n\t */\n\tfunction on( type, listener, useCapture ) {\n\n\t\trevealElement.addEventListener( type, listener, useCapture );\n\n\t}\n\n\t/**\n\t * Unsubscribes from a reveal.js event.\n\t */\n\tfunction off( type, listener, useCapture ) {\n\n\t\trevealElement.removeEventListener( type, listener, useCapture );\n\n\t}\n\n\t/**\n\t * Applies CSS transforms to the slides container. The container\n\t * is transformed from two separate sources: layout and the overview\n\t * mode.\n\t *\n\t * @param {object} transforms\n\t */\n\tfunction transformSlides( transforms ) {\n\n\t\t// Pick up new transforms from arguments\n\t\tif( typeof transforms.layout === 'string' ) slidesTransform.layout = transforms.layout;\n\t\tif( typeof transforms.overview === 'string' ) slidesTransform.overview = transforms.overview;\n\n\t\t// Apply the transforms to the slides container\n\t\tif( slidesTransform.layout ) {\n\t\t\tUtil.transformElement( dom.slides, slidesTransform.layout + ' ' + slidesTransform.overview );\n\t\t}\n\t\telse {\n\t\t\tUtil.transformElement( dom.slides, slidesTransform.overview );\n\t\t}\n\n\t}\n\n\t/**\n\t * Dispatches an event of the specified type from the\n\t * reveal DOM element.\n\t */\n\tfunction dispatchEvent({ target=dom.wrapper, type, data, bubbles=true }) {\n\n\t\tlet event = document.createEvent( 'HTMLEvents', 1, 2 );\n\t\tevent.initEvent( type, bubbles, true );\n\t\tUtil.extend( event, data );\n\t\ttarget.dispatchEvent( event );\n\n\t\tif( target === dom.wrapper ) {\n\t\t\t// If we're in an iframe, post each reveal.js event to the\n\t\t\t// parent window. Used by the notes plugin\n\t\t\tdispatchPostMessage( type );\n\t\t}\n\n\t\treturn event;\n\n\t}\n\n\t/**\n\t * Dispatches a slidechanged event.\n\t *\n\t * @param {string} origin Used to identify multiplex clients\n\t */\n\tfunction dispatchSlideChanged( origin ) {\n\n\t\tdispatchEvent({\n\t\t\ttype: 'slidechanged',\n\t\t\tdata: {\n\t\t\t\tindexh,\n\t\t\t\tindexv,\n\t\t\t\tpreviousSlide,\n\t\t\t\tcurrentSlide,\n\t\t\t\torigin\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Dispatched a postMessage of the given type from our window.\n\t */\n\tfunction dispatchPostMessage( type, data ) {\n\n\t\tif( config.postMessageEvents && window.parent !== window.self ) {\n\t\t\tlet message = {\n\t\t\t\tnamespace: 'reveal',\n\t\t\t\teventName: type,\n\t\t\t\tstate: getState()\n\t\t\t};\n\n\t\t\tUtil.extend( message, data );\n\n\t\t\twindow.parent.postMessage( JSON.stringify( message ), '*' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies JavaScript-controlled layout rules to the\n\t * presentation.\n\t */\n\tfunction layout() {\n\n\t\tif( dom.wrapper && !printView.isActive() ) {\n\n\t\t\tconst viewportWidth = dom.viewport.offsetWidth;\n\t\t\tconst viewportHeight = dom.viewport.offsetHeight;\n\n\t\t\tif( !config.disableLayout ) {\n\n\t\t\t\t// On some mobile devices '100vh' is taller than the visible\n\t\t\t\t// viewport which leads to part of the presentation being\n\t\t\t\t// cut off. To work around this we define our own '--vh' custom\n\t\t\t\t// property where 100x adds up to the correct height.\n\t\t\t\t//\n\t\t\t\t// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/\n\t\t\t\tif( Device.isMobile && !config.embedded ) {\n\t\t\t\t\tdocument.documentElement.style.setProperty( '--vh', ( window.innerHeight * 0.01 ) + 'px' );\n\t\t\t\t}\n\n\t\t\t\tconst size = scrollView.isActive() ?\n\t\t\t\t\t\t\t getComputedSlideSize( viewportWidth, viewportHeight ) :\n\t\t\t\t\t\t\t getComputedSlideSize();\n\n\t\t\t\tconst oldScale = scale;\n\n\t\t\t\t// Layout the contents of the slides\n\t\t\t\tlayoutSlideContents( config.width, config.height );\n\n\t\t\t\tdom.slides.style.width = size.width + 'px';\n\t\t\t\tdom.slides.style.height = size.height + 'px';\n\n\t\t\t\t// Determine scale of content to fit within available space\n\t\t\t\tscale = Math.min( size.presentationWidth / size.width, size.presentationHeight / size.height );\n\n\t\t\t\t// Respect max/min scale settings\n\t\t\t\tscale = Math.max( scale, config.minScale );\n\t\t\t\tscale = Math.min( scale, config.maxScale );\n\n\t\t\t\t// Don't apply any scaling styles if scale is 1 or we're\n\t\t\t\t// in the scroll view\n\t\t\t\tif( scale === 1 || scrollView.isActive() ) {\n\t\t\t\t\tdom.slides.style.zoom = '';\n\t\t\t\t\tdom.slides.style.left = '';\n\t\t\t\t\tdom.slides.style.top = '';\n\t\t\t\t\tdom.slides.style.bottom = '';\n\t\t\t\t\tdom.slides.style.right = '';\n\t\t\t\t\ttransformSlides( { layout: '' } );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdom.slides.style.zoom = '';\n\t\t\t\t\tdom.slides.style.left = '50%';\n\t\t\t\t\tdom.slides.style.top = '50%';\n\t\t\t\t\tdom.slides.style.bottom = 'auto';\n\t\t\t\t\tdom.slides.style.right = 'auto';\n\t\t\t\t\ttransformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +')' } );\n\t\t\t\t}\n\n\t\t\t\t// Select all slides, vertical and horizontal\n\t\t\t\tconst slides = Array.from( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) );\n\n\t\t\t\tfor( let i = 0, len = slides.length; i < len; i++ ) {\n\t\t\t\t\tconst slide = slides[ i ];\n\n\t\t\t\t\t// Don't bother updating invisible slides\n\t\t\t\t\tif( slide.style.display === 'none' ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( ( config.center || slide.classList.contains( 'center' ) ) ) {\n\t\t\t\t\t\t// Vertical stacks are not centred since their section\n\t\t\t\t\t\t// children will be\n\t\t\t\t\t\tif( slide.classList.contains( 'stack' ) ) {\n\t\t\t\t\t\t\tslide.style.top = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tslide.style.top = Math.max( ( size.height - slide.scrollHeight ) / 2, 0 ) + 'px';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tslide.style.top = '';\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif( oldScale !== scale ) {\n\t\t\t\t\tdispatchEvent({\n\t\t\t\t\t\ttype: 'resize',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toldScale,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\tsize\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckResponsiveScrollView();\n\n\t\t\tdom.viewport.style.setProperty( '--slide-scale', scale );\n\t\t\tdom.viewport.style.setProperty( '--viewport-width', viewportWidth + 'px' );\n\t\t\tdom.viewport.style.setProperty( '--viewport-height', viewportHeight + 'px' );\n\n\t\t\tscrollView.layout();\n\n\t\t\tprogress.update();\n\t\t\tbackgrounds.updateParallax();\n\n\t\t\tif( overview.isActive() ) {\n\t\t\t\toverview.update();\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies layout logic to the contents of all slides in\n\t * the presentation.\n\t *\n\t * @param {string|number} width\n\t * @param {string|number} height\n\t */\n\tfunction layoutSlideContents( width, height ) {\n\t\t// Handle sizing of elements with the 'r-stretch' class\n\t\tUtil.queryAll( dom.slides, 'section > .stretch, section > .r-stretch' ).forEach( element => {\n\n\t\t\t// Determine how much vertical space we can use\n\t\t\tlet remainingHeight = Util.getRemainingHeight( element, height );\n\n\t\t\t// Consider the aspect ratio of media elements\n\t\t\tif( /(img|video)/gi.test( element.nodeName ) ) {\n\t\t\t\tconst nw = element.naturalWidth || element.videoWidth,\n\t\t\t\t\t nh = element.naturalHeight || element.videoHeight;\n\n\t\t\t\tconst es = Math.min( width / nw, remainingHeight / nh );\n\n\t\t\t\telement.style.width = ( nw * es ) + 'px';\n\t\t\t\telement.style.height = ( nh * es ) + 'px';\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\telement.style.width = width + 'px';\n\t\t\t\telement.style.height = remainingHeight + 'px';\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Responsively activates the scroll mode when we reach the configured\n\t * activation width.\n\t */\n\tfunction checkResponsiveScrollView() {\n\n\t\t// Only proceed if...\n\t\t// 1. The DOM is ready\n\t\t// 2. Layouts aren't disabled via config\n\t\t// 3. We're not currently printing\n\t\t// 4. There is a scrollActivationWidth set\n\t\t// 5. The deck isn't configured to always use the scroll view\n\t\tif(\n\t\t\tdom.wrapper &&\n\t\t\t!config.disableLayout &&\n\t\t\t!printView.isActive() &&\n\t\t\ttypeof config.scrollActivationWidth === 'number' &&\n\t\t\tconfig.view !== 'scroll'\n\t\t) {\n\t\t\tconst size = getComputedSlideSize();\n\n\t\t\tif( size.presentationWidth > 0 && size.presentationWidth <= config.scrollActivationWidth ) {\n\t\t\t\tif( !scrollView.isActive() ) {\n\t\t\t\t\tbackgrounds.create();\n\t\t\t\t\tscrollView.activate()\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif( scrollView.isActive() ) scrollView.deactivate();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Calculates the computed pixel size of our slides. These\n\t * values are based on the width and height configuration\n\t * options.\n\t *\n\t * @param {number} [presentationWidth=dom.wrapper.offsetWidth]\n\t * @param {number} [presentationHeight=dom.wrapper.offsetHeight]\n\t */\n\tfunction getComputedSlideSize( presentationWidth, presentationHeight ) {\n\n\t\tlet width = config.width;\n\t\tlet height = config.height;\n\n\t\tif( config.disableLayout ) {\n\t\t\twidth = dom.slides.offsetWidth;\n\t\t\theight = dom.slides.offsetHeight;\n\t\t}\n\n\t\tconst size = {\n\t\t\t// Slide size\n\t\t\twidth: width,\n\t\t\theight: height,\n\n\t\t\t// Presentation size\n\t\t\tpresentationWidth: presentationWidth || dom.wrapper.offsetWidth,\n\t\t\tpresentationHeight: presentationHeight || dom.wrapper.offsetHeight\n\t\t};\n\n\t\t// Reduce available space by margin\n\t\tsize.presentationWidth -= ( size.presentationWidth * config.margin );\n\t\tsize.presentationHeight -= ( size.presentationHeight * config.margin );\n\n\t\t// Slide width may be a percentage of available width\n\t\tif( typeof size.width === 'string' && /%$/.test( size.width ) ) {\n\t\t\tsize.width = parseInt( size.width, 10 ) / 100 * size.presentationWidth;\n\t\t}\n\n\t\t// Slide height may be a percentage of available height\n\t\tif( typeof size.height === 'string' && /%$/.test( size.height ) ) {\n\t\t\tsize.height = parseInt( size.height, 10 ) / 100 * size.presentationHeight;\n\t\t}\n\n\t\treturn size;\n\n\t}\n\n\t/**\n\t * Stores the vertical index of a stack so that the same\n\t * vertical slide can be selected when navigating to and\n\t * from the stack.\n\t *\n\t * @param {HTMLElement} stack The vertical stack element\n\t * @param {string|number} [v=0] Index to memorize\n\t */\n\tfunction setPreviousVerticalIndex( stack, v ) {\n\n\t\tif( typeof stack === 'object' && typeof stack.setAttribute === 'function' ) {\n\t\t\tstack.setAttribute( 'data-previous-indexv', v || 0 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Retrieves the vertical index which was stored using\n\t * #setPreviousVerticalIndex() or 0 if no previous index\n\t * exists.\n\t *\n\t * @param {HTMLElement} stack The vertical stack element\n\t */\n\tfunction getPreviousVerticalIndex( stack ) {\n\n\t\tif( typeof stack === 'object' && typeof stack.setAttribute === 'function' && stack.classList.contains( 'stack' ) ) {\n\t\t\t// Prefer manually defined start-indexv\n\t\t\tconst attributeName = stack.hasAttribute( 'data-start-indexv' ) ? 'data-start-indexv' : 'data-previous-indexv';\n\n\t\t\treturn parseInt( stack.getAttribute( attributeName ) || 0, 10 );\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\t/**\n\t * Checks if the current or specified slide is vertical\n\t * (nested within another slide).\n\t *\n\t * @param {HTMLElement} [slide=currentSlide] The slide to check\n\t * orientation of\n\t * @return {Boolean}\n\t */\n\tfunction isVerticalSlide( slide = currentSlide ) {\n\n\t\treturn slide && slide.parentNode && !!slide.parentNode.nodeName.match( /section/i );\n\n\t}\n\n\t/**\n\t * Checks if the current or specified slide is a stack containing\n\t * vertical slides.\n\t *\n\t * @param {HTMLElement} [slide=currentSlide]\n\t * @return {Boolean}\n\t */\n\tfunction isVerticalStack( slide = currentSlide ) {\n\n\t\treturn slide.classList.contains( '.stack' ) || slide.querySelector( 'section' ) !== null;\n\n\t}\n\n\t/**\n\t * Returns true if we're on the last slide in the current\n\t * vertical stack.\n\t */\n\tfunction isLastVerticalSlide() {\n\n\t\tif( currentSlide && isVerticalSlide( currentSlide ) ) {\n\t\t\t// Does this slide have a next sibling?\n\t\t\tif( currentSlide.nextElementSibling ) return false;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Returns true if we're currently on the first slide in\n\t * the presentation.\n\t */\n\tfunction isFirstSlide() {\n\n\t\treturn indexh === 0 && indexv === 0;\n\n\t}\n\n\t/**\n\t * Returns true if we're currently on the last slide in\n\t * the presentation. If the last slide is a stack, we only\n\t * consider this the last slide if it's at the end of the\n\t * stack.\n\t */\n\tfunction isLastSlide() {\n\n\t\tif( currentSlide ) {\n\t\t\t// Does this slide have a next sibling?\n\t\t\tif( currentSlide.nextElementSibling ) return false;\n\n\t\t\t// If it's vertical, does its parent have a next sibling?\n\t\t\tif( isVerticalSlide( currentSlide ) && currentSlide.parentNode.nextElementSibling ) return false;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Enters the paused mode which fades everything on screen to\n\t * black.\n\t */\n\tfunction pause() {\n\n\t\tif( config.pause ) {\n\t\t\tconst wasPaused = dom.wrapper.classList.contains( 'paused' );\n\n\t\t\tcancelAutoSlide();\n\t\t\tdom.wrapper.classList.add( 'paused' );\n\n\t\t\tif( wasPaused === false ) {\n\t\t\t\tdispatchEvent({ type: 'paused' });\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Exits from the paused mode.\n\t */\n\tfunction resume() {\n\n\t\tconst wasPaused = dom.wrapper.classList.contains( 'paused' );\n\t\tdom.wrapper.classList.remove( 'paused' );\n\n\t\tcueAutoSlide();\n\n\t\tif( wasPaused ) {\n\t\t\tdispatchEvent({ type: 'resumed' });\n\t\t}\n\n\t}\n\n\t/**\n\t * Toggles the paused mode on and off.\n\t */\n\tfunction togglePause( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? pause() : resume();\n\t\t}\n\t\telse {\n\t\t\tisPaused() ? resume() : pause();\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if we are currently in the paused mode.\n\t *\n\t * @return {Boolean}\n\t */\n\tfunction isPaused() {\n\n\t\treturn dom.wrapper.classList.contains( 'paused' );\n\n\t}\n\n\t/**\n\t * Toggles visibility of the jump-to-slide UI.\n\t */\n\tfunction toggleJumpToSlide( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? jumpToSlide.show() : jumpToSlide.hide();\n\t\t}\n\t\telse {\n\t\t\tjumpToSlide.isVisible() ? jumpToSlide.hide() : jumpToSlide.show();\n\t\t}\n\n\t}\n\n\t/**\n\t * Toggles the auto slide mode on and off.\n\t *\n\t * @param {Boolean} [override] Flag which sets the desired state.\n\t * True means autoplay starts, false means it stops.\n\t */\n\n\tfunction toggleAutoSlide( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? resumeAutoSlide() : pauseAutoSlide();\n\t\t}\n\n\t\telse {\n\t\t\tautoSlidePaused ? resumeAutoSlide() : pauseAutoSlide();\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if the auto slide mode is currently on.\n\t *\n\t * @return {Boolean}\n\t */\n\tfunction isAutoSliding() {\n\n\t\treturn !!( autoSlide && !autoSlidePaused );\n\n\t}\n\n\t/**\n\t * Steps from the current point in the presentation to the\n\t * slide which matches the specified horizontal and vertical\n\t * indices.\n\t *\n\t * @param {number} [h=indexh] Horizontal index of the target slide\n\t * @param {number} [v=indexv] Vertical index of the target slide\n\t * @param {number} [f] Index of a fragment within the\n\t * target slide to activate\n\t * @param {number} [origin] Origin for use in multimaster environments\n\t */\n\tfunction slide( h, v, f, origin ) {\n\n\t\t// Dispatch an event before the slide\n\t\tconst slidechange = dispatchEvent({\n\t\t\ttype: 'beforeslidechange',\n\t\t\tdata: {\n\t\t\t\tindexh: h === undefined ? indexh : h,\n\t\t\t\tindexv: v === undefined ? indexv : v,\n\t\t\t\torigin\n\t\t\t}\n\t\t});\n\n\t\t// Abort if this slide change was prevented by an event listener\n\t\tif( slidechange.defaultPrevented ) return;\n\n\t\t// Remember where we were at before\n\t\tpreviousSlide = currentSlide;\n\n\t\t// Query all horizontal slides in the deck\n\t\tconst horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );\n\n\t\t// If we're in scroll mode, we scroll the target slide into view\n\t\t// instead of running our standard slide transition\n\t\tif( scrollView.isActive() ) {\n\t\t\tconst scrollToSlide = scrollView.getSlideByIndices( h, v );\n\t\t\tif( scrollToSlide ) scrollView.scrollToSlide( scrollToSlide );\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if there are no slides\n\t\tif( horizontalSlides.length === 0 ) return;\n\n\t\t// If no vertical index is specified and the upcoming slide is a\n\t\t// stack, resume at its previous vertical index\n\t\tif( v === undefined && !overview.isActive() ) {\n\t\t\tv = getPreviousVerticalIndex( horizontalSlides[ h ] );\n\t\t}\n\n\t\t// If we were on a vertical stack, remember what vertical index\n\t\t// it was on so we can resume at the same position when returning\n\t\tif( previousSlide && previousSlide.parentNode && previousSlide.parentNode.classList.contains( 'stack' ) ) {\n\t\t\tsetPreviousVerticalIndex( previousSlide.parentNode, indexv );\n\t\t}\n\n\t\t// Remember the state before this slide\n\t\tconst stateBefore = state.concat();\n\n\t\t// Reset the state array\n\t\tstate.length = 0;\n\n\t\tlet indexhBefore = indexh || 0,\n\t\t\tindexvBefore = indexv || 0;\n\n\t\t// Activate and transition to the new slide\n\t\tindexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h );\n\t\tindexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v );\n\n\t\t// Dispatch an event if the slide changed\n\t\tlet slideChanged = ( indexh !== indexhBefore || indexv !== indexvBefore );\n\n\t\t// Ensure that the previous slide is never the same as the current\n\t\tif( !slideChanged ) previousSlide = null;\n\n\t\t// Find the current horizontal slide and any possible vertical slides\n\t\t// within it\n\t\tlet currentHorizontalSlide = horizontalSlides[ indexh ],\n\t\t\tcurrentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' );\n\n\t\t// Indicate when we're on a vertical slide\n\t\trevealElement.classList.toggle( 'is-vertical-slide', currentVerticalSlides.length > 1 );\n\n\t\t// Store references to the previous and current slides\n\t\tcurrentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide;\n\n\t\tlet autoAnimateTransition = false;\n\n\t\t// Detect if we're moving between two auto-animated slides\n\t\tif( slideChanged && previousSlide && currentSlide && !overview.isActive() ) {\n\t\t\ttransition = 'running';\n\n\t\t\tautoAnimateTransition = shouldAutoAnimateBetween( previousSlide, currentSlide, indexhBefore, indexvBefore );\n\n\t\t\t// If this is an auto-animated transition, we disable the\n\t\t\t// regular slide transition\n\t\t\t//\n\t\t\t// Note 20-03-2020:\n\t\t\t// This needs to happen before we update slide visibility,\n\t\t\t// otherwise transitions will still run in Safari.\n\t\t\tif( autoAnimateTransition ) {\n\t\t\t\tdom.slides.classList.add( 'disable-slide-transitions' )\n\t\t\t}\n\t\t}\n\n\t\t// Update the visibility of slides now that the indices have changed\n\t\tupdateSlidesVisibility();\n\n\t\tlayout();\n\n\t\t// Update the overview if it's currently active\n\t\tif( overview.isActive() ) {\n\t\t\toverview.update();\n\t\t}\n\n\t\t// Show fragment, if specified\n\t\tif( typeof f !== 'undefined' ) {\n\t\t\tfragments.goto( f );\n\t\t}\n\n\t\t// Solves an edge case where the previous slide maintains the\n\t\t// 'present' class when navigating between adjacent vertical\n\t\t// stacks\n\t\tif( previousSlide && previousSlide !== currentSlide ) {\n\t\t\tpreviousSlide.classList.remove( 'present' );\n\t\t\tpreviousSlide.setAttribute( 'aria-hidden', 'true' );\n\n\t\t\t// Reset all slides upon navigate to home\n\t\t\tif( isFirstSlide() ) {\n\t\t\t\t// Launch async task\n\t\t\t\tsetTimeout( () => {\n\t\t\t\t\tgetVerticalStacks().forEach( slide => {\n\t\t\t\t\t\tsetPreviousVerticalIndex( slide, 0 );\n\t\t\t\t\t} );\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t}\n\n\t\t// Apply the new state\n\t\tstateLoop: for( let i = 0, len = state.length; i < len; i++ ) {\n\t\t\t// Check if this state existed on the previous slide. If it\n\t\t\t// did, we will avoid adding it repeatedly\n\t\t\tfor( let j = 0; j < stateBefore.length; j++ ) {\n\t\t\t\tif( stateBefore[j] === state[i] ) {\n\t\t\t\t\tstateBefore.splice( j, 1 );\n\t\t\t\t\tcontinue stateLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdom.viewport.classList.add( state[i] );\n\n\t\t\t// Dispatch custom event matching the state's name\n\t\t\tdispatchEvent({ type: state[i] });\n\t\t}\n\n\t\t// Clean up the remains of the previous state\n\t\twhile( stateBefore.length ) {\n\t\t\tdom.viewport.classList.remove( stateBefore.pop() );\n\t\t}\n\n\t\tif( slideChanged ) {\n\t\t\tdispatchSlideChanged( origin );\n\t\t}\n\n\t\t// Handle embedded content\n\t\tif( slideChanged || !previousSlide ) {\n\t\t\tslideContent.stopEmbeddedContent( previousSlide );\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t}\n\n\t\t// Announce the current slide contents to screen readers\n\t\t// Use animation frame to prevent getComputedStyle in getStatusText\n\t\t// from triggering layout mid-frame\n\t\trequestAnimationFrame( () => {\n\t\t\tannounceStatus( getStatusText( currentSlide ) );\n\t\t});\n\n\t\tprogress.update();\n\t\tcontrols.update();\n\t\tnotes.update();\n\t\tbackgrounds.update();\n\t\tbackgrounds.updateParallax();\n\t\tslideNumber.update();\n\t\tfragments.update();\n\n\t\t// Update the URL hash\n\t\tlocation.writeURL();\n\n\t\tcueAutoSlide();\n\n\t\t// Auto-animation\n\t\tif( autoAnimateTransition ) {\n\n\t\t\tsetTimeout( () => {\n\t\t\t\tdom.slides.classList.remove( 'disable-slide-transitions' );\n\t\t\t}, 0 );\n\n\t\t\tif( config.autoAnimate ) {\n\t\t\t\t// Run the auto-animation between our slides\n\t\t\t\tautoAnimate.run( previousSlide, currentSlide );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks whether or not an auto-animation should take place between\n\t * the two given slides.\n\t *\n\t * @param {HTMLElement} fromSlide\n\t * @param {HTMLElement} toSlide\n\t * @param {number} indexhBefore\n\t * @param {number} indexvBefore\n\t *\n\t * @returns {boolean}\n\t */\n\tfunction shouldAutoAnimateBetween( fromSlide, toSlide, indexhBefore, indexvBefore ) {\n\n\t\treturn \tfromSlide.hasAttribute( 'data-auto-animate' ) && toSlide.hasAttribute( 'data-auto-animate' ) &&\n\t\t\t\tfromSlide.getAttribute( 'data-auto-animate-id' ) === toSlide.getAttribute( 'data-auto-animate-id' ) &&\n\t\t\t\t!( ( indexh > indexhBefore || indexv > indexvBefore ) ? toSlide : fromSlide ).hasAttribute( 'data-auto-animate-restart' );\n\n\t}\n\n\t/**\n\t * Called anytime a new slide should be activated while in the scroll\n\t * view. The active slide is the page that occupies the most space in\n\t * the scrollable viewport.\n\t *\n\t * @param {number} pageIndex\n\t * @param {HTMLElement} slideElement\n\t */\n\tfunction setCurrentScrollPage( slideElement, h, v ) {\n\n\t\tlet indexhBefore = indexh || 0;\n\n\t\tindexh = h;\n\t\tindexv = v;\n\n\t\tconst slideChanged = currentSlide !== slideElement;\n\n\t\tpreviousSlide = currentSlide;\n\t\tcurrentSlide = slideElement;\n\n\t\tif( currentSlide && previousSlide ) {\n\t\t\tif( config.autoAnimate && shouldAutoAnimateBetween( previousSlide, currentSlide, indexhBefore, indexv ) ) {\n\t\t\t\t// Run the auto-animation between our slides\n\t\t\t\tautoAnimate.run( previousSlide, currentSlide );\n\t\t\t}\n\t\t}\n\n\t\t// Start or stop embedded content like videos and iframes\n\t\tif( slideChanged ) {\n\t\t\tif( previousSlide ) {\n\t\t\t\tslideContent.stopEmbeddedContent( previousSlide );\n\t\t\t\tslideContent.stopEmbeddedContent( previousSlide.slideBackgroundElement );\n\t\t\t}\n\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t\tslideContent.startEmbeddedContent( currentSlide.slideBackgroundElement );\n\t\t}\n\n\t\trequestAnimationFrame( () => {\n\t\t\tannounceStatus( getStatusText( currentSlide ) );\n\t\t});\n\n\t\tdispatchSlideChanged();\n\n\t}\n\n\t/**\n\t * Syncs the presentation with the current DOM. Useful\n\t * when new slides or control elements are added or when\n\t * the configuration has changed.\n\t */\n\tfunction sync() {\n\n\t\t// Subscribe to input\n\t\tremoveEventListeners();\n\t\taddEventListeners();\n\n\t\t// Force a layout to make sure the current config is accounted for\n\t\tlayout();\n\n\t\t// Reflect the current autoSlide value\n\t\tautoSlide = config.autoSlide;\n\n\t\t// Start auto-sliding if it's enabled\n\t\tcueAutoSlide();\n\n\t\t// Re-create all slide backgrounds\n\t\tbackgrounds.create();\n\n\t\t// Write the current hash to the URL\n\t\tlocation.writeURL();\n\n\t\tif( config.sortFragmentsOnSync === true ) {\n\t\t\tfragments.sortAll();\n\t\t}\n\n\t\tcontrols.update();\n\t\tprogress.update();\n\n\t\tupdateSlidesVisibility();\n\n\t\tnotes.update();\n\t\tnotes.updateVisibility();\n\t\toverlay.update();\n\t\tbackgrounds.update( true );\n\t\tslideNumber.update();\n\t\tslideContent.formatEmbeddedContent();\n\n\t\t// Start or stop embedded content depending on global config\n\t\tif( config.autoPlayMedia === false ) {\n\t\t\tslideContent.stopEmbeddedContent( currentSlide, { unloadIframes: false } );\n\t\t}\n\t\telse {\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t}\n\n\t\tif( overview.isActive() ) {\n\t\t\toverview.layout();\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates reveal.js to keep in sync with new slide attributes. For\n\t * example, if you add a new `data-background-image` you can call\n\t * this to have reveal.js render the new background image.\n\t *\n\t * Similar to #sync() but more efficient when you only need to\n\t * refresh a specific slide.\n\t *\n\t * @param {HTMLElement} slide\n\t */\n\tfunction syncSlide( slide = currentSlide ) {\n\n\t\tbackgrounds.sync( slide );\n\t\tfragments.sync( slide );\n\n\t\tslideContent.load( slide );\n\n\t\tbackgrounds.update();\n\t\tnotes.update();\n\n\t}\n\n\t/**\n\t * Resets all vertical slides so that only the first\n\t * is visible.\n\t */\n\tfunction resetVerticalSlides() {\n\n\t\tgetHorizontalSlides().forEach( horizontalSlide => {\n\n\t\t\tUtil.queryAll( horizontalSlide, 'section' ).forEach( ( verticalSlide, y ) => {\n\n\t\t\t\tif( y > 0 ) {\n\t\t\t\t\tverticalSlide.classList.remove( 'present' );\n\t\t\t\t\tverticalSlide.classList.remove( 'past' );\n\t\t\t\t\tverticalSlide.classList.add( 'future' );\n\t\t\t\t\tverticalSlide.setAttribute( 'aria-hidden', 'true' );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Randomly shuffles all slides in the deck.\n\t */\n\tfunction shuffle( slides = getHorizontalSlides() ) {\n\n\t\tslides.forEach( ( slide, i ) => {\n\n\t\t\t// Insert the slide next to a randomly picked sibling slide\n\t\t\t// slide. This may cause the slide to insert before itself,\n\t\t\t// but that's not an issue.\n\t\t\tlet beforeSlide = slides[ Math.floor( Math.random() * slides.length ) ];\n\t\t\tif( beforeSlide.parentNode === slide.parentNode ) {\n\t\t\t\tslide.parentNode.insertBefore( slide, beforeSlide );\n\t\t\t}\n\n\t\t\t// Randomize the order of vertical slides (if there are any)\n\t\t\tlet verticalSlides = slide.querySelectorAll( 'section' );\n\t\t\tif( verticalSlides.length ) {\n\t\t\t\tshuffle( verticalSlides );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Updates one dimension of slides by showing the slide\n\t * with the specified index.\n\t *\n\t * @param {string} selector A CSS selector that will fetch\n\t * the group of slides we are working with\n\t * @param {number} index The index of the slide that should be\n\t * shown\n\t *\n\t * @return {number} The index of the slide that is now shown,\n\t * might differ from the passed in index if it was out of\n\t * bounds.\n\t */\n\tfunction updateSlides( selector, index ) {\n\n\t\t// Select all slides and convert the NodeList result to\n\t\t// an array\n\t\tlet slides = Util.queryAll( dom.wrapper, selector ),\n\t\t\tslidesLength = slides.length;\n\n\t\tlet printMode = scrollView.isActive() || printView.isActive();\n\t\tlet loopedForwards = false;\n\t\tlet loopedBackwards = false;\n\n\t\tif( slidesLength ) {\n\n\t\t\t// Should the index loop?\n\t\t\tif( config.loop ) {\n\t\t\t\tif( index >= slidesLength ) loopedForwards = true;\n\n\t\t\t\tindex %= slidesLength;\n\n\t\t\t\tif( index < 0 ) {\n\t\t\t\t\tindex = slidesLength + index;\n\t\t\t\t\tloopedBackwards = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Enforce max and minimum index bounds\n\t\t\tindex = Math.max( Math.min( index, slidesLength - 1 ), 0 );\n\n\t\t\tfor( let i = 0; i < slidesLength; i++ ) {\n\t\t\t\tlet element = slides[i];\n\n\t\t\t\tlet reverse = config.rtl && !isVerticalSlide( element );\n\n\t\t\t\t// Avoid .remove() with multiple args for IE11 support\n\t\t\t\telement.classList.remove( 'past' );\n\t\t\t\telement.classList.remove( 'present' );\n\t\t\t\telement.classList.remove( 'future' );\n\n\t\t\t\t// http://www.w3.org/html/wg/drafts/html/master/editing.html#the-hidden-attribute\n\t\t\t\telement.setAttribute( 'hidden', '' );\n\t\t\t\telement.setAttribute( 'aria-hidden', 'true' );\n\n\t\t\t\t// If this element contains vertical slides\n\t\t\t\tif( element.querySelector( 'section' ) ) {\n\t\t\t\t\telement.classList.add( 'stack' );\n\t\t\t\t}\n\n\t\t\t\t// If we're printing static slides, all slides are \"present\"\n\t\t\t\tif( printMode ) {\n\t\t\t\t\telement.classList.add( 'present' );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif( i < index ) {\n\t\t\t\t\t// Any element previous to index is given the 'past' class\n\t\t\t\t\telement.classList.add( reverse ? 'future' : 'past' );\n\n\t\t\t\t\tif( config.fragments ) {\n\t\t\t\t\t\t// Show all fragments in prior slides\n\t\t\t\t\t\tshowFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( i > index ) {\n\t\t\t\t\t// Any element subsequent to index is given the 'future' class\n\t\t\t\t\telement.classList.add( reverse ? 'past' : 'future' );\n\n\t\t\t\t\tif( config.fragments ) {\n\t\t\t\t\t\t// Hide all fragments in future slides\n\t\t\t\t\t\thideFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Update the visibility of fragments when a presentation loops\n\t\t\t\t// in either direction\n\t\t\t\telse if( i === index && config.fragments ) {\n\t\t\t\t\tif( loopedForwards ) {\n\t\t\t\t\t\thideFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t\telse if( loopedBackwards ) {\n\t\t\t\t\t\tshowFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet slide = slides[index];\n\t\t\tlet wasPresent = slide.classList.contains( 'present' );\n\n\t\t\t// Mark the current slide as present\n\t\t\tslide.classList.add( 'present' );\n\t\t\tslide.removeAttribute( 'hidden' );\n\t\t\tslide.removeAttribute( 'aria-hidden' );\n\n\t\t\tif( !wasPresent ) {\n\t\t\t\t// Dispatch an event indicating the slide is now visible\n\t\t\t\tdispatchEvent({\n\t\t\t\t\ttarget: slide,\n\t\t\t\t\ttype: 'visible',\n\t\t\t\t\tbubbles: false\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If this slide has a state associated with it, add it\n\t\t\t// onto the current state of the deck\n\t\t\tlet slideState = slide.getAttribute( 'data-state' );\n\t\t\tif( slideState ) {\n\t\t\t\tstate = state.concat( slideState.split( ' ' ) );\n\t\t\t}\n\n\t\t}\n\t\telse {\n\t\t\t// Since there are no slides we can't be anywhere beyond the\n\t\t\t// zeroth index\n\t\t\tindex = 0;\n\t\t}\n\n\t\treturn index;\n\n\t}\n\n\t/**\n\t * Shows all fragment elements within the given container.\n\t */\n\tfunction showFragmentsIn( container ) {\n\n\t\tUtil.queryAll( container, '.fragment' ).forEach( fragment => {\n\t\t\tfragment.classList.add( 'visible' );\n\t\t\tfragment.classList.remove( 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Hides all fragment elements within the given container.\n\t */\n\tfunction hideFragmentsIn( container ) {\n\n\t\tUtil.queryAll( container, '.fragment.visible' ).forEach( fragment => {\n\t\t\tfragment.classList.remove( 'visible', 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Optimization method; hide all slides that are far away\n\t * from the present slide.\n\t */\n\tfunction updateSlidesVisibility() {\n\n\t\t// Select all slides and convert the NodeList result to\n\t\t// an array\n\t\tlet horizontalSlides = getHorizontalSlides(),\n\t\t\thorizontalSlidesLength = horizontalSlides.length,\n\t\t\tdistanceX,\n\t\t\tdistanceY;\n\n\t\tif( horizontalSlidesLength && typeof indexh !== 'undefined' ) {\n\n\t\t\tconst isOverview = overview.isActive();\n\n\t\t\t// The number of steps away from the present slide that will\n\t\t\t// be visible\n\t\t\tlet viewDistance = isOverview ? 10 : config.viewDistance;\n\n\t\t\t// Shorten the view distance on devices that typically have\n\t\t\t// less resources\n\t\t\tif( Device.isMobile ) {\n\t\t\t\tviewDistance = isOverview ? 6 : config.mobileViewDistance;\n\t\t\t}\n\n\t\t\t// All slides need to be visible when exporting to PDF\n\t\t\tif( printView.isActive() ) {\n\t\t\t\tviewDistance = Number.MAX_VALUE;\n\t\t\t}\n\n\t\t\tfor( let x = 0; x < horizontalSlidesLength; x++ ) {\n\t\t\t\tlet horizontalSlide = horizontalSlides[x];\n\n\t\t\t\tlet verticalSlides = Util.queryAll( horizontalSlide, 'section' ),\n\t\t\t\t\tverticalSlidesLength = verticalSlides.length;\n\n\t\t\t\t// Determine how far away this slide is from the present\n\t\t\t\tdistanceX = Math.abs( ( indexh || 0 ) - x ) || 0;\n\n\t\t\t\t// If the presentation is looped, distance should measure\n\t\t\t\t// 1 between the first and last slides\n\t\t\t\tif( config.loop ) {\n\t\t\t\t\tdistanceX = Math.abs( ( ( indexh || 0 ) - x ) % ( horizontalSlidesLength - viewDistance ) ) || 0;\n\t\t\t\t}\n\n\t\t\t\t// Show the horizontal slide if it's within the view distance\n\t\t\t\tif( distanceX < viewDistance ) {\n\t\t\t\t\tslideContent.load( horizontalSlide );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tslideContent.unload( horizontalSlide );\n\t\t\t\t}\n\n\t\t\t\tif( verticalSlidesLength ) {\n\n\t\t\t\t\tlet oy = isOverview ? 0 : getPreviousVerticalIndex( horizontalSlide );\n\n\t\t\t\t\tfor( let y = 0; y < verticalSlidesLength; y++ ) {\n\t\t\t\t\t\tlet verticalSlide = verticalSlides[y];\n\n\t\t\t\t\t\tdistanceY = x === ( indexh || 0 ) ? Math.abs( ( indexv || 0 ) - y ) : Math.abs( y - oy );\n\n\t\t\t\t\t\tif( distanceX + distanceY < viewDistance ) {\n\t\t\t\t\t\t\tslideContent.load( verticalSlide );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tslideContent.unload( verticalSlide );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Flag if there are ANY vertical slides, anywhere in the deck\n\t\t\tif( hasVerticalSlides() ) {\n\t\t\t\tdom.wrapper.classList.add( 'has-vertical-slides' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.wrapper.classList.remove( 'has-vertical-slides' );\n\t\t\t}\n\n\t\t\t// Flag if there are ANY horizontal slides, anywhere in the deck\n\t\t\tif( hasHorizontalSlides() ) {\n\t\t\t\tdom.wrapper.classList.add( 'has-horizontal-slides' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.wrapper.classList.remove( 'has-horizontal-slides' );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Determine what available routes there are for navigation.\n\t *\n\t * @return {{left: boolean, right: boolean, up: boolean, down: boolean}}\n\t */\n\tfunction availableRoutes({ includeFragments = false } = {}) {\n\n\t\tlet horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ),\n\t\t\tverticalSlides = dom.wrapper.querySelectorAll( VERTICAL_SLIDES_SELECTOR );\n\n\t\tlet routes = {\n\t\t\tleft: indexh > 0,\n\t\t\tright: indexh < horizontalSlides.length - 1,\n\t\t\tup: indexv > 0,\n\t\t\tdown: indexv < verticalSlides.length - 1\n\t\t};\n\n\t\t// Looped presentations can always be navigated as long as\n\t\t// there are slides available\n\t\tif( config.loop ) {\n\t\t\tif( horizontalSlides.length > 1 ) {\n\t\t\t\troutes.left = true;\n\t\t\t\troutes.right = true;\n\t\t\t}\n\n\t\t\tif( verticalSlides.length > 1 ) {\n\t\t\t\troutes.up = true;\n\t\t\t\troutes.down = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( horizontalSlides.length > 1 && config.navigationMode === 'linear' ) {\n\t\t\troutes.right = routes.right || routes.down;\n\t\t\troutes.left = routes.left || routes.up;\n\t\t}\n\n\t\t// If includeFragments is set, a route will be considered\n\t\t// available if either a slid OR fragment is available in\n\t\t// the given direction\n\t\tif( includeFragments === true ) {\n\t\t\tlet fragmentRoutes = fragments.availableRoutes();\n\t\t\troutes.left = routes.left || fragmentRoutes.prev;\n\t\t\troutes.up = routes.up || fragmentRoutes.prev;\n\t\t\troutes.down = routes.down || fragmentRoutes.next;\n\t\t\troutes.right = routes.right || fragmentRoutes.next;\n\t\t}\n\n\t\t// Reverse horizontal controls for rtl\n\t\tif( config.rtl ) {\n\t\t\tlet left = routes.left;\n\t\t\troutes.left = routes.right;\n\t\t\troutes.right = left;\n\t\t}\n\n\t\treturn routes;\n\n\t}\n\n\t/**\n\t * Returns the number of past slides. This can be used as a global\n\t * flattened index for slides.\n\t *\n\t * @param {HTMLElement} [slide=currentSlide] The slide we're counting before\n\t *\n\t * @return {number} Past slide count\n\t */\n\tfunction getSlidePastCount( slide = currentSlide ) {\n\n\t\tlet horizontalSlides = getHorizontalSlides();\n\n\t\t// The number of past slides\n\t\tlet pastCount = 0;\n\n\t\t// Step through all slides and count the past ones\n\t\tmainLoop: for( let i = 0; i < horizontalSlides.length; i++ ) {\n\n\t\t\tlet horizontalSlide = horizontalSlides[i];\n\t\t\tlet verticalSlides = horizontalSlide.querySelectorAll( 'section' );\n\n\t\t\tfor( let j = 0; j < verticalSlides.length; j++ ) {\n\n\t\t\t\t// Stop as soon as we arrive at the present\n\t\t\t\tif( verticalSlides[j] === slide ) {\n\t\t\t\t\tbreak mainLoop;\n\t\t\t\t}\n\n\t\t\t\t// Don't count slides with the \"uncounted\" class\n\t\t\t\tif( verticalSlides[j].dataset.visibility !== 'uncounted' ) {\n\t\t\t\t\tpastCount++;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Stop as soon as we arrive at the present\n\t\t\tif( horizontalSlide === slide ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Don't count the wrapping section for vertical slides and\n\t\t\t// slides marked as uncounted\n\t\t\tif( horizontalSlide.classList.contains( 'stack' ) === false && horizontalSlide.dataset.visibility !== 'uncounted' ) {\n\t\t\t\tpastCount++;\n\t\t\t}\n\n\t\t}\n\n\t\treturn pastCount;\n\n\t}\n\n\t/**\n\t * Returns a value ranging from 0-1 that represents\n\t * how far into the presentation we have navigated.\n\t *\n\t * @return {number}\n\t */\n\tfunction getProgress() {\n\n\t\t// The number of past and total slides\n\t\tlet totalCount = getTotalSlides();\n\t\tlet pastCount = getSlidePastCount();\n\n\t\tif( currentSlide ) {\n\n\t\t\tlet allFragments = currentSlide.querySelectorAll( '.fragment' );\n\n\t\t\t// If there are fragments in the current slide those should be\n\t\t\t// accounted for in the progress.\n\t\t\tif( allFragments.length > 0 ) {\n\t\t\t\tlet visibleFragments = currentSlide.querySelectorAll( '.fragment.visible' );\n\n\t\t\t\t// This value represents how big a portion of the slide progress\n\t\t\t\t// that is made up by its fragments (0-1)\n\t\t\t\tlet fragmentWeight = 0.9;\n\n\t\t\t\t// Add fragment progress to the past slide count\n\t\t\t\tpastCount += ( visibleFragments.length / allFragments.length ) * fragmentWeight;\n\t\t\t}\n\n\t\t}\n\n\t\treturn Math.min( pastCount / ( totalCount - 1 ), 1 );\n\n\t}\n\n\t/**\n\t * Retrieves the h/v location and fragment of the current,\n\t * or specified, slide.\n\t *\n\t * @param {HTMLElement} [slide] If specified, the returned\n\t * index will be for this slide rather than the currently\n\t * active one\n\t *\n\t * @return {{h: number, v: number, f: number}}\n\t */\n\tfunction getIndices( slide ) {\n\n\t\t// By default, return the current indices\n\t\tlet h = indexh,\n\t\t\tv = indexv,\n\t\t\tf;\n\n\t\t// If a slide is specified, return the indices of that slide\n\t\tif( slide ) {\n\t\t\t// In scroll mode the original h/x index is stored on the slide\n\t\t\tif( scrollView.isActive() ) {\n\t\t\t\th = parseInt( slide.getAttribute( 'data-index-h' ), 10 );\n\n\t\t\t\tif( slide.getAttribute( 'data-index-v' ) ) {\n\t\t\t\t\tv = parseInt( slide.getAttribute( 'data-index-v' ), 10 );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet isVertical = isVerticalSlide( slide );\n\t\t\t\tlet slideh = isVertical ? slide.parentNode : slide;\n\n\t\t\t\t// Select all horizontal slides\n\t\t\t\tlet horizontalSlides = getHorizontalSlides();\n\n\t\t\t\t// Now that we know which the horizontal slide is, get its index\n\t\t\t\th = Math.max( horizontalSlides.indexOf( slideh ), 0 );\n\n\t\t\t\t// Assume we're not vertical\n\t\t\t\tv = undefined;\n\n\t\t\t\t// If this is a vertical slide, grab the vertical index\n\t\t\t\tif( isVertical ) {\n\t\t\t\t\tv = Math.max( Util.queryAll( slide.parentNode, 'section' ).indexOf( slide ), 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif( !slide && currentSlide ) {\n\t\t\tlet hasFragments = currentSlide.querySelectorAll( '.fragment' ).length > 0;\n\t\t\tif( hasFragments ) {\n\t\t\t\tlet currentFragment = currentSlide.querySelector( '.current-fragment' );\n\t\t\t\tif( currentFragment && currentFragment.hasAttribute( 'data-fragment-index' ) ) {\n\t\t\t\t\tf = parseInt( currentFragment.getAttribute( 'data-fragment-index' ), 10 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tf = currentSlide.querySelectorAll( '.fragment.visible' ).length - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { h, v, f };\n\n\t}\n\n\t/**\n\t * Retrieves all slides in this presentation.\n\t */\n\tfunction getSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, SLIDES_SELECTOR + ':not(.stack):not([data-visibility=\"uncounted\"])' );\n\n\t}\n\n\t/**\n\t * Returns a list of all horizontal slides in the deck. Each\n\t * vertical stack is included as one horizontal slide in the\n\t * resulting array.\n\t */\n\tfunction getHorizontalSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR );\n\n\t}\n\n\t/**\n\t * Returns all vertical slides that exist within this deck.\n\t */\n\tfunction getVerticalSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, '.slides>section>section' );\n\n\t}\n\n\t/**\n\t * Returns all vertical stacks (each stack can contain multiple slides).\n\t */\n\tfunction getVerticalStacks() {\n\n\t\treturn Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.stack');\n\n\t}\n\n\t/**\n\t * Returns true if there are at least two horizontal slides.\n\t */\n\tfunction hasHorizontalSlides() {\n\n\t\treturn getHorizontalSlides().length > 1;\n\t}\n\n\t/**\n\t * Returns true if there are at least two vertical slides.\n\t */\n\tfunction hasVerticalSlides() {\n\n\t\treturn getVerticalSlides().length > 1;\n\n\t}\n\n\t/**\n\t * Returns an array of objects where each object represents the\n\t * attributes on its respective slide.\n\t */\n\tfunction getSlidesAttributes() {\n\n\t\treturn getSlides().map( slide => {\n\n\t\t\tlet attributes = {};\n\t\t\tfor( let i = 0; i < slide.attributes.length; i++ ) {\n\t\t\t\tlet attribute = slide.attributes[ i ];\n\t\t\t\tattributes[ attribute.name ] = attribute.value;\n\t\t\t}\n\t\t\treturn attributes;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Retrieves the total number of slides in this presentation.\n\t *\n\t * @return {number}\n\t */\n\tfunction getTotalSlides() {\n\n\t\treturn getSlides().length;\n\n\t}\n\n\t/**\n\t * Returns the slide element matching the specified index.\n\t *\n\t * @return {HTMLElement}\n\t */\n\tfunction getSlide( x, y ) {\n\n\t\tlet horizontalSlide = getHorizontalSlides()[ x ];\n\t\tlet verticalSlides = horizontalSlide && horizontalSlide.querySelectorAll( 'section' );\n\n\t\tif( verticalSlides && verticalSlides.length && typeof y === 'number' ) {\n\t\t\treturn verticalSlides ? verticalSlides[ y ] : undefined;\n\t\t}\n\n\t\treturn horizontalSlide;\n\n\t}\n\n\t/**\n\t * Returns the background element for the given slide.\n\t * All slides, even the ones with no background properties\n\t * defined, have a background element so as long as the\n\t * index is valid an element will be returned.\n\t *\n\t * @param {mixed} x Horizontal background index OR a slide\n\t * HTML element\n\t * @param {number} y Vertical background index\n\t * @return {(HTMLElement[]|*)}\n\t */\n\tfunction getSlideBackground( x, y ) {\n\n\t\tlet slide = typeof x === 'number' ? getSlide( x, y ) : x;\n\t\tif( slide ) {\n\t\t\treturn slide.slideBackgroundElement;\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Retrieves the current state of the presentation as\n\t * an object. This state can then be restored at any\n\t * time.\n\t *\n\t * @return {{indexh: number, indexv: number, indexf: number, paused: boolean, overview: boolean}}\n\t */\n\tfunction getState() {\n\n\t\tlet indices = getIndices();\n\n\t\treturn {\n\t\t\tindexh: indices.h,\n\t\t\tindexv: indices.v,\n\t\t\tindexf: indices.f,\n\t\t\tpaused: isPaused(),\n\t\t\toverview: overview.isActive(),\n\t\t\t...overlay.getState()\n\t\t};\n\n\t}\n\n\t/**\n\t * Restores the presentation to the given state.\n\t *\n\t * @param {object} state As generated by getState()\n\t * @see {@link getState} generates the parameter `state`\n\t */\n\tfunction setState( state ) {\n\n\t\tif( typeof state === 'object' ) {\n\t\t\tslide( Util.deserialize( state.indexh ), Util.deserialize( state.indexv ), Util.deserialize( state.indexf ) );\n\n\t\t\tlet pausedFlag = Util.deserialize( state.paused ),\n\t\t\t\toverviewFlag = Util.deserialize( state.overview );\n\n\t\t\tif( typeof pausedFlag === 'boolean' && pausedFlag !== isPaused() ) {\n\t\t\t\ttogglePause( pausedFlag );\n\t\t\t}\n\n\t\t\tif( typeof overviewFlag === 'boolean' && overviewFlag !== overview.isActive() ) {\n\t\t\t\toverview.toggle( overviewFlag );\n\t\t\t}\n\n\t\t\toverlay.setState( state );\n\t\t}\n\n\t}\n\n\t/**\n\t * Cues a new automated slide if enabled in the config.\n\t */\n\tfunction cueAutoSlide() {\n\n\t\tcancelAutoSlide();\n\n\t\tif( currentSlide && config.autoSlide !== false ) {\n\n\t\t\tlet fragment = currentSlide.querySelector( '.current-fragment[data-autoslide]' );\n\n\t\t\tlet fragmentAutoSlide = fragment ? fragment.getAttribute( 'data-autoslide' ) : null;\n\t\t\tlet parentAutoSlide = currentSlide.parentNode ? currentSlide.parentNode.getAttribute( 'data-autoslide' ) : null;\n\t\t\tlet slideAutoSlide = currentSlide.getAttribute( 'data-autoslide' );\n\n\t\t\t// Pick value in the following priority order:\n\t\t\t// 1. Current fragment's data-autoslide\n\t\t\t// 2. Current slide's data-autoslide\n\t\t\t// 3. Parent slide's data-autoslide\n\t\t\t// 4. Global autoSlide setting\n\t\t\tif( fragmentAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( fragmentAutoSlide, 10 );\n\t\t\t}\n\t\t\telse if( slideAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( slideAutoSlide, 10 );\n\t\t\t}\n\t\t\telse if( parentAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( parentAutoSlide, 10 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tautoSlide = config.autoSlide;\n\n\t\t\t\t// If there are media elements with data-autoplay,\n\t\t\t\t// automatically set the autoSlide duration to the\n\t\t\t\t// length of that media. Not applicable if the slide\n\t\t\t\t// is divided up into fragments.\n\t\t\t\t// playbackRate is accounted for in the duration.\n\t\t\t\tif( currentSlide.querySelectorAll( '.fragment' ).length === 0 ) {\n\t\t\t\t\tUtil.queryAll( currentSlide, 'video, audio' ).forEach( el => {\n\t\t\t\t\t\tif( el.hasAttribute( 'data-autoplay' ) ) {\n\t\t\t\t\t\t\tif( autoSlide && (el.duration * 1000 / el.playbackRate ) > autoSlide ) {\n\t\t\t\t\t\t\t\tautoSlide = ( el.duration * 1000 / el.playbackRate ) + 1000;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Cue the next auto-slide if:\n\t\t\t// - There is an autoSlide value\n\t\t\t// - Auto-sliding isn't paused by the user\n\t\t\t// - The presentation isn't paused\n\t\t\t// - The overview isn't active\n\t\t\t// - The presentation isn't over\n\t\t\tif( autoSlide && !autoSlidePaused && !isPaused() && !overview.isActive() && ( !isLastSlide() || fragments.availableRoutes().next || config.loop === true ) ) {\n\t\t\t\tautoSlideTimeout = setTimeout( () => {\n\t\t\t\t\tif( typeof config.autoSlideMethod === 'function' ) {\n\t\t\t\t\t\tconfig.autoSlideMethod()\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnavigateNext();\n\t\t\t\t\t}\n\t\t\t\t\tcueAutoSlide();\n\t\t\t\t}, autoSlide );\n\t\t\t\tautoSlideStartTime = Date.now();\n\t\t\t}\n\n\t\t\tif( autoSlidePlayer ) {\n\t\t\t\tautoSlidePlayer.setPlaying( autoSlideTimeout !== -1 );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Cancels any ongoing request to auto-slide.\n\t */\n\tfunction cancelAutoSlide() {\n\n\t\tclearTimeout( autoSlideTimeout );\n\t\tautoSlideTimeout = -1;\n\n\t}\n\n\tfunction pauseAutoSlide() {\n\n\t\tif( autoSlide && !autoSlidePaused ) {\n\t\t\tautoSlidePaused = true;\n\t\t\tdispatchEvent({ type: 'autoslidepaused' });\n\t\t\tclearTimeout( autoSlideTimeout );\n\n\t\t\tif( autoSlidePlayer ) {\n\t\t\t\tautoSlidePlayer.setPlaying( false );\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfunction resumeAutoSlide() {\n\n\t\tif( autoSlide && autoSlidePaused ) {\n\t\t\tautoSlidePaused = false;\n\t\t\tdispatchEvent({ type: 'autoslideresumed' });\n\t\t\tcueAutoSlide();\n\t\t}\n\n\t}\n\n\tfunction navigateLeft({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.prev();\n\n\t\t// Reverse for RTL\n\t\tif( config.rtl ) {\n\t\t\tif( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().left ) {\n\t\t\t\tslide( indexh + 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t\t}\n\t\t}\n\t\t// Normal navigation\n\t\telse if( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().left ) {\n\t\t\tslide( indexh - 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t}\n\n\t}\n\n\tfunction navigateRight({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.next();\n\n\t\t// Reverse for RTL\n\t\tif( config.rtl ) {\n\t\t\tif( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().right ) {\n\t\t\t\tslide( indexh - 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t\t}\n\t\t}\n\t\t// Normal navigation\n\t\telse if( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().right ) {\n\t\t\tslide( indexh + 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t}\n\n\t}\n\n\tfunction navigateUp({skipFragments=false}={}) {\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.prev();\n\n\t\t// Prioritize hiding fragments\n\t\tif( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().up ) {\n\t\t\tslide( indexh, indexv - 1 );\n\t\t}\n\n\t}\n\n\tfunction navigateDown({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedVertically = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.next();\n\n\t\t// Prioritize revealing fragments\n\t\tif( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().down ) {\n\t\t\tslide( indexh, indexv + 1 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Navigates backwards, prioritized in the following order:\n\t * 1) Previous fragment\n\t * 2) Previous vertical slide\n\t * 3) Previous horizontal slide\n\t */\n\tfunction navigatePrev({skipFragments=false}={}) {\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.prev();\n\n\t\t// Prioritize revealing fragments\n\t\tif( skipFragments || fragments.prev() === false ) {\n\t\t\tif( availableRoutes().up ) {\n\t\t\t\tnavigateUp({skipFragments});\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Fetch the previous horizontal slide, if there is one\n\t\t\t\tlet previousSlide;\n\n\t\t\t\tif( config.rtl ) {\n\t\t\t\t\tpreviousSlide = Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.future' ).pop();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpreviousSlide = Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.past' ).pop();\n\t\t\t\t}\n\n\t\t\t\t// When going backwards and arriving on a stack we start\n\t\t\t\t// at the bottom of the stack\n\t\t\t\tif( previousSlide && previousSlide.classList.contains( 'stack' ) ) {\n\t\t\t\t\tlet v = ( previousSlide.querySelectorAll( 'section' ).length - 1 ) || undefined;\n\t\t\t\t\tlet h = indexh - 1;\n\t\t\t\t\tslide( h, v );\n\t\t\t\t}\n\t\t\t\telse if( config.rtl ) {\n\t\t\t\t\tnavigateRight({skipFragments});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnavigateLeft({skipFragments});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * The reverse of #navigatePrev().\n\t */\n\tfunction navigateNext({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\t\tnavigationHistory.hasNavigatedVertically = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.next();\n\n\t\t// Prioritize revealing fragments\n\t\tif( skipFragments || fragments.next() === false ) {\n\n\t\t\tlet routes = availableRoutes();\n\n\t\t\t// When looping is enabled `routes.down` is always available\n\t\t\t// so we need a separate check for when we've reached the\n\t\t\t// end of a stack and should move horizontally\n\t\t\tif( routes.down && routes.right && config.loop && isLastVerticalSlide() ) {\n\t\t\t\troutes.down = false;\n\t\t\t}\n\n\t\t\tif( routes.down ) {\n\t\t\t\tnavigateDown({skipFragments});\n\t\t\t}\n\t\t\telse if( config.rtl ) {\n\t\t\t\tnavigateLeft({skipFragments});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnavigateRight({skipFragments});\n\t\t\t}\n\t\t}\n\n\t}\n\n\n\t// --------------------------------------------------------------------//\n\t// ----------------------------- EVENTS -------------------------------//\n\t// --------------------------------------------------------------------//\n\n\t/**\n\t * Called by all event handlers that are based on user\n\t * input.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onUserInput( event ) {\n\n\t\tif( config.autoSlideStoppable ) {\n\t\t\tpauseAutoSlide();\n\t\t}\n\n\t}\n\n\t/**\n\t* Listener for post message events posted to this window.\n\t*/\n\tfunction onPostMessage( event ) {\n\n\t\tlet data = event.data;\n\n\t\t// Make sure we're dealing with JSON\n\t\tif( typeof data === 'string' && data.charAt( 0 ) === '{' && data.charAt( data.length - 1 ) === '}' ) {\n\t\t\tdata = JSON.parse( data );\n\n\t\t\t// Check if the requested method can be found\n\t\t\tif( data.method && typeof Reveal[data.method] === 'function' ) {\n\n\t\t\t\tif( POST_MESSAGE_METHOD_BLACKLIST.test( data.method ) === false ) {\n\n\t\t\t\t\tconst result = Reveal[data.method].apply( Reveal, data.args );\n\n\t\t\t\t\t// Dispatch a postMessage event with the returned value from\n\t\t\t\t\t// our method invocation for getter functions\n\t\t\t\t\tdispatchPostMessage( 'callback', { method: data.method, result: result } );\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.warn( 'reveal.js: \"'+ data.method +'\" is is blacklisted from the postMessage API' );\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Event listener for transition end on the current slide.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onTransitionEnd( event ) {\n\n\t\tif( transition === 'running' && /section/gi.test( event.target.nodeName ) ) {\n\t\t\ttransition = 'idle';\n\t\t\tdispatchEvent({\n\t\t\t\ttype: 'slidetransitionend',\n\t\t\t\tdata: { indexh, indexv, previousSlide, currentSlide }\n\t\t\t});\n\t\t}\n\n\t}\n\n\t/**\n\t * A global listener for all click events inside of the\n\t * .slides container.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onSlidesClicked( event ) {\n\n\t\tconst anchor = Util.closest( event.target, 'a[href^=\"#\"]' );\n\n\t\t// If a hash link is clicked, we find the target slide\n\t\t// and navigate to it. We previously relied on 'hashchange'\n\t\t// for links like these but that prevented media with\n\t\t// audio tracks from playing in mobile browsers since it\n\t\t// wasn't considered a direct interaction with the document.\n\t\tif( anchor ) {\n\t\t\tconst hash = anchor.getAttribute( 'href' );\n\t\t\tconst indices = location.getIndicesFromHash( hash );\n\n\t\t\tif( indices ) {\n\t\t\t\tReveal.slide( indices.h, indices.v, indices.f );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the window level 'resize' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onWindowResize( event ) {\n\n\t\tlayout();\n\t}\n\n\t/**\n\t * Handle for the window level 'visibilitychange' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onPageVisibilityChange( event ) {\n\n\t\t// If, after clicking a link or similar and we're coming back,\n\t\t// focus the document.body to ensure we can use keyboard shortcuts\n\t\tif( document.hidden === false && document.activeElement !== document.body ) {\n\t\t\t// Not all elements support .blur() - SVGs among them.\n\t\t\tif( typeof document.activeElement.blur === 'function' ) {\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\t\t\tdocument.body.focus();\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the document level 'fullscreenchange' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onFullscreenChange( event ) {\n\n\t\tlet element = document.fullscreenElement || document.webkitFullscreenElement;\n\t\tif( element === dom.wrapper ) {\n\t\t\tevent.stopImmediatePropagation();\n\n\t\t\t// Timeout to avoid layout shift in Safari\n\t\t\tsetTimeout( () => {\n\t\t\t\tReveal.layout();\n\t\t\t\tReveal.focus.focus(); // focus.focus :'(\n\t\t\t}, 1 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Handles click on the auto-sliding controls element.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onAutoSlidePlayerClick( event ) {\n\n\t\t// Replay\n\t\tif( isLastSlide() && config.loop === false ) {\n\t\t\tslide( 0, 0 );\n\t\t\tresumeAutoSlide();\n\t\t}\n\t\t// Resume\n\t\telse if( autoSlidePaused ) {\n\t\t\tresumeAutoSlide();\n\t\t}\n\t\t// Pause\n\t\telse {\n\t\t\tpauseAutoSlide();\n\t\t}\n\n\t}\n\n\n\t// --------------------------------------------------------------------//\n\t// ------------------------------- API --------------------------------//\n\t// --------------------------------------------------------------------//\n\n\t// The public reveal.js API\n\tconst API = {\n\t\tVERSION,\n\n\t\tinitialize,\n\t\tconfigure,\n\t\tdestroy,\n\n\t\tsync,\n\t\tsyncSlide,\n\t\tsyncFragments: fragments.sync.bind( fragments ),\n\n\t\t// Navigation methods\n\t\tslide,\n\t\tleft: navigateLeft,\n\t\tright: navigateRight,\n\t\tup: navigateUp,\n\t\tdown: navigateDown,\n\t\tprev: navigatePrev,\n\t\tnext: navigateNext,\n\n\t\t// Navigation aliases\n\t\tnavigateLeft, navigateRight, navigateUp, navigateDown, navigatePrev, navigateNext,\n\n\t\t// Fragment methods\n\t\tnavigateFragment: fragments.goto.bind( fragments ),\n\t\tprevFragment: fragments.prev.bind( fragments ),\n\t\tnextFragment: fragments.next.bind( fragments ),\n\n\t\t// Event binding\n\t\ton,\n\t\toff,\n\n\t\t// Legacy event binding methods left in for backwards compatibility\n\t\taddEventListener: on,\n\t\tremoveEventListener: off,\n\n\t\t// Forces an update in slide layout\n\t\tlayout,\n\n\t\t// Randomizes the order of slides\n\t\tshuffle,\n\n\t\t// Returns an object with the available routes as booleans (left/right/top/bottom)\n\t\tavailableRoutes,\n\n\t\t// Returns an object with the available fragments as booleans (prev/next)\n\t\tavailableFragments: fragments.availableRoutes.bind( fragments ),\n\n\t\t// Toggles a help overlay with keyboard shortcuts\n\t\ttoggleHelp: overlay.toggleHelp.bind( overlay ),\n\n\t\t// Toggles the overview mode on/off\n\t\ttoggleOverview: overview.toggle.bind( overview ),\n\n\t\t// Toggles the scroll view on/off\n\t\ttoggleScrollView: scrollView.toggle.bind( scrollView ),\n\n\t\t// Toggles the \"black screen\" mode on/off\n\t\ttogglePause,\n\n\t\t// Toggles the auto slide mode on/off\n\t\ttoggleAutoSlide,\n\n\t\t// Toggles visibility of the jump-to-slide UI\n\t\ttoggleJumpToSlide,\n\n\t\t// Slide navigation checks\n\t\tisFirstSlide,\n\t\tisLastSlide,\n\t\tisLastVerticalSlide,\n\t\tisVerticalSlide,\n\t\tisVerticalStack,\n\n\t\t// State checks\n\t\tisPaused,\n\t\tisAutoSliding,\n\t\tisSpeakerNotes: notes.isSpeakerNotesWindow.bind( notes ),\n\t\tisOverview: overview.isActive.bind( overview ),\n\t\tisFocused: focus.isFocused.bind( focus ),\n\t\tisOverlayOpen: overlay.isOpen.bind( overlay ),\n\t\tisScrollView: scrollView.isActive.bind( scrollView ),\n\t\tisPrintView: printView.isActive.bind( printView ),\n\n\t\t// Checks if reveal.js has been loaded and is ready for use\n\t\tisReady: () => ready,\n\n\t\t// Slide preloading\n\t\tloadSlide: slideContent.load.bind( slideContent ),\n\t\tunloadSlide: slideContent.unload.bind( slideContent ),\n\n\t\t// Start/stop all media inside of the current slide\n\t\tstartEmbeddedContent: () => slideContent.startEmbeddedContent( currentSlide ),\n\t\tstopEmbeddedContent: () => slideContent.stopEmbeddedContent( currentSlide, { unloadIframes: false } ),\n\n\t\t// Lightbox previews\n\t\tpreviewIframe: overlay.previewIframe.bind( overlay ),\n\t\tpreviewImage: overlay.previewImage.bind( overlay ),\n\t\tpreviewVideo: overlay.previewVideo.bind( overlay ),\n\n\t\tshowPreview: overlay.previewIframe.bind( overlay ), // deprecated in favor of showIframeLightbox\n\t\thidePreview: overlay.close.bind( overlay ),\n\n\t\t// Adds or removes all internal event listeners\n\t\taddEventListeners,\n\t\tremoveEventListeners,\n\t\tdispatchEvent,\n\n\t\t// Facility for persisting and restoring the presentation state\n\t\tgetState,\n\t\tsetState,\n\n\t\t// Presentation progress on range of 0-1\n\t\tgetProgress,\n\n\t\t// Returns the indices of the current, or specified, slide\n\t\tgetIndices,\n\n\t\t// Returns an Array of key:value maps of the attributes of each\n\t\t// slide in the deck\n\t\tgetSlidesAttributes,\n\n\t\t// Returns the number of slides that we have passed\n\t\tgetSlidePastCount,\n\n\t\t// Returns the total number of slides\n\t\tgetTotalSlides,\n\n\t\t// Returns the slide element at the specified index\n\t\tgetSlide,\n\n\t\t// Returns the previous slide element, may be null\n\t\tgetPreviousSlide: () => previousSlide,\n\n\t\t// Returns the current slide element\n\t\tgetCurrentSlide: () => currentSlide,\n\n\t\t// Returns the slide background element at the specified index\n\t\tgetSlideBackground,\n\n\t\t// Returns the speaker notes string for a slide, or null\n\t\tgetSlideNotes: notes.getSlideNotes.bind( notes ),\n\n\t\t// Returns an Array of all slides\n\t\tgetSlides,\n\n\t\t// Returns an array with all horizontal/vertical slides in the deck\n\t\tgetHorizontalSlides,\n\t\tgetVerticalSlides,\n\n\t\t// Checks if the presentation contains two or more horizontal\n\t\t// and vertical slides\n\t\thasHorizontalSlides,\n\t\thasVerticalSlides,\n\n\t\t// Checks if the deck has navigated on either axis at least once\n\t\thasNavigatedHorizontally: () => navigationHistory.hasNavigatedHorizontally,\n\t\thasNavigatedVertically: () => navigationHistory.hasNavigatedVertically,\n\n\t\tshouldAutoAnimateBetween,\n\n\t\t// Adds/removes a custom key binding\n\t\taddKeyBinding: keyboard.addKeyBinding.bind( keyboard ),\n\t\tremoveKeyBinding: keyboard.removeKeyBinding.bind( keyboard ),\n\n\t\t// Programmatically triggers a keyboard event\n\t\ttriggerKey: keyboard.triggerKey.bind( keyboard ),\n\n\t\t// Registers a new shortcut to include in the help overlay\n\t\tregisterKeyboardShortcut: keyboard.registerKeyboardShortcut.bind( keyboard ),\n\n\t\tgetComputedSlideSize,\n\t\tsetCurrentScrollPage,\n\n\t\t// Returns the current scale of the presentation content\n\t\tgetScale: () => scale,\n\n\t\t// Returns the current configuration object\n\t\tgetConfig: () => config,\n\n\t\t// Helper method, retrieves query string as a key:value map\n\t\tgetQueryHash: Util.getQueryHash,\n\n\t\t// Returns the path to the current slide as represented in the URL\n\t\tgetSlidePath: location.getHash.bind( location ),\n\n\t\t// Returns reveal.js DOM elements\n\t\tgetRevealElement: () => revealElement,\n\t\tgetSlidesElement: () => dom.slides,\n\t\tgetViewportElement: () => dom.viewport,\n\t\tgetBackgroundsElement: () => backgrounds.element,\n\n\t\t// API for registering and retrieving plugins\n\t\tregisterPlugin: plugins.registerPlugin.bind( plugins ),\n\t\thasPlugin: plugins.hasPlugin.bind( plugins ),\n\t\tgetPlugin: plugins.getPlugin.bind( plugins ),\n\t\tgetPlugins: plugins.getRegisteredPlugins.bind( plugins )\n\n\t};\n\n\t// Our internal API which controllers have access to\n\tUtil.extend( Reveal, {\n\t\t...API,\n\n\t\t// Methods for announcing content to screen readers\n\t\tannounceStatus,\n\t\tgetStatusText,\n\n\t\t// Controllers\n\t\tfocus,\n\t\tscroll: scrollView,\n\t\tprogress,\n\t\tcontrols,\n\t\tlocation,\n\t\toverview,\n\t\tkeyboard,\n\t\tfragments,\n\t\tbackgrounds,\n\t\tslideContent,\n\t\tslideNumber,\n\n\t\tonUserInput,\n\t\tcloseOverlay: overlay.close.bind( overlay ),\n\t\tupdateSlidesVisibility,\n\t\tlayoutSlideContents,\n\t\ttransformSlides,\n\t\tcueAutoSlide,\n\t\tcancelAutoSlide\n\t} );\n\n\treturn API;\n\n};\n","import Deck, { VERSION } from './reveal.js'\n\n/**\n * Expose the Reveal class to the window. To create a\n * new instance:\n * let deck = new Reveal( document.querySelector( '.reveal' ), {\n * controls: false\n * } );\n * deck.initialize().then(() => {\n * // reveal.js is ready\n * });\n */\nlet Reveal = Deck;\n\n\n/**\n * The below is a thin shell that mimics the pre 4.0\n * reveal.js API and ensures backwards compatibility.\n * This API only allows for one Reveal instance per\n * page, whereas the new API above lets you run many\n * presentations on the same page.\n *\n * Reveal.initialize( { controls: false } ).then(() => {\n * // reveal.js is ready\n * });\n */\n\nlet enqueuedAPICalls = [];\n\nReveal.initialize = options => {\n\n\t// Create our singleton reveal.js instance\n\tObject.assign( Reveal, new Deck( document.querySelector( '.reveal' ), options ) );\n\n\t// Invoke any enqueued API calls\n\tenqueuedAPICalls.map( method => method( Reveal ) );\n\n\treturn Reveal.initialize();\n\n}\n\n/**\n * The pre 4.0 API let you add event listener before\n * initializing. We maintain the same behavior by\n * queuing up premature API calls and invoking all\n * of them when Reveal.initialize is called.\n */\n[ 'configure', 'on', 'off', 'addEventListener', 'removeEventListener', 'registerPlugin' ].forEach( method => {\n\tReveal[method] = ( ...args ) => {\n\t\tenqueuedAPICalls.push( deck => deck[method].call( null, ...args ) );\n\t}\n} );\n\nReveal.isReady = () => false;\n\nReveal.VERSION = VERSION;\n\nexport default Reveal;"],"names":["extend","a","b","i","queryAll","el","selector","Array","from","querySelectorAll","toggleClass","className","value","classList","add","remove","deserialize","match","parseFloat","transformElement","element","transform","style","matches","target","matchesMethod","matchesSelector","msMatchesSelector","call","closest","parentNode","enterFullscreen","requestMethod","document","documentElement","requestFullscreen","webkitRequestFullscreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen","apply","createStyleSheet","tag","createElement","type","length","styleSheet","cssText","appendChild","createTextNode","head","getQueryHash","query","location","search","replace","split","shift","pop","unescape","fileExtensionToMimeMap","mp4","m4a","ogv","mpeg","webm","UA","navigator","userAgent","isMobile","test","platform","maxTouchPoints","isAndroid","e","t","slice","o","l","u","cancelAnimationFrame","requestAnimationFrame","s","filter","dirty","active","c","forEach","styleComputed","m","y","v","p","d","f","S","availableWidth","clientWidth","currentWidth","scrollWidth","previousFontSize","currentFontSize","Math","min","max","minSize","maxSize","whiteSpace","multiLine","n","getComputedStyle","getPropertyValue","display","preStyleTestCompleted","fontSize","dispatchEvent","CustomEvent","detail","oldValue","newValue","scaleFactor","h","w","observeMutations","observer","disconnect","originalStyle","z","F","MutationObserver","observe","g","subtree","childList","characterData","W","E","clearTimeout","setTimeout","x","observeWindowDelay","M","Object","defineProperty","set","concat","observeWindow","fitAll","C","assign","map","newbie","push","fit","unfreeze","freeze","unsubscribe","arguments","window","SlideContent","constructor","Reveal","this","startEmbeddedIframe","bind","ensureMobileMediaPlaying","shouldPreload","isScrollView","preload","getConfig","preloadIframes","hasAttribute","load","slide","options","tagName","setAttribute","getAttribute","removeAttribute","media","sources","source","background","slideBackgroundElement","backgroundContent","slideBackgroundContentElement","backgroundIframe","backgroundImage","backgroundVideo","backgroundVideoLoop","backgroundVideoMuted","trim","encodeRFC3986URI","url","encodeURI","charCodeAt","toString","toUpperCase","decodeURI","join","video","isSpeakerNotes","muted","sourceElement","getMimeTypeFromFile","filename","excludeIframes","iframe","width","height","maxHeight","maxWidth","backgroundIframeElement","querySelector","layout","scopeElement","fitty","unload","getSlideBackground","formatEmbeddedContent","_appendParamToIframeSource","sourceAttribute","sourceURL","param","getSlidesElement","src","indexOf","startEmbeddedContent","isSpeakerNotesWindow","autoplay","autoPlayMedia","play","readyState","startEmbeddedMedia","promise","addEventListener","catch","controls","removeEventListener","event","getVideoPlaybackQuality","playing","paused","totalFrames","totalVideoFrames","isAttachedToDOM","isVisible","ended","currentTime","contentWindow","postMessage","stopEmbeddedContent","unloadIframes","pause","SLIDES_SELECTOR","HORIZONTAL_SLIDES_SELECTOR","VERTICAL_SLIDES_SELECTOR","POST_MESSAGE_METHOD_BLACKLIST","SlideNumber","render","getRevealElement","configure","config","oldConfig","slideNumberDisplay","slideNumber","isPrintView","showSlideNumber","update","innerHTML","getSlideNumber","getCurrentSlide","format","getHorizontalSlides","horizontalOffset","dataset","visibility","getSlidePastCount","getTotalSlides","indices","getIndices","sep","isVerticalSlide","getHash","formatNumber","delimiter","isNaN","destroy","JumpToSlide","onInput","onBlur","onKeyDown","jumpInput","placeholder","show","indicesOnShow","focus","hide","jumpTimeout","jump","slideNumberFormat","getSlides","parseInt","getIndicesFromHash","oneBasedIndex","jumpAfter","delay","regex","RegExp","find","innerText","cancel","confirm","keyCode","stopImmediatePropagation","colorToRgb","color","hex3","r","charAt","hex6","rgb","rgba","Backgrounds","create","slideh","backgroundStack","createBackground","slidev","parallaxBackgroundImage","backgroundSize","parallaxBackgroundSize","backgroundRepeat","parallaxBackgroundRepeat","backgroundPosition","parallaxBackgroundPosition","container","contentElement","sync","data","backgroundColor","backgroundGradient","backgroundTransition","backgroundOpacity","dataPreload","opacity","contrastClass","getContrastClass","contrastColor","computedBackgroundStyle","bubbleSlideContrastClassToElement","classToBubble","contains","includeAll","currentSlide","currentBackground","horizontalPast","rtl","horizontalFuture","childNodes","backgroundh","backgroundv","indexv","previousBackground","previousBackgroundHash","currentBackgroundHash","currentVideo","previousVideo","currentVideoParent","backgroundChanged","slideContent","currentBackgroundContent","backgroundImageURL","updateParallax","backgroundWidth","backgroundHeight","horizontalSlides","verticalSlides","getVerticalSlides","horizontalOffsetMultiplier","slideWidth","offsetWidth","horizontalSlideCount","parallaxBackgroundHorizontal","verticalOffsetMultiplier","verticalOffset","slideHeight","offsetHeight","verticalSlideCount","parallaxBackgroundVertical","autoAnimateCounter","AutoAnimate","run","fromSlide","toSlide","reset","allSlides","toSlideIndex","fromSlideIndex","autoAnimateStyleSheet","animationOptions","getAutoAnimateOptions","autoAnimate","slideDirection","fromSlideIsHidden","css","getAutoAnimatableElements","elements","autoAnimateElements","to","autoAnimateUnmatched","defaultUnmatchedDuration","duration","defaultUnmatchedDelay","getUnmatchedAutoAnimateElements","unmatchedElement","unmatchedOptions","id","autoAnimateTarget","fontWeight","sheet","removeChild","elementOptions","easing","fromProps","getAutoAnimatableProperties","toProps","styles","translate","scale","presentationScale","getScale","delta","scaleX","scaleY","round","propertyName","toValue","fromValue","explicitValue","toStyleProperties","keys","inheritedOptions","autoAnimateEasing","autoAnimateDuration","autoAnimatedParent","autoAnimateDelay","direction","properties","bounds","measure","center","getBoundingClientRect","offsetLeft","offsetTop","computedStyles","autoAnimateStyles","property","pairs","autoAnimateMatcher","getAutoAnimatePairs","reserved","pair","index","textNodes","findAutoAnimateMatches","node","nodeName","textContent","getLocalBoundingBox","fromScope","toScope","serializer","fromMatches","toMatches","key","fromElement","primaryIndex","secondaryIndex","rootElement","children","reduce","result","containsAnimatedElements","ScrollView","activatedCallbacks","onScroll","activate","stateBeforeActivation","getState","slideHTMLBeforeActivation","horizontalBackgrounds","presentationBackground","viewportElement","viewportStyles","pageElements","pageContainer","previousSlide","createPageElement","isVertical","contentContainer","shouldAutoAnimateBetween","page","slideBackground","pageBackground","stickyContainer","insertBefore","horizontalSlide","isVerticalStack","verticalSlide","createProgressBar","stack","setState","callback","restoreScrollPosition","passive","deactivate","stateBeforeDeactivation","removeProgressBar","toggle","override","isActive","progressBar","progressBarInner","progressBarPlayhead","firstChild","handleDocumentMouseMove","progress","clientY","top","progressBarHeight","scrollTop","scrollHeight","handleDocumentMouseUp","draggingProgressBar","showProgressBar","preventDefault","syncPages","syncScrollPosition","slideSize","getComputedSlideSize","innerWidth","innerHeight","useCompactLayout","scrollLayout","viewportHeight","compactHeight","pageHeight","scrollTriggerHeight","setProperty","scrollSnapType","scrollSnap","slideTriggers","pages","pageElement","createPage","slideElement","stickyElement","backgroundElement","autoAnimatePages","activatePage","deactivatePage","createFragmentTriggersForPage","createAutoAnimateTriggersForPage","totalScrollTriggerCount","scrollTriggers","total","triggerStick","scrollSnapAlign","marginTop","removeProperty","scrollPadding","totalHeight","position","setTriggerRanges","scrollProgress","syncProgressBar","trigger","rangeStart","range","scrollTriggerSegmentSize","scrollTrigger","fragmentGroups","fragments","sort","autoAnimateElement","autoAnimatePage","indexh","viewportHeightFactor","playheadHeight","progressBarScrollableHeight","progressSegmentHeight","spacing","slideTrigger","progressBarSlide","scrollTriggerElements","triggerElement","scrollProgressMid","activePage","loaded","activateTrigger","deactivateTrigger","setProgressBarValue","getAllPages","hideProgressBarTimeout","prev","next","scrollToSlide","getScrollTriggerBySlide","storeScrollPosition","storeScrollPositionTimeout","sessionStorage","setItem","origin","pathname","scrollPosition","getItem","scrollOrigin","setCurrentScrollPage","backgrounds","sibling","getSlideByIndices","flatMap","getViewportElement","PrintView","slides","injectPageNumbers","pageWidth","floor","margin","Promise","body","layoutSlideContents","slideScrollHeights","left","contentHeight","numberOfPages","ceil","pdfMaxPagesPerSlide","pdfPageHeightOffset","showNotes","notes","getSlideNotes","notesSpacing","notesLayout","notesElement","bottom","numberElement","pdfSeparateFragments","previousFragmentStep","fragment","clonedPage","cloneNode","fragmentNumber","view","Fragments","disable","enable","availableRoutes","hiddenFragments","grouped","ordered","unordered","sorted","group","sortAll","changedFragments","shown","hidden","maxIndex","currentFragment","wasVisible","announceStatus","getStatusText","bubbles","goto","offset","lastVisibleFragment","fragmentInURL","writeURL","Overview","onSlideClicked","overview","cancelAutoSlide","getBackgroundsElement","overviewSlideWidth","overviewSlideHeight","updateSlidesVisibility","hslide","vslide","hbackground","vbackground","vmin","transformSlides","cueAutoSlide","Keyboard","shortcuts","bindings","onDocumentKeyDown","navigationMode","unbind","addKeyBinding","binding","description","removeKeyBinding","triggerKey","registerKeyboardShortcut","getShortcuts","getBindings","keyboardCondition","isFocused","autoSlideWasPaused","isAutoSliding","onUserInput","activeElementIsCE","activeElement","isContentEditable","activeElementIsInput","activeElementIsNotes","unusedModifier","shiftKey","altKey","ctrlKey","metaKey","resumeKeyCodes","keyboard","isOverlayOpen","includes","isPaused","useLinearMode","hasHorizontalSlides","hasVerticalSlides","triggered","action","skipFragments","right","undefined","up","Number","MAX_VALUE","down","togglePause","embedded","autoSlideStoppable","toggleAutoSlide","jumpToSlide","toggleJumpToSlide","closeOverlay","toggleHelp","Location","MAX_REPLACE_STATE_FREQUENCY","writeURLTimeout","replaceStateTimestamp","onWindowHashChange","hash","name","bits","hashIndexBase","hashOneBasedIndex","getElementById","decodeURIComponent","error","readURL","currentIndices","newIndices","history","debouncedReplaceState","replaceState","Date","now","replaceStateTimeout","encodeURIComponent","Controls","onNavigateLeftClicked","onNavigateRightClicked","onNavigateUpClicked","onNavigateDownClicked","onNavigatePrevClicked","onNavigateNextClicked","onEnterFullscreen","revealElement","controlsLeft","controlsRight","controlsUp","controlsDown","controlsPrev","controlsNext","controlsFullscreen","controlsRightArrow","controlsLeftArrow","controlsDownArrow","controlsLayout","controlsBackArrows","pointerEvents","eventName","routes","fragmentsRoutes","hasVerticalSiblings","parentElement","controlsTutorial","hasNavigatedVertically","hasNavigatedHorizontally","viewport","Progress","onProgressClicked","bar","getProgress","getMaxWidth","slidesTotal","slideIndex","clientX","targetIndices","Pointer","lastMouseWheelStep","cursorHidden","cursorInactiveTimeout","onDocumentCursorActive","onDocumentMouseScroll","mouseWheel","hideInactiveCursor","showCursor","cursor","hideCursor","hideCursorTime","wheelDelta","loadScript","script","async","defer","onload","onreadystatechange","onerror","err","Error","lastChild","Plugins","reveal","state","registeredPlugins","asyncDependencies","plugins","dependencies","registerPlugin","resolve","scripts","scriptsToLoad","condition","scriptLoadedCallback","initPlugins","then","console","warn","pluginValues","values","pluginsToInitialize","loadAsync","initNextPlugin","afterPlugInitialized","plugin","init","hasPlugin","getPlugin","getRegisteredPlugins","Overlay","onSlidesClicked","iframeTriggerSelector","mediaTriggerSelector","stateProps","previewLinks","hasLinkPreviews","hasMediaPreviews","createOverlay","dom","previewIframe","close","previewMedia","mediaType","fitMode","previewFit","previewImage","img","previewVideo","previewAutoplay","previewControls","loop","previewLoop","previewMuted","playsInline","showHelp","help","html","isOpen","every","linkTarget","mediaTarget","Touch","touchStartX","touchStartY","touchStartCount","touchCaptured","onPointerDown","onPointerMove","onPointerUp","onTouchStart","onTouchMove","onTouchEnd","msPointerEnabled","isSwipePrevented","touches","currentX","currentY","includeFragments","deltaX","deltaY","abs","pointerType","MSPOINTER_TYPE_TOUCH","STATE_FOCUS","STATE_BLUR","Focus","onRevealPointerDown","onDocumentPointerDown","blur","Notes","updateVisibility","hasNotes","notesElements","Playback","progressCheck","diameter","diameter2","thickness","progressOffset","canvas","context","getContext","setPlaying","wasPlaying","animate","progressBefore","radius","iconSize","endAngle","PI","startAngle","save","clearRect","beginPath","arc","fillStyle","fill","lineWidth","strokeStyle","stroke","fillRect","moveTo","lineTo","restore","on","listener","off","defaultConfig","minScale","maxScale","respondToHashChanges","disableLayout","touch","shuffle","showHiddenSlides","autoSlide","autoSlideMethod","defaultTiming","postMessageEvents","focusBodyOnPageVisibilityChange","transition","transitionSpeed","scrollActivationWidth","POSITIVE_INFINITY","viewDistance","mobileViewDistance","sortFragmentsOnSync","VERSION","Deck","autoSlidePlayer","initialized","ready","navigationHistory","slidesTransform","autoSlideTimeout","autoSlideStartTime","autoSlidePaused","scrollView","printView","pointer","overlay","start","Util","wrapper","parent","childElementCount","Device","pauseOverlay","createSingletonNode","tagname","classname","nodes","testNode","statusElement","overflow","clip","createStatusElement","setupDOM","onPostMessage","setInterval","scrollLeft","onFullscreenChange","activatePrintView","activateScrollView","removeEventListeners","activateInitialView","text","nodeType","isAriaHidden","isDisplayHidden","altText","ensurePunctuation","child","trimmedText","isReady","numberOfSlides","resume","onAutoSlidePlayerClick","addEventListeners","onWindowResize","onTransitionEnd","onPageVisibilityChange","useCapture","transforms","createEvent","initEvent","dispatchPostMessage","dispatchSlideChanged","self","message","namespace","JSON","stringify","viewportWidth","size","oldScale","presentationWidth","presentationHeight","zoom","len","checkResponsiveScrollView","remainingHeight","getRemainingHeight","newHeight","oldHeight","nw","naturalWidth","videoWidth","nh","naturalHeight","videoHeight","es","setPreviousVerticalIndex","getPreviousVerticalIndex","attributeName","isLastVerticalSlide","nextElementSibling","isFirstSlide","isLastSlide","wasPaused","defaultPrevented","stateBefore","indexhBefore","indexvBefore","updateSlides","slideChanged","currentHorizontalSlide","currentVerticalSlides","autoAnimateTransition","stateLoop","j","splice","beforeSlide","random","slidesLength","printMode","loopedForwards","loopedBackwards","reverse","showFragmentsIn","hideFragmentsIn","wasPresent","slideState","distanceX","distanceY","horizontalSlidesLength","isOverview","verticalSlidesLength","oy","fragmentRoutes","pastCount","mainLoop","getSlide","indexf","fragmentAutoSlide","parentAutoSlide","slideAutoSlide","playbackRate","navigateNext","pauseAutoSlide","resumeAutoSlide","navigateLeft","navigateRight","navigateUp","navigateDown","navigatePrev","parse","method","args","anchor","fullscreenElement","webkitFullscreenElement","API","initialize","initOptions","setViewport","syncSlide","syncFragments","navigateFragment","prevFragment","nextFragment","availableFragments","toggleOverview","toggleScrollView","loadSlide","unloadSlide","showPreview","hidePreview","pausedFlag","overviewFlag","totalCount","allFragments","fragmentWeight","getSlidesAttributes","attributes","attribute","getPreviousSlide","getSlidePath","getPlugins","scroll","enqueuedAPICalls","deck"],"mappings":"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","x_google_ignoreList":[2]}
\ No newline at end of file
diff --git a/js/controllers/slidecontent.js b/js/controllers/slidecontent.js
index ae2ffe8d..ed576135 100644
--- a/js/controllers/slidecontent.js
+++ b/js/controllers/slidecontent.js
@@ -14,6 +14,7 @@ export default class SlideContent {
this.Reveal = Reveal;
this.startEmbeddedIframe = this.startEmbeddedIframe.bind( this );
+ this.ensureMobileMediaPlaying = this.ensureMobileMediaPlaying.bind( this );
}
@@ -320,6 +321,8 @@ export default class SlideContent {
else if( isMobile ) {
let promise = el.play();
+ el.addEventListener( 'canplay', this.ensureMobileMediaPlaying );
+
// If autoplay does not work, ensure that the controls are visible so
// that the viewer can start the media on their own
if( promise && typeof promise.catch === 'function' && el.controls === false ) {
@@ -374,6 +377,40 @@ export default class SlideContent {
}
+ /**
+ * Ensure that an HTMLMediaElement is playing on mobile devices.
+ *
+ * This is a workaround for a bug in mobile Safari where
+ * the media fails to display if many videos are started
+ * at the same moment. When this happens, Mobile Safari
+ * reports the video is playing, and the current time
+ * advances, but nothing is visible.
+ *
+ * @param {Event} event
+ */
+ ensureMobileMediaPlaying( event ) {
+
+ const el = event.target;
+
+ // Ignore this check incompatible browsers
+ if( typeof el.getVideoPlaybackQuality !== 'function' ) {
+ return;
+ }
+
+ setTimeout( () => {
+
+ const playing = el.paused === false;
+ const totalFrames = el.getVideoPlaybackQuality().totalVideoFrames;
+
+ if( playing && totalFrames === 0 ) {
+ el.load();
+ el.play();
+ }
+
+ }, 1000 );
+
+ }
+
/**
* Starts playing an embedded video/audio element after
* it has finished loading.
@@ -461,6 +498,10 @@ export default class SlideContent {
if( !el.hasAttribute( 'data-ignore' ) && typeof el.pause === 'function' ) {
el.setAttribute('data-paused-by-reveal', '');
el.pause();
+
+ if( isMobile ) {
+ el.removeEventListener( 'canplay', this.ensureMobileMediaPlaying );
+ }
}
} );