echoesworks
Version:
Next-Generation Tech Blog/Presentation Framework
2 lines • 14.7 kB
JavaScript
/*! echoesworks 01-07-2015 */
!function(a,b){"use strict";function c(a,b){var c=h.fn.rawGitConvert(a.data.codes[b]);h.get(c,function(a){document.querySelector("code").innerHTML=a,document.querySelector("slide").classList.remove("full"),document.querySelector("pre ").classList.remove("hidden")})}function d(a,b){var c,d=a.data.words[b];if(h.isObject(d)){var e=a.parser.parseTime(a.data.times)[b+1];if(a.time<e&&d.length>1){var f=d.length,g=a.parser.parseTime(a.data.times)[b],i=e-g,j=i/f*1e3,k=0;document.querySelector("words").innerHTML=d[k].word,c=setInterval(function(){k++,k-1===f?clearInterval(c):document.querySelector("words").innerHTML=d[k].word},j)}return c}document.querySelector("words").innerHTML=d}function e(){document.querySelector("slide").classList.add("full"),document.querySelector("words").classList.add("hidden")}function f(){document.querySelector("slide").classList.add("full"),document.querySelector("pre").classList.add("hidden")}function g(a){var b=a.replace("github.com","rawgit.com");return b=b.replace("raw.githubusercontent.com","rawgit.com")}var h=function(a){var c;c={element:"slide",auto:!1},a===b&&(console.log("Default Options is Empty, use default options..."),a={}),h.defaults(a,c),this.options=a,a.source&&(this.source=this.options.source),a.src&&(this.audioSrc=this.options.src),this.element=this.options.element,this.playing=!1,this.data=[],this.fps=10,this.time=0,this.audio=null,this.options.auto&&this.play(),this.init(),window.ew=this};h.prototype.init=function(){var a=this;this.audioSrc&&(this.audio=document.createElement("audio"),this.audio.src=this.audioSrc,this.audio.autoplay=this.options.auto),a.slide(),h.triggerEvent("ew:slide:init"),window.slide&&(window.slide.auto=a.options.auto,a.parser(),setInterval(function(){a.update()},1e3/this.fps))},h.prototype.stop=function(){console.log("total time:",this.time),this.playing=!1,this.time=0},h.prototype.pause=function(){this.playing=!1},h.prototype.play=function(){this.playing=!0},h.prototype.update=function(){this.playing&&(this.time+=1/this.fps),this.applyEchoes()},h.prototype.applyEchoes=function(){var a=this,g=a.parser.data&&a.parser.data.codes!==b&&a.parser.data.codes.length>0;if(g){a.data=a.parser.data;var h=a.parser.parseTime(a.data.times),i=window.slide.slide();parseFloat(a.time)>h[i]&&window.slide.auto&&(window.slide.next(),a.data.codes[i]&&window.slide.auto?c(a,i):f(),a.data.words[i]?d(a,i):e(a,i))}},h.version=h.VERSION="0.2.2",a.EchoesWorks=h,a.EW=h,h.isObject=function(a){var b=typeof a;return"function"===b||"object"===b&&!!a},h.isFunction=function(a){return"function"==typeof a||!1},h.defaults=function(a){if(!h.isObject(a))return a;for(var b=1,c=arguments.length;c>b;b++){var d=arguments[b];for(var e in d)void 0===a[e]&&(a[e]=d[e])}return a},h.extend=function(a){if(!h.isObject(a))return a;for(var b,c,d=1,e=arguments.length;e>d;d++){b=arguments[d];for(c in b)hasOwnProperty.call(b,c)&&(a[c]=b[c])}return a},h.triggerEvent=function(a){var b=document.createEvent("Event");b.initEvent(a,!0,!0),document.dispatchEvent(b)},h.forEach=function(a,b,c){if("[object Object]"===Object.prototype.toString.call(a))for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&b.call(c,a[d],d,a);else for(var e=0,f=a.length;f>e;e++)b.call(c,a[e],e,a)},h.get=function(a,b){h.send(a,"GET",b)},h.load=function(a,b){h.send(a,"GET",b)},h.post=function(a,b,c){h.send(a,"POST",c,b)},h.send=function(a,b,c,d){d=d||null;var e=new XMLHttpRequest;c instanceof Function&&(e.onreadystatechange=function(){4!==e.readyState||200!==e.status&&0!==e.status||c(e.responseText)}),e.open(b,a,!0),e.send(d)};var i=function(){var a=this.options.element,b=1===a.nodeType?a:document.querySelector(a),c=[].filter.call(b.children,function(a){return"SCRIPT"!==a.nodeName}),d=c[0],e={},f=function(){var a=window.location.hash,b=a.replace(/#|\//gi,"");g(b>0?b:0)},g=function(a,b){if(c[a]){d.className=d.className.replace(new RegExp("active(\\s|$)","g")," ").trim(),d.classList.add("past"),l("deactivate",m(d,b)),d=c[a],d.className="active";var e=parseInt(a,10)===c.length-1,f=0===parseInt(a,10);(f||e)&&d.classList.add("specify"),window.bar.go(100*(a+1)/c.length),i(a),localStorage.setItem("echoesworks",a),l("activate",m(d,b))}},h=function(a,b){return arguments.length?void(l("slide",m(c[a],b))&&g(a,b)):c.indexOf(d)},i=function(a){window.location.hash="#/"+a},j=function(a,b){var e=c.indexOf(d)+a;l(a>0?"next":"prev",m(d,b))&&g(e,b)},k=function(a,b){return(e[a]||(e[a]=[])).push(b),function(){e[a]=e[a].filter(function(a){return a!==b})}},l=function(a,b){return(e[a]||[]).reduce(function(a,c){return a&&c(b)!==!1},!0)},m=function(a,b){return b=b||{},b.index=c.indexOf(a),b.slide=a,b},n={on:k,fire:l,slide:h,next:j.bind(null,1),prev:j.bind(null,-1),parent:b,slides:c,auto:!1};return f(),window.slide=n,n};h.prototype=h.extend(h.prototype,{slide:i});var j=function(){var a=this;a.source&&j.init(a.source)};j.data=[],j.init=function(a){var b=new XMLHttpRequest;b.onreadystatechange=function(){4!==b.readyState||200!==b.status&&0!==b.status||j.parse(JSON.parse(b.responseText))},b.open("GET",a,!0),b.setRequestHeader("X-Requested-With","XMLHttpRequest"),b.send()},j.parse=function(a){function b(a){d.push(a.time),e.push(a.code),f.push(a.word)}var c,d=[],e=[],f=[];return a.forEach(b),c={times:d,codes:e,words:f},j.data=c,c},j.parseTime=function(a){var b=/\[\d{2}:\d{2}.\d{2}\]/g,c=[];return a.forEach(function(a){var d=a.slice(1,-1).split(":"),e=a.replace(b,"");c.push([60*parseFloat(d[0])+parseFloat(d[1]),e][0])}),c},h.prototype=h.extend(h.prototype,{parser:j});var k={regexobject:{headline:/^(\#{1,6})([^\#\n]+)$/m,pre:/\s\`\`\`(\w+)\n?[^`]+\`\`\`/g,code:/\s\`\`\`\n?([^`]+)\`\`\`/g,hr:/^(?:([\*\-_] ?)+)\1\1$/gm,lists:/^((\s*((\*|\-)|\d(\.|\))) [^\n]+)\n)+/gm,bolditalic:/(?:([\*_~]{1,3}))([^\*_~\n]+[^\*_~\s])\1/g,links:/!?\[([^\]<>]+)\]\(([^ \)<>]+)( "[^\(\)\"]+")?\)/g,reflinks:/\[([^\]]+)\]\[([^\]]+)\]/g,smlinks:/\@([a-z0-9]{3,})\@(t|gh|fb|gp|adn)/gi,mail:/<(([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+\.([a-z]{2,7}))>/gim,tables:/\n(([^|\n]+ *\| *)+([^|\n]+\n))((:?\-+:?\|)+(:?\-+:?)*\n)((([^|\n]+ *\| *)+([^|\n]+)\n)+)/g,include:/[\[<]include (\S+) from (https?:\/\/[a-z0-9\.\-]+\.[a-z]{2,9}[a-z0-9\.\-\?\&\/]+)[\]>]/gi,url:/<([a-zA-Z0-9@:%_\+.~#?&\/\/=]{2,256}\.[a-z]{2,4}\b(\/[\-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)?)>/g},codeHandler:function(a,b){var c,d="";return null!==(c=this.regexobject.pre.exec(a))&&(d=c[1]),b.replace(a[0],'<pre><code class="'+d+'">\n'+k.htmlEncode(a[1]).replace(d+"\n","").replace(/\n/gm,"<br/>").replace(/\ /gm," ")+"</code></pre>\n")},headlineHandler:function(a,b){var c=a[1].length;return b.replace(a[0],"<h"+c+">"+a[2]+"</h"+c+">\n")},linksHandler:function(a,b,c){return b="!"===a[0].substr(0,1)?b.replace(a[0],'<img src="'+a[2]+'" alt="'+a[1]+'" title="'+a[1]+'" />\n'):b.replace(a[0],"<a "+k.mmdCSSclass(a[2],c)+'href="'+a[2]+'">'+a[1]+"</a>\n")},mailHandler:function(a,b){return b.replace(a[0],'<a href="mailto:'+a[1]+'">'+a[1]+"</a>")},hrHandler:function(a,b){return b.replace(a[0],"\n<hr/>\n")},urlHandler:function(a,b,c){var d=a[1];return-1===d.indexOf("://")&&(d="http://"+d),b.replace(a[0],"<a "+k.mmdCSSclass(d,c)+'href="'+d+'">'+d.replace(/(https:\/\/|http:\/\/|mailto:|ftp:\/\/)/gim,"")+"</a>")},refLinksHandler:function(a,b,c,d){return a.replace(b[0],"<a "+k.mmdCSSclass(c[1],d)+'href="'+c[1]+'">'+b[1]+"</a>")},smlinksHandler:function(a,b,c){var d="";switch(a[2]){case"t":d="https://twitter.com/"+a[1];break;case"gh":d="https://github.com/"+a[1];break;case"fb":d="https://www.facebook.com/"+a[1];break;case"gp":d="https://plus.google.com/+"+a[1]}return b.replace(a[0],"<a "+k.mmdCSSclass(d,c)+'href="'+d+'">'+a[1]+"</a>")},boldItalicHandler:function(a,b){var c=[];if("~~"===a[1])b=b.replace(a[0],"<del>"+a[2]+"</del>");else{switch(a[1].length){case 1:c=["<i>","</i>"];break;case 2:c=["<b>","</b>"];break;case 3:c=["<i><b>","</b></i>"]}b=b.replace(a[0],c[0]+a[2]+c[1])}return b},tableHandlerHelper:function(a,b,c){var d;for(d=0;d<a.length;d++)b.length<=d?b.push(0):":"===b[d].trimRight().slice(-1)&&c!==!0?":"===b[d][0]?b[d]=3:b[d]=2:c!==!0&&":"===b[d][0]?b[d]=1:b[d]=0},tableHandler:function(a,b,c,d,e){var f,g;if(g=a[b].split("|"),0!==g[0].length){for(;c.length<g.length;)c.push(0);for(d+="<tr>",f=0;f<g.length;f++)d+=e[c[f]]+g[f].trim()+"</td>";d+="</tr>\n"}return{helper2:g,replaceStr:d}},tablesHandler:function(a,b,c){var d,e,f,g,h,i,j;for(d="<table><tr>",f=a[1].split("|"),g=a[4].split("|"),this.tableHandlerHelper(f,g,c),e=["<th>",'<th align="left">','<th align="right">','<th align="center">'],j=0;j<f.length;j++)d+=e[g[j]]+f[j].trim()+"</th>";for(d+="</tr>",e=["<td>",'<td align="left">','<td align="right">','<td align="center">'],h=a[7].split("\n"),j=0;j<h.length;j++){var k=this.tableHandler(h,j,g,d,e);i=k.helper2,d=k.replaceStr}return d+="</table>",b.replace(a[0],d)},listHandlerStart:function(a,b){return b="*"===a[0].trim().substr(0,1)||"-"===a[0].trim().substr(0,1)?"<ul>":"<ol>"},listsHandlerEnd:function(a,b){return b+="*"===a[0].trim().substr(0,1)||"-"===a[0].trim().substr(0,1)?"</ul>":"</ol>"},listsHandlerSub:function(a,b,c){return"*"===a[0].trim().substr(0,1)||"-"===a[0].trim().substr(0,1)?(b+="<ul>",c.push("</ul>")):(b+="<ol>",c.push("</ol>")),b},listHandler:function(a,c,d,e,f,g){var h=!1;for(a[2]===b||0===a[2].length?c=0:(h===!1&&(h=a[2].replace(/\t/," ").length),c=Math.round(a[2].replace(/\t/," ").length/h));d>c;)e+=f.pop(),d--,g--;for(;c>d;)e=this.listsHandlerSub(a,e,f),d++,g++;return e+="<li>"+a[6]+"</li>\n",{nstatus:c,status:d,replaceStr:e,casca:g}},listsHandler:function(a,b){var c,d,e,f,g,h=[],i=0,j=0;for(f=this.listHandlerStart(a,f),c=a[0].split("\n"),g=0;g<c.length;g++)if(null!==(d=/^((\s*)((\*|\-)|\d(\.|\))) ([^\n]+))/.exec(c[g]))){var k=this.listHandler(d,e,i,f,h,j);e=k.nstatus,i=k.status,f=k.replaceStr,j=k.casca}for(;j>0;)f+="</ul>",j--;return f=this.listsHandlerEnd(a,f),b.replace(a[0],f+"\n")},listStrict:function(a,b){return a!==!0&&(b.lists=/^((\s*(\*|\d\.) [^\n]+)\n)+/gm),b.lists},removeRefLinks:function(a,b){var c;for(c=0;c<a.length;c++)b=b.replace(a[c],"");return b},parse:function(a,b){var c,d,e,f,g=[],h=this,i=k.regexobject;for(i.lists=this.listStrict(b,i),a="\n"+a+"\n",["code","headline","lists","tables","links","mail","url","smlinks","hr"].forEach(function(c){for(;null!==(e=i[c].exec(a));)a=h[c+"Handler"].apply(h,[e,a,b])}),f=0;3>f;f++)for(;null!==(e=i.bolditalic.exec(a));)a=this.boldItalicHandler(e,a);for(;null!==(e=i.reflinks.exec(a));)d=new RegExp("\\["+e[2]+"\\]: ?([^ \n]+)","gi"),null!==(c=d.exec(a))&&(a=this.refLinksHandler(a,e,c,b),g.push(c[0]));return a=this.removeRefLinks(g,a),a.replace(/ {2,}[\n]{1,}/gim,"<br/><br/>")},htmlEncode:function(a){var b=document.createElement("div");return b.appendChild(document.createTextNode(a)),b.innerHTML},mmdCSSclass:function(a,b){var c;return-1!==a.indexOf("/")&&b!==!0?(c=a.split("/"),c=0===c[1].length?c[2].split("."):c[0].split("."),'class="mmd_'+c[c.length-2].replace(/[^\w\d]/g,"")+c[c.length-1]+'" '):""}};h.md=k;var l=function(){var a=document.querySelectorAll(".header h1");h.forEach(a,function(b,c){var d=document.createElement("h1"),e=b.parentNode.parentNode;d.innerHTML=b.innerHTML,e.insertBefore(d,e.firstChild),b.parentNode.removeChild(a[c])})},m=function(a){var b=document.getElementsByTagName("img");return h.forEach(b,function(a){var b=a.src,c=a.title;"background"===c?m.backgroundHandler(a,b,c):("left"===c?m.directionHandler(a,c,b,"right"):"right"===c&&m.directionHandler(a,c,b,"left"),l())}),m.removeImages(),a};m.directionHandler=function(a,b,c,d){var e=a.parentNode,f=document.createElement("div");f.innerHTML=e.innerHTML,f.className=d,f.className+=" header",e.innerHTML="",e.appendChild(f);var g=document.createElement("div");e.appendChild(g),g.classList.add("image-"+b),g.width=200,g.style.background="url('"+c+"') no-repeat"},m.backgroundHandler=function(a,b,c){a.parentNode.style.backgroundImage="url('"+b+"')",a.parentNode.classList.add(c)},m.removeImages=function(){var a,b=document.getElementsByTagName("img");for(a=b.length-1;a>=0;a--)b[a].parentNode.removeChild(b[a])},h.imageHandler=m;var n,o,p,q,r,s,t={width:"100%",height:"4px",zIndex:9999,bottom:"0"},u={width:0,height:"100%",clear:"both",transition:"height .3s"};n=function(a,b){var c;for(c in b)a.style[c]=b[c];a.style["float"]="left"},q=function(){var a=this,b=this.width-this.here;.1>b&&b>-.1?(r.call(this,this.here),this.moving=!1,100==this.width&&(this.el.style.height=0,setTimeout(function(){a.cont.el.removeChild(a.el)},300))):(r.call(this,this.width-b/4),setTimeout(function(){a.go()},16))},r=function(a){this.width=a,this.el.style.width=this.width+"%"},s=function(){var a=new o(this);this.bars.unshift(a)},o=function(a){this.el=document.createElement("div"),this.el.style.backgroundColor="#F44336",this.width=0,this.here=0,this.moving=!1,this.cont=a,n(this.el,u),a.el.appendChild(this.el)},o.prototype.go=function(a){a?(this.here=a,this.moving||(this.moving=!0,q.call(this))):this.moving&&q.call(this)},p=function(){this.bars=[],this.el=document.createElement("div"),this.el.className="bar",n(this.el,t),this.el.style.position="fixed",document.getElementsByTagName("body")[0].appendChild(this.el),s.call(this)},p.prototype.go=function(a){this.bars[0].go(a),100==a&&s.call(this)};var v=new p;window.bar=v,h.bar=v;var w={};h.fn=w;var x={rawGitConvert:g};h.fn=h.extend(h.fn,x)}(this),function(a){"use strict";function b(){window.slide.auto=!1,window.ew.audio.pause()}function c(){EchoesWorks.forEach(e,function(a){var c,d=window.screen.width/3,e=window.screen.height/3;a.addEventListener("touchstart",function(a){f={x:a.touches[0].pageX,y:a.touches[0].pageY},g=!0}),a.addEventListener("touchend",function(){g=!1}),a.addEventListener("touchmove",function(a){if(g){a.preventDefault(),c={x:a.touches[0].pageX-f.x,y:a.touches[0].pageY-f.y};var h=c.x>0&&c.x>d,i=c.y>0&&c.y>e,j=c.x<0&&Math.abs(c.x)>d,k=c.y<0&&Math.abs(c.y)>e;j||i?(window.slide.next(),g=!1):(h||k)&&(window.slide.prev(),g=!1)}b()})})}function d(){function a(){window.slide.slide(parseInt(localStorage.getItem("echoesworks"),10))}window.addEventListener?window.addEventListener("storage",a,!1):window.attachEvent("onstorage",a)}var e,f,g,h=9,i=32,j=34,k=37,l=39,m=40,n=33,o=38,p=function(){return"ontouchstart"in window||navigator.msMaxTouchPoints};a.addEventListener("ew:slide:init",function(){e=a.getElementsByTagName("section"),d(),e&&p&&window.slide&&c(),a.addEventListener("keydown",function(a){b();var c=a.keyCode;(c===h||c>=i&&j>=c||c>=k&&m>=c)&&a.preventDefault()},!1),a.addEventListener("keyup",function(a){var b=a.keyCode;if(b===h||b>=i&&j>=b||b>=k&&m>=b){switch(b){case n:case k:case o:window.slide.prev();break;case h:case i:case j:case l:case m:window.slide.next()}a.preventDefault()}})})}(document);