add focus controller, manages keyboard focus across multiple embedded decks

This commit is contained in:
Hakim El Hattab committed 2020-05-11 09:15:02 +02:00
1 parent 57107ebe4c
commit 664beff715
6 files changed
+125 -6

No files matched your search

+2 -2
View File
@@ -1,9 +1,9 @@
/*!
* reveal.js 4.0.0-dev (Fri May 08 2020)
* reveal.js 4.0.0-dev (Mon May 11 2020)
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2020 Hakim El Hattab, https://hakim.se
*/
function e(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function t(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function i(i){for(var a=1;a<arguments.length;a++){var s=null!=arguments[a]?arguments[a]:{};a%2?t(Object(s),!0).forEach((function(t){e(i,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(s)):t(Object(s)).forEach((function(e){Object.defineProperty(i,e,Object.getOwnPropertyDescriptor(s,e))}))}return i}var a=/registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/,s=/fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/,n=(e,t)=>{for(var i in t)e[i]=t[i];return e},r=(e,t)=>Array.from(e.querySelectorAll(t)),o=(e,t,i)=>{i?e.classList.add(t):e.classList.remove(t)},l=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},d=(e,t)=>{e.style.transform=t},c=(e,t)=>{for(var i=e.parentNode;i;){var a=i.matches||i.matchesSelector||i.msMatchesSelector;if(a&&a.call(i,t))return i;i=i.parentNode}return null},h=function(e,t,i){for(var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",s=e.querySelectorAll("."+i),n=0;n<s.length;n++){var r=s[n];if(r.parentNode===e)return r}var o=document.createElement(t);return o.className=i,o.innerHTML=a,e.appendChild(o),o},u=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},v=()=>{var e={};for(var t in location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,t=>{e[t.split("=").shift()]=t.split("=").pop()}),e){var i=e[t];e[t]=l(unescape(i))}return void 0!==e.dependencies&&delete e.dependencies,e},g=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e){var i,a=e.style.height;return e.style.height="0px",e.parentNode.style.height="auto",i=t-e.parentNode.offsetHeight,e.style.height=a+"px",e.parentNode.style.removeProperty("height"),i}return t},p=navigator.userAgent,m=document.createElement("div"),f=/(iphone|ipod|ipad|android)/gi.test(p)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,b=/chrome/i.test(p)&&!/edge/i.test(p),y=/android/gi.test(p),w="zoom"in m.style&&!f&&(b||/Version\/[\d\.]+.*Safari/.test(p)),R="function"==typeof window.history.replaceState&&!/PhantomJS/.test(p);class A{constructor(e){this.Reveal=e,this.startEmbeddedIframe=this.startEmbeddedIframe.bind(this)}shouldPreload(e){var t=this.Reveal.getConfig().preloadIframes;return"boolean"!=typeof t&&(t=e.hasAttribute("data-preload")),t}load(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.style.display=this.Reveal.getConfig().display,r(e,"img[data-src], video[data-src], audio[data-src], iframe[data-src]").forEach(e=>{("IFRAME"!==e.tagName||this.shouldPreload(e))&&(e.setAttribute("src",e.getAttribute("data-src")),e.setAttribute("data-lazy-loaded",""),e.removeAttribute("data-src"))}),r(e,"video, audio").forEach(e=>{var t=0;r(e,"source[data-src]").forEach(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,s=e.getAttribute("data-background-iframe");if(!1===i.hasAttribute("data-loaded")){i.setAttribute("data-loaded","true");var n=e.getAttribute("data-background-image"),o=e.getAttribute("data-background-video"),l=e.hasAttribute("data-background-video-loop"),d=e.hasAttribute("data-background-video-muted");if(n)a.style.backgroundImage="url("+encodeURI(n)+")";else if(o&&!this.Reveal.isSpeakerNotes()){var c=document.createElement("video");l&&c.setAttribute("loop",""),d&&(c.muted=!0),f&&(c.muted=!0,c.autoplay=!0,c.setAttribute("playsinline","")),o.split(",").forEach(e=>{c.innerHTML+='<source src="'+e+'">'}),a.appendChild(c)}else if(s&&!0!==t.excludeIframes){var h=document.createElement("iframe");h.setAttribute("allowfullscreen",""),h.setAttribute("mozallowfullscreen",""),h.setAttribute("webkitallowfullscreen",""),h.setAttribute("allow","autoplay"),h.setAttribute("data-src",s),h.style.width="100%",h.style.height="100%",h.style.maxHeight="100%",h.style.maxWidth="100%",a.appendChild(h)}}var u=a.querySelector("iframe[data-src]");u&&this.shouldPreload(i)&&!/autoplay=(1|true|yes)/gi.test(s)&&u.getAttribute("src")!==s&&u.setAttribute("src",s)}}unload(e){e.style.display="none";var t=this.Reveal.getSlideBackground(e);t&&(t.style.display="none",r(t,"iframe[src]").forEach(e=>{e.removeAttribute("src")})),r(e,"video[data-lazy-loaded][src], audio[data-lazy-loaded][src], iframe[data-lazy-loaded][src]").forEach(e=>{e.setAttrLine truncated
function e(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function t(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function i(i){for(var a=1;a<arguments.length;a++){var s=null!=arguments[a]?arguments[a]:{};a%2?t(Object(s),!0).forEach((function(t){e(i,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(s)):t(Object(s)).forEach((function(e){Object.defineProperty(i,e,Object.getOwnPropertyDescriptor(s,e))}))}return i}var a=/registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/,s=/fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/,n=(e,t)=>{for(var i in t)e[i]=t[i];return e},r=(e,t)=>Array.from(e.querySelectorAll(t)),o=(e,t,i)=>{i?e.classList.add(t):e.classList.remove(t)},l=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},d=(e,t)=>{e.style.transform=t},c=(e,t)=>{for(var i=e.parentNode;i;){var a=i.matches||i.matchesSelector||i.msMatchesSelector;if(a&&a.call(i,t))return i;i=i.parentNode}return null},h=function(e,t,i){for(var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",s=e.querySelectorAll("."+i),n=0;n<s.length;n++){var r=s[n];if(r.parentNode===e)return r}var o=document.createElement(t);return o.className=i,o.innerHTML=a,e.appendChild(o),o},u=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},v=()=>{var e={};for(var t in location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,t=>{e[t.split("=").shift()]=t.split("=").pop()}),e){var i=e[t];e[t]=l(unescape(i))}return void 0!==e.dependencies&&delete e.dependencies,e},g=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e){var i,a=e.style.height;return e.style.height="0px",e.parentNode.style.height="auto",i=t-e.parentNode.offsetHeight,e.style.height=a+"px",e.parentNode.style.removeProperty("height"),i}return t},p=navigator.userAgent,m=document.createElement("div"),f=/(iphone|ipod|ipad|android)/gi.test(p)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,b=/chrome/i.test(p)&&!/edge/i.test(p),y=/android/gi.test(p),w="zoom"in m.style&&!f&&(b||/Version\/[\d\.]+.*Safari/.test(p)),R="function"==typeof window.history.replaceState&&!/PhantomJS/.test(p);class A{constructor(e){this.Reveal=e,this.startEmbeddedIframe=this.startEmbeddedIframe.bind(this)}shouldPreload(e){var t=this.Reveal.getConfig().preloadIframes;return"boolean"!=typeof t&&(t=e.hasAttribute("data-preload")),t}load(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.style.display=this.Reveal.getConfig().display,r(e,"img[data-src], video[data-src], audio[data-src], iframe[data-src]").forEach(e=>{("IFRAME"!==e.tagName||this.shouldPreload(e))&&(e.setAttribute("src",e.getAttribute("data-src")),e.setAttribute("data-lazy-loaded",""),e.removeAttribute("data-src"))}),r(e,"video, audio").forEach(e=>{var t=0;r(e,"source[data-src]").forEach(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,s=e.getAttribute("data-background-iframe");if(!1===i.hasAttribute("data-loaded")){i.setAttribute("data-loaded","true");var n=e.getAttribute("data-background-image"),o=e.getAttribute("data-background-video"),l=e.hasAttribute("data-background-video-loop"),d=e.hasAttribute("data-background-video-muted");if(n)a.style.backgroundImage="url("+encodeURI(n)+")";else if(o&&!this.Reveal.isSpeakerNotes()){var c=document.createElement("video");l&&c.setAttribute("loop",""),d&&(c.muted=!0),f&&(c.muted=!0,c.autoplay=!0,c.setAttribute("playsinline","")),o.split(",").forEach(e=>{c.innerHTML+='<source src="'+e+'">'}),a.appendChild(c)}else if(s&&!0!==t.excludeIframes){var h=document.createElement("iframe");h.setAttribute("allowfullscreen",""),h.setAttribute("mozallowfullscreen",""),h.setAttribute("webkitallowfullscreen",""),h.setAttribute("allow","autoplay"),h.setAttribute("data-src",s),h.style.width="100%",h.style.height="100%",h.style.maxHeight="100%",h.style.maxWidth="100%",a.appendChild(h)}}var u=a.querySelector("iframe[data-src]");u&&this.shouldPreload(i)&&!/autoplay=(1|true|yes)/gi.test(s)&&u.getAttribute("src")!==s&&u.setAttribute("src",s)}}unload(e){e.style.display="none";var t=this.Reveal.getSlideBackground(e);t&&(t.style.display="none",r(t,"iframe[src]").forEach(e=>{e.removeAttribute("src")})),r(e,"video[data-lazy-loaded][src], audio[data-lazy-loaded][src], iframe[data-lazy-loaded][src]").forEach(e=>{e.setAttrLine truncated
//# sourceMappingURL=reveal.esm.js.map
+2 -2
View File
@@ -1,9 +1,9 @@
/*!
* reveal.js 4.0.0-dev (Fri May 08 2020)
* reveal.js 4.0.0-dev (Mon May 11 2020)
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2020 Hakim El Hattab, https://hakim.se
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Reveal=t()}(this,(function(){"use strict";function e(t){return(e="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})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function o(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(i);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return l(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}var d=/registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/,u=/fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/,c=function(e,t){for(var i in t)e[i]=t[i];return e},h=function(e,t){return Array.from(e.querySelectorAll(t))},v=function(e,t,i){i?e.classList.add(t):e.classList.remove(t)},g=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},f=function(e,t){e.style.transform=t},p=function(e,t){for(var i=e.parentNode;i;){var n=i.matches||i.matchesSelector||i.msMatchesSelector;if(n&&n.call(i,t))return i;i=i.parentNode}return null},m=function(e,t,i){for(var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",a=e.querySelectorAll("."+i),r=0;r<a.length;r++){var s=a[r];if(s.parentNode===e)return s}var o=document.createElement(t);return o.className=i,o.innerHTML=n,e.appendChild(o),o},y=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},b=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 i=e[t];e[t]=g(unescape(i))}return void 0!==e.dependencies&&delete e.dependencies,e},k=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e){var i,n=e.style.height;return e.style.height="0px",e.parentNode.style.height="auto",i=t-e.parentNode.offsetHeight,e.style.height=n+"px",e.parentNode.style.removeProperty("height"),i}return t},w=navigator.userAgent,A=document.createElement("div"),R=/(iphone|ipod|ipad|android)/gi.test(w)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,E=/chrome/i.test(w)&&!/edge/i.test(w),S=/android/gi.test(w),L="zoom"in A.style&&!R&&(E||/Version\/[\d\.]+.*Safari/.test(w)),x="function"==typeof window.history.replaceState&&!/PhantomJS/.test(w),C=function(){function e(i){t(this,e),this.Reveal=i,this.startEmbeddedIframe=this.startEmbeddedIframe.bind(this)}return n(e,[{key:"shouldPreload",value:function(e){var t=this.Reveal.getConfig().preloadIframes;return"boolean"!=typeof t&&(t=e.hasAttribute("data-preload")),t}},{key:"load",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.style.display=this.Reveal.getConfig().display,h(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"))})),h(e,"video, audio").forEach((function(e){var t=0;h(e,"source[data-src]").forEach((function(e){e.setALine truncated
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Reveal=t()}(this,(function(){"use strict";function e(t){return(e="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})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?s(Object(i),!0).forEach((function(t){a(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):s(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function o(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(i);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return l(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}var d=/registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/,u=/fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/,c=function(e,t){for(var i in t)e[i]=t[i];return e},h=function(e,t){return Array.from(e.querySelectorAll(t))},v=function(e,t,i){i?e.classList.add(t):e.classList.remove(t)},f=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},g=function(e,t){e.style.transform=t},p=function(e,t){for(var i=e.parentNode;i;){var n=i.matches||i.matchesSelector||i.msMatchesSelector;if(n&&n.call(i,t))return i;i=i.parentNode}return null},m=function(e,t,i){for(var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",a=e.querySelectorAll("."+i),s=0;s<a.length;s++){var r=a[s];if(r.parentNode===e)return r}var o=document.createElement(t);return o.className=i,o.innerHTML=n,e.appendChild(o),o},y=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},b=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 i=e[t];e[t]=f(unescape(i))}return void 0!==e.dependencies&&delete e.dependencies,e},k=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e){var i,n=e.style.height;return e.style.height="0px",e.parentNode.style.height="auto",i=t-e.parentNode.offsetHeight,e.style.height=n+"px",e.parentNode.style.removeProperty("height"),i}return t},w=navigator.userAgent,R=document.createElement("div"),A=/(iphone|ipod|ipad|android)/gi.test(w)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,E=/chrome/i.test(w)&&!/edge/i.test(w),S=/android/gi.test(w),L="zoom"in R.style&&!A&&(E||/Version\/[\d\.]+.*Safari/.test(w)),x="function"==typeof window.history.replaceState&&!/PhantomJS/.test(w),C=function(){function e(i){t(this,e),this.Reveal=i,this.startEmbeddedIframe=this.startEmbeddedIframe.bind(this)}return n(e,[{key:"shouldPreload",value:function(e){var t=this.Reveal.getConfig().preloadIframes;return"boolean"!=typeof t&&(t=e.hasAttribute("data-preload")),t}},{key:"load",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.style.display=this.Reveal.getConfig().display,h(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"))})),h(e,"video, audio").forEach((function(e){var t=0;h(e,"source[data-src]").forEach((function(e){e.setALine truncated
//# sourceMappingURL=reveal.js.map
+13 -2
View File
@@ -57,6 +57,15 @@
</div>
</div>
<style>
.reveal {
border: 4px solid #ccc;
}
.reveal.focused {
border-color: #94b5ff;
}
</style>
<script src="../dist/reveal.js"></script>
<script src="../dist/plugin/highlight.js"></script>
<script src="../dist/plugin/markdown.js"></script>
@@ -65,7 +74,8 @@
let deck1 = new Reveal( document.querySelector( '.deck1' ), {
embedded: true,
keyboard: false,
progress: false,
keyboardCondition: 'focused',
plugins: [ RevealHighlight ]
} );
deck1.on( 'slidechanged', () => {
@@ -75,7 +85,8 @@
let deck2 = new Reveal( document.querySelector( '.deck2' ), {
embedded: true,
keyboard: true,
progress: false,
keyboardCondition: 'focused',
plugins: [ RevealMarkdown, RevealMath ]
} );
deck2.initialize().then( () => {
+95
View File
@@ -0,0 +1,95 @@
/**
* Manages focus when a presentation is embedded. This
* helps us only capture keyboard from the presentation
* a user is currently interacting with in a page where
* multiple presentations are embedded.
*/
const STATE_FOCUS = 'focus';
const STATE_BLUR = 'blur';
export default class Focus {
constructor( Reveal ) {
this.Reveal = Reveal;
this.onRevealPointerDown = this.onRevealPointerDown.bind( this );
this.onDocumentPointerDown = this.onDocumentPointerDown.bind( this );
}
/**
* Called when the reveal.js config is updated.
*/
configure( config, oldConfig ) {
if( config.embedded ) {
this.blur();
}
else {
this.focus();
this.unbind();
}
}
bind() {
if( this.Reveal.getConfig().embedded ) {
this.Reveal.getRevealElement().addEventListener( 'pointerdown', this.onRevealPointerDown, false );
}
}
unbind() {
this.Reveal.getRevealElement().removeEventListener( 'pointerdown', this.onRevealPointerDown, false );
document.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false );
}
focus() {
if( this.state !== STATE_FOCUS ) {
this.Reveal.getRevealElement().classList.add( 'focused' );
document.addEventListener( 'pointerdown', this.onDocumentPointerDown, false );
}
this.state = STATE_FOCUS;
}
blur() {
if( this.state !== STATE_BLUR ) {
this.Reveal.getRevealElement().classList.remove( 'focused' );
document.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false );
}
this.state = STATE_BLUR;
}
isFocused() {
return this.state === STATE_FOCUS;
}
onRevealPointerDown( event ) {
this.focus();
}
onDocumentPointerDown( event ) {
let revealElement = event.target.closest( '.reveal' );
if( !revealElement || revealElement !== this.Reveal.getRevealElement() ) {
this.blur();
}
}
}
+6
View File
@@ -151,6 +151,12 @@ export default class Keyboard {
return true;
}
// If keyboardCondition is set, only capture keyboard events
// for embedded decks when they are focused
if( config.keyboardCondition === 'focused' && !this.Reveal.isFocused() ) {
return true;
}
// Shorthand
let keyCode = event.keyCode;
+7
View File
@@ -12,6 +12,7 @@ import Pointer from './controllers/pointer.js'
import Plugins from './controllers/plugins.js'
import Print from './controllers/print.js'
import Touch from './controllers/touch.js'
import Focus from './controllers/focus.js'
import Notes from './controllers/notes.js'
import Playback from './components/playback.js'
import defaultConfig from './config.js'
@@ -111,6 +112,7 @@ export default function( revealElement, options ) {
pointer = new Pointer( Reveal ),
plugins = new Plugins( Reveal ),
print = new Print( Reveal ),
focus = new Focus( Reveal ),
touch = new Touch( Reveal ),
notes = new Notes( Reveal );
@@ -464,6 +466,7 @@ export default function( revealElement, options ) {
}
notes.configure( config, oldConfig );
focus.configure( config, oldConfig );
pointer.configure( config, oldConfig );
controls.configure( config, oldConfig );
progress.configure( config, oldConfig );
@@ -489,6 +492,7 @@ export default function( revealElement, options ) {
if( config.progress ) progress.bind();
if( config.respondToHashChanges ) location.bind();
controls.bind();
focus.bind();
dom.slides.addEventListener( 'transitionend', onTransitionEnd, false );
dom.pauseOverlay.addEventListener( 'click', resume, false );
@@ -507,6 +511,7 @@ export default function( revealElement, options ) {
eventsAreBound = false;
touch.unbind();
focus.unbind();
keyboard.unbind();
controls.unbind();
progress.unbind();
@@ -2438,6 +2443,7 @@ export default function( revealElement, options ) {
isAutoSliding,
isSpeakerNotes: notes.isSpeakerNotesWindow.bind( notes ),
isOverview: overview.isActive.bind( overview ),
isFocused: focus.isFocused.bind( focus ),
isPrintingPDF: print.isPrintingPDF.bind( print ),
// Checks if reveal.js has been loaded and is ready for use
@@ -2548,6 +2554,7 @@ export default function( revealElement, options ) {
// Controllers
print,
focus,
progress,
controls,
location,