tweak plugin initialization to enable multi-instance plugins
This commit is contained in:
parent
7e72b10fa5
commit
e58502b3fb
26
README.md
26
README.md
|
@ -173,17 +173,33 @@ If you want to run multiple presentations side-by-side on the same page you can
|
||||||
```html
|
```html
|
||||||
<div class="reveal deck-1">...</div>
|
<div class="reveal deck-1">...</div>
|
||||||
<div class="reveal deck-2">...</div>
|
<div class="reveal deck-2">...</div>
|
||||||
<script type="module">
|
<script src="dist/reveal.es5.js"></script>
|
||||||
import Deck from 'js/reveal.js';
|
<script>
|
||||||
|
let deck1 = new Reveal( document.querySelector( 'deck-1' ), { embedded: true } );
|
||||||
let deck1 = new Deck( document.querySelector( 'deck-1' ), { embedded: true } );
|
let deck2 = new Reveal( document.querySelector( 'deck-2' ), { embedded: true } );
|
||||||
let deck2 = new Deck( document.querySelector( 'deck-2' ), { embedded: true } );
|
|
||||||
|
|
||||||
deck1.initialize();
|
deck1.initialize();
|
||||||
deck2.initialize();
|
deck2.initialize();
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### ES Module
|
||||||
|
|
||||||
|
We provide two JavaScript bundles; `/dist/reveal.es5.js` with support for legacy browers and `/dist/reveal.js` which targets modern browsers with ES6 support.
|
||||||
|
|
||||||
|
Here's how to import and initialize the ES module version of reveal.js, including the Markdown plugin:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script type="module">
|
||||||
|
import Reveal from '/dist/reveal.js';
|
||||||
|
import markdown from '/plugin/markdown/markdown.js';
|
||||||
|
Reveal.initialize({
|
||||||
|
keyboard: true,
|
||||||
|
plugins: [ markdown() ]
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
At the end of your page you need to initialize reveal by running the following code. Note that all configuration values are optional and will default to the values specified below.
|
At the end of your page you need to initialize reveal by running the following code. Note that all configuration values are optional and will default to the values specified below.
|
||||||
|
|
12
demo.html
12
demo.html
|
@ -413,11 +413,11 @@ Reveal.on( 'customevent', function() {
|
||||||
<script type="module">
|
<script type="module">
|
||||||
|
|
||||||
import Reveal from '/dist/reveal.js';
|
import Reveal from '/dist/reveal.js';
|
||||||
import Zoom from '/plugin/zoom/zoom.js';
|
import zoom from '/plugin/zoom/zoom.js';
|
||||||
import Notes from '/plugin/notes/notes.js';
|
import notes from '/plugin/notes/notes.js';
|
||||||
import Search from '/plugin/search/search.js';
|
import search from '/plugin/search/search.js';
|
||||||
import Markdown from '/plugin/markdown/markdown.js';
|
import markdown from '/plugin/markdown/markdown.js';
|
||||||
import Highlight from '/plugin/highlight/highlight.js';
|
import highlight from '/plugin/highlight/highlight.js';
|
||||||
|
|
||||||
// More info https://github.com/hakimel/reveal.js#configuration
|
// More info https://github.com/hakimel/reveal.js#configuration
|
||||||
Reveal.initialize({
|
Reveal.initialize({
|
||||||
|
@ -429,7 +429,7 @@ Reveal.on( 'customevent', function() {
|
||||||
transition: 'slide', // none/fade/slide/convex/concave/zoom
|
transition: 'slide', // none/fade/slide/convex/concave/zoom
|
||||||
|
|
||||||
// More info https://github.com/hakimel/reveal.js#dependencies
|
// More info https://github.com/hakimel/reveal.js#dependencies
|
||||||
plugins: [ Zoom, Notes, Search, Markdown, Highlight ]
|
plugins: [ zoom(), notes(), search(), markdown(), highlight() ]
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealMath=t()}(this,(function(){"use strict";return function(){var e=Reveal.getConfig().math||{},t=(e.mathjax||"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js")+"?config="+(e.config||"TeX-AMS_HTML-full"),a={messageStyle:"none",tex2jax:{inlineMath:[["$","$"],["\\(","\\)"]],skipTags:["script","noscript","style","textarea","pre"]},skipStartupTypeset:!0};function n(e,t){for(var a in t)e.hasOwnProperty(a)||(e[a]=t[a])}return{id:"math",init:function(o){n(e,a),n(e.tex2jax,a.tex2jax),e.mathjax=e.config=null,function(e,t){var a=document.querySelector("head"),n=document.createElement("script");n.type="text/javascript",n.src=e;var o=function(){"function"==typeof t&&(t.call(),t=null)};n.onload=o,n.onreadystatechange=function(){"loaded"===this.readyState&&o()},a.appendChild(n)}(t,(function(){MathJax.Hub.Config(e),MathJax.Hub.Queue(["Typeset",MathJax.Hub]),MathJax.Hub.Queue(o.layout),o.on("slidechanged",(function(e){MathJax.Hub.Queue(["Typeset",MathJax.Hub,e.currentSlide])}))}))}}}()}));
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealMath=t()}(this,(function(){"use strict";var e=function(){var e=Reveal.getConfig().math||{},t=(e.mathjax||"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js")+"?config="+(e.config||"TeX-AMS_HTML-full"),n={messageStyle:"none",tex2jax:{inlineMath:[["$","$"],["\\(","\\)"]],skipTags:["script","noscript","style","textarea","pre"]},skipStartupTypeset:!0};function a(e,t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}return{id:"math",init:function(o){a(e,n),a(e.tex2jax,n.tex2jax),e.mathjax=e.config=null,function(e,t){var n=document.querySelector("head"),a=document.createElement("script");a.type="text/javascript",a.src=e;var o=function(){"function"==typeof t&&(t.call(),t=null)};a.onload=o,a.onreadystatechange=function(){"loaded"===this.readyState&&o()},n.appendChild(a)}(t,(function(){MathJax.Hub.Config(e),MathJax.Hub.Queue(["Typeset",MathJax.Hub]),MathJax.Hub.Queue(o.layout),o.on("slidechanged",(function(e){MathJax.Hub.Queue(["Typeset",MathJax.Hub,e.currentSlide])}))}))}}}();return function(){return e}}));
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealNotes=t()}(this,(function(){"use strict";return function(){var e,t=null;function n(n){var o;!t||t.closed?(n||(n="plugin/notes/notes.html"),(t=window.open(n,"reveal.js - Notes","width=1100,height=700"))?(o=setInterval((function(){t.postMessage(JSON.stringify({namespace:"reveal-notes",type:"connect",url:window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,state:e.getState()}),"*")}),500),window.addEventListener("message",(function(n){var s,r,i,d,l=JSON.parse(n.data);l&&"reveal-notes"===l.namespace&&"connected"===l.type&&(clearInterval(o),e.on("slidechanged",a),e.on("fragmentshown",a),e.on("fragmenthidden",a),e.on("overviewhidden",a),e.on("overviewshown",a),e.on("paused",a),e.on("resumed",a),a()),l&&"reveal-notes"===l.namespace&&"call"===l.type&&(s=l.methodName,r=l.arguments,i=l.callId,d=e[s].apply(e,r),t.postMessage(JSON.stringify({namespace:"reveal-notes",type:"return",result:d,callId:i}),"*"))}))):alert("Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.")):t.focus();function a(n){var o=e.getCurrentSlide(),a=o.querySelector("aside.notes"),s=o.querySelector(".current-fragment"),r={namespace:"reveal-notes",type:"state",notes:"",markdown:!1,whitespace:"normal",state:e.getState()};if(o.hasAttribute("data-notes")&&(r.notes=o.getAttribute("data-notes"),r.whitespace="pre-wrap"),s){var i=s.querySelector("aside.notes");i?a=i:s.hasAttribute("data-notes")&&(r.notes=s.getAttribute("data-notes"),r.whitespace="pre-wrap",a=null)}a&&(r.notes=a.innerHTML,r.markdown="string"==typeof a.getAttribute("data-markdown")),t.postMessage(JSON.stringify(r),"*")}}return{id:"notes",init:function(t){e=t,/receiver/i.test(window.location.search)||(null!==window.location.search.match(/(\?|\&)notes/gi)&&n(),e.addKeyBinding({keyCode:83,key:"S",description:"Speaker notes view"},(function(){n()})))},open:n}}()}));
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealNotes=t()}(this,(function(){"use strict";var e=function(){var e,t=null;function n(n){var o;!t||t.closed?(n||(n="plugin/notes/notes.html"),(t=window.open(n,"reveal.js - Notes","width=1100,height=700"))?(o=setInterval((function(){t.postMessage(JSON.stringify({namespace:"reveal-notes",type:"connect",url:window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,state:e.getState()}),"*")}),500),window.addEventListener("message",(function(n){var s,r,i,d,c=JSON.parse(n.data);c&&"reveal-notes"===c.namespace&&"connected"===c.type&&(clearInterval(o),e.on("slidechanged",a),e.on("fragmentshown",a),e.on("fragmenthidden",a),e.on("overviewhidden",a),e.on("overviewshown",a),e.on("paused",a),e.on("resumed",a),a()),c&&"reveal-notes"===c.namespace&&"call"===c.type&&(s=c.methodName,r=c.arguments,i=c.callId,d=e[s].apply(e,r),t.postMessage(JSON.stringify({namespace:"reveal-notes",type:"return",result:d,callId:i}),"*"))}))):alert("Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.")):t.focus();function a(n){var o=e.getCurrentSlide(),a=o.querySelector("aside.notes"),s=o.querySelector(".current-fragment"),r={namespace:"reveal-notes",type:"state",notes:"",markdown:!1,whitespace:"normal",state:e.getState()};if(o.hasAttribute("data-notes")&&(r.notes=o.getAttribute("data-notes"),r.whitespace="pre-wrap"),s){var i=s.querySelector("aside.notes");i?a=i:s.hasAttribute("data-notes")&&(r.notes=s.getAttribute("data-notes"),r.whitespace="pre-wrap",a=null)}a&&(r.notes=a.innerHTML,r.markdown="string"==typeof a.getAttribute("data-markdown")),t.postMessage(JSON.stringify(r),"*")}}return{id:"notes",init:function(t){e=t,/receiver/i.test(window.location.search)||(null!==window.location.search.match(/(\?|\&)notes/gi)&&n(),e.addKeyBinding({keyCode:83,key:"S",description:"Speaker notes view"},(function(){n()})))},open:n}}();return function(){return e}}));
|
||||||
|
|
|
@ -4,4 +4,4 @@
|
||||||
* by navigatating to that slide and highlighting it.
|
* by navigatating to that slide and highlighting it.
|
||||||
*
|
*
|
||||||
* By Jon Snyder <snyder.jon@gmail.com>, February 2013
|
* By Jon Snyder <snyder.jon@gmail.com>, February 2013
|
||||||
*/return function(){var e,t,n,i;function r(e,t){var n=document.getElementById(e)||document.body,i=t||"EM",r=new RegExp("^(?:"+i+"|SCRIPT|FORM)$"),o=["#ff6","#a0ffff","#9f9","#f99","#f6f"],d=[],l=0,a="",s=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),a=new RegExp("("+e+")","i")},this.getRegex=function(){return a.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(e){if(null!=e&&e&&a&&!r.test(e.nodeName)){if(e.hasChildNodes())for(var t=0;t<e.childNodes.length;t++)this.hiliteWords(e.childNodes[t]);if(3==e.nodeType&&(nv=e.nodeValue)&&(regs=a.exec(nv))){for(var n=e;null!=n&&"SECTION"!=n.nodeName;)n=n.parentNode;var c=Reveal.getIndices(n),u=s.length,h=!1;for(t=0;t<u;t++)s[t].h===c.h&&s[t].v===c.v&&(h=!0);h||s.push(c),d[regs[0].toLowerCase()]||(d[regs[0].toLowerCase()]=o[l++%o.length]);var p=document.createElement(i);p.appendChild(document.createTextNode(regs[0])),p.style.backgroundColor=d[regs[0].toLowerCase()],p.style.fontStyle="inherit",p.style.color="#000";var f=e.splitText(regs.index);f.nodeValue=f.nodeValue.substring(regs[0].length),e.parentNode.insertBefore(p,f)}}},this.remove=function(){for(var e=document.getElementsByTagName(i);e.length&&(el=e[0]);)el.parentNode.replaceChild(el.firstChild,el)},this.apply=function(e){if(null!=e&&e)return this.remove(),this.setRegex(e),this.hiliteWords(n),s}}function o(){var e=document.getElementById("searchinputdiv"),t=document.getElementById("searchinput");e.style.display="inline",t.focus(),t.select()}function d(){document.getElementById("searchinputdiv").style.display="none",i&&i.remove()}function l(){if(n){var o=document.getElementById("searchinput").value;""===o?(i&&i.remove(),e=null):(i=new r("slidecontent"),e=i.apply(o),t=0)}e&&(e.length&&e.length<=t&&(t=0),e.length>t&&(Reveal.slide(e[t].h,e[t].v),t++))}var a={};if(a.wrapper=document.querySelector(".reveal"),!a.wrapper.querySelector(".searchbox")){var s=document.createElement("div");s.id="searchinputdiv",s.classList.add("searchdiv"),s.style.position="absolute",s.style.top="10px",s.style.right="10px",s.style.zIndex=10,s.innerHTML='<span><input type="search" id="searchinput" class="searchinput" style="vertical-align: top;"/><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJiSURBVHjatFZNaxNBGH5md+Mmu92NVdKDRipSAyqCghgQD4L4cRe86UUtAQ+eFCxoa4/25EXBFi8eBE+eRPoDhB6KgiiixdAPCEkx2pjvTXadd9yNsflwuyUDD/O+u8PzzDPvzOwyx3EwyCZhwG3gAkp7MnpjgbopjsltcD4gjuXZZKeAR348MYLYTm3LzOs/y3j3JTfZxgXWXmTuwPHIc4VmoOmv5IrI53+AO2DdHLjkDWQ3GoEEVFXtXQOvkSnPWcyUceviLhwbDYv8/XIVj97kse7TodLvZXxYxrPUHkQ1ufXs3FEdybEIxucySOesoNvUgWU1cP3MkCBfTFdw9fGaAMVmRELq7LBw2Q3/FaAxxWIRpw+ZIr/7IouPqzUBiqmdHAv7EuhRAwf1er2Vy4x1jW3b2d5Jfvu5IPp7l2LYbcgCFFNb+FoJ7oBqEAqFMPNqFcmEgVMJDfMT+1tvN0pNjERlMS6QA5pFOKxiKVPFhakPeL3It+WGJUDxt2wFR+JhzI7v5ctkd8DXOZAkCYYxhO+lKm4+Xfqz/rIixBuNBl7eOYzkQQNzqX249mRl6zUgEcYkaJrGhUwBinVdh6IouPzwE6/DL5w4oLkH8y981aDf+uq6hlKpJESiUdNfDZi7/ehG9K6KfiA3pml0PLcsq+cSMTj2NL9ukc4UOmz7AZ3+crkC4mHujFvXNaMFB3bEr8xPS6p5O+jXxq4VZtaen7/PwzrntjcLUE0iHPS1Ud1cdiEJl/8WivZk0wXd7zWOMkeF8s0CcAmkNrC2nvXZDbbbN73ccYnZoH9bfgswAFzAe9/h3dbKAAAAAElFTkSuQmCC" id="searchbutton" class="searchicon" style="vertical-align: top; margin-top: -1px;"/></span>',a.wrapper.appendChild(s)}return document.getElementById("searchbutton").addEventListener("click",(function(e){l()}),!1),document.getElementById("searchinput").addEventListener("keyup",(function(e){switch(e.keyCode){case 13:e.preventDefault(),l(),n=!1;break;default:n=!0}}),!1),document.addEventListener("keydown",(function(e){"F"==e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),"inline"!==document.getElementById("searchinputdiv").style.display?o():d())}),!1),d(),{id:"search",init:function(e){e.registerKeyboardShortcut("CTRL + Shift + F","Search")},open:o}}()}));
|
*/var e=function(){var e,t,n,i;function r(e,t){var n=document.getElementById(e)||document.body,i=t||"EM",r=new RegExp("^(?:"+i+"|SCRIPT|FORM)$"),o=["#ff6","#a0ffff","#9f9","#f99","#f6f"],d=[],l=0,a="",c=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),a=new RegExp("("+e+")","i")},this.getRegex=function(){return a.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(e){if(null!=e&&e&&a&&!r.test(e.nodeName)){if(e.hasChildNodes())for(var t=0;t<e.childNodes.length;t++)this.hiliteWords(e.childNodes[t]);if(3==e.nodeType&&(nv=e.nodeValue)&&(regs=a.exec(nv))){for(var n=e;null!=n&&"SECTION"!=n.nodeName;)n=n.parentNode;var s=Reveal.getIndices(n),u=c.length,h=!1;for(t=0;t<u;t++)c[t].h===s.h&&c[t].v===s.v&&(h=!0);h||c.push(s),d[regs[0].toLowerCase()]||(d[regs[0].toLowerCase()]=o[l++%o.length]);var p=document.createElement(i);p.appendChild(document.createTextNode(regs[0])),p.style.backgroundColor=d[regs[0].toLowerCase()],p.style.fontStyle="inherit",p.style.color="#000";var f=e.splitText(regs.index);f.nodeValue=f.nodeValue.substring(regs[0].length),e.parentNode.insertBefore(p,f)}}},this.remove=function(){for(var e=document.getElementsByTagName(i);e.length&&(el=e[0]);)el.parentNode.replaceChild(el.firstChild,el)},this.apply=function(e){if(null!=e&&e)return this.remove(),this.setRegex(e),this.hiliteWords(n),c}}function o(){var e=document.getElementById("searchinputdiv"),t=document.getElementById("searchinput");e.style.display="inline",t.focus(),t.select()}function d(){document.getElementById("searchinputdiv").style.display="none",i&&i.remove()}function l(){if(n){var o=document.getElementById("searchinput").value;""===o?(i&&i.remove(),e=null):(i=new r("slidecontent"),e=i.apply(o),t=0)}e&&(e.length&&e.length<=t&&(t=0),e.length>t&&(Reveal.slide(e[t].h,e[t].v),t++))}var a={};if(a.wrapper=document.querySelector(".reveal"),!a.wrapper.querySelector(".searchbox")){var c=document.createElement("div");c.id="searchinputdiv",c.classList.add("searchdiv"),c.style.position="absolute",c.style.top="10px",c.style.right="10px",c.style.zIndex=10,c.innerHTML='<span><input type="search" id="searchinput" class="searchinput" style="vertical-align: top;"/><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJiSURBVHjatFZNaxNBGH5md+Mmu92NVdKDRipSAyqCghgQD4L4cRe86UUtAQ+eFCxoa4/25EXBFi8eBE+eRPoDhB6KgiiixdAPCEkx2pjvTXadd9yNsflwuyUDD/O+u8PzzDPvzOwyx3EwyCZhwG3gAkp7MnpjgbopjsltcD4gjuXZZKeAR348MYLYTm3LzOs/y3j3JTfZxgXWXmTuwPHIc4VmoOmv5IrI53+AO2DdHLjkDWQ3GoEEVFXtXQOvkSnPWcyUceviLhwbDYv8/XIVj97kse7TodLvZXxYxrPUHkQ1ufXs3FEdybEIxucySOesoNvUgWU1cP3MkCBfTFdw9fGaAMVmRELq7LBw2Q3/FaAxxWIRpw+ZIr/7IouPqzUBiqmdHAv7EuhRAwf1er2Vy4x1jW3b2d5Jfvu5IPp7l2LYbcgCFFNb+FoJ7oBqEAqFMPNqFcmEgVMJDfMT+1tvN0pNjERlMS6QA5pFOKxiKVPFhakPeL3It+WGJUDxt2wFR+JhzI7v5ctkd8DXOZAkCYYxhO+lKm4+Xfqz/rIixBuNBl7eOYzkQQNzqX249mRl6zUgEcYkaJrGhUwBinVdh6IouPzwE6/DL5w4oLkH8y981aDf+uq6hlKpJESiUdNfDZi7/ehG9K6KfiA3pml0PLcsq+cSMTj2NL9ukc4UOmz7AZ3+crkC4mHujFvXNaMFB3bEr8xPS6p5O+jXxq4VZtaen7/PwzrntjcLUE0iHPS1Ud1cdiEJl/8WivZk0wXd7zWOMkeF8s0CcAmkNrC2nvXZDbbbN73ccYnZoH9bfgswAFzAe9/h3dbKAAAAAElFTkSuQmCC" id="searchbutton" class="searchicon" style="vertical-align: top; margin-top: -1px;"/></span>',a.wrapper.appendChild(c)}return document.getElementById("searchbutton").addEventListener("click",(function(e){l()}),!1),document.getElementById("searchinput").addEventListener("keyup",(function(e){switch(e.keyCode){case 13:e.preventDefault(),l(),n=!1;break;default:n=!0}}),!1),document.addEventListener("keydown",(function(e){"F"==e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),"inline"!==document.getElementById("searchinputdiv").style.display?o():d())}),!1),d(),{id:"search",init:function(e){e.registerKeyboardShortcut("CTRL + Shift + F","Search")},open:o}}();return function(){return e}}));
|
||||||
|
|
|
@ -1,11 +1,4 @@
|
||||||
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e=e||self).RevealZoom=o()}(this,(function(){"use strict";
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealZoom=t()}(this,(function(){"use strict";
|
||||||
/*!
|
/*!
|
||||||
* reveal.js Zoom plugin
|
* reveal.js Zoom plugin
|
||||||
*/var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(t){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;t[i]&&!e.isOverview()&&(t.preventDefault(),o.to({x:t.clientX,y:t.clientY,scale:d,pan:!1}))}))}},o=function(){var e=1,t=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(o,t){var n=y();if(o.width=o.width||1,o.height=o.height||1,o.x-=(window.innerWidth-o.width*t)/2,o.y-=(window.innerHeight-o.height*t)/2,s)if(1===t)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-o.x+"px,"+-o.y+"px) scale("+t+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===t?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+o.x)/t+"px",document.body.style.top=-(n.y+o.y)/t+"px",document.body.style.width=100*t+"%",document.body.style.height=100*t+"%",document.body.style.zoom=t);e=t,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var o=.12*window.innerWidth,i=.12*window.innerHeight,d=y();n<i?window.scroll(d.x,d.y-14/e*(1-n/i)):n>window.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),t<o?window.scroll(d.x-14/e*(1-t/o),d.y):t>window.innerWidth-o&&window.scroll(d.x+(1-(window.innerWidth-t)/o)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(t){1!==e&&27===t.keyCode&&o.out()})),document.addEventListener("mousemove",(function(o){1!==e&&(t=o.clientX,n=o.clientY)})),{to:function(t){if(1!==e)o.out();else{if(t.x=t.x||0,t.y=t.y||0,t.element){var n=t.element.getBoundingClientRect();t.x=n.left-20,t.y=n.top-20,t.width=n.width+40,t.height=n.height+40}void 0!==t.width&&void 0!==t.height&&(t.scale=Math.max(Math.min(window.innerWidth/t.width,window.innerHeight/t.height),1)),t.scale>1&&(t.x*=t.scale,t.y*=t.scale,r(t,t.scale),!1!==t.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();
|
*/var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();n<i?window.scroll(d.x,d.y-14/e*(1-n/i)):n>window.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),o<t?window.scroll(d.x-14/e*(1-o/t),d.y):o>window.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}}));
|
||||||
/*!
|
|
||||||
* zoom.js 0.3 (modified for use with reveal.js)
|
|
||||||
* http://lab.hakim.se/zoom-js
|
|
||||||
* MIT licensed
|
|
||||||
*
|
|
||||||
* Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
|
|
||||||
*/return e}));
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -31,7 +31,7 @@
|
||||||
// - https://github.com/hakimel/reveal.js#dependencies
|
// - https://github.com/hakimel/reveal.js#dependencies
|
||||||
Reveal.initialize({
|
Reveal.initialize({
|
||||||
hash: true,
|
hash: true,
|
||||||
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
|
plugins: [ RevealMarkdown(), RevealHighlight(), RevealNotes() ]
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -56,7 +56,7 @@ export default class Plugins {
|
||||||
scriptsToLoad = scripts.length;
|
scriptsToLoad = scripts.length;
|
||||||
|
|
||||||
const scriptLoadedCallback = (s) => {
|
const scriptLoadedCallback = (s) => {
|
||||||
if( typeof s.callback === 'function' ) s.callback();
|
if( s && typeof s.callback === 'function' ) s.callback();
|
||||||
|
|
||||||
if( --scriptsToLoad === 0 ) {
|
if( --scriptsToLoad === 0 ) {
|
||||||
this.initPlugins().then( resolve );
|
this.initPlugins().then( resolve );
|
||||||
|
@ -69,9 +69,13 @@ export default class Plugins {
|
||||||
this.registerPlugin( s );
|
this.registerPlugin( s );
|
||||||
scriptLoadedCallback( s );
|
scriptLoadedCallback( s );
|
||||||
}
|
}
|
||||||
else {
|
else if( typeof s.src === 'string' ) {
|
||||||
loadScript( s.src, () => scriptLoadedCallback(s) );
|
loadScript( s.src, () => scriptLoadedCallback(s) );
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
console.warn( 'Unrecognized plugin format', s );
|
||||||
|
scriptLoadedCallback();
|
||||||
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -5,54 +5,7 @@ import './highlight-line-numbers.js'
|
||||||
* reveal.js plugin that adds syntax highlight support.
|
* reveal.js plugin that adds syntax highlight support.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Function to perform a better "data-trim" on code snippets
|
let Plugin = {
|
||||||
// Will slice an indentation amount on each line of the snippet (amount based on the line having the lowest indentation length)
|
|
||||||
function betterTrim(snippetEl) {
|
|
||||||
// Helper functions
|
|
||||||
function trimLeft(val) {
|
|
||||||
// Adapted from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill
|
|
||||||
return val.replace(/^[\s\uFEFF\xA0]+/g, '');
|
|
||||||
}
|
|
||||||
function trimLineBreaks(input) {
|
|
||||||
var lines = input.split('\n');
|
|
||||||
|
|
||||||
// Trim line-breaks from the beginning
|
|
||||||
for (var i = 0; i < lines.length; i++) {
|
|
||||||
if (lines[i].trim() === '') {
|
|
||||||
lines.splice(i--, 1);
|
|
||||||
} else break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trim line-breaks from the end
|
|
||||||
for (var i = lines.length-1; i >= 0; i--) {
|
|
||||||
if (lines[i].trim() === '') {
|
|
||||||
lines.splice(i, 1);
|
|
||||||
} else break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return lines.join('\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Main function for betterTrim()
|
|
||||||
return (function(snippetEl) {
|
|
||||||
var content = trimLineBreaks(snippetEl.innerHTML);
|
|
||||||
var lines = content.split('\n');
|
|
||||||
// Calculate the minimum amount to remove on each line start of the snippet (can be 0)
|
|
||||||
var pad = lines.reduce(function(acc, line) {
|
|
||||||
if (line.length > 0 && trimLeft(line).length > 0 && acc > line.length - trimLeft(line).length) {
|
|
||||||
return line.length - trimLeft(line).length;
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, Number.POSITIVE_INFINITY);
|
|
||||||
// Slice each line with this amount
|
|
||||||
return lines.map(function(line, index) {
|
|
||||||
return line.slice(pad);
|
|
||||||
})
|
|
||||||
.join('\n');
|
|
||||||
})(snippetEl);
|
|
||||||
}
|
|
||||||
|
|
||||||
var RevealHighlight = {
|
|
||||||
|
|
||||||
id: 'highlight',
|
id: 'highlight',
|
||||||
|
|
||||||
|
@ -85,7 +38,7 @@ var RevealHighlight = {
|
||||||
}, false );
|
}, false );
|
||||||
|
|
||||||
if( config.highlightOnLoad ) {
|
if( config.highlightOnLoad ) {
|
||||||
RevealHighlight.highlightBlock( block );
|
Plugin.highlightBlock( block );
|
||||||
}
|
}
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
@ -94,7 +47,7 @@ var RevealHighlight = {
|
||||||
// all blocks in the deck into view at once
|
// all blocks in the deck into view at once
|
||||||
deck.on( 'pdf-ready', function() {
|
deck.on( 'pdf-ready', function() {
|
||||||
[].slice.call( document.querySelectorAll( '.reveal pre code[data-line-numbers].current-fragment' ) ).forEach( function( block ) {
|
[].slice.call( document.querySelectorAll( '.reveal pre code[data-line-numbers].current-fragment' ) ).forEach( function( block ) {
|
||||||
RevealHighlight.scrollHighlightedLineIntoView( block, {}, true );
|
Plugin.scrollHighlightedLineIntoView( block, {}, true );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
@ -122,7 +75,7 @@ var RevealHighlight = {
|
||||||
|
|
||||||
// If there is at least one highlight step, generate
|
// If there is at least one highlight step, generate
|
||||||
// fragments
|
// fragments
|
||||||
var highlightSteps = RevealHighlight.deserializeHighlightSteps( block.getAttribute( 'data-line-numbers' ) );
|
var highlightSteps = Plugin.deserializeHighlightSteps( block.getAttribute( 'data-line-numbers' ) );
|
||||||
if( highlightSteps.length > 1 ) {
|
if( highlightSteps.length > 1 ) {
|
||||||
|
|
||||||
// If the original code block has a fragment-index,
|
// If the original code block has a fragment-index,
|
||||||
|
@ -137,10 +90,10 @@ var RevealHighlight = {
|
||||||
highlightSteps.slice(1).forEach( function( highlight ) {
|
highlightSteps.slice(1).forEach( function( highlight ) {
|
||||||
|
|
||||||
var fragmentBlock = block.cloneNode( true );
|
var fragmentBlock = block.cloneNode( true );
|
||||||
fragmentBlock.setAttribute( 'data-line-numbers', RevealHighlight.serializeHighlightSteps( [ highlight ] ) );
|
fragmentBlock.setAttribute( 'data-line-numbers', Plugin.serializeHighlightSteps( [ highlight ] ) );
|
||||||
fragmentBlock.classList.add( 'fragment' );
|
fragmentBlock.classList.add( 'fragment' );
|
||||||
block.parentNode.appendChild( fragmentBlock );
|
block.parentNode.appendChild( fragmentBlock );
|
||||||
RevealHighlight.highlightLines( fragmentBlock );
|
Plugin.highlightLines( fragmentBlock );
|
||||||
|
|
||||||
if( typeof fragmentIndex === 'number' ) {
|
if( typeof fragmentIndex === 'number' ) {
|
||||||
fragmentBlock.setAttribute( 'data-fragment-index', fragmentIndex );
|
fragmentBlock.setAttribute( 'data-fragment-index', fragmentIndex );
|
||||||
|
@ -151,13 +104,13 @@ var RevealHighlight = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scroll highlights into view as we step through them
|
// Scroll highlights into view as we step through them
|
||||||
fragmentBlock.addEventListener( 'visible', RevealHighlight.scrollHighlightedLineIntoView.bind( RevealHighlight, fragmentBlock, scrollState ) );
|
fragmentBlock.addEventListener( 'visible', Plugin.scrollHighlightedLineIntoView.bind( Plugin, fragmentBlock, scrollState ) );
|
||||||
fragmentBlock.addEventListener( 'hidden', RevealHighlight.scrollHighlightedLineIntoView.bind( RevealHighlight, fragmentBlock.previousSibling, scrollState ) );
|
fragmentBlock.addEventListener( 'hidden', Plugin.scrollHighlightedLineIntoView.bind( Plugin, fragmentBlock.previousSibling, scrollState ) );
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
||||||
block.removeAttribute( 'data-fragment-index' )
|
block.removeAttribute( 'data-fragment-index' )
|
||||||
block.setAttribute( 'data-line-numbers', RevealHighlight.serializeHighlightSteps( [ highlightSteps[0] ] ) );
|
block.setAttribute( 'data-line-numbers', Plugin.serializeHighlightSteps( [ highlightSteps[0] ] ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,13 +120,13 @@ var RevealHighlight = {
|
||||||
var slide = typeof block.closest === 'function' ? block.closest( 'section:not(.stack)' ) : null;
|
var slide = typeof block.closest === 'function' ? block.closest( 'section:not(.stack)' ) : null;
|
||||||
if( slide ) {
|
if( slide ) {
|
||||||
var scrollFirstHighlightIntoView = function() {
|
var scrollFirstHighlightIntoView = function() {
|
||||||
RevealHighlight.scrollHighlightedLineIntoView( block, scrollState, true );
|
Plugin.scrollHighlightedLineIntoView( block, scrollState, true );
|
||||||
slide.removeEventListener( 'visible', scrollFirstHighlightIntoView );
|
slide.removeEventListener( 'visible', scrollFirstHighlightIntoView );
|
||||||
}
|
}
|
||||||
slide.addEventListener( 'visible', scrollFirstHighlightIntoView );
|
slide.addEventListener( 'visible', scrollFirstHighlightIntoView );
|
||||||
}
|
}
|
||||||
|
|
||||||
RevealHighlight.highlightLines( block );
|
Plugin.highlightLines( block );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +182,7 @@ var RevealHighlight = {
|
||||||
time = Math.min( time + 0.02, 1 );
|
time = Math.min( time + 0.02, 1 );
|
||||||
|
|
||||||
// Update our eased scroll position
|
// Update our eased scroll position
|
||||||
block.scrollTop = startTop + ( targetTop - startTop ) * RevealHighlight.easeInOutQuart( time );
|
block.scrollTop = startTop + ( targetTop - startTop ) * Plugin.easeInOutQuart( time );
|
||||||
|
|
||||||
// Keep animating unless we've reached the end
|
// Keep animating unless we've reached the end
|
||||||
if( time < 1 ) {
|
if( time < 1 ) {
|
||||||
|
@ -284,7 +237,7 @@ var RevealHighlight = {
|
||||||
*/
|
*/
|
||||||
highlightLines: function( block, linesToHighlight ) {
|
highlightLines: function( block, linesToHighlight ) {
|
||||||
|
|
||||||
var highlightSteps = RevealHighlight.deserializeHighlightSteps( linesToHighlight || block.getAttribute( 'data-line-numbers' ) );
|
var highlightSteps = Plugin.deserializeHighlightSteps( linesToHighlight || block.getAttribute( 'data-line-numbers' ) );
|
||||||
|
|
||||||
if( highlightSteps.length ) {
|
if( highlightSteps.length ) {
|
||||||
|
|
||||||
|
@ -320,7 +273,7 @@ var RevealHighlight = {
|
||||||
* numbers to highlight.
|
* numbers to highlight.
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* RevealHighlight.deserializeHighlightSteps( '1,2|3,5-10' )
|
* Plugin.deserializeHighlightSteps( '1,2|3,5-10' )
|
||||||
* // [
|
* // [
|
||||||
* // [ { start: 1 }, { start: 2 } ],
|
* // [ { start: 1 }, { start: 2 } ],
|
||||||
* // [ { start: 3 }, { start: 5, end: 10 } ]
|
* // [ { start: 3 }, { start: 5, end: 10 } ]
|
||||||
|
@ -332,16 +285,16 @@ var RevealHighlight = {
|
||||||
highlightSteps = highlightSteps.replace( /\s/g, '' );
|
highlightSteps = highlightSteps.replace( /\s/g, '' );
|
||||||
|
|
||||||
// Divide up our line number groups
|
// Divide up our line number groups
|
||||||
highlightSteps = highlightSteps.split( RevealHighlight.HIGHLIGHT_STEP_DELIMITER );
|
highlightSteps = highlightSteps.split( Plugin.HIGHLIGHT_STEP_DELIMITER );
|
||||||
|
|
||||||
return highlightSteps.map( function( highlights ) {
|
return highlightSteps.map( function( highlights ) {
|
||||||
|
|
||||||
return highlights.split( RevealHighlight.HIGHLIGHT_LINE_DELIMITER ).map( function( highlight ) {
|
return highlights.split( Plugin.HIGHLIGHT_LINE_DELIMITER ).map( function( highlight ) {
|
||||||
|
|
||||||
// Parse valid line numbers
|
// Parse valid line numbers
|
||||||
if( /^[\d-]+$/.test( highlight ) ) {
|
if( /^[\d-]+$/.test( highlight ) ) {
|
||||||
|
|
||||||
highlight = highlight.split( RevealHighlight.HIGHLIGHT_LINE_RANGE_DELIMITER );
|
highlight = highlight.split( Plugin.HIGHLIGHT_LINE_RANGE_DELIMITER );
|
||||||
|
|
||||||
var lineStart = parseInt( highlight[0], 10 ),
|
var lineStart = parseInt( highlight[0], 10 ),
|
||||||
lineEnd = parseInt( highlight[1], 10 );
|
lineEnd = parseInt( highlight[1], 10 );
|
||||||
|
@ -384,7 +337,7 @@ var RevealHighlight = {
|
||||||
|
|
||||||
// Line range
|
// Line range
|
||||||
if( typeof highlight.end === 'number' ) {
|
if( typeof highlight.end === 'number' ) {
|
||||||
return highlight.start + RevealHighlight.HIGHLIGHT_LINE_RANGE_DELIMITER + highlight.end;
|
return highlight.start + Plugin.HIGHLIGHT_LINE_RANGE_DELIMITER + highlight.end;
|
||||||
}
|
}
|
||||||
// Single line
|
// Single line
|
||||||
else if( typeof highlight.start === 'number' ) {
|
else if( typeof highlight.start === 'number' ) {
|
||||||
|
@ -395,12 +348,59 @@ var RevealHighlight = {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
} ).join( RevealHighlight.HIGHLIGHT_LINE_DELIMITER );
|
} ).join( Plugin.HIGHLIGHT_LINE_DELIMITER );
|
||||||
|
|
||||||
} ).join( RevealHighlight.HIGHLIGHT_STEP_DELIMITER );
|
} ).join( Plugin.HIGHLIGHT_STEP_DELIMITER );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default RevealHighlight;
|
// Function to perform a better "data-trim" on code snippets
|
||||||
|
// Will slice an indentation amount on each line of the snippet (amount based on the line having the lowest indentation length)
|
||||||
|
function betterTrim(snippetEl) {
|
||||||
|
// Helper functions
|
||||||
|
function trimLeft(val) {
|
||||||
|
// Adapted from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill
|
||||||
|
return val.replace(/^[\s\uFEFF\xA0]+/g, '');
|
||||||
|
}
|
||||||
|
function trimLineBreaks(input) {
|
||||||
|
var lines = input.split('\n');
|
||||||
|
|
||||||
|
// Trim line-breaks from the beginning
|
||||||
|
for (var i = 0; i < lines.length; i++) {
|
||||||
|
if (lines[i].trim() === '') {
|
||||||
|
lines.splice(i--, 1);
|
||||||
|
} else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trim line-breaks from the end
|
||||||
|
for (var i = lines.length-1; i >= 0; i--) {
|
||||||
|
if (lines[i].trim() === '') {
|
||||||
|
lines.splice(i, 1);
|
||||||
|
} else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return lines.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Main function for betterTrim()
|
||||||
|
return (function(snippetEl) {
|
||||||
|
var content = trimLineBreaks(snippetEl.innerHTML);
|
||||||
|
var lines = content.split('\n');
|
||||||
|
// Calculate the minimum amount to remove on each line start of the snippet (can be 0)
|
||||||
|
var pad = lines.reduce(function(acc, line) {
|
||||||
|
if (line.length > 0 && trimLeft(line).length > 0 && acc > line.length - trimLeft(line).length) {
|
||||||
|
return line.length - trimLeft(line).length;
|
||||||
|
}
|
||||||
|
return acc;
|
||||||
|
}, Number.POSITIVE_INFINITY);
|
||||||
|
// Slice each line with this amount
|
||||||
|
return lines.map(function(line, index) {
|
||||||
|
return line.slice(pad);
|
||||||
|
})
|
||||||
|
.join('\n');
|
||||||
|
})(snippetEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default () => Plugin;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
import marked from './marked.js'
|
import marked from './marked.js'
|
||||||
|
|
||||||
export default {
|
let Plugin = {
|
||||||
|
|
||||||
id: 'markdown',
|
id: 'markdown',
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ export default {
|
||||||
* current reveal.js deck.
|
* current reveal.js deck.
|
||||||
*/
|
*/
|
||||||
init: function( deck ) {
|
init: function( deck ) {
|
||||||
|
|
||||||
// This should no longer be needed, as long as the highlight.js
|
// This should no longer be needed, as long as the highlight.js
|
||||||
// plugin is included after the markdown plugin
|
// plugin is included after the markdown plugin
|
||||||
// if( typeof window.hljs !== 'undefined' ) {
|
// if( typeof window.hljs !== 'undefined' ) {
|
||||||
|
@ -43,6 +44,8 @@ export default {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export default () => Plugin;
|
||||||
|
|
||||||
var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$',
|
var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$',
|
||||||
DEFAULT_NOTES_SEPARATOR = 'notes?:',
|
DEFAULT_NOTES_SEPARATOR = 'notes?:',
|
||||||
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$',
|
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$',
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @author Hakim El Hattab
|
* @author Hakim El Hattab
|
||||||
*/
|
*/
|
||||||
var RevealMath = (function(){
|
let Plugin = (function(){
|
||||||
|
|
||||||
var options = Reveal.getConfig().math || {};
|
var options = Reveal.getConfig().math || {};
|
||||||
var mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js';
|
var mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js';
|
||||||
|
@ -91,4 +91,4 @@ var RevealMath = (function(){
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
export default RevealMath;
|
export default () => Plugin;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
* 3. This window proceeds to send the current presentation state
|
* 3. This window proceeds to send the current presentation state
|
||||||
* to the notes window
|
* to the notes window
|
||||||
*/
|
*/
|
||||||
var RevealNotes = (function() {
|
let Plugin = (function() {
|
||||||
|
|
||||||
var notesPopup = null;
|
var notesPopup = null;
|
||||||
|
|
||||||
|
@ -182,4 +182,4 @@ var RevealNotes = (function() {
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
export default RevealNotes;
|
export default () => Plugin;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* By Jon Snyder <snyder.jon@gmail.com>, February 2013
|
* By Jon Snyder <snyder.jon@gmail.com>, February 2013
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var RevealSearch = (function() {
|
var Plugin = (function() {
|
||||||
|
|
||||||
var matchedSlides;
|
var matchedSlides;
|
||||||
var currentMatchedIndex;
|
var currentMatchedIndex;
|
||||||
|
@ -218,4 +218,4 @@ function Hilitor(id, tag)
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
export default RevealSearch;
|
export default () => Plugin;
|
|
@ -1,7 +1,7 @@
|
||||||
/*!
|
/*!
|
||||||
* reveal.js Zoom plugin
|
* reveal.js Zoom plugin
|
||||||
*/
|
*/
|
||||||
export default {
|
var Plugin = {
|
||||||
|
|
||||||
id: 'zoom',
|
id: 'zoom',
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@ export default {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export default () => Plugin;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* zoom.js 0.3 (modified for use with reveal.js)
|
* zoom.js 0.3 (modified for use with reveal.js)
|
||||||
* http://lab.hakim.se/zoom-js
|
* http://lab.hakim.se/zoom-js
|
||||||
|
|
Loading…
Reference in New Issue