From 9522357349ecbed720eb61f7a04683d5c8421c72 Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Wed, 8 Apr 2020 13:05:28 +0200 Subject: [PATCH] changes to plugin api; registerPlugin only accepts plugin instance, instance exposes .id --- README.md | 18 ++++++++++-------- dist/reveal.min.js | 4 ++-- js/controllers/plugins.js | 27 +++++++++++++++++---------- plugin/highlight/highlight.js | 10 ++++++---- plugin/markdown/markdown.js | 11 +++++------ plugin/math/math.js | 10 ++++++---- plugin/notes/notes.js | 34 ++++++++++++++++++++-------------- plugin/zoom-js/zoom.js | 14 ++++++++------ test/test-plugins.html | 22 +++++++++++----------- 9 files changed, 85 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index f1a0af0..c3f8d4a 100644 --- a/README.md +++ b/README.md @@ -466,8 +466,7 @@ You can add your own extensions using the same syntax. The following properties - **callback**: [optional] Function to execute when the script has loaded - **condition**: [optional] Function which must return true for the script to be loaded -You can also include dependencies which are bundled/already present on the page. To include a bundled plugin. replace the `src` property with a plugin `id` and a reference to the `plugin` instance: -- **id**: the id of the plugin +You can also include dependencies which are bundled/already present on the page. To include a bundled plugin. replace the `src` property with a reference to a `plugin` instance: - **plugin**: the plugin instance (see [Plugins](#plugins)) ### Ready Event @@ -1403,17 +1402,20 @@ Then: ## Plugins -Plugins should register themselves with reveal.js by calling `Reveal.registerPlugin( 'myPluginID', MyPlugin )`. Registered plugin instances can optionally expose an "init" function that reveal.js will call to initialize them. +Plugins should register themselves with reveal.js by calling `Reveal.registerPlugin( MyPlugin )`. Registered plugins _must_ expose a unique `id` property and can optionally expose an `init` function that reveal.js will call to initialize them. -When reveal.js is booted up via `Reveal.initialize()`, it will go through all registered plugins and invoke their "init" methods. If the "init" method returns a Promise, reveal.js will wait for that promise to be fulfilled before finishing the startup sequence and firing the [ready](#ready-event) event. Here's an example of a plugin that does some asynchronous work before reveal.js can proceed: +When reveal.js is booted up via `initialize()`, it will go through all registered plugins and invoke their `init` methods. If the `init` method returns a Promise, reveal.js will wait for that promise to be fulfilled before finishing the startup sequence and firing the [ready](#ready-event) event. Here's an example of a plugin that does some asynchronous work before reveal.js can proceed: ```javascript let MyPlugin = { - init: () => new Promise( resolve => setTimeout( resolve, 3000 ) ) + id: 'myPlugin', + init: deck => new Promise( resolve => setTimeout( resolve, 3000 ) ) }; -Reveal.registerPlugin( 'myPlugin', MyPlugin ); -Reveal.on( 'ready', () => console.log( 'Three seconds later...' ) ); -Reveal.initialize(); +Reveal.initialize({ + dependencies: [ { plugin: MyPlugin } ] +}).then( () => { + console.log( 'Three seconds later...' ) +} ); ``` Note that reveal.js will *not* wait for init Promise fulfillment if the plugin is loaded as an [async dependency](#dependencies). If the plugin's init method does _not_ return a Promise, the plugin is considered ready right away and will not hold up the reveal.js startup sequence. diff --git a/dist/reveal.min.js b/dist/reveal.min.js index 3c4b065..66cd2f2 100644 --- a/dist/reveal.min.js +++ b/dist/reveal.min.js @@ -1,8 +1,8 @@ /*! -* reveal.js 4.0.0-dev (Tue Apr 07 2020) +* reveal.js 4.0.0-dev (Wed Apr 08 2020) * https://revealjs.com * MIT licensed * * Copyright (C) 2020 Hakim El Hattab, https://hakim.se */ -!function(e){var t={};function n(i){if(t[i])return t[i].exports;var a=t[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(i,a,function(t){return e[t]}.bind(null,a));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t);var i=/registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/,a=/fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/,r=function(e,t){for(var n in t)e[n]=t[n];return e},o=function(e,t){return Array.from(e.querySelectorAll(t))},s=function(e){if("string"==typeof e){if("null"===e)return null;if("true"===e)return!0;if("false"===e)return!1;if(e.match(/^-?[\d\.]+$/))return parseFloat(e)}return e},l=function(e,t){e.style.transform=t},c=function(e,t){for(var n=e.parentNode;n;){var i=n.matches||n.matchesSelector||n.msMatchesSelector;if(i&&i.call(n,t))return n;n=n.parentNode}return null},u=function(e){var t=document.createElement("style");return t.type="text/css",e&&e.length>0&&(t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e))),document.head.appendChild(t),t},d=function(){var e={};for(var t in location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,(function(t){e[t.split("=").shift()]=t.split("=").pop()})),e){var n=e[t];e[t]=s(unescape(n))}return void 0!==e.dependencies&&delete e.dependencies,e},h=navigator.userAgent,v=document.createElement("div"),f=/(iphone|ipod|ipad|android)/gi.test(h)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,g=/chrome/i.test(h)&&!/edge/i.test(h),p=/android/gi.test(h),m="zoom"in v.style&&!f&&(g||/Version\/[\d\.]+.*Safari/.test(h)),y="function"==typeof window.history.replaceState&&!/PhantomJS/.test(h);function b(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};e.style.display=this.Reveal.getConfig().display,o(e,"img[data-src], video[data-src], audio[data-src], iframe[data-src]").forEach((function(e){("IFRAME"!==e.tagName||t.shouldPreload(e))&&(e.setAttribute("src",e.getAttribute("data-src")),e.setAttribute("data-lazy-loaded",""),e.removeAttribute("data-src"))})),o(e,"video, audio").forEach((function(e){var t=0;o(e,"source[data-src]").forEach((function(e){e.setAttribute("src",e.getAttribute("data-src")),e.removeAttribute("data-src"),e.setAttribute("data-lazy-loaded",""),t+=1})),t>0&&e.load()}));var i=e.slideBackgroundElement;if(i){i.style.display="block";var a=e.slideBackgroundContentElement,r=e.getAttribute("data-background-iframe");if(!1===i.hasAttribute("data-loaded")){i.setAttribute("data-loaded","true");var s=e.getAttribute("data-background-image"),l=e.getAttribute("data-background-video"),c=e.hasAttribute("data-background-video-loop"),u=e.hasAttribute("data-background-video-muted");if(s)a.style.backgroundImage="url("+encodeURI(s)+")";else if(l&&!this.Reveal.isSpeakerNotes()){var d=document.createElement("video");c&&d.setAttribute("loop",""),u&&(d.muted=!0),f&&(d.muted=!0,d.autoplay=!0,d.setAttribute("playsinline","")),l.split(",").forEach((function(e){d.innerHTML+=''})),a.appendChild(d)}else if(r&&!0!==n.excludeIframes){var h=document.createElement("iframe");h.setAttribute("allowfullscreen",""),h.setAttribute("mozallowfullscreen",""),h.setAttribute("webkitallowfullscreen",""),h.setAttribute("allow","autoplay"),h.setAttribute("data-src",r),h.style.width="100%",h.style.height="100%",h.style.maxHeight="100%",h.style.maxWidth="100%",a.appendChild(h)}}var v=a.querySelector("iframe[data-src]");v&&this.shouldPreload(i)&&!/autoplay=(1|true|yes)/gi.test(r)&&v.getAttribute("src")!==r&&v.setAttribute("src",r)}}},{key:"unload",value:function(e){e.style.display="none";var t=this.Reveal.getSlideBackground(e);t&&(t.style.display="none",o(t,"iframe[src]").forEach((function(e){e.removeAttribute("src")}))),o(e,"video[data-lazy-loaded][src], audio[data-lazy-loaded][src], iframe[data-lazy-loaded][src]").forEach((function(e){e.setAttribute("data-src",e.getAttribute("src")),e.removeAttribute("src")})),o(e,"video[data-lazy-loaded] source[src], audio source[src]").forEach((function(e){e.setAttribute("data-src",e.getAttribute("src")),e.removeAttribute("src")}))}},{key:"formatEmbeddedContent",value:function(){var e=this,t=function(t,n,i){o(e.Reveal.getSlidesElement(),"iframe["+t+'*="'+n+'"]').forEach((function(e){var n=e.getAttribute(t);n&&-1===n.indexOf(i)&&e.setAttribute(t,n+(/\?/.test(n)?"&":"?")+i)}))};t("src","youtube.com/embed/","enablejsapi=1"),t("data-src","youtube.com/embed/","enablejsapi=1"),t("src","player.vimeo.com/","api=1"),t("data-src","player.vimeo.com/","api=1")}},{key:"startEmbeddedContent",value:function(e){var t=this;e&&!this.Reveal.isSpeakerNotes()&&(o(e,'img[src$=".gif"]').forEach((function(e){e.setAttribute("src",e.getAttribute("src"))})),o(e,"video, audio").forEach((function(e){if(!c(e,".fragment")||c(e,".fragment.visible")){var n=t.Reveal.getConfig().autoPlayMedia;if("boolean"!=typeof n&&(n=e.hasAttribute("data-autoplay")||!!c(e,".slide-background")),n&&"function"==typeof e.play)if(e.readyState>1)t.startEmbeddedMedia({target:e});else if(f){var i=e.play();i&&"function"==typeof i.catch&&!1===e.controls&&i.catch((function(){e.controls=!0,e.addEventListener("play",(function(){e.controls=!1}))}))}else e.removeEventListener("loadeddata",t.startEmbeddedMedia),e.addEventListener("loadeddata",t.startEmbeddedMedia)}})),o(e,"iframe[src]").forEach((function(e){c(e,".fragment")&&!c(e,".fragment.visible")||t.startEmbeddedIframe({target:e})})),o(e,"iframe[data-src]").forEach((function(e){c(e,".fragment")&&!c(e,".fragment.visible")||e.getAttribute("src")!==e.getAttribute("data-src")&&(e.removeEventListener("load",t.startEmbeddedIframe),e.addEventListener("load",t.startEmbeddedIframe),e.setAttribute("src",e.getAttribute("data-src")))})))}},{key:"startEmbeddedMedia",value:function(e){var t=!!c(e.target,"html"),n=!!c(e.target,".present");t&&n&&(e.target.currentTime=0,e.target.play()),e.target.removeEventListener("loadeddata",this.startEmbeddedMedia)}},{key:"startEmbeddedIframe",value:function(e){var t=e.target;if(t&&t.contentWindow){var n=!!c(e.target,"html"),i=!!c(e.target,".present");if(n&&i){var a=this.Reveal.getConfig().autoPlayMedia;"boolean"!=typeof a&&(a=t.hasAttribute("data-autoplay")||!!c(t,".slide-background")),/youtube\.com\/embed\//.test(t.getAttribute("src"))&&a?t.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*"):/player\.vimeo\.com\//.test(t.getAttribute("src"))&&a?t.contentWindow.postMessage('{"method":"play"}',"*"):t.contentWindow.postMessage("slide:start","*")}}}},{key:"stopEmbeddedContent",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n=r({unloadIframes:!0},n),e&&e.parentNode&&(o(e,"video, audio").forEach((function(e){e.hasAttribute("data-ignore")||"function"!=typeof e.pause||(e.setAttribute("data-paused-by-reveal",""),e.pause())})),o(e,"iframe").forEach((function(e){e.contentWindow&&e.contentWindow.postMessage("slide:stop","*"),e.removeEventListener("load",t.startEmbeddedIframe)})),o(e,'iframe[src*="youtube.com/embed/"]').forEach((function(e){!e.hasAttribute("data-ignore")&&e.contentWindow&&"function"==typeof e.contentWindow.postMessage&&e.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")})),o(e,'iframe[src*="player.vimeo.com/"]').forEach((function(e){!e.hasAttribute("data-ignore")&&e.contentWindow&&"function"==typeof e.contentWindow.postMessage&&e.contentWindow.postMessage('{"method":"pause"}',"*")})),!0===n.unloadIframes&&o(e,"iframe[data-src]").forEach((function(e){e.setAttribute("src","about:blank"),e.removeAttribute("src")})))}}])&&b(t.prototype,n),i&&b(t,i),e}();function k(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.Reveal.getCurrentSlide(),n=this.Reveal.getConfig(),i="h.v";if("function"==typeof n.slideNumber)e=n.slideNumber(t);else switch("string"==typeof n.slideNumber&&(i=n.slideNumber),/c/.test(i)||1!==this.Reveal.getHorizontalSlides().length||(i="c"),e=[],i){case"c":e.push(this.Reveal.getSlidePastCount(t)+1);break;case"c/t":e.push(this.Reveal.getSlidePastCount(t)+1,"/",this.Reveal.getTotalSlides());break;default:var a=this.Reveal.getIndices(t);e.push(a.h+1);var r="h/v"===i?"/":".";this.Reveal.isVerticalSlide(t)&&e.push(r,a.v+1)}var o="#"+this.Reveal.location.getHash(t);return this.formatNumber(e[0],e[1],e[2],o)}},{key:"formatNumber",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#"+this.Reveal.location.getHash();return"number"!=typeof n||isNaN(n)?'\n\t\t\t\t\t').concat(e,"\n\t\t\t\t\t"):'\n\t\t\t\t\t').concat(e,'\n\t\t\t\t\t').concat(t,'\n\t\t\t\t\t').concat(n,"\n\t\t\t\t\t")}}])&&k(t.prototype,n),i&&k(t,i),e}(),E=function(e){var t=e.match(/^#([0-9a-f]{3})$/i);if(t&&t[1])return t=t[1],{r:17*parseInt(t.charAt(0),16),g:17*parseInt(t.charAt(1),16),b:17*parseInt(t.charAt(2),16)};var n=e.match(/^#([0-9a-f]{6})$/i);if(n&&n[1])return n=n[1],{r:parseInt(n.substr(0,2),16),g:parseInt(n.substr(2,2),16),b:parseInt(n.substr(4,2),16)};var i=e.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);if(i)return{r:parseInt(i[1],10),g:parseInt(i[2],10),b:parseInt(i[3],10)};var a=e.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([\d]+|[\d]*.[\d]+)\s*\)$/i);return a?{r:parseInt(a[1],10),g:parseInt(a[2],10),b:parseInt(a[3],10),a:parseFloat(a[4])}:null};function R(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0],n=this.Reveal.getCurrentSlide(),i=this.Reveal.getIndices(),a=null,r=this.Reveal.getConfig().rtl?"future":"past",s=this.Reveal.getConfig().rtl?"past":"future";if(Array.from(this.element.childNodes).forEach((function(e,n){e.classList.remove("past","present","future"),ni.h?e.classList.add(s):(e.classList.add("present"),a=e),(t||n===i.h)&&o(e,".slide-background").forEach((function(e,t){e.classList.remove("past","present","future"),ti.v?e.classList.add("future"):(e.classList.add("present"),n===i.h&&(a=e))}))})),this.previousBackground&&this.Reveal.slideContent.stopEmbeddedContent(this.previousBackground,{unloadIframes:!this.Reveal.slideContent.shouldPreload(this.previousBackground)}),a){this.Reveal.slideContent.startEmbeddedContent(a);var l=a.querySelector(".slide-background-content");if(l){var c=l.style.backgroundImage||"";/\.gif/i.test(c)&&(l.style.backgroundImage="",window.getComputedStyle(l).opacity,l.style.backgroundImage=c)}var u=this.previousBackground?this.previousBackground.getAttribute("data-background-hash"):null,d=a.getAttribute("data-background-hash");d&&d===u&&a!==this.previousBackground&&this.element.classList.add("no-transition"),this.previousBackground=a}n&&["has-light-background","has-dark-background"].forEach((function(t){n.classList.contains(t)?e.Reveal.getRevealElement().classList.add(t):e.Reveal.getRevealElement().classList.remove(t)}),this),setTimeout((function(){e.element.classList.remove("no-transition")}),1)}},{key:"updateParallax",value:function(){var e=this.Reveal.getIndices();if(this.Reveal.getConfig().parallaxBackgroundImage){var t,n,i=this.Reveal.getHorizontalSlides(),a=this.Reveal.getVerticalSlides(),r=this.element.style.backgroundSize.split(" ");1===r.length?t=n=parseInt(r[0],10):(t=parseInt(r[0],10),n=parseInt(r[1],10));var o,s=this.element.offsetWidth,l=i.length;o=("number"==typeof this.Reveal.getConfig().parallaxBackgroundHorizontal?this.Reveal.getConfig().parallaxBackgroundHorizontal:l>1?(t-s)/(l-1):0)*e.h*-1;var c,u,d=this.element.offsetHeight,h=a.length;c="number"==typeof this.Reveal.getConfig().parallaxBackgroundVertical?this.Reveal.getConfig().parallaxBackgroundVertical:(n-d)/(h-1),u=h>0?c*e.v:0,this.element.style.backgroundPosition=o+"px "+-u+"px"}}}])&&R(t.prototype,n),i&&R(t,i),e}();function L(e,t){for(var n=0;na.indexOf(e)?"forward":"backward";var r=this.getAutoAnimatableElements(e,t).map((function(e){return n.autoAnimateElements(e.from,e.to,e.options||{},i,n.autoAnimateCounter++)}));if("false"!==t.dataset.autoAnimateUnmatched&&!0===this.Reveal.getConfig().autoAnimateUnmatched){var o=.8*i.duration,s=.2*i.duration;this.getUnmatchedAutoAnimateElements(t).forEach((function(e){var t=n.getAutoAnimateOptions(e,i),a="unmatched";t.duration===i.duration&&t.delay===i.delay||(a="unmatched-"+n.autoAnimateCounter++,r.push('[data-auto-animate="running"] [data-auto-animate-target="'.concat(a,'"] { transition: opacity ').concat(t.duration,"s ease ").concat(t.delay,"s; }"))),e.dataset.autoAnimateTarget=a}),this),r.push('[data-auto-animate="running"] [data-auto-animate-target="unmatched"] { transition: opacity '.concat(o,"s ease ").concat(s,"s; }"))}this.autoAnimateStyleSheet.innerHTML=r.join(""),requestAnimationFrame((function(){n.autoAnimateStyleSheet&&(getComputedStyle(n.autoAnimateStyleSheet).fontWeight,t.dataset.autoAnimate="running")})),this.Reveal.dispatchEvent({type:"autoanimate",data:{fromSlide:e,toSlide:t,sheet:this.autoAnimateStyleSheet}})}}},{key:"reset",value:function(){o(this.Reveal.getRevealElement(),'[data-auto-animate]:not([data-auto-animate=""])').forEach((function(e){e.dataset.autoAnimate=""})),o(this.Reveal.getRevealElement(),"[data-auto-animate-target]").forEach((function(e){delete e.dataset.autoAnimateTarget})),this.autoAnimateStyleSheet&&this.autoAnimateStyleSheet.parentNode&&(this.autoAnimateStyleSheet.parentNode.removeChild(this.autoAnimateStyleSheet),this.autoAnimateStyleSheet=null)}},{key:"autoAnimateElements",value:function(e,t,n,i,r){e.dataset.autoAnimateTarget="",t.dataset.autoAnimateTarget=r;var o=this.getAutoAnimateOptions(t,i);void 0!==n.delay&&(o.delay=n.delay),void 0!==n.duration&&(o.duration=n.duration),void 0!==n.easing&&(o.easing=n.easing);var s=this.getAutoAnimatableProperties("from",e,n),l=this.getAutoAnimatableProperties("to",t,n);if(t.classList.contains("fragment")&&(delete l.styles.opacity,e.classList.contains("fragment")&&(e.className.match(a)||[""])[0]===(t.className.match(a)||[""])[0]&&"forward"===i.slideDirection&&t.classList.add("visible","disabled")),!1!==n.translate||!1!==n.scale){var c=this.Reveal.getScale(),u={x:(s.x-l.x)/c,y:(s.y-l.y)/c,scaleX:s.width/l.width,scaleY:s.height/l.height};u.x=Math.round(1e3*u.x)/1e3,u.y=Math.round(1e3*u.y)/1e3,u.scaleX=Math.round(1e3*u.scaleX)/1e3,u.scaleX=Math.round(1e3*u.scaleX)/1e3;var d=!1!==n.translate&&(0!==u.x||0!==u.y),h=!1!==n.scale&&(0!==u.scaleX||0!==u.scaleY);if(d||h){var v=[];d&&v.push("translate(".concat(u.x,"px, ").concat(u.y,"px)")),h&&v.push("scale(".concat(u.scaleX,", ").concat(u.scaleY,")")),s.styles.transform=v.join(" "),s.styles["transform-origin"]="top left",l.styles.transform="none"}}for(var f in l.styles){var g=l.styles[f],p=s.styles[f];g===p?delete l.styles[f]:(!0===g.explicitValue&&(l.styles[f]=g.value),!0===p.explicitValue&&(s.styles[f]=p.value))}var m="",y=Object.keys(l.styles);return y.length>0&&(s.styles.transition="none",l.styles.transition="all ".concat(o.duration,"s ").concat(o.easing," ").concat(o.delay,"s"),l.styles["transition-property"]=y.join(", "),l.styles["will-change"]=y.join(", "),m='[data-auto-animate-target="'+r+'"] {'+Object.keys(s.styles).map((function(e){return e+": "+s.styles[e]+" !important;"})).join("")+'}[data-auto-animate="running"] [data-auto-animate-target="'+r+'"] {'+Object.keys(l.styles).map((function(e){return e+": "+l.styles[e]+" !important;"})).join("")+"}"),m}},{key:"getAutoAnimateOptions",value:function(e,t){var n={easing:this.Reveal.getConfig().autoAnimateEasing,duration:this.Reveal.getConfig().autoAnimateDuration,delay:0};if(n=r(n,t),e.closest&&e.parentNode){var i=e.parentNode.closest("[data-auto-animate-target]");i&&(n=this.getAutoAnimateOptions(i,n))}return e.dataset.autoAnimateEasing&&(n.easing=e.dataset.autoAnimateEasing),e.dataset.autoAnimateDuration&&(n.duration=parseFloat(e.dataset.autoAnimateDuration)),e.dataset.autoAnimateDelay&&(n.delay=parseFloat(e.dataset.autoAnimateDelay)),n}},{key:"getAutoAnimatableProperties",value:function(e,t,n){var i,a={styles:[]};!1===n.translate&&!1===n.scale||(i="function"==typeof n.measure?n.measure(t):t.getBoundingClientRect(),a.x=i.x,a.y=i.y,a.width=i.width,a.height=i.height);var r=getComputedStyle(t);return(n.styles||this.Reveal.getConfig().autoAnimateStyles).forEach((function(t){var n;"string"==typeof t&&(t={property:t}),""!==(n=void 0!==t.from&&"from"===e?{value:t.from,explicitValue:!0}:void 0!==t.to&&"to"===e?{value:t.to,explicitValue:!0}:r[t.property])&&(a.styles[t.property]=n)})),a}},{key:"getAutoAnimatableElements",value:function(e,t){var n=("function"==typeof this.Reveal.getConfig().autoAnimateMatcher?this.Reveal.getConfig().autoAnimateMatcher:this.getAutoAnimatePairs).call(this,e,t),i=[];return n.filter((function(e,t){if(-1===i.indexOf(e.to))return i.push(e.to),!0}))}},{key:"getAutoAnimatePairs",value:function(e,t){var n=this,i=[],a="h1, h2, h3, h4, h5, h6, p, li";return this.findAutoAnimateMatches(i,e,t,"[data-id]",(function(e){return e.nodeName+":::"+e.getAttribute("data-id")})),this.findAutoAnimateMatches(i,e,t,a,(function(e){return e.nodeName+":::"+e.innerText})),this.findAutoAnimateMatches(i,e,t,"img, video, iframe",(function(e){return e.nodeName+":::"+(e.getAttribute("src")||e.getAttribute("data-src"))})),this.findAutoAnimateMatches(i,e,t,"pre",(function(e){return e.nodeName+":::"+e.innerText})),i.forEach((function(e){e.from.matches(a)?e.options={scale:!1}:e.from.matches("pre")&&(e.options={scale:!1,styles:["width","height"]},n.findAutoAnimateMatches(i,e.from,e.to,".hljs .hljs-ln-code",(function(e){return e.textContent}),{scale:!1,styles:[],measure:n.getLocalBoundingBox.bind(n)}),n.findAutoAnimateMatches(i,e.from,e.to,".hljs .hljs-ln-line[data-line-number]",(function(e){return e.getAttribute("data-line-number")}),{scale:!1,styles:["width"],measure:n.getLocalBoundingBox.bind(n)}))}),this),i}},{key:"getLocalBoundingBox",value:function(e){var t=this.Reveal.getScale();return{x:Math.round(e.offsetLeft*t*100)/100,y:Math.round(e.offsetTop*t*100)/100,width:Math.round(e.offsetWidth*t*100)/100,height:Math.round(e.offsetHeight*t*100)/100}}},{key:"findAutoAnimateMatches",value:function(e,t,n,i,a,r){var o={},s={};[].slice.call(t.querySelectorAll(i)).forEach((function(e,t){var n=a(e);"string"==typeof n&&n.length&&(o[n]=o[n]||[],o[n].push(e))})),[].slice.call(n.querySelectorAll(i)).forEach((function(t,n){var i,l=a(t);if(s[l]=s[l]||[],s[l].push(t),o[l]){var c=s[l].length-1,u=o[l].length-1;o[l][c]?(i=o[l][c],o[l][c]=null):o[l][u]&&(i=o[l][u],o[l][u]=null)}i&&e.push({from:i,to:t,options:r})}))}},{key:"getUnmatchedAutoAnimateElements",value:function(e){var t=this;return[].slice.call(e.children).reduce((function(e,n){var i=n.querySelector("[data-auto-animate-target]");return n.hasAttribute("data-auto-animate-target")||i||e.push(n),n.querySelector("[data-auto-animate-target]")&&(e=e.concat(t.getUnmatchedAutoAnimateElements(n))),e}),[])}}])&&L(t.prototype,n),i&&L(t,i),e}();function C(e,t){for(var n=0;n0,next:!!n.length}}return{prev:!1,next:!1}}},{key:"sort",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e=Array.from(e);var n=[],i=[],a=[];e.forEach((function(e){if(e.hasAttribute("data-fragment-index")){var t=parseInt(e.getAttribute("data-fragment-index"),10);n[t]||(n[t]=[]),n[t].push(e)}else i.push([e])})),n=n.concat(i);var r=0;return n.forEach((function(e){e.forEach((function(e){a.push(e),e.setAttribute("data-fragment-index",r)})),r++})),!0===t?n:a}},{key:"sortAll",value:function(){var e=this;this.Reveal.getHorizontalSlides().forEach((function(t){var n=o(t,"section");n.forEach((function(t,n){e.sort(t.querySelectorAll(".fragment"))}),e),0===n.length&&e.sort(t.querySelectorAll(".fragment"))}))}},{key:"update",value:function(e,t){var n=this,i={shown:[],hidden:[]},a=this.Reveal.getCurrentSlide();if(a&&this.Reveal.getConfig().fragments&&(t=t||this.sort(a.querySelectorAll(".fragment"))).length){var r=0;if("number"!=typeof e){var o=this.sort(a.querySelectorAll(".fragment.visible")).pop();o&&(e=parseInt(o.getAttribute("data-fragment-index")||0,10))}Array.from(t).forEach((function(t,a){if(t.hasAttribute("data-fragment-index")&&(a=parseInt(t.getAttribute("data-fragment-index"),10)),r=Math.max(r,a),a<=e){var o=t.classList.contains("visible");t.classList.add("visible"),t.classList.remove("current-fragment"),a===e&&(n.Reveal.announceStatus(n.Reveal.getStatusText(t)),t.classList.add("current-fragment"),n.Reveal.slideContent.startEmbeddedContent(t)),o||(i.shown.push(t),n.Reveal.dispatchEvent({target:t,type:"visible",bubbles:!1}))}else{var s=t.classList.contains("visible");t.classList.remove("visible"),t.classList.remove("current-fragment"),s&&(i.hidden.push(t),n.Reveal.dispatchEvent({target:t,type:"hidden",bubbles:!1}))}})),e="number"==typeof e?e:-1,e=Math.max(Math.min(e,r),-1),a.setAttribute("data-fragment",e)}return i}},{key:"sync",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.Reveal.getCurrentSlide();return this.sort(e.querySelectorAll(".fragment"))}},{key:"goto",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.Reveal.getCurrentSlide();if(n&&this.Reveal.getConfig().fragments){var i=this.sort(n.querySelectorAll(".fragment:not(.disabled)"));if(i.length){if("number"!=typeof e){var a=this.sort(n.querySelectorAll(".fragment:not(.disabled).visible")).pop();e=a?parseInt(a.getAttribute("data-fragment-index")||0,10):-1}e+=t;var r=this.update(e,i);return r.hidden.length&&this.Reveal.dispatchEvent({type:"fragmenthidden",data:{fragment:r.hidden[0],fragments:r.hidden}}),r.shown.length&&this.Reveal.dispatchEvent({type:"fragmentshown",data:{fragment:r.shown[0],fragments:r.shown}}),this.Reveal.controls.update(),this.Reveal.progress.update(),this.Reveal.getConfig().fragmentInURL&&this.Reveal.location.writeURL(),!(!r.shown.length&&!r.hidden.length)}}return!1}},{key:"next",value:function(){return this.goto(null,1)}},{key:"prev",value:function(){return this.goto(null,-1)}}])&&C(t.prototype,n),i&&C(t,i),e}();function N(e,t){for(var n=0;n0||a.v>0||void 0!==a.f)&&(t+=a.h+r),(a.v>0||void 0!==a.f)&&(t+="/"+(a.v+r)),void 0!==a.f&&(t+="/"+a.f)}return t}}])&&O(t.prototype,n),i&&O(t,i),e}();function H(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t
\n\t\t\t\n\t\t\t\n\t\t\t'),this.Reveal.getRevealElement().appendChild(this.element),this.controlsLeft=o(t,".navigate-left"),this.controlsRight=o(t,".navigate-right"),this.controlsUp=o(t,".navigate-up"),this.controlsDown=o(t,".navigate-down"),this.controlsPrev=o(t,".navigate-prev"),this.controlsNext=o(t,".navigate-next"),this.controlsRightArrow=this.element.querySelector(".navigate-right"),this.controlsLeftArrow=this.element.querySelector(".navigate-left"),this.controlsDownArrow=this.element.querySelector(".navigate-down")}},{key:"configure",value:function(e,t){this.element.style.display=e.controls?"block":"none",this.element.setAttribute("data-controls-layout",e.controlsLayout),this.element.setAttribute("data-controls-back-arrows",e.controlsBackArrows)}},{key:"bind",value:function(){var e=this,t=["touchstart","click"];p&&(t=["touchstart"]),t.forEach((function(t){e.controlsLeft.forEach((function(n){return n.addEventListener(t,e.onNavigateLeftClicked,!1)})),e.controlsRight.forEach((function(n){return n.addEventListener(t,e.onNavigateRightClicked,!1)})),e.controlsUp.forEach((function(n){return n.addEventListener(t,e.onNavigateUpClicked,!1)})),e.controlsDown.forEach((function(n){return n.addEventListener(t,e.onNavigateDownClicked,!1)})),e.controlsPrev.forEach((function(n){return n.addEventListener(t,e.onNavigatePrevClicked,!1)})),e.controlsNext.forEach((function(n){return n.addEventListener(t,e.onNavigateNextClicked,!1)}))}))}},{key:"unbind",value:function(){var e=this;["touchstart","click"].forEach((function(t){e.controlsLeft.forEach((function(n){return n.removeEventListener(t,e.onNavigateLeftClicked,!1)})),e.controlsRight.forEach((function(n){return n.removeEventListener(t,e.onNavigateRightClicked,!1)})),e.controlsUp.forEach((function(n){return n.removeEventListener(t,e.onNavigateUpClicked,!1)})),e.controlsDown.forEach((function(n){return n.removeEventListener(t,e.onNavigateDownClicked,!1)})),e.controlsPrev.forEach((function(n){return n.removeEventListener(t,e.onNavigatePrevClicked,!1)})),e.controlsNext.forEach((function(n){return n.removeEventListener(t,e.onNavigateNextClicked,!1)}))}))}},{key:"update",value:function(){var e=this.Reveal.availableRoutes();[].concat(H(this.controlsLeft),H(this.controlsRight),H(this.controlsUp),H(this.controlsDown),H(this.controlsPrev),H(this.controlsNext)).forEach((function(e){e.classList.remove("enabled","fragmented"),e.setAttribute("disabled","disabled")})),e.left&&this.controlsLeft.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),e.right&&this.controlsRight.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),e.up&&this.controlsUp.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),e.down&&this.controlsDown.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),(e.left||e.up)&&this.controlsPrev.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),(e.right||e.down)&&this.controlsNext.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")}));var t=this.Reveal.getCurrentSlide();if(t){var n=this.Reveal.fragments.availableRoutes();n.prev&&this.controlsPrev.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),n.next&&this.controlsNext.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),this.Reveal.isVerticalSlide(t)?(n.prev&&this.controlsUp.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),n.next&&this.controlsDown.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")}))):(n.prev&&this.controlsLeft.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),n.next&&this.controlsRight.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})))}if(this.Reveal.getConfig().controlsTutorial){var i=this.Reveal.getIndices();!this.Reveal.hasNavigatedVertically()&&e.down?this.controlsDownArrow.classList.add("highlight"):(this.controlsDownArrow.classList.remove("highlight"),this.Reveal.getConfig().rtl?!this.Reveal.hasNavigatedHorizontally()&&e.left&&0===i.v?this.controlsLeftArrow.classList.add("highlight"):this.controlsLeftArrow.classList.remove("highlight"):!this.Reveal.hasNavigatedHorizontally()&&e.right&&0===i.v?this.controlsRightArrow.classList.add("highlight"):this.controlsRightArrow.classList.remove("highlight"))}}},{key:"onNavigateLeftClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),"linear"===this.Reveal.getConfig().navigationMode?this.Reveal.prev():this.Reveal.left()}},{key:"onNavigateRightClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),"linear"===this.Reveal.getConfig().navigationMode?this.Reveal.next():this.Reveal.right()}},{key:"onNavigateUpClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.up()}},{key:"onNavigateDownClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.down()}},{key:"onNavigatePrevClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.prev()}},{key:"onNavigateNextClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.next()}}])&&j(t.prototype,n),i&&j(t,i),e}();function U(e,t){for(var n=0;n1e3){this.lastMouseWheelStep=Date.now();var t=e.detail||-e.wheelDelta;t>0?this.Reveal.next():t<0&&this.Reveal.prev()}}}])&&W(t.prototype,n),i&&W(t,i),e}(),V=function(e,t){var n=document.createElement("script");n.type="text/javascript",n.async=!1,n.defer=!1,n.src=e,"function"==typeof t&&(n.onload=n.onreadystatechange=function(e){("load"===e.type||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=n.onerror=null,t())},n.onerror=function(e){n.onload=n.onreadystatechange=n.onerror=null,t(new Error("Failed loading script: "+n.src+"\n"+e))});var i=document.querySelector("head");i.insertBefore(n,i.lastChild)};function F(e,t){for(var n=0;nimg, .reveal section>video, .reveal section>iframe{max-width: "+a+"px; max-height:"+r+"px}"),document.documentElement.classList.add("print-pdf"),document.body.style.width=n+"px",document.body.style.height=i+"px",this.Reveal.layoutSlideContents(a,r);var s=e.slideNumber&&/all|print/i.test(e.showSlideNumber);o(this.Reveal.getRevealElement(),".slides section").forEach((function(e){e.setAttribute("data-slide-number",this.Reveal.slideNumber.getSlideNumber(e))}),this),o(this.Reveal.getRevealElement(),".slides section").forEach((function(t){if(!1===t.classList.contains("stack")){var l=(n-a)/2,c=(i-r)/2,u=t.scrollHeight,d=Math.max(Math.ceil(u/i),1);(1===(d=Math.min(d,e.pdfMaxPagesPerSlide))&&e.center||t.classList.contains("center"))&&(c=Math.max((i-u)/2,0));var h=document.createElement("div");if(h.className="pdf-page",h.style.height=(i+e.pdfPageHeightOffset)*d+"px",t.parentNode.insertBefore(h,t),h.appendChild(t),t.style.left=l+"px",t.style.top=c+"px",t.style.width=a+"px",t.slideBackgroundElement&&h.insertBefore(t.slideBackgroundElement,t),e.showNotes){var v=getSlideNotes(t);if(v){var f="string"==typeof e.showNotes?e.showNotes:"inline",g=document.createElement("div");g.classList.add("speaker-notes"),g.classList.add("speaker-notes-pdf"),g.setAttribute("data-layout",f),g.innerHTML=v,"separate-page"===f?h.parentNode.insertBefore(g,h.nextSibling):(g.style.left="8px",g.style.bottom="8px",g.style.width=n-16+"px",h.appendChild(g))}}if(s){var p=document.createElement("div");p.classList.add("slide-number"),p.classList.add("slide-number-pdf"),p.innerHTML=t.getAttribute("data-slide-number"),h.appendChild(p)}if(e.pdfSeparateFragments){var m,y,b=this.Reveal.fragments.sort(h.querySelectorAll(".fragment"),!0);b.forEach((function(e){m&&m.forEach((function(e){e.classList.remove("current-fragment")})),e.forEach((function(e){e.classList.add("visible","current-fragment")}),this);var t=h.cloneNode(!0);h.parentNode.insertBefore(t,(y||h).nextSibling),m=e,y=t}),this),b.forEach((function(e){e.forEach((function(e){e.classList.remove("visible","current-fragment")}))}))}else o(h,".fragment:not(.fade-out)").forEach((function(e){e.classList.add("visible")}))}}),this),this.Reveal.dispatchEvent({type:"pdf-ready"})}},{key:"isPrintingPDF",value:function(){return/print-pdf/gi.test(window.location.search)}}])&&Y(t.prototype,n),i&&Y(t,i),e}();function $(e,t){for(var n=0;n40&&Math.abs(a)>Math.abs(r)?(this.touchCaptured=!0,"linear"===t.navigationMode?t.rtl?this.Reveal.next():this.Reveal.prev()():this.Reveal.left()):a<-40&&Math.abs(a)>Math.abs(r)?(this.touchCaptured=!0,"linear"===t.navigationMode?t.rtl?this.Reveal.prev()():this.Reveal.next():this.Reveal.right()):r>40?(this.touchCaptured=!0,"linear"===t.navigationMode?this.Reveal.prev()():this.Reveal.up()):r<-40&&(this.touchCaptured=!0,"linear"===t.navigationMode?this.Reveal.next():this.Reveal.down()),t.embedded?(this.touchCaptured||this.Reveal.isVerticalSlide(currentSlide))&&e.preventDefault():e.preventDefault()}}}},{key:"onTouchEnd",value:function(e){this.touchCaptured=!1}},{key:"onPointerDown",value:function(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchStart(e))}},{key:"onPointerMove",value:function(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchMove(e))}},{key:"onPointerUp",value:function(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchEnd(e))}}])&&$(t.prototype,n),i&&$(t,i),e}();function Q(e,t){for(var n=0;nNo notes on this slide.')}},{key:"updateVisibility",value:function(){this.Reveal.getConfig().showNotes&&this.hasNotes()?this.Reveal.getRevealElement().classList.add("show-notes"):this.Reveal.getRevealElement().classList.remove("show-notes")}},{key:"hasNotes",value:function(){return this.Reveal.getSlidesElement().querySelectorAll("[data-notes], aside.notes").length>0}},{key:"isSpeakerNotesWindow",value:function(){return!!window.location.search.match(/receiver/gi)}},{key:"getSlideNotes",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.Reveal.getCurrentSlide();if(e.hasAttribute("data-notes"))return e.getAttribute("data-notes");var t=e.querySelector("aside.notes");return t?t.innerHTML:null}}])&&Q(t.prototype,n),i&&Q(t,i),e}();function G(e,t){for(var n=0;n.8&&this.progress<.2&&(this.progressOffset=this.progress),this.render(),this.playing&&requestAnimationFrame(this.animate.bind(this))}},{key:"render",value:function(){var e=this.playing?this.progress:0,t=this.diameter2-this.thickness,n=this.diameter2,i=this.diameter2;this.progressOffset+=.1*(1-this.progressOffset);var a=-Math.PI/2+e*(2*Math.PI),r=-Math.PI/2+this.progressOffset*(2*Math.PI);this.context.save(),this.context.clearRect(0,0,this.diameter,this.diameter),this.context.beginPath(),this.context.arc(n,i,t+4,0,2*Math.PI,!1),this.context.fillStyle="rgba( 0, 0, 0, 0.4 )",this.context.fill(),this.context.beginPath(),this.context.arc(n,i,t,0,2*Math.PI,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="rgba( 255, 255, 255, 0.2 )",this.context.stroke(),this.playing&&(this.context.beginPath(),this.context.arc(n,i,t,r,a,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="#fff",this.context.stroke()),this.context.translate(n-14,i-14),this.playing?(this.context.fillStyle="#fff",this.context.fillRect(0,0,10,28),this.context.fillRect(18,0,10,28)):(this.context.beginPath(),this.context.translate(4,0),this.context.moveTo(0,0),this.context.lineTo(24,14),this.context.lineTo(0,28),this.context.fillStyle="#fff",this.context.fill()),this.context.restore()}},{key:"on",value:function(e,t){this.canvas.addEventListener(e,t,!1)}},{key:"off",value:function(e,t){this.canvas.removeEventListener(e,t,!1)}},{key:"destroy",value:function(){this.playing=!1,this.canvas.parentNode&&this.container.removeChild(this.canvas)}}])&&G(t.prototype,n),i&&G(t,i),e}(),te={width:960,height:700,margin:.04,minScale:.2,maxScale:2,controls:!0,controlsTutorial:!0,controlsLayout:"bottom-right",controlsBackArrows:"faded",progress:!0,slideNumber:!1,showSlideNumber:"all",hashOneBasedIndex:!1,hash:!1,history:!1,keyboard:!0,keyboardCondition:null,overview:!0,disableLayout:!1,center:!0,touch:!0,loop:!1,rtl:!1,navigationMode:"default",shuffle:!1,fragments:!0,fragmentInURL:!1,embedded:!1,help:!0,pause:!0,showNotes:!1,autoPlayMedia:null,preloadIframes:null,autoAnimate:!0,autoAnimateMatcher:null,autoAnimateEasing:"ease",autoAnimateDuration:1,autoAnimateUnmatched:!0,autoAnimateStyles:["opacity","color","background-color","padding","font-size","line-height","letter-spacing","border-width","border-color","border-radius","outline","outline-offset"],autoSlide:0,autoSlideStoppable:!0,autoSlideMethod:null,defaultTiming:null,mouseWheel:!1,previewLinks:!1,postMessage:!0,postMessageEvents:!1,focusBodyOnPageVisibilityChange:!0,transition:"slide",transitionSpeed:"default",backgroundTransition:"fade",parallaxBackgroundImage:"",parallaxBackgroundSize:"",parallaxBackgroundRepeat:"",parallaxBackgroundPosition:"",parallaxBackgroundHorizontal:null,parallaxBackgroundVertical:null,pdfMaxPagesPerSlide:Number.POSITIVE_INFINITY,pdfSeparateFragments:!0,pdfPageHeightOffset:-1,viewDistance:3,mobileViewDistance:2,display:"block",hideInactiveCursor:!0,hideCursorTime:5e3,dependencies:[]};function ne(e){return(ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ae(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:"",a=e.querySelectorAll("."+n),r=0;rResume presentation':null),Q.statusElement=function(){var e=Q.wrapper.querySelector(".aria-status");e||((e=document.createElement("div")).style.position="absolute",e.style.height="1px",e.style.width="1px",e.style.overflow="hidden",e.style.clip="rect( 1px, 1px, 1px, 1px )",e.classList.add("aria-status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),Q.wrapper.appendChild(e));return e}(),Q.wrapper.setAttribute("role","application")}(),n.postMessage&&window.addEventListener("message",(function(e){var t=e.data;if("string"==typeof t&&"{"===t.charAt(0)&&"}"===t.charAt(t.length-1)&&(t=JSON.parse(t)).method&&"function"==typeof g[t.method])if(!1===i.test(t.method)){var n=g[t.method].apply(g,t.args);me("callback",{method:t.method,result:n})}else console.warn('reveal.js: "'+t.method+'" is is blacklisted from the postMessage API')}),!1),setInterval((function(){0===Q.wrapper.scrollTop&&0===Q.wrapper.scrollLeft||(Q.wrapper.scrollTop=0,Q.wrapper.scrollLeft=0)}),1e3),Ve().forEach((function(e){o(e,"section").forEach((function(e,t){t>0&&(e.classList.remove("present"),e.classList.remove("past"),e.classList.add("future"),e.setAttribute("aria-hidden","true"))}))})),ue(),O.readURL(),C.update(!0),setTimeout((function(){Q.slides.classList.remove("no-transition"),Q.wrapper.classList.add("ready"),pe({type:"ready",data:{indexh:a,indexv:c,currentSlide:h}})}),1),V.isPrintingPDF()&&(he(),"complete"===document.readyState?V.setupPDF():window.addEventListener("load",V.setupPDF))}function le(e){Q.statusElement.textContent=e}function ce(e){var t="";if(3===e.nodeType)t+=e.textContent;else if(1===e.nodeType){var n=e.getAttribute("aria-hidden"),i="none"===window.getComputedStyle(e).display;"true"===n||i||Array.from(e.childNodes).forEach((function(e){t+=ce(e)}))}return""===(t=t.trim())?"":t+" "}function ue(e){var t=ae({},n);if("object"===ne(e)&&r(n,e),!1!==g.isReady()){var i=Q.wrapper.querySelectorAll(".slides section").length;Q.wrapper.classList.remove(t.transition),Q.wrapper.classList.add(n.transition),Q.wrapper.setAttribute("data-transition-speed",n.transitionSpeed),Q.wrapper.setAttribute("data-background-transition",n.backgroundTransition),n.shuffle&&He(),n.rtl?Q.wrapper.classList.add("rtl"):Q.wrapper.classList.remove("rtl"),n.center?Q.wrapper.classList.add("center"):Q.wrapper.classList.remove("center"),!1===n.pause&&Te(),n.previewLinks?(ye(),be("[data-preview-link=false]")):(be(),ye("[data-preview-link]:not([data-preview-link=false])")),L.reset(),v&&(v.destroy(),v=null),i>1&&n.autoSlide&&n.autoSlideStoppable&&((v=new ee(Q.wrapper,(function(){return Math.min(Math.max((Date.now()-re)/G,0),1)}))).on("click",dt),oe=!1),"default"!==n.navigationMode?Q.wrapper.setAttribute("data-navigation-mode",n.navigationMode):Q.wrapper.removeAttribute("data-navigation-mode"),Y.configure(n,t),U.configure(n,t),H.configure(n,t),j.configure(n,t),I.configure(n,t),N.configure(n,t),R.configure(n,t),Be()}}function de(){!0,window.addEventListener("hashchange",st,!1),window.addEventListener("resize",lt,!1),n.touch&&F.bind(),n.keyboard&&I.bind(),H.bind(),j.bind(),Q.pauseOverlay.addEventListener("click",Te,!1),n.focusBodyOnPageVisibilityChange&&document.addEventListener("visibilitychange",ct,!1)}function he(){!1,F.unbind(),I.unbind(),H.unbind(),j.unbind(),window.removeEventListener("hashchange",st,!1),window.removeEventListener("resize",lt,!1),Q.pauseOverlay.removeEventListener("click",Te,!1)}function ve(t,n,i){e.addEventListener(t,n,i)}function fe(t,n,i){e.removeEventListener(t,n,i)}function ge(e){"string"==typeof e.layout&&($.layout=e.layout),"string"==typeof e.overview&&($.overview=e.overview),$.layout?l(Q.slides,$.layout+" "+$.overview):l(Q.slides,$.overview)}function pe(e){var t=e.target,n=void 0===t?Q.wrapper:t,i=e.type,a=e.data,o=e.bubbles,s=void 0===o||o,l=document.createEvent("HTMLEvents",1,2);l.initEvent(i,s,!0),r(l,a),n.dispatchEvent(l),n===Q.wrapper&&me(i)}function me(e,t){if(n.postMessageEvents&&window.parent!==window.self){var i={namespace:"reveal",eventName:e,state:Je()};r(i,t),window.parent.postMessage(JSON.stringify(i),"*")}}function ye(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"a";Array.from(Q.wrapper.querySelectorAll(e)).forEach((function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.addEventListener("click",ut,!1)}))}function be(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"a";Array.from(Q.wrapper.querySelectorAll(e)).forEach((function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.removeEventListener("click",ut,!1)}))}function we(){if(n.help){ke(),Q.overlay=document.createElement("div"),Q.overlay.classList.add("overlay"),Q.overlay.classList.add("overlay-help"),Q.wrapper.appendChild(Q.overlay);var e='

Keyboard Shortcuts


';for(var t in e+="",I.shortcuts)e+="");for(var i in I.registeredKeyBindings)I.registeredKeyBindings[i].key&&I.registeredKeyBindings[i].description&&(e+=""));e+="
KEYACTION
".concat(t,"").concat(I.shortcuts[t],"
".concat(I.registeredKeyBindings[i].key,"").concat(I.registeredKeyBindings[i].description,"
",Q.overlay.innerHTML='\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
'.concat(e,"
\n\t\t\t\t
\n\t\t\t"),Q.overlay.querySelector(".close").addEventListener("click",(function(e){ke(),e.preventDefault()}),!1)}}function ke(){return!!Q.overlay&&(Q.overlay.parentNode.removeChild(Q.overlay),Q.overlay=null,!0)}function Ae(){if(Q.wrapper&&!V.isPrintingPDF()){if(!n.disableLayout){f&&document.documentElement.style.setProperty("--vh",.01*window.innerHeight+"px");var e=Re(),t=k;Ee(n.width,n.height),Q.slides.style.width=e.width+"px",Q.slides.style.height=e.height+"px",k=Math.min(e.presentationWidth/e.width,e.presentationHeight/e.height),k=Math.max(k,n.minScale),1===(k=Math.min(k,n.maxScale))?(Q.slides.style.zoom="",Q.slides.style.left="",Q.slides.style.top="",Q.slides.style.bottom="",Q.slides.style.right="",ge({layout:""})):k>1&&m&&window.devicePixelRatio<2?(Q.slides.style.zoom=k,Q.slides.style.left="",Q.slides.style.top="",Q.slides.style.bottom="",Q.slides.style.right="",ge({layout:""})):(Q.slides.style.zoom="",Q.slides.style.left="50%",Q.slides.style.top="50%",Q.slides.style.bottom="auto",Q.slides.style.right="auto",ge({layout:"translate(-50%, -50%) scale("+k+")"}));for(var i=Array.from(Q.wrapper.querySelectorAll(".slides section")),a=0,r=i.length;a .stretch").forEach((function(n){var i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e){var n,i=e.style.height;return e.style.height="0px",e.parentNode.style.height="auto",n=t-e.parentNode.offsetHeight,e.style.height=i+"px",e.parentNode.style.removeProperty("height"),n}return t}(n,t);if(/(img|video)/gi.test(n.nodeName)){var a=n.naturalWidth||n.videoWidth,r=n.naturalHeight||n.videoHeight,o=Math.min(e/a,i/r);n.style.width=a*o+"px",n.style.height=r*o+"px"}else n.style.width=e+"px",n.style.height=i+"px"}))}function Re(e,t){var i={width:n.width,height:n.height,presentationWidth:e||Q.wrapper.offsetWidth,presentationHeight:t||Q.wrapper.offsetHeight};return i.presentationWidth-=i.presentationWidth*n.margin,i.presentationHeight-=i.presentationHeight*n.margin,"string"==typeof i.width&&/%$/.test(i.width)&&(i.width=parseInt(i.width,10)/100*i.presentationWidth),"string"==typeof i.height&&/%$/.test(i.height)&&(i.height=parseInt(i.height,10)/100*i.presentationHeight),i}function Se(e,t){"object"===ne(e)&&"function"==typeof e.setAttribute&&e.setAttribute("data-previous-indexv",t||0)}function Le(e){if("object"===ne(e)&&"function"==typeof e.setAttribute&&e.classList.contains("stack")){var t=e.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(e.getAttribute(t)||0,10)}return 0}function xe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;return e&&e.parentNode&&!!e.parentNode.nodeName.match(/section/i)}function Ce(){return!(!h||!xe(h))&&!h.nextElementSibling}function Pe(){return 0===a&&0===c}function Ne(){return!!h&&(!h.nextElementSibling&&(!xe(h)||!h.parentNode.nextElementSibling))}function Me(){if(n.pause){var e=Q.wrapper.classList.contains("paused");Ze(),Q.wrapper.classList.add("paused"),!1===e&&pe({type:"paused"})}}function Te(){var e=Q.wrapper.classList.contains("paused");Q.wrapper.classList.remove("paused"),Qe(),e&&pe({type:"resumed"})}function Ie(e){"boolean"==typeof e?e?Me():Te():De()?Te():Me()}function De(){return Q.wrapper.classList.contains("paused")}function Oe(e,t,i,r){u=h;var s=Q.wrapper.querySelectorAll(".slides>section");if(0!==s.length){void 0!==t||T.isActive()||(t=Le(s[e])),u&&u.parentNode&&u.parentNode.classList.contains("stack")&&Se(u.parentNode,c);var l=b.concat();b.length=0;var d=a||0,v=c||0;a=je(".slides>section",void 0===e?a:e),c=je(".slides>section.present>section",void 0===t?c:t);var f=a!==d||c!==v;f||(u=null);var g=s[a],p=g.querySelectorAll("section");h=p[c]||g;var m=!1;f&&u&&h&&!T.isActive()&&u.hasAttribute("data-auto-animate")&&h.hasAttribute("data-auto-animate")&&(m=!0,Q.slides.classList.add("disable-slide-transitions")),ze(),Ae(),T.isActive()&&T.update(),void 0!==i&&N.goto(i),u&&u!==h&&(u.classList.remove("present"),u.setAttribute("aria-hidden","true"),Pe()&&setTimeout((function(){o(Q.wrapper,".slides>section.stack").forEach((function(e){Se(e,0)}))}),0));e:for(var y=0,w=b.length;yt&&(l.classList.add(c?"past":"future"),n.fragments&&o(l,".fragment.visible").forEach((function(e){e.classList.remove("visible","current-fragment")})))}var u=i[t],d=u.classList.contains("present");u.classList.add("present"),u.removeAttribute("hidden"),u.removeAttribute("aria-hidden"),d||pe({target:u,type:"visible",bubbles:!1});var h=u.getAttribute("data-state");h&&(b=b.concat(h.split(" ")))}else t=0;return t}function ze(){var e,t=Ve(),i=t.length;if(i&&void 0!==a){var r=T.isActive()?10:n.viewDistance;f&&(r=T.isActive()?6:n.mobileViewDistance),V.isPrintingPDF()&&(r=Number.MAX_VALUE);for(var s=0;ssection"),t=Q.wrapper.querySelectorAll(".slides>section.present>section"),i={left:a>0,right:a0,down:c1&&(i.left=!0,i.right=!0),t.length>1&&(i.up=!0,i.down=!0)),e.length>1&&"linear"===n.navigationMode&&(i.right=i.right||i.down,i.left=i.left||i.up),n.rtl){var r=i.left;i.left=i.right,i.right=r}return i}function qe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h,t=Ve(),n=0;e:for(var i=0;i0){var u=h.querySelector(".current-fragment");t=u&&u.hasAttribute("data-fragment-index")?parseInt(u.getAttribute("data-fragment-index"),10):h.querySelectorAll(".fragment.visible").length-1}return{h:n,v:i,f:t}}function Ke(){return o(Q.wrapper,'.slides section:not(.stack):not([data-visibility="uncounted"])')}function Ve(){return o(Q.wrapper,".slides>section")}function Fe(){return o(Q.wrapper,".slides>section>section")}function Xe(){return Ve().length>1}function Ye(){return Fe().length>1}function _e(){return Ke().length}function $e(e,t){var n=Ve()[e],i=n&&n.querySelectorAll("section");return i&&i.length&&"number"==typeof t?i?i[t]:void 0:n}function Je(){var e=We();return{indexh:e.h,indexv:e.v,indexf:e.f,paused:De(),overview:T.isActive()}}function Qe(){if(Ze(),h&&!1!==n.autoSlide){var e=h.querySelector(".current-fragment");e||(e=h.querySelector(".fragment"));var t=e?e.getAttribute("data-autoslide"):null,i=h.parentNode?h.parentNode.getAttribute("data-autoslide"):null,a=h.getAttribute("data-autoslide");G=t?parseInt(t,10):a?parseInt(a,10):i?parseInt(i,10):n.autoSlide,0===h.querySelectorAll(".fragment").length&&o(h,"video, audio").forEach((function(e){e.hasAttribute("data-autoplay")&&G&&1e3*e.duration/e.playbackRate>G&&(G=1e3*e.duration/e.playbackRate+1e3)})),!G||oe||De()||T.isActive()||Ne()&&!N.availableRoutes().next&&!0!==n.loop||(ie=setTimeout((function(){"function"==typeof n.autoSlideMethod?n.autoSlideMethod():ot(),Qe()}),G),re=Date.now()),v&&v.setPlaying(-1!==ie)}}function Ze(){clearTimeout(ie),ie=-1}function Ge(){G&&!oe&&(oe=!0,pe({type:"autoslidepaused"}),clearTimeout(ie),v&&v.setPlaying(!1))}function et(){G&&oe&&(oe=!1,pe({type:"autoslideresumed"}),Qe())}function tt(){y.hasNavigatedHorizontally=!0,n.rtl?(T.isActive()||!1===N.next())&&Ue().left&&Oe(a+1,"grid"===n.navigationMode?c:void 0):(T.isActive()||!1===N.prev())&&Ue().left&&Oe(a-1,"grid"===n.navigationMode?c:void 0)}function nt(){y.hasNavigatedHorizontally=!0,n.rtl?(T.isActive()||!1===N.prev())&&Ue().right&&Oe(a-1,"grid"===n.navigationMode?c:void 0):(T.isActive()||!1===N.next())&&Ue().right&&Oe(a+1,"grid"===n.navigationMode?c:void 0)}function it(){(T.isActive()||!1===N.prev())&&Ue().up&&Oe(a,c-1)}function at(){y.hasNavigatedVertically=!0,(T.isActive()||!1===N.next())&&Ue().down&&Oe(a,c+1)}function rt(){var e;if(!1===N.prev())if(Ue().up)it();else if(e=n.rtl?o(Q.wrapper,".slides>section.future").pop():o(Q.wrapper,".slides>section.past").pop()){var t=e.querySelectorAll("section").length-1||void 0;Oe(a-1,t)}}function ot(){if(y.hasNavigatedHorizontally=!0,y.hasNavigatedVertically=!0,!1===N.next()){var e=Ue();e.down&&e.right&&n.loop&&Ce()&&(e.down=!1),e.down?at():n.rtl?tt():nt()}}function st(e){O.readURL()}function lt(e){Ae()}function ct(e){!1===document.hidden&&document.activeElement!==document.body&&("function"==typeof document.activeElement.blur&&document.activeElement.blur(),document.body.focus())}function ut(e){if(e.currentTarget&&e.currentTarget.hasAttribute("href")){var t=e.currentTarget.getAttribute("href");t&&(!function(e){ke(),Q.overlay=document.createElement("div"),Q.overlay.classList.add("overlay"),Q.overlay.classList.add("overlay-preview"),Q.wrapper.appendChild(Q.overlay),Q.overlay.innerHTML='
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tUnable to load iframe. This is likely due to the site\'s policy (x-frame-options).\n\t\t\t\t\n\t\t\t
'),Q.overlay.querySelector("iframe").addEventListener("load",(function(e){Q.overlay.classList.add("loaded")}),!1),Q.overlay.querySelector(".close").addEventListener("click",(function(e){ke(),e.preventDefault()}),!1),Q.overlay.querySelector(".external").addEventListener("click",(function(e){ke()}),!1)}(t),e.preventDefault())}}function dt(e){Ne()&&!1===n.loop?(Oe(0,0),et()):oe?et():Ge()}return r(g,{VERSION:"4.0.0-dev",initialize:function(){if(e)return Q.wrapper=e,Q.slides=e.querySelector(".slides"),!0===(n=ae({},te,{},t,{},d())).embedded?e.classList.add("reveal-viewport"):(document.body.classList.add("reveal-viewport"),document.documentElement.classList.add("reveal-full-page")),window.addEventListener("load",Ae,!1),W.load(n.dependencies).then(se),new Promise((function(e){return g.on("ready",e)}));console.warn("reveal.js can not initialize without a valid .reveal element.")},configure:ue,sync:Be,syncSlide:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;C.sync(e),N.sync(e),E.load(e),C.update(),Y.update()},syncFragments:N.sync.bind(N),slide:Oe,left:tt,right:nt,up:it,down:at,prev:rt,next:ot,navigateLeft:tt,navigateRight:nt,navigateUp:it,navigateDown:at,navigatePrev:rt,navigateNext:ot,navigateFragment:N.goto.bind(N),prevFragment:N.prev.bind(N),nextFragment:N.next.bind(N),on:ve,off:fe,addEventListener:ve,removeEventListener:fe,layout:Ae,shuffle:He,availableRoutes:Ue,availableFragments:N.availableRoutes.bind(N),toggleHelp:function(e){"boolean"==typeof e?e?we():ke():Q.overlay?ke():we()},toggleOverview:T.toggle.bind(T),togglePause:Ie,toggleAutoSlide:function(e){"boolean"==typeof e?e?et():Ge():oe?et():Ge()},isFirstSlide:Pe,isLastSlide:Ne,isLastVerticalSlide:Ce,isVerticalSlide:xe,isPaused:De,isAutoSliding:function(){return!(!G||oe)},isSpeakerNotes:Y.isSpeakerNotesWindow.bind(Y),isOverview:T.isActive.bind(T),isPrintingPDF:V.isPrintingPDF.bind(V),loadSlide:E.load.bind(E),unloadSlide:E.unload.bind(E),addEventListeners:de,removeEventListeners:he,dispatchEvent:pe,getState:Je,setState:function(e){if("object"===ne(e)){Oe(s(e.indexh),s(e.indexv),s(e.indexf));var t=s(e.paused),n=s(e.overview);"boolean"==typeof t&&t!==De()&&Ie(t),"boolean"==typeof n&&n!==T.isActive()&&T.toggle(n)}},getSlidePastCount:qe,getProgress:function(){var e=_e(),t=qe();if(h){var n=h.querySelectorAll(".fragment");if(n.length>0){t+=h.querySelectorAll(".fragment.visible").length/n.length*.9}}return Math.min(t/(e-1),1)},getIndices:We,getSlides:Ke,getSlidesAttributes:function(){return Ke().map((function(e){for(var t={},n=0;n0&&(t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e))),document.head.appendChild(t),t},d=function(){var e={};for(var t in location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,(function(t){e[t.split("=").shift()]=t.split("=").pop()})),e){var n=e[t];e[t]=s(unescape(n))}return void 0!==e.dependencies&&delete e.dependencies,e},h=navigator.userAgent,v=document.createElement("div"),f=/(iphone|ipod|ipad|android)/gi.test(h)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,g=/chrome/i.test(h)&&!/edge/i.test(h),p=/android/gi.test(h),m="zoom"in v.style&&!f&&(g||/Version\/[\d\.]+.*Safari/.test(h)),y="function"==typeof window.history.replaceState&&!/PhantomJS/.test(h);function b(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};e.style.display=this.Reveal.getConfig().display,o(e,"img[data-src], video[data-src], audio[data-src], iframe[data-src]").forEach((function(e){("IFRAME"!==e.tagName||t.shouldPreload(e))&&(e.setAttribute("src",e.getAttribute("data-src")),e.setAttribute("data-lazy-loaded",""),e.removeAttribute("data-src"))})),o(e,"video, audio").forEach((function(e){var t=0;o(e,"source[data-src]").forEach((function(e){e.setAttribute("src",e.getAttribute("data-src")),e.removeAttribute("data-src"),e.setAttribute("data-lazy-loaded",""),t+=1})),t>0&&e.load()}));var i=e.slideBackgroundElement;if(i){i.style.display="block";var a=e.slideBackgroundContentElement,r=e.getAttribute("data-background-iframe");if(!1===i.hasAttribute("data-loaded")){i.setAttribute("data-loaded","true");var s=e.getAttribute("data-background-image"),l=e.getAttribute("data-background-video"),c=e.hasAttribute("data-background-video-loop"),u=e.hasAttribute("data-background-video-muted");if(s)a.style.backgroundImage="url("+encodeURI(s)+")";else if(l&&!this.Reveal.isSpeakerNotes()){var d=document.createElement("video");c&&d.setAttribute("loop",""),u&&(d.muted=!0),f&&(d.muted=!0,d.autoplay=!0,d.setAttribute("playsinline","")),l.split(",").forEach((function(e){d.innerHTML+=''})),a.appendChild(d)}else if(r&&!0!==n.excludeIframes){var h=document.createElement("iframe");h.setAttribute("allowfullscreen",""),h.setAttribute("mozallowfullscreen",""),h.setAttribute("webkitallowfullscreen",""),h.setAttribute("allow","autoplay"),h.setAttribute("data-src",r),h.style.width="100%",h.style.height="100%",h.style.maxHeight="100%",h.style.maxWidth="100%",a.appendChild(h)}}var v=a.querySelector("iframe[data-src]");v&&this.shouldPreload(i)&&!/autoplay=(1|true|yes)/gi.test(r)&&v.getAttribute("src")!==r&&v.setAttribute("src",r)}}},{key:"unload",value:function(e){e.style.display="none";var t=this.Reveal.getSlideBackground(e);t&&(t.style.display="none",o(t,"iframe[src]").forEach((function(e){e.removeAttribute("src")}))),o(e,"video[data-lazy-loaded][src], audio[data-lazy-loaded][src], iframe[data-lazy-loaded][src]").forEach((function(e){e.setAttribute("data-src",e.getAttribute("src")),e.removeAttribute("src")})),o(e,"video[data-lazy-loaded] source[src], audio source[src]").forEach((function(e){e.setAttribute("data-src",e.getAttribute("src")),e.removeAttribute("src")}))}},{key:"formatEmbeddedContent",value:function(){var e=this,t=function(t,n,i){o(e.Reveal.getSlidesElement(),"iframe["+t+'*="'+n+'"]').forEach((function(e){var n=e.getAttribute(t);n&&-1===n.indexOf(i)&&e.setAttribute(t,n+(/\?/.test(n)?"&":"?")+i)}))};t("src","youtube.com/embed/","enablejsapi=1"),t("data-src","youtube.com/embed/","enablejsapi=1"),t("src","player.vimeo.com/","api=1"),t("data-src","player.vimeo.com/","api=1")}},{key:"startEmbeddedContent",value:function(e){var t=this;e&&!this.Reveal.isSpeakerNotes()&&(o(e,'img[src$=".gif"]').forEach((function(e){e.setAttribute("src",e.getAttribute("src"))})),o(e,"video, audio").forEach((function(e){if(!c(e,".fragment")||c(e,".fragment.visible")){var n=t.Reveal.getConfig().autoPlayMedia;if("boolean"!=typeof n&&(n=e.hasAttribute("data-autoplay")||!!c(e,".slide-background")),n&&"function"==typeof e.play)if(e.readyState>1)t.startEmbeddedMedia({target:e});else if(f){var i=e.play();i&&"function"==typeof i.catch&&!1===e.controls&&i.catch((function(){e.controls=!0,e.addEventListener("play",(function(){e.controls=!1}))}))}else e.removeEventListener("loadeddata",t.startEmbeddedMedia),e.addEventListener("loadeddata",t.startEmbeddedMedia)}})),o(e,"iframe[src]").forEach((function(e){c(e,".fragment")&&!c(e,".fragment.visible")||t.startEmbeddedIframe({target:e})})),o(e,"iframe[data-src]").forEach((function(e){c(e,".fragment")&&!c(e,".fragment.visible")||e.getAttribute("src")!==e.getAttribute("data-src")&&(e.removeEventListener("load",t.startEmbeddedIframe),e.addEventListener("load",t.startEmbeddedIframe),e.setAttribute("src",e.getAttribute("data-src")))})))}},{key:"startEmbeddedMedia",value:function(e){var t=!!c(e.target,"html"),n=!!c(e.target,".present");t&&n&&(e.target.currentTime=0,e.target.play()),e.target.removeEventListener("loadeddata",this.startEmbeddedMedia)}},{key:"startEmbeddedIframe",value:function(e){var t=e.target;if(t&&t.contentWindow){var n=!!c(e.target,"html"),i=!!c(e.target,".present");if(n&&i){var a=this.Reveal.getConfig().autoPlayMedia;"boolean"!=typeof a&&(a=t.hasAttribute("data-autoplay")||!!c(t,".slide-background")),/youtube\.com\/embed\//.test(t.getAttribute("src"))&&a?t.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*"):/player\.vimeo\.com\//.test(t.getAttribute("src"))&&a?t.contentWindow.postMessage('{"method":"play"}',"*"):t.contentWindow.postMessage("slide:start","*")}}}},{key:"stopEmbeddedContent",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n=r({unloadIframes:!0},n),e&&e.parentNode&&(o(e,"video, audio").forEach((function(e){e.hasAttribute("data-ignore")||"function"!=typeof e.pause||(e.setAttribute("data-paused-by-reveal",""),e.pause())})),o(e,"iframe").forEach((function(e){e.contentWindow&&e.contentWindow.postMessage("slide:stop","*"),e.removeEventListener("load",t.startEmbeddedIframe)})),o(e,'iframe[src*="youtube.com/embed/"]').forEach((function(e){!e.hasAttribute("data-ignore")&&e.contentWindow&&"function"==typeof e.contentWindow.postMessage&&e.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")})),o(e,'iframe[src*="player.vimeo.com/"]').forEach((function(e){!e.hasAttribute("data-ignore")&&e.contentWindow&&"function"==typeof e.contentWindow.postMessage&&e.contentWindow.postMessage('{"method":"pause"}',"*")})),!0===n.unloadIframes&&o(e,"iframe[data-src]").forEach((function(e){e.setAttribute("src","about:blank"),e.removeAttribute("src")})))}}])&&b(t.prototype,n),i&&b(t,i),e}();function k(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.Reveal.getCurrentSlide(),n=this.Reveal.getConfig(),i="h.v";if("function"==typeof n.slideNumber)e=n.slideNumber(t);else switch("string"==typeof n.slideNumber&&(i=n.slideNumber),/c/.test(i)||1!==this.Reveal.getHorizontalSlides().length||(i="c"),e=[],i){case"c":e.push(this.Reveal.getSlidePastCount(t)+1);break;case"c/t":e.push(this.Reveal.getSlidePastCount(t)+1,"/",this.Reveal.getTotalSlides());break;default:var a=this.Reveal.getIndices(t);e.push(a.h+1);var r="h/v"===i?"/":".";this.Reveal.isVerticalSlide(t)&&e.push(r,a.v+1)}var o="#"+this.Reveal.location.getHash(t);return this.formatNumber(e[0],e[1],e[2],o)}},{key:"formatNumber",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#"+this.Reveal.location.getHash();return"number"!=typeof n||isNaN(n)?'\n\t\t\t\t\t').concat(e,"\n\t\t\t\t\t"):'\n\t\t\t\t\t').concat(e,'\n\t\t\t\t\t').concat(t,'\n\t\t\t\t\t').concat(n,"\n\t\t\t\t\t")}}])&&k(t.prototype,n),i&&k(t,i),e}(),R=function(e){var t=e.match(/^#([0-9a-f]{3})$/i);if(t&&t[1])return t=t[1],{r:17*parseInt(t.charAt(0),16),g:17*parseInt(t.charAt(1),16),b:17*parseInt(t.charAt(2),16)};var n=e.match(/^#([0-9a-f]{6})$/i);if(n&&n[1])return n=n[1],{r:parseInt(n.substr(0,2),16),g:parseInt(n.substr(2,2),16),b:parseInt(n.substr(4,2),16)};var i=e.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);if(i)return{r:parseInt(i[1],10),g:parseInt(i[2],10),b:parseInt(i[3],10)};var a=e.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([\d]+|[\d]*.[\d]+)\s*\)$/i);return a?{r:parseInt(a[1],10),g:parseInt(a[2],10),b:parseInt(a[3],10),a:parseFloat(a[4])}:null};function E(e,t){for(var n=0;n0&&void 0!==arguments[0]&&arguments[0],n=this.Reveal.getCurrentSlide(),i=this.Reveal.getIndices(),a=null,r=this.Reveal.getConfig().rtl?"future":"past",s=this.Reveal.getConfig().rtl?"past":"future";if(Array.from(this.element.childNodes).forEach((function(e,n){e.classList.remove("past","present","future"),ni.h?e.classList.add(s):(e.classList.add("present"),a=e),(t||n===i.h)&&o(e,".slide-background").forEach((function(e,t){e.classList.remove("past","present","future"),ti.v?e.classList.add("future"):(e.classList.add("present"),n===i.h&&(a=e))}))})),this.previousBackground&&this.Reveal.slideContent.stopEmbeddedContent(this.previousBackground,{unloadIframes:!this.Reveal.slideContent.shouldPreload(this.previousBackground)}),a){this.Reveal.slideContent.startEmbeddedContent(a);var l=a.querySelector(".slide-background-content");if(l){var c=l.style.backgroundImage||"";/\.gif/i.test(c)&&(l.style.backgroundImage="",window.getComputedStyle(l).opacity,l.style.backgroundImage=c)}var u=this.previousBackground?this.previousBackground.getAttribute("data-background-hash"):null,d=a.getAttribute("data-background-hash");d&&d===u&&a!==this.previousBackground&&this.element.classList.add("no-transition"),this.previousBackground=a}n&&["has-light-background","has-dark-background"].forEach((function(t){n.classList.contains(t)?e.Reveal.getRevealElement().classList.add(t):e.Reveal.getRevealElement().classList.remove(t)}),this),setTimeout((function(){e.element.classList.remove("no-transition")}),1)}},{key:"updateParallax",value:function(){var e=this.Reveal.getIndices();if(this.Reveal.getConfig().parallaxBackgroundImage){var t,n,i=this.Reveal.getHorizontalSlides(),a=this.Reveal.getVerticalSlides(),r=this.element.style.backgroundSize.split(" ");1===r.length?t=n=parseInt(r[0],10):(t=parseInt(r[0],10),n=parseInt(r[1],10));var o,s=this.element.offsetWidth,l=i.length;o=("number"==typeof this.Reveal.getConfig().parallaxBackgroundHorizontal?this.Reveal.getConfig().parallaxBackgroundHorizontal:l>1?(t-s)/(l-1):0)*e.h*-1;var c,u,d=this.element.offsetHeight,h=a.length;c="number"==typeof this.Reveal.getConfig().parallaxBackgroundVertical?this.Reveal.getConfig().parallaxBackgroundVertical:(n-d)/(h-1),u=h>0?c*e.v:0,this.element.style.backgroundPosition=o+"px "+-u+"px"}}}])&&E(t.prototype,n),i&&E(t,i),e}();function L(e,t){for(var n=0;na.indexOf(e)?"forward":"backward";var r=this.getAutoAnimatableElements(e,t).map((function(e){return n.autoAnimateElements(e.from,e.to,e.options||{},i,n.autoAnimateCounter++)}));if("false"!==t.dataset.autoAnimateUnmatched&&!0===this.Reveal.getConfig().autoAnimateUnmatched){var o=.8*i.duration,s=.2*i.duration;this.getUnmatchedAutoAnimateElements(t).forEach((function(e){var t=n.getAutoAnimateOptions(e,i),a="unmatched";t.duration===i.duration&&t.delay===i.delay||(a="unmatched-"+n.autoAnimateCounter++,r.push('[data-auto-animate="running"] [data-auto-animate-target="'.concat(a,'"] { transition: opacity ').concat(t.duration,"s ease ").concat(t.delay,"s; }"))),e.dataset.autoAnimateTarget=a}),this),r.push('[data-auto-animate="running"] [data-auto-animate-target="unmatched"] { transition: opacity '.concat(o,"s ease ").concat(s,"s; }"))}this.autoAnimateStyleSheet.innerHTML=r.join(""),requestAnimationFrame((function(){n.autoAnimateStyleSheet&&(getComputedStyle(n.autoAnimateStyleSheet).fontWeight,t.dataset.autoAnimate="running")})),this.Reveal.dispatchEvent({type:"autoanimate",data:{fromSlide:e,toSlide:t,sheet:this.autoAnimateStyleSheet}})}}},{key:"reset",value:function(){o(this.Reveal.getRevealElement(),'[data-auto-animate]:not([data-auto-animate=""])').forEach((function(e){e.dataset.autoAnimate=""})),o(this.Reveal.getRevealElement(),"[data-auto-animate-target]").forEach((function(e){delete e.dataset.autoAnimateTarget})),this.autoAnimateStyleSheet&&this.autoAnimateStyleSheet.parentNode&&(this.autoAnimateStyleSheet.parentNode.removeChild(this.autoAnimateStyleSheet),this.autoAnimateStyleSheet=null)}},{key:"autoAnimateElements",value:function(e,t,n,i,r){e.dataset.autoAnimateTarget="",t.dataset.autoAnimateTarget=r;var o=this.getAutoAnimateOptions(t,i);void 0!==n.delay&&(o.delay=n.delay),void 0!==n.duration&&(o.duration=n.duration),void 0!==n.easing&&(o.easing=n.easing);var s=this.getAutoAnimatableProperties("from",e,n),l=this.getAutoAnimatableProperties("to",t,n);if(t.classList.contains("fragment")&&(delete l.styles.opacity,e.classList.contains("fragment")&&(e.className.match(a)||[""])[0]===(t.className.match(a)||[""])[0]&&"forward"===i.slideDirection&&t.classList.add("visible","disabled")),!1!==n.translate||!1!==n.scale){var c=this.Reveal.getScale(),u={x:(s.x-l.x)/c,y:(s.y-l.y)/c,scaleX:s.width/l.width,scaleY:s.height/l.height};u.x=Math.round(1e3*u.x)/1e3,u.y=Math.round(1e3*u.y)/1e3,u.scaleX=Math.round(1e3*u.scaleX)/1e3,u.scaleX=Math.round(1e3*u.scaleX)/1e3;var d=!1!==n.translate&&(0!==u.x||0!==u.y),h=!1!==n.scale&&(0!==u.scaleX||0!==u.scaleY);if(d||h){var v=[];d&&v.push("translate(".concat(u.x,"px, ").concat(u.y,"px)")),h&&v.push("scale(".concat(u.scaleX,", ").concat(u.scaleY,")")),s.styles.transform=v.join(" "),s.styles["transform-origin"]="top left",l.styles.transform="none"}}for(var f in l.styles){var g=l.styles[f],p=s.styles[f];g===p?delete l.styles[f]:(!0===g.explicitValue&&(l.styles[f]=g.value),!0===p.explicitValue&&(s.styles[f]=p.value))}var m="",y=Object.keys(l.styles);return y.length>0&&(s.styles.transition="none",l.styles.transition="all ".concat(o.duration,"s ").concat(o.easing," ").concat(o.delay,"s"),l.styles["transition-property"]=y.join(", "),l.styles["will-change"]=y.join(", "),m='[data-auto-animate-target="'+r+'"] {'+Object.keys(s.styles).map((function(e){return e+": "+s.styles[e]+" !important;"})).join("")+'}[data-auto-animate="running"] [data-auto-animate-target="'+r+'"] {'+Object.keys(l.styles).map((function(e){return e+": "+l.styles[e]+" !important;"})).join("")+"}"),m}},{key:"getAutoAnimateOptions",value:function(e,t){var n={easing:this.Reveal.getConfig().autoAnimateEasing,duration:this.Reveal.getConfig().autoAnimateDuration,delay:0};if(n=r(n,t),e.closest&&e.parentNode){var i=e.parentNode.closest("[data-auto-animate-target]");i&&(n=this.getAutoAnimateOptions(i,n))}return e.dataset.autoAnimateEasing&&(n.easing=e.dataset.autoAnimateEasing),e.dataset.autoAnimateDuration&&(n.duration=parseFloat(e.dataset.autoAnimateDuration)),e.dataset.autoAnimateDelay&&(n.delay=parseFloat(e.dataset.autoAnimateDelay)),n}},{key:"getAutoAnimatableProperties",value:function(e,t,n){var i,a={styles:[]};!1===n.translate&&!1===n.scale||(i="function"==typeof n.measure?n.measure(t):t.getBoundingClientRect(),a.x=i.x,a.y=i.y,a.width=i.width,a.height=i.height);var r=getComputedStyle(t);return(n.styles||this.Reveal.getConfig().autoAnimateStyles).forEach((function(t){var n;"string"==typeof t&&(t={property:t}),""!==(n=void 0!==t.from&&"from"===e?{value:t.from,explicitValue:!0}:void 0!==t.to&&"to"===e?{value:t.to,explicitValue:!0}:r[t.property])&&(a.styles[t.property]=n)})),a}},{key:"getAutoAnimatableElements",value:function(e,t){var n=("function"==typeof this.Reveal.getConfig().autoAnimateMatcher?this.Reveal.getConfig().autoAnimateMatcher:this.getAutoAnimatePairs).call(this,e,t),i=[];return n.filter((function(e,t){if(-1===i.indexOf(e.to))return i.push(e.to),!0}))}},{key:"getAutoAnimatePairs",value:function(e,t){var n=this,i=[],a="h1, h2, h3, h4, h5, h6, p, li";return this.findAutoAnimateMatches(i,e,t,"[data-id]",(function(e){return e.nodeName+":::"+e.getAttribute("data-id")})),this.findAutoAnimateMatches(i,e,t,a,(function(e){return e.nodeName+":::"+e.innerText})),this.findAutoAnimateMatches(i,e,t,"img, video, iframe",(function(e){return e.nodeName+":::"+(e.getAttribute("src")||e.getAttribute("data-src"))})),this.findAutoAnimateMatches(i,e,t,"pre",(function(e){return e.nodeName+":::"+e.innerText})),i.forEach((function(e){e.from.matches(a)?e.options={scale:!1}:e.from.matches("pre")&&(e.options={scale:!1,styles:["width","height"]},n.findAutoAnimateMatches(i,e.from,e.to,".hljs .hljs-ln-code",(function(e){return e.textContent}),{scale:!1,styles:[],measure:n.getLocalBoundingBox.bind(n)}),n.findAutoAnimateMatches(i,e.from,e.to,".hljs .hljs-ln-line[data-line-number]",(function(e){return e.getAttribute("data-line-number")}),{scale:!1,styles:["width"],measure:n.getLocalBoundingBox.bind(n)}))}),this),i}},{key:"getLocalBoundingBox",value:function(e){var t=this.Reveal.getScale();return{x:Math.round(e.offsetLeft*t*100)/100,y:Math.round(e.offsetTop*t*100)/100,width:Math.round(e.offsetWidth*t*100)/100,height:Math.round(e.offsetHeight*t*100)/100}}},{key:"findAutoAnimateMatches",value:function(e,t,n,i,a,r){var o={},s={};[].slice.call(t.querySelectorAll(i)).forEach((function(e,t){var n=a(e);"string"==typeof n&&n.length&&(o[n]=o[n]||[],o[n].push(e))})),[].slice.call(n.querySelectorAll(i)).forEach((function(t,n){var i,l=a(t);if(s[l]=s[l]||[],s[l].push(t),o[l]){var c=s[l].length-1,u=o[l].length-1;o[l][c]?(i=o[l][c],o[l][c]=null):o[l][u]&&(i=o[l][u],o[l][u]=null)}i&&e.push({from:i,to:t,options:r})}))}},{key:"getUnmatchedAutoAnimateElements",value:function(e){var t=this;return[].slice.call(e.children).reduce((function(e,n){var i=n.querySelector("[data-auto-animate-target]");return n.hasAttribute("data-auto-animate-target")||i||e.push(n),n.querySelector("[data-auto-animate-target]")&&(e=e.concat(t.getUnmatchedAutoAnimateElements(n))),e}),[])}}])&&L(t.prototype,n),i&&L(t,i),e}();function C(e,t){for(var n=0;n0,next:!!n.length}}return{prev:!1,next:!1}}},{key:"sort",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e=Array.from(e);var n=[],i=[],a=[];e.forEach((function(e){if(e.hasAttribute("data-fragment-index")){var t=parseInt(e.getAttribute("data-fragment-index"),10);n[t]||(n[t]=[]),n[t].push(e)}else i.push([e])})),n=n.concat(i);var r=0;return n.forEach((function(e){e.forEach((function(e){a.push(e),e.setAttribute("data-fragment-index",r)})),r++})),!0===t?n:a}},{key:"sortAll",value:function(){var e=this;this.Reveal.getHorizontalSlides().forEach((function(t){var n=o(t,"section");n.forEach((function(t,n){e.sort(t.querySelectorAll(".fragment"))}),e),0===n.length&&e.sort(t.querySelectorAll(".fragment"))}))}},{key:"update",value:function(e,t){var n=this,i={shown:[],hidden:[]},a=this.Reveal.getCurrentSlide();if(a&&this.Reveal.getConfig().fragments&&(t=t||this.sort(a.querySelectorAll(".fragment"))).length){var r=0;if("number"!=typeof e){var o=this.sort(a.querySelectorAll(".fragment.visible")).pop();o&&(e=parseInt(o.getAttribute("data-fragment-index")||0,10))}Array.from(t).forEach((function(t,a){if(t.hasAttribute("data-fragment-index")&&(a=parseInt(t.getAttribute("data-fragment-index"),10)),r=Math.max(r,a),a<=e){var o=t.classList.contains("visible");t.classList.add("visible"),t.classList.remove("current-fragment"),a===e&&(n.Reveal.announceStatus(n.Reveal.getStatusText(t)),t.classList.add("current-fragment"),n.Reveal.slideContent.startEmbeddedContent(t)),o||(i.shown.push(t),n.Reveal.dispatchEvent({target:t,type:"visible",bubbles:!1}))}else{var s=t.classList.contains("visible");t.classList.remove("visible"),t.classList.remove("current-fragment"),s&&(i.hidden.push(t),n.Reveal.dispatchEvent({target:t,type:"hidden",bubbles:!1}))}})),e="number"==typeof e?e:-1,e=Math.max(Math.min(e,r),-1),a.setAttribute("data-fragment",e)}return i}},{key:"sync",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.Reveal.getCurrentSlide();return this.sort(e.querySelectorAll(".fragment"))}},{key:"goto",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.Reveal.getCurrentSlide();if(n&&this.Reveal.getConfig().fragments){var i=this.sort(n.querySelectorAll(".fragment:not(.disabled)"));if(i.length){if("number"!=typeof e){var a=this.sort(n.querySelectorAll(".fragment:not(.disabled).visible")).pop();e=a?parseInt(a.getAttribute("data-fragment-index")||0,10):-1}e+=t;var r=this.update(e,i);return r.hidden.length&&this.Reveal.dispatchEvent({type:"fragmenthidden",data:{fragment:r.hidden[0],fragments:r.hidden}}),r.shown.length&&this.Reveal.dispatchEvent({type:"fragmentshown",data:{fragment:r.shown[0],fragments:r.shown}}),this.Reveal.controls.update(),this.Reveal.progress.update(),this.Reveal.getConfig().fragmentInURL&&this.Reveal.location.writeURL(),!(!r.shown.length&&!r.hidden.length)}}return!1}},{key:"next",value:function(){return this.goto(null,1)}},{key:"prev",value:function(){return this.goto(null,-1)}}])&&C(t.prototype,n),i&&C(t,i),e}();function N(e,t){for(var n=0;n0||a.v>0||void 0!==a.f)&&(t+=a.h+r),(a.v>0||void 0!==a.f)&&(t+="/"+(a.v+r)),void 0!==a.f&&(t+="/"+a.f)}return t}}])&&O(t.prototype,n),i&&O(t,i),e}();function H(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t
\n\t\t\t\n\t\t\t\n\t\t\t'),this.Reveal.getRevealElement().appendChild(this.element),this.controlsLeft=o(t,".navigate-left"),this.controlsRight=o(t,".navigate-right"),this.controlsUp=o(t,".navigate-up"),this.controlsDown=o(t,".navigate-down"),this.controlsPrev=o(t,".navigate-prev"),this.controlsNext=o(t,".navigate-next"),this.controlsRightArrow=this.element.querySelector(".navigate-right"),this.controlsLeftArrow=this.element.querySelector(".navigate-left"),this.controlsDownArrow=this.element.querySelector(".navigate-down")}},{key:"configure",value:function(e,t){this.element.style.display=e.controls?"block":"none",this.element.setAttribute("data-controls-layout",e.controlsLayout),this.element.setAttribute("data-controls-back-arrows",e.controlsBackArrows)}},{key:"bind",value:function(){var e=this,t=["touchstart","click"];p&&(t=["touchstart"]),t.forEach((function(t){e.controlsLeft.forEach((function(n){return n.addEventListener(t,e.onNavigateLeftClicked,!1)})),e.controlsRight.forEach((function(n){return n.addEventListener(t,e.onNavigateRightClicked,!1)})),e.controlsUp.forEach((function(n){return n.addEventListener(t,e.onNavigateUpClicked,!1)})),e.controlsDown.forEach((function(n){return n.addEventListener(t,e.onNavigateDownClicked,!1)})),e.controlsPrev.forEach((function(n){return n.addEventListener(t,e.onNavigatePrevClicked,!1)})),e.controlsNext.forEach((function(n){return n.addEventListener(t,e.onNavigateNextClicked,!1)}))}))}},{key:"unbind",value:function(){var e=this;["touchstart","click"].forEach((function(t){e.controlsLeft.forEach((function(n){return n.removeEventListener(t,e.onNavigateLeftClicked,!1)})),e.controlsRight.forEach((function(n){return n.removeEventListener(t,e.onNavigateRightClicked,!1)})),e.controlsUp.forEach((function(n){return n.removeEventListener(t,e.onNavigateUpClicked,!1)})),e.controlsDown.forEach((function(n){return n.removeEventListener(t,e.onNavigateDownClicked,!1)})),e.controlsPrev.forEach((function(n){return n.removeEventListener(t,e.onNavigatePrevClicked,!1)})),e.controlsNext.forEach((function(n){return n.removeEventListener(t,e.onNavigateNextClicked,!1)}))}))}},{key:"update",value:function(){var e=this.Reveal.availableRoutes();[].concat(H(this.controlsLeft),H(this.controlsRight),H(this.controlsUp),H(this.controlsDown),H(this.controlsPrev),H(this.controlsNext)).forEach((function(e){e.classList.remove("enabled","fragmented"),e.setAttribute("disabled","disabled")})),e.left&&this.controlsLeft.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),e.right&&this.controlsRight.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),e.up&&this.controlsUp.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),e.down&&this.controlsDown.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),(e.left||e.up)&&this.controlsPrev.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")})),(e.right||e.down)&&this.controlsNext.forEach((function(e){e.classList.add("enabled"),e.removeAttribute("disabled")}));var t=this.Reveal.getCurrentSlide();if(t){var n=this.Reveal.fragments.availableRoutes();n.prev&&this.controlsPrev.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),n.next&&this.controlsNext.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),this.Reveal.isVerticalSlide(t)?(n.prev&&this.controlsUp.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),n.next&&this.controlsDown.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")}))):(n.prev&&this.controlsLeft.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})),n.next&&this.controlsRight.forEach((function(e){e.classList.add("fragmented","enabled"),e.removeAttribute("disabled")})))}if(this.Reveal.getConfig().controlsTutorial){var i=this.Reveal.getIndices();!this.Reveal.hasNavigatedVertically()&&e.down?this.controlsDownArrow.classList.add("highlight"):(this.controlsDownArrow.classList.remove("highlight"),this.Reveal.getConfig().rtl?!this.Reveal.hasNavigatedHorizontally()&&e.left&&0===i.v?this.controlsLeftArrow.classList.add("highlight"):this.controlsLeftArrow.classList.remove("highlight"):!this.Reveal.hasNavigatedHorizontally()&&e.right&&0===i.v?this.controlsRightArrow.classList.add("highlight"):this.controlsRightArrow.classList.remove("highlight"))}}},{key:"onNavigateLeftClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),"linear"===this.Reveal.getConfig().navigationMode?this.Reveal.prev():this.Reveal.left()}},{key:"onNavigateRightClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),"linear"===this.Reveal.getConfig().navigationMode?this.Reveal.next():this.Reveal.right()}},{key:"onNavigateUpClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.up()}},{key:"onNavigateDownClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.down()}},{key:"onNavigatePrevClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.prev()}},{key:"onNavigateNextClicked",value:function(e){e.preventDefault(),this.Reveal.onUserInput(),this.Reveal.next()}}])&&j(t.prototype,n),i&&j(t,i),e}();function U(e,t){for(var n=0;n1e3){this.lastMouseWheelStep=Date.now();var t=e.detail||-e.wheelDelta;t>0?this.Reveal.next():t<0&&this.Reveal.prev()}}}])&&W(t.prototype,n),i&&W(t,i),e}(),V=function(e,t){var n=document.createElement("script");n.type="text/javascript",n.async=!1,n.defer=!1,n.src=e,"function"==typeof t&&(n.onload=n.onreadystatechange=function(e){("load"===e.type||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=n.onerror=null,t())},n.onerror=function(e){n.onload=n.onreadystatechange=n.onerror=null,t(new Error("Failed loading script: "+n.src+"\n"+e))});var i=document.querySelector("head");i.insertBefore(n,i.lastChild)};function F(e,t){for(var n=0;nimg, .reveal section>video, .reveal section>iframe{max-width: "+a+"px; max-height:"+r+"px}"),document.documentElement.classList.add("print-pdf"),document.body.style.width=n+"px",document.body.style.height=i+"px",this.Reveal.layoutSlideContents(a,r);var s=e.slideNumber&&/all|print/i.test(e.showSlideNumber);o(this.Reveal.getRevealElement(),".slides section").forEach((function(e){e.setAttribute("data-slide-number",this.Reveal.slideNumber.getSlideNumber(e))}),this),o(this.Reveal.getRevealElement(),".slides section").forEach((function(t){if(!1===t.classList.contains("stack")){var l=(n-a)/2,c=(i-r)/2,u=t.scrollHeight,d=Math.max(Math.ceil(u/i),1);(1===(d=Math.min(d,e.pdfMaxPagesPerSlide))&&e.center||t.classList.contains("center"))&&(c=Math.max((i-u)/2,0));var h=document.createElement("div");if(h.className="pdf-page",h.style.height=(i+e.pdfPageHeightOffset)*d+"px",t.parentNode.insertBefore(h,t),h.appendChild(t),t.style.left=l+"px",t.style.top=c+"px",t.style.width=a+"px",t.slideBackgroundElement&&h.insertBefore(t.slideBackgroundElement,t),e.showNotes){var v=getSlideNotes(t);if(v){var f="string"==typeof e.showNotes?e.showNotes:"inline",g=document.createElement("div");g.classList.add("speaker-notes"),g.classList.add("speaker-notes-pdf"),g.setAttribute("data-layout",f),g.innerHTML=v,"separate-page"===f?h.parentNode.insertBefore(g,h.nextSibling):(g.style.left="8px",g.style.bottom="8px",g.style.width=n-16+"px",h.appendChild(g))}}if(s){var p=document.createElement("div");p.classList.add("slide-number"),p.classList.add("slide-number-pdf"),p.innerHTML=t.getAttribute("data-slide-number"),h.appendChild(p)}if(e.pdfSeparateFragments){var m,y,b=this.Reveal.fragments.sort(h.querySelectorAll(".fragment"),!0);b.forEach((function(e){m&&m.forEach((function(e){e.classList.remove("current-fragment")})),e.forEach((function(e){e.classList.add("visible","current-fragment")}),this);var t=h.cloneNode(!0);h.parentNode.insertBefore(t,(y||h).nextSibling),m=e,y=t}),this),b.forEach((function(e){e.forEach((function(e){e.classList.remove("visible","current-fragment")}))}))}else o(h,".fragment:not(.fade-out)").forEach((function(e){e.classList.add("visible")}))}}),this),this.Reveal.dispatchEvent({type:"pdf-ready"})}},{key:"isPrintingPDF",value:function(){return/print-pdf/gi.test(window.location.search)}}])&&Y(t.prototype,n),i&&Y(t,i),e}();function $(e,t){for(var n=0;n40&&Math.abs(a)>Math.abs(r)?(this.touchCaptured=!0,"linear"===t.navigationMode?t.rtl?this.Reveal.next():this.Reveal.prev()():this.Reveal.left()):a<-40&&Math.abs(a)>Math.abs(r)?(this.touchCaptured=!0,"linear"===t.navigationMode?t.rtl?this.Reveal.prev()():this.Reveal.next():this.Reveal.right()):r>40?(this.touchCaptured=!0,"linear"===t.navigationMode?this.Reveal.prev()():this.Reveal.up()):r<-40&&(this.touchCaptured=!0,"linear"===t.navigationMode?this.Reveal.next():this.Reveal.down()),t.embedded?(this.touchCaptured||this.Reveal.isVerticalSlide(currentSlide))&&e.preventDefault():e.preventDefault()}}}},{key:"onTouchEnd",value:function(e){this.touchCaptured=!1}},{key:"onPointerDown",value:function(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchStart(e))}},{key:"onPointerMove",value:function(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchMove(e))}},{key:"onPointerUp",value:function(e){e.pointerType!==e.MSPOINTER_TYPE_TOUCH&&"touch"!==e.pointerType||(e.touches=[{clientX:e.clientX,clientY:e.clientY}],this.onTouchEnd(e))}}])&&$(t.prototype,n),i&&$(t,i),e}();function Q(e,t){for(var n=0;nNo notes on this slide.')}},{key:"updateVisibility",value:function(){this.Reveal.getConfig().showNotes&&this.hasNotes()?this.Reveal.getRevealElement().classList.add("show-notes"):this.Reveal.getRevealElement().classList.remove("show-notes")}},{key:"hasNotes",value:function(){return this.Reveal.getSlidesElement().querySelectorAll("[data-notes], aside.notes").length>0}},{key:"isSpeakerNotesWindow",value:function(){return!!window.location.search.match(/receiver/gi)}},{key:"getSlideNotes",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.Reveal.getCurrentSlide();if(e.hasAttribute("data-notes"))return e.getAttribute("data-notes");var t=e.querySelector("aside.notes");return t?t.innerHTML:null}}])&&Q(t.prototype,n),i&&Q(t,i),e}();function G(e,t){for(var n=0;n.8&&this.progress<.2&&(this.progressOffset=this.progress),this.render(),this.playing&&requestAnimationFrame(this.animate.bind(this))}},{key:"render",value:function(){var e=this.playing?this.progress:0,t=this.diameter2-this.thickness,n=this.diameter2,i=this.diameter2;this.progressOffset+=.1*(1-this.progressOffset);var a=-Math.PI/2+e*(2*Math.PI),r=-Math.PI/2+this.progressOffset*(2*Math.PI);this.context.save(),this.context.clearRect(0,0,this.diameter,this.diameter),this.context.beginPath(),this.context.arc(n,i,t+4,0,2*Math.PI,!1),this.context.fillStyle="rgba( 0, 0, 0, 0.4 )",this.context.fill(),this.context.beginPath(),this.context.arc(n,i,t,0,2*Math.PI,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="rgba( 255, 255, 255, 0.2 )",this.context.stroke(),this.playing&&(this.context.beginPath(),this.context.arc(n,i,t,r,a,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="#fff",this.context.stroke()),this.context.translate(n-14,i-14),this.playing?(this.context.fillStyle="#fff",this.context.fillRect(0,0,10,28),this.context.fillRect(18,0,10,28)):(this.context.beginPath(),this.context.translate(4,0),this.context.moveTo(0,0),this.context.lineTo(24,14),this.context.lineTo(0,28),this.context.fillStyle="#fff",this.context.fill()),this.context.restore()}},{key:"on",value:function(e,t){this.canvas.addEventListener(e,t,!1)}},{key:"off",value:function(e,t){this.canvas.removeEventListener(e,t,!1)}},{key:"destroy",value:function(){this.playing=!1,this.canvas.parentNode&&this.container.removeChild(this.canvas)}}])&&G(t.prototype,n),i&&G(t,i),e}(),te={width:960,height:700,margin:.04,minScale:.2,maxScale:2,controls:!0,controlsTutorial:!0,controlsLayout:"bottom-right",controlsBackArrows:"faded",progress:!0,slideNumber:!1,showSlideNumber:"all",hashOneBasedIndex:!1,hash:!1,history:!1,keyboard:!0,keyboardCondition:null,overview:!0,disableLayout:!1,center:!0,touch:!0,loop:!1,rtl:!1,navigationMode:"default",shuffle:!1,fragments:!0,fragmentInURL:!1,embedded:!1,help:!0,pause:!0,showNotes:!1,autoPlayMedia:null,preloadIframes:null,autoAnimate:!0,autoAnimateMatcher:null,autoAnimateEasing:"ease",autoAnimateDuration:1,autoAnimateUnmatched:!0,autoAnimateStyles:["opacity","color","background-color","padding","font-size","line-height","letter-spacing","border-width","border-color","border-radius","outline","outline-offset"],autoSlide:0,autoSlideStoppable:!0,autoSlideMethod:null,defaultTiming:null,mouseWheel:!1,previewLinks:!1,postMessage:!0,postMessageEvents:!1,focusBodyOnPageVisibilityChange:!0,transition:"slide",transitionSpeed:"default",backgroundTransition:"fade",parallaxBackgroundImage:"",parallaxBackgroundSize:"",parallaxBackgroundRepeat:"",parallaxBackgroundPosition:"",parallaxBackgroundHorizontal:null,parallaxBackgroundVertical:null,pdfMaxPagesPerSlide:Number.POSITIVE_INFINITY,pdfSeparateFragments:!0,pdfPageHeightOffset:-1,viewDistance:3,mobileViewDistance:2,display:"block",hideInactiveCursor:!0,hideCursorTime:5e3,dependencies:[]};function ne(e){return(ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function ae(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:"",a=e.querySelectorAll("."+n),r=0;rResume presentation':null),Q.statusElement=function(){var e=Q.wrapper.querySelector(".aria-status");e||((e=document.createElement("div")).style.position="absolute",e.style.height="1px",e.style.width="1px",e.style.overflow="hidden",e.style.clip="rect( 1px, 1px, 1px, 1px )",e.classList.add("aria-status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),Q.wrapper.appendChild(e));return e}(),Q.wrapper.setAttribute("role","application")}(),n.postMessage&&window.addEventListener("message",(function(e){var t=e.data;if("string"==typeof t&&"{"===t.charAt(0)&&"}"===t.charAt(t.length-1)&&(t=JSON.parse(t)).method&&"function"==typeof g[t.method])if(!1===i.test(t.method)){var n=g[t.method].apply(g,t.args);me("callback",{method:t.method,result:n})}else console.warn('reveal.js: "'+t.method+'" is is blacklisted from the postMessage API')}),!1),setInterval((function(){0===Q.wrapper.scrollTop&&0===Q.wrapper.scrollLeft||(Q.wrapper.scrollTop=0,Q.wrapper.scrollLeft=0)}),1e3),Ve().forEach((function(e){o(e,"section").forEach((function(e,t){t>0&&(e.classList.remove("present"),e.classList.remove("past"),e.classList.add("future"),e.setAttribute("aria-hidden","true"))}))})),ue(),O.readURL(),C.update(!0),setTimeout((function(){Q.slides.classList.remove("no-transition"),Q.wrapper.classList.add("ready"),pe({type:"ready",data:{indexh:a,indexv:c,currentSlide:h}})}),1),V.isPrintingPDF()&&(he(),"complete"===document.readyState?V.setupPDF():window.addEventListener("load",V.setupPDF))}function le(e){Q.statusElement.textContent=e}function ce(e){var t="";if(3===e.nodeType)t+=e.textContent;else if(1===e.nodeType){var n=e.getAttribute("aria-hidden"),i="none"===window.getComputedStyle(e).display;"true"===n||i||Array.from(e.childNodes).forEach((function(e){t+=ce(e)}))}return""===(t=t.trim())?"":t+" "}function ue(e){var t=ae({},n);if("object"===ne(e)&&r(n,e),!1!==g.isReady()){var i=Q.wrapper.querySelectorAll(".slides section").length;Q.wrapper.classList.remove(t.transition),Q.wrapper.classList.add(n.transition),Q.wrapper.setAttribute("data-transition-speed",n.transitionSpeed),Q.wrapper.setAttribute("data-background-transition",n.backgroundTransition),n.shuffle&&He(),n.rtl?Q.wrapper.classList.add("rtl"):Q.wrapper.classList.remove("rtl"),n.center?Q.wrapper.classList.add("center"):Q.wrapper.classList.remove("center"),!1===n.pause&&Te(),n.previewLinks?(ye(),be("[data-preview-link=false]")):(be(),ye("[data-preview-link]:not([data-preview-link=false])")),L.reset(),v&&(v.destroy(),v=null),i>1&&n.autoSlide&&n.autoSlideStoppable&&((v=new ee(Q.wrapper,(function(){return Math.min(Math.max((Date.now()-re)/G,0),1)}))).on("click",dt),oe=!1),"default"!==n.navigationMode?Q.wrapper.setAttribute("data-navigation-mode",n.navigationMode):Q.wrapper.removeAttribute("data-navigation-mode"),Y.configure(n,t),U.configure(n,t),H.configure(n,t),j.configure(n,t),I.configure(n,t),N.configure(n,t),E.configure(n,t),Be()}}function de(){!0,window.addEventListener("hashchange",st,!1),window.addEventListener("resize",lt,!1),n.touch&&F.bind(),n.keyboard&&I.bind(),H.bind(),j.bind(),Q.pauseOverlay.addEventListener("click",Te,!1),n.focusBodyOnPageVisibilityChange&&document.addEventListener("visibilitychange",ct,!1)}function he(){!1,F.unbind(),I.unbind(),H.unbind(),j.unbind(),window.removeEventListener("hashchange",st,!1),window.removeEventListener("resize",lt,!1),Q.pauseOverlay.removeEventListener("click",Te,!1)}function ve(t,n,i){e.addEventListener(t,n,i)}function fe(t,n,i){e.removeEventListener(t,n,i)}function ge(e){"string"==typeof e.layout&&($.layout=e.layout),"string"==typeof e.overview&&($.overview=e.overview),$.layout?l(Q.slides,$.layout+" "+$.overview):l(Q.slides,$.overview)}function pe(e){var t=e.target,n=void 0===t?Q.wrapper:t,i=e.type,a=e.data,o=e.bubbles,s=void 0===o||o,l=document.createEvent("HTMLEvents",1,2);l.initEvent(i,s,!0),r(l,a),n.dispatchEvent(l),n===Q.wrapper&&me(i)}function me(e,t){if(n.postMessageEvents&&window.parent!==window.self){var i={namespace:"reveal",eventName:e,state:Je()};r(i,t),window.parent.postMessage(JSON.stringify(i),"*")}}function ye(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"a";Array.from(Q.wrapper.querySelectorAll(e)).forEach((function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.addEventListener("click",ut,!1)}))}function be(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"a";Array.from(Q.wrapper.querySelectorAll(e)).forEach((function(e){/^(http|www)/gi.test(e.getAttribute("href"))&&e.removeEventListener("click",ut,!1)}))}function we(){if(n.help){ke(),Q.overlay=document.createElement("div"),Q.overlay.classList.add("overlay"),Q.overlay.classList.add("overlay-help"),Q.wrapper.appendChild(Q.overlay);var e='

Keyboard Shortcuts


';for(var t in e+="",I.shortcuts)e+="");for(var i in I.registeredKeyBindings)I.registeredKeyBindings[i].key&&I.registeredKeyBindings[i].description&&(e+=""));e+="
KEYACTION
".concat(t,"").concat(I.shortcuts[t],"
".concat(I.registeredKeyBindings[i].key,"").concat(I.registeredKeyBindings[i].description,"
",Q.overlay.innerHTML='\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
'.concat(e,"
\n\t\t\t\t
\n\t\t\t"),Q.overlay.querySelector(".close").addEventListener("click",(function(e){ke(),e.preventDefault()}),!1)}}function ke(){return!!Q.overlay&&(Q.overlay.parentNode.removeChild(Q.overlay),Q.overlay=null,!0)}function Ae(){if(Q.wrapper&&!V.isPrintingPDF()){if(!n.disableLayout){f&&document.documentElement.style.setProperty("--vh",.01*window.innerHeight+"px");var e=Ee(),t=k;Re(n.width,n.height),Q.slides.style.width=e.width+"px",Q.slides.style.height=e.height+"px",k=Math.min(e.presentationWidth/e.width,e.presentationHeight/e.height),k=Math.max(k,n.minScale),1===(k=Math.min(k,n.maxScale))?(Q.slides.style.zoom="",Q.slides.style.left="",Q.slides.style.top="",Q.slides.style.bottom="",Q.slides.style.right="",ge({layout:""})):k>1&&m&&window.devicePixelRatio<2?(Q.slides.style.zoom=k,Q.slides.style.left="",Q.slides.style.top="",Q.slides.style.bottom="",Q.slides.style.right="",ge({layout:""})):(Q.slides.style.zoom="",Q.slides.style.left="50%",Q.slides.style.top="50%",Q.slides.style.bottom="auto",Q.slides.style.right="auto",ge({layout:"translate(-50%, -50%) scale("+k+")"}));for(var i=Array.from(Q.wrapper.querySelectorAll(".slides section")),a=0,r=i.length;a .stretch").forEach((function(n){var i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e){var n,i=e.style.height;return e.style.height="0px",e.parentNode.style.height="auto",n=t-e.parentNode.offsetHeight,e.style.height=i+"px",e.parentNode.style.removeProperty("height"),n}return t}(n,t);if(/(img|video)/gi.test(n.nodeName)){var a=n.naturalWidth||n.videoWidth,r=n.naturalHeight||n.videoHeight,o=Math.min(e/a,i/r);n.style.width=a*o+"px",n.style.height=r*o+"px"}else n.style.width=e+"px",n.style.height=i+"px"}))}function Ee(e,t){var i={width:n.width,height:n.height,presentationWidth:e||Q.wrapper.offsetWidth,presentationHeight:t||Q.wrapper.offsetHeight};return i.presentationWidth-=i.presentationWidth*n.margin,i.presentationHeight-=i.presentationHeight*n.margin,"string"==typeof i.width&&/%$/.test(i.width)&&(i.width=parseInt(i.width,10)/100*i.presentationWidth),"string"==typeof i.height&&/%$/.test(i.height)&&(i.height=parseInt(i.height,10)/100*i.presentationHeight),i}function Se(e,t){"object"===ne(e)&&"function"==typeof e.setAttribute&&e.setAttribute("data-previous-indexv",t||0)}function Le(e){if("object"===ne(e)&&"function"==typeof e.setAttribute&&e.classList.contains("stack")){var t=e.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(e.getAttribute(t)||0,10)}return 0}function xe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;return e&&e.parentNode&&!!e.parentNode.nodeName.match(/section/i)}function Ce(){return!(!h||!xe(h))&&!h.nextElementSibling}function Pe(){return 0===a&&0===c}function Ne(){return!!h&&(!h.nextElementSibling&&(!xe(h)||!h.parentNode.nextElementSibling))}function Me(){if(n.pause){var e=Q.wrapper.classList.contains("paused");Ze(),Q.wrapper.classList.add("paused"),!1===e&&pe({type:"paused"})}}function Te(){var e=Q.wrapper.classList.contains("paused");Q.wrapper.classList.remove("paused"),Qe(),e&&pe({type:"resumed"})}function Ie(e){"boolean"==typeof e?e?Me():Te():De()?Te():Me()}function De(){return Q.wrapper.classList.contains("paused")}function Oe(e,t,i,r){u=h;var s=Q.wrapper.querySelectorAll(".slides>section");if(0!==s.length){void 0!==t||T.isActive()||(t=Le(s[e])),u&&u.parentNode&&u.parentNode.classList.contains("stack")&&Se(u.parentNode,c);var l=b.concat();b.length=0;var d=a||0,v=c||0;a=je(".slides>section",void 0===e?a:e),c=je(".slides>section.present>section",void 0===t?c:t);var f=a!==d||c!==v;f||(u=null);var g=s[a],p=g.querySelectorAll("section");h=p[c]||g;var m=!1;f&&u&&h&&!T.isActive()&&u.hasAttribute("data-auto-animate")&&h.hasAttribute("data-auto-animate")&&(m=!0,Q.slides.classList.add("disable-slide-transitions")),ze(),Ae(),T.isActive()&&T.update(),void 0!==i&&N.goto(i),u&&u!==h&&(u.classList.remove("present"),u.setAttribute("aria-hidden","true"),Pe()&&setTimeout((function(){o(Q.wrapper,".slides>section.stack").forEach((function(e){Se(e,0)}))}),0));e:for(var y=0,w=b.length;yt&&(l.classList.add(c?"past":"future"),n.fragments&&o(l,".fragment.visible").forEach((function(e){e.classList.remove("visible","current-fragment")})))}var u=i[t],d=u.classList.contains("present");u.classList.add("present"),u.removeAttribute("hidden"),u.removeAttribute("aria-hidden"),d||pe({target:u,type:"visible",bubbles:!1});var h=u.getAttribute("data-state");h&&(b=b.concat(h.split(" ")))}else t=0;return t}function ze(){var e,t=Ve(),i=t.length;if(i&&void 0!==a){var r=T.isActive()?10:n.viewDistance;f&&(r=T.isActive()?6:n.mobileViewDistance),V.isPrintingPDF()&&(r=Number.MAX_VALUE);for(var s=0;ssection"),t=Q.wrapper.querySelectorAll(".slides>section.present>section"),i={left:a>0,right:a0,down:c1&&(i.left=!0,i.right=!0),t.length>1&&(i.up=!0,i.down=!0)),e.length>1&&"linear"===n.navigationMode&&(i.right=i.right||i.down,i.left=i.left||i.up),n.rtl){var r=i.left;i.left=i.right,i.right=r}return i}function qe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h,t=Ve(),n=0;e:for(var i=0;i0){var u=h.querySelector(".current-fragment");t=u&&u.hasAttribute("data-fragment-index")?parseInt(u.getAttribute("data-fragment-index"),10):h.querySelectorAll(".fragment.visible").length-1}return{h:n,v:i,f:t}}function Ke(){return o(Q.wrapper,'.slides section:not(.stack):not([data-visibility="uncounted"])')}function Ve(){return o(Q.wrapper,".slides>section")}function Fe(){return o(Q.wrapper,".slides>section>section")}function Xe(){return Ve().length>1}function Ye(){return Fe().length>1}function _e(){return Ke().length}function $e(e,t){var n=Ve()[e],i=n&&n.querySelectorAll("section");return i&&i.length&&"number"==typeof t?i?i[t]:void 0:n}function Je(){var e=We();return{indexh:e.h,indexv:e.v,indexf:e.f,paused:De(),overview:T.isActive()}}function Qe(){if(Ze(),h&&!1!==n.autoSlide){var e=h.querySelector(".current-fragment");e||(e=h.querySelector(".fragment"));var t=e?e.getAttribute("data-autoslide"):null,i=h.parentNode?h.parentNode.getAttribute("data-autoslide"):null,a=h.getAttribute("data-autoslide");G=t?parseInt(t,10):a?parseInt(a,10):i?parseInt(i,10):n.autoSlide,0===h.querySelectorAll(".fragment").length&&o(h,"video, audio").forEach((function(e){e.hasAttribute("data-autoplay")&&G&&1e3*e.duration/e.playbackRate>G&&(G=1e3*e.duration/e.playbackRate+1e3)})),!G||oe||De()||T.isActive()||Ne()&&!N.availableRoutes().next&&!0!==n.loop||(ie=setTimeout((function(){"function"==typeof n.autoSlideMethod?n.autoSlideMethod():ot(),Qe()}),G),re=Date.now()),v&&v.setPlaying(-1!==ie)}}function Ze(){clearTimeout(ie),ie=-1}function Ge(){G&&!oe&&(oe=!0,pe({type:"autoslidepaused"}),clearTimeout(ie),v&&v.setPlaying(!1))}function et(){G&&oe&&(oe=!1,pe({type:"autoslideresumed"}),Qe())}function tt(){y.hasNavigatedHorizontally=!0,n.rtl?(T.isActive()||!1===N.next())&&Ue().left&&Oe(a+1,"grid"===n.navigationMode?c:void 0):(T.isActive()||!1===N.prev())&&Ue().left&&Oe(a-1,"grid"===n.navigationMode?c:void 0)}function nt(){y.hasNavigatedHorizontally=!0,n.rtl?(T.isActive()||!1===N.prev())&&Ue().right&&Oe(a-1,"grid"===n.navigationMode?c:void 0):(T.isActive()||!1===N.next())&&Ue().right&&Oe(a+1,"grid"===n.navigationMode?c:void 0)}function it(){(T.isActive()||!1===N.prev())&&Ue().up&&Oe(a,c-1)}function at(){y.hasNavigatedVertically=!0,(T.isActive()||!1===N.next())&&Ue().down&&Oe(a,c+1)}function rt(){var e;if(!1===N.prev())if(Ue().up)it();else if(e=n.rtl?o(Q.wrapper,".slides>section.future").pop():o(Q.wrapper,".slides>section.past").pop()){var t=e.querySelectorAll("section").length-1||void 0;Oe(a-1,t)}}function ot(){if(y.hasNavigatedHorizontally=!0,y.hasNavigatedVertically=!0,!1===N.next()){var e=Ue();e.down&&e.right&&n.loop&&Ce()&&(e.down=!1),e.down?at():n.rtl?tt():nt()}}function st(e){O.readURL()}function lt(e){Ae()}function ct(e){!1===document.hidden&&document.activeElement!==document.body&&("function"==typeof document.activeElement.blur&&document.activeElement.blur(),document.body.focus())}function ut(e){if(e.currentTarget&&e.currentTarget.hasAttribute("href")){var t=e.currentTarget.getAttribute("href");t&&(!function(e){ke(),Q.overlay=document.createElement("div"),Q.overlay.classList.add("overlay"),Q.overlay.classList.add("overlay-preview"),Q.wrapper.appendChild(Q.overlay),Q.overlay.innerHTML='
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tUnable to load iframe. This is likely due to the site\'s policy (x-frame-options).\n\t\t\t\t\n\t\t\t
'),Q.overlay.querySelector("iframe").addEventListener("load",(function(e){Q.overlay.classList.add("loaded")}),!1),Q.overlay.querySelector(".close").addEventListener("click",(function(e){ke(),e.preventDefault()}),!1),Q.overlay.querySelector(".external").addEventListener("click",(function(e){ke()}),!1)}(t),e.preventDefault())}}function dt(e){Ne()&&!1===n.loop?(Oe(0,0),et()):oe?et():Ge()}return r(g,{VERSION:"4.0.0-dev",initialize:function(){if(e)return Q.wrapper=e,Q.slides=e.querySelector(".slides"),!0===(n=ae({},te,{},t,{},d())).embedded?e.classList.add("reveal-viewport"):(document.body.classList.add("reveal-viewport"),document.documentElement.classList.add("reveal-full-page")),window.addEventListener("load",Ae,!1),W.load(n.dependencies).then(se),new Promise((function(e){return g.on("ready",e)}));console.warn("reveal.js can not initialize without a valid .reveal element.")},configure:ue,sync:Be,syncSlide:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;C.sync(e),N.sync(e),R.load(e),C.update(),Y.update()},syncFragments:N.sync.bind(N),slide:Oe,left:tt,right:nt,up:it,down:at,prev:rt,next:ot,navigateLeft:tt,navigateRight:nt,navigateUp:it,navigateDown:at,navigatePrev:rt,navigateNext:ot,navigateFragment:N.goto.bind(N),prevFragment:N.prev.bind(N),nextFragment:N.next.bind(N),on:ve,off:fe,addEventListener:ve,removeEventListener:fe,layout:Ae,shuffle:He,availableRoutes:Ue,availableFragments:N.availableRoutes.bind(N),toggleHelp:function(e){"boolean"==typeof e?e?we():ke():Q.overlay?ke():we()},toggleOverview:T.toggle.bind(T),togglePause:Ie,toggleAutoSlide:function(e){"boolean"==typeof e?e?et():Ge():oe?et():Ge()},isFirstSlide:Pe,isLastSlide:Ne,isLastVerticalSlide:Ce,isVerticalSlide:xe,isPaused:De,isAutoSliding:function(){return!(!G||oe)},isSpeakerNotes:Y.isSpeakerNotesWindow.bind(Y),isOverview:T.isActive.bind(T),isPrintingPDF:V.isPrintingPDF.bind(V),loadSlide:R.load.bind(R),unloadSlide:R.unload.bind(R),addEventListeners:de,removeEventListeners:he,dispatchEvent:pe,getState:Je,setState:function(e){if("object"===ne(e)){Oe(s(e.indexh),s(e.indexv),s(e.indexf));var t=s(e.paused),n=s(e.overview);"boolean"==typeof t&&t!==De()&&Ie(t),"boolean"==typeof n&&n!==T.isActive()&&T.toggle(n)}},getSlidePastCount:qe,getProgress:function(){var e=_e(),t=qe();if(h){var n=h.querySelectorAll(".fragment");if(n.length>0){t+=h.querySelectorAll(".fragment.visible").length/n.length*.9}}return Math.min(t/(e-1),1)},getIndices:We,getSlides:Ke,getSlidesAttributes:function(){return Ke().map((function(e){for(var t={},n=0;n loading -> loaded) this.state = 'idle'; @@ -58,8 +60,8 @@ export default class Plugins { // Load synchronous scripts scripts.forEach( s => { - if( s.id ) { - this.registerPlugin( s.id, s.plugin ); + if( s.plugin ) { + this.registerPlugin( s.plugin ); scriptLoadedCallback( s ); } else { @@ -104,7 +106,7 @@ export default class Plugins { // If the plugin has an 'init' method, invoke it if( typeof plugin.init === 'function' ) { - let callback = plugin.init(); + let callback = plugin.init( this.Reveal ); // If the plugin returned a Promise, wait for it if( callback && typeof callback.then === 'function' ) { @@ -135,9 +137,9 @@ export default class Plugins { if( this.asyncDependencies.length ) { this.asyncDependencies.forEach( s => { - if( s.id ) { - this.registerPlugin( s.id, s.plugin ); - if( typeof s.plugin.init === 'function' ) s.plugin.init(); + if( s.plugin ) { + this.registerPlugin( s.plugin ); + if( typeof s.plugin.init === 'function' ) s.plugin.init( this.Reveal ); if( typeof s.callback === 'function' ) s.callback(); } else { @@ -157,15 +159,20 @@ export default class Plugins { * before considering itself ready, as long as the plugin * is registered before calling `Reveal.initialize()`. */ - registerPlugin( id, plugin ) { + registerPlugin( plugin ) { - if( this.registeredPlugins[id] === undefined ) { + let id = plugin.id; + + if( typeof id !== 'string' ) { + console.warn( 'reveal.js: plugin.id is not a string' ); + } + else if( this.registeredPlugins[id] === undefined ) { this.registeredPlugins[id] = plugin; // If a plugin is registered after reveal.js is loaded, // initialize it right away if( this.state === 'loaded' && typeof plugin.init === 'function' ) { - plugin.init(); + plugin.init( this.Reveal ); } } else { diff --git a/plugin/highlight/highlight.js b/plugin/highlight/highlight.js index 8d53afd..16561b8 100644 --- a/plugin/highlight/highlight.js +++ b/plugin/highlight/highlight.js @@ -69,14 +69,16 @@ var RevealHighlight = { + id: 'highlight', + HIGHLIGHT_STEP_DELIMITER: '|', HIGHLIGHT_LINE_DELIMITER: ',', HIGHLIGHT_LINE_RANGE_DELIMITER: '-', - init: function() { + init: function( deck ) { // Read the plugin config options and provide fallbacks - var config = Reveal.getConfig().highlight || {}; + var config = deck.getConfig().highlight || {}; config.highlightOnLoad = typeof config.highlightOnLoad === 'boolean' ? config.highlightOnLoad : true; config.escapeHTML = typeof config.escapeHTML === 'boolean' ? config.escapeHTML : true; @@ -105,7 +107,7 @@ // If we're printing to PDF, scroll the code highlights of // all blocks in the deck into view at once - Reveal.on( 'pdf-ready', function() { + deck.on( 'pdf-ready', function() { [].slice.call( document.querySelectorAll( '.reveal pre code[data-line-numbers].current-fragment' ) ).forEach( function( block ) { RevealHighlight.scrollHighlightedLineIntoView( block, {}, true ); } ); @@ -416,7 +418,7 @@ } - Reveal.registerPlugin( 'highlight', RevealHighlight ); + Reveal.registerPlugin( RevealHighlight ); return RevealHighlight; diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index bd4de55..208d545 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -403,14 +403,13 @@ // API var RevealMarkdown = { + id: 'markdown', + /** * Starts processing and converting Markdown within the * current reveal.js deck. - * - * @param {function} callback function to invoke once - * we've finished loading and parsing Markdown */ - init: function( callback ) { + init: function( deck ) { if( typeof marked === 'undefined' ) { throw 'The reveal.js Markdown plugin requires marked to be loaded'; @@ -425,7 +424,7 @@ } // marked can be configured via reveal.js config options - var options = Reveal.getConfig().markdown; + var options = deck.getConfig().markdown; if( options ) { marked.setOptions( options ); } @@ -443,7 +442,7 @@ // Register our plugin so that reveal.js will call our // plugin 'init' method as part of the initialization - Reveal.registerPlugin( 'markdown', RevealMarkdown ); + Reveal.registerPlugin( RevealMarkdown ); return RevealMarkdown; diff --git a/plugin/math/math.js b/plugin/math/math.js index 5bfc1d3..2446f2e 100755 --- a/plugin/math/math.js +++ b/plugin/math/math.js @@ -60,7 +60,9 @@ var RevealMath = window.RevealMath || (function(){ } return { - init: function() { + id: 'math', + + init: function( deck ) { defaults( options, defaultOptions ); defaults( options.tex2jax, defaultOptions.tex2jax ); @@ -73,10 +75,10 @@ var RevealMath = window.RevealMath || (function(){ // Typeset followed by an immediate reveal.js layout since // the typesetting process could affect slide height MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub ] ); - MathJax.Hub.Queue( Reveal.layout ); + MathJax.Hub.Queue( deck.layout ); // Reprocess equations in slides when they turn visible - Reveal.on( 'slidechanged', function( event ) { + deck.on( 'slidechanged', function( event ) { MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] ); @@ -89,4 +91,4 @@ var RevealMath = window.RevealMath || (function(){ })(); -Reveal.registerPlugin( 'math', RevealMath ); +Reveal.registerPlugin( RevealMath ); diff --git a/plugin/notes/notes.js b/plugin/notes/notes.js index 5eefeae..0220961 100644 --- a/plugin/notes/notes.js +++ b/plugin/notes/notes.js @@ -13,6 +13,8 @@ var RevealNotes = (function() { var notesPopup = null; + var deck; + function openNotes( notesFilePath ) { if (notesPopup && !notesPopup.closed) { @@ -46,7 +48,7 @@ var RevealNotes = (function() { namespace: 'reveal-notes', type: 'connect', url: window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search, - state: Reveal.getState() + state: deck.getState() } ), '*' ); }, 500 ); @@ -68,7 +70,7 @@ var RevealNotes = (function() { */ function callRevealApi( methodName, methodArguments, callId ) { - var result = Reveal[methodName].apply( Reveal, methodArguments ); + var result = deck[methodName].apply( deck, methodArguments ); notesPopup.postMessage( JSON.stringify( { namespace: 'reveal-notes', type: 'return', @@ -83,7 +85,7 @@ var RevealNotes = (function() { */ function post( event ) { - var slideElement = Reveal.getCurrentSlide(), + var slideElement = deck.getCurrentSlide(), notesElement = slideElement.querySelector( 'aside.notes' ), fragmentElement = slideElement.querySelector( '.current-fragment' ); @@ -93,7 +95,7 @@ var RevealNotes = (function() { notes: '', markdown: false, whitespace: 'normal', - state: Reveal.getState() + state: deck.getState() }; // Look for notes defined in a slide attribute @@ -134,13 +136,13 @@ var RevealNotes = (function() { function onConnected() { // Monitor events that trigger a change in state - Reveal.on( 'slidechanged', post ); - Reveal.on( 'fragmentshown', post ); - Reveal.on( 'fragmenthidden', post ); - Reveal.on( 'overviewhidden', post ); - Reveal.on( 'overviewshown', post ); - Reveal.on( 'paused', post ); - Reveal.on( 'resumed', post ); + deck.on( 'slidechanged', post ); + deck.on( 'fragmentshown', post ); + deck.on( 'fragmenthidden', post ); + deck.on( 'overviewhidden', post ); + deck.on( 'overviewshown', post ); + deck.on( 'paused', post ); + deck.on( 'resumed', post ); // Post the initial state post(); @@ -152,7 +154,11 @@ var RevealNotes = (function() { } return { - init: function() { + id: 'notes', + + init: function( revealInstance ) { + + deck = revealInstance; if( !/receiver/i.test( window.location.search ) ) { @@ -162,7 +168,7 @@ var RevealNotes = (function() { } // Open the notes when the 's' key is hit - Reveal.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() { + deck.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() { openNotes(); } ); @@ -175,4 +181,4 @@ var RevealNotes = (function() { })(); -Reveal.registerPlugin( 'notes', RevealNotes ); +Reveal.registerPlugin( RevealNotes ); diff --git a/plugin/zoom-js/zoom.js b/plugin/zoom-js/zoom.js index 92c3ba5..4180240 100644 --- a/plugin/zoom-js/zoom.js +++ b/plugin/zoom-js/zoom.js @@ -2,15 +2,17 @@ var RevealZoom = (function(){ return { - init: function() { + id: 'zoom', - Reveal.getRevealElement().addEventListener( 'mousedown', function( event ) { + init: function( reveal ) { + + reveal.getRevealElement().addEventListener( 'mousedown', function( event ) { var defaultModifier = /Linux/.test( window.navigator.platform ) ? 'ctrl' : 'alt'; - var modifier = ( Reveal.getConfig().zoomKey ? Reveal.getConfig().zoomKey : defaultModifier ) + 'Key'; - var zoomLevel = ( Reveal.getConfig().zoomLevel ? Reveal.getConfig().zoomLevel : 2 ); + var modifier = ( reveal.getConfig().zoomKey ? reveal.getConfig().zoomKey : defaultModifier ) + 'Key'; + var zoomLevel = ( reveal.getConfig().zoomLevel ? reveal.getConfig().zoomLevel : 2 ); - if( event[ modifier ] && !Reveal.isOverview() ) { + if( event[ modifier ] && !reveal.isOverview() ) { event.preventDefault(); zoom.to({ @@ -27,7 +29,7 @@ var RevealZoom = (function(){ })(); -Reveal.registerPlugin( 'zoom', RevealZoom ); +Reveal.registerPlugin( RevealZoom ); /*! * zoom.js 0.3 (modified for use with reveal.js) diff --git a/test/test-plugins.html b/test/test-plugins.html index 27ebb1d..99eb91e 100644 --- a/test/test-plugins.html +++ b/test/test-plugins.html @@ -34,15 +34,15 @@ var initCounter = { PluginB: 0, PluginC: 0, PluginD: 0 }; // Plugin with no init method - var PluginA = {}; + var PluginA = { id: 'PluginA' }; // Plugin with init method - var PluginB = { init: function() { + var PluginB = { id: 'PluginB', init: function() { initCounter['PluginB'] += 1; } }; // Async plugin with init method - var PluginC = { init: function() { + var PluginC = { id: 'PluginC', init: function() { return new Promise(function( resolve ) { setTimeout( () => { initCounter['PluginC'] += 1; @@ -52,24 +52,24 @@ } }; // Plugin initialized after reveal.js is ready - var PluginD = { init: function() { + var PluginD = { id: 'PluginD', init: function() { initCounter['PluginD'] += 1; } }; - var PluginE = {}; + var PluginE = { id: 'PluginE' }; var reveal = new Reveal( document.querySelector( '.reveal' ) ); - reveal.registerPlugin( 'PluginA', PluginA ); - reveal.registerPlugin( 'PluginB', PluginB ); - reveal.registerPlugin( 'PluginC', PluginC ); + reveal.registerPlugin( PluginA ); + reveal.registerPlugin( PluginB ); + reveal.registerPlugin( PluginC ); reveal.initialize(); QUnit.test( 'Can initialize synchronously', function( assert ) { assert.strictEqual( initCounter['PluginB'], 1 ); - reveal.registerPlugin( 'PluginB', PluginB ); + reveal.registerPlugin( PluginB ); assert.strictEqual( initCounter['PluginB'], 1, 'prevents duplicate registration' ); }); @@ -84,7 +84,7 @@ assert.strictEqual( initCounter['PluginC'], 1, 'finsihed initializing when reveal.js dispatches "ready"' ); done(); - reveal.registerPlugin( 'PluginD', PluginD ); + reveal.registerPlugin( PluginD ); assert.strictEqual( initCounter['PluginD'], 1, 'plugin registered after reveal.js is ready still initiailizes' ); done(); }); @@ -93,7 +93,7 @@ QUnit.test( 'Can check if plugin is registered', function( assert ) { assert.strictEqual( reveal.hasPlugin( 'PluginA' ), true ); assert.strictEqual( reveal.hasPlugin( 'PluginE' ), false ); - reveal.registerPlugin( 'PluginE', PluginE ); + reveal.registerPlugin( PluginE ); assert.strictEqual( reveal.hasPlugin( 'PluginE' ), true ); } );