forked from ramonszo/zuck.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzuck.min.js
2 lines (2 loc) · 15.5 KB
/
zuck.min.js
1
2
/* zuck.js - https://github.com/ramon82/zuck.js - MIT License */
'use strict';var ZuckJS=function(){var b=!1;return b=window.ZuckitaDaGalera=window.Zuck=function(c,f){var p=document,q=this;'string'==typeof c&&(c=p.getElementById(c));var r=function query(L){return p.querySelectorAll(L)[0]},s=function(L,M){return L?L[M]||'':''},t=function(L,M){if(L)for(var N=L.length,O=0;O<N;O++)M(O,L[O])},u=function(L,M,N){var O=[M.toLowerCase(),'webkit'+M,'MS'+M,'o'+M];t(O,function(P,Q){L[Q]=N})},v=function(L,M,N){var O=[N.toLowerCase(),'webkit'+N,'MS'+N,'o'+N];t(O,function(Q,R){L.addEventListener(R,M,!1)})},w=function(L,M){v(L,M,'AnimationEnd')},x=function(L,M){L.transitionEndEvent||(L.transitionEndEvent=!0,v(L,M,'TransitionEnd'))},y=function(L,M){L.firstChild?L.insertBefore(M,L.firstChild):L.appendChild(M)},A=function(L,M){var N='RequestFullScreen',O='requestFullScreen';if(M)document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen();else try{L[O]?L[O]():L['ms'+N]?L['ms'+N]():L['moz'+N]?L['moz'+N]():L['webkit'+N]&&L['webkit'+N]()}catch(P){}},B=function(L,M,N,O){var P=0<M?1:-1,Q=90*(Math.abs(M)/r('#zuck-modal').offsetWidth)*P;if(g('cubeEffect')){var R=0==Q?'scale(0.95)':'scale(0.930,0.930)';if(u(r('#zuck-modal-content').style,'Transform',R),-90>Q||90<Q)return!1}var S=g('cubeEffect')?'rotateY('+Q+'deg)':'translate3d('+M+'px, 0, 0)';L&&(u(L.style,'TransitionTimingFunction',O),u(L.style,'TransitionDuration',N+'ms'),u(L.style,'Transform',S))},C=function(L,M,N,O){var P=0,Q=0;if(L){if(L.offsetParent)do if(P+=L.offsetLeft,Q+=L.offsetTop,L==O)break;while(L=L.offsetParent);M&&(Q-=M),N&&(P-=N)}return[P,Q]},D=function(L){L=1e3*+L;var M=new Date(L),N=M.getTime(),O=(new Date().getTime()-N)/1e3,P=g('language','time'),Q=[[60,' '+P.seconds,1],[120,'1 '+P.minute,''],[3600,' '+P.minutes,60],[7200,'1 '+P.hour,''],[86400,' '+P.hours,3600],[172800,' '+P.yesterday,''],[604800,' '+P.days,86400]],R=1;0>O&&(O=Math.abs(O),R=2);for(var T,S=0;T=Q[S++];)if(O<T[0])return'string'==typeof T[2]?T[R]:Math.floor(O/T[2])+T[1];var U=M.getDate(),V=M.getMonth(),W=M.getFullYear();return U+'/'+(V+1)+'/'+W},E=c.id,F={skin:'snapgram',avatars:!0,stories:[],backButton:!0,backNative:!1,previousTap:!0,autoFullScreen:!1,openEffect:!0,cubeEffect:!1,list:!1,localStorage:!0,callbacks:{onOpen:function(M,N){N()},onView:function(){},onEnd:function(M,N){N()},onClose:function(M,N){N()},onNextItem:function(M,N,O){O()},onNavigateItem:function(M,N,O){O()}},language:{unmute:'Touch to unmute',keyboardTip:'Press space to see next',visitLink:'Visit link',time:{ago:'ago',hour:'hour ago',hours:'hours ago',minute:'minute ago',minutes:'minutes ago',fromnow:'from now',seconds:'seconds ago',yesterday:'yesterday',tomorrow:'tomorrow',days:'days ago'}}},g=function(L,M){var N=function(O){return'undefined'!=typeof O};return M?N(f[L])?N(f[L][M])?f[L][M]:F[L][M]:F[L][M]:N(f[L])?f[L]:F[L]},h=new function G(){var O=s('#zuck-modal');O||(O=p.createElement('div'),O.id='zuck-modal',g('cubeEffect')&&(O.className='with-cube'),O.innerHTML='<div id="zuck-modal-content"></div>',O.style.display='none',O.setAttribute('tabIndex','1'),O.onkeyup=function(R){var S=R.keyCode;27==S?h.close():(13==S||32==S)&&h.next()},g('openEffect')&&O.classList.add('with-effects'),x(O,function(){O.classList.contains('closed')&&(L.innerHTML='',O.style.display='none',O.classList.remove('closed'),O.classList.remove('animated'))}),p.body.appendChild(O));var L=r('#zuck-modal-content'),P=function(R){var S='',T='',U='0',V=r('#zuck-modal-slider-'+E),W={previous:r('#zuck-modal .story-viewer.previous'),next:r('#zuck-modal .story-viewer.next'),viewing:r('#zuck-modal .story-viewer.viewing')};if(!W.previous&&!R||!W.next&&R)return!1;R?(S='next',T='previous'):(S='previous',T='next');var X=600;g('cubeEffect')?'previous'==S?U=O.slideWidth:'next'==S&&(U=-1*O.slideWidth):(U=C(W[S]),U=-1*U[0]),B(V,U,X,null),setTimeout(function(){if(''!=S&&W[S]&&''!=T){var Y=W[S].getAttribute('data-story-id');q.internalData.currentStory=Y;var Z=r('#zuck-modal .story-viewer.'+T);Z&&Z.parentNode.removeChild(Z),W.viewing&&(W.viewing.classList.add('stopped'),W.viewing.classList.add(T),W.viewing.classList.remove('viewing')),W[S]&&(W[S].classList.remove('stopped'),W[S].classList.remove(S),W[S].classList.add('viewing'));var $=j(S);$&&M($,S);var _=q.internalData.currentStory,aa=r('#zuck-modal [data-story-id="'+_+'"]');if(aa){aa=aa.querySelectorAll('[data-index].active');var ba=aa[0].firstElementChild;q.data[_].currentItem=parseInt(aa[0].getAttribute('data-index'),10),aa[0].innerHTML='<b style="'+ba.style.cssText+'"></b>',w(aa[0].firstElementChild,function(){q.nextItem(!1)})}B(V,'0',0,null),aa&&l([aa[0],aa[1]],!0),g('callbacks','onView')(q.internalData.currentStory)}},X+50)},M=function(R,S,T){var V=r('#zuck-modal-slider-'+E),W='',X='',Y=s(R,'id'),Z=p.createElement('div'),$=s(R,'currentItem')||0,_=r('#zuck-modal .story-viewer[data-story-id="'+Y+'"]'),aa='';if(_)return!1;Z.className='slides',t(s(R,'items'),function(ea,fa){$>ea&&(R.items[ea].seen=!0,fa.seen=!0);var ga=s(fa,'length'),ha=s(fa,'linkText'),ia=!0===s(fa,'seen')?'seen':'',ja='data-index="'+ea+'" data-item-id="'+s(fa,'id')+'"';$===ea&&(aa=D(s(fa,'time'))),X+='<span '+ja+' class="'+($===ea?'active':'')+' '+ia+'"><b style="animation-duration:'+(''===ga?'3':ga)+'s"></b></span>',W+='<div data-time="'+s(fa,'time')+'" data-type="'+s(fa,'type')+'"'+ja+' class="item '+ia+' '+($===ea?'active':'')+'">'+('video'===s(fa,'type')?'<video class="media" muted webkit-playsinline playsinline preload="auto" src="'+s(fa,'src')+'" '+s(fa,'type')+'></video><b class="tip muted">'+g('language','unmute')+'</b>':'<img class="media" src="'+s(fa,'src')+'" '+s(fa,'type')+'>')+(s(fa,'link')?'<a class="tip link" href="'+s(fa,'link')+'" rel="noopener" target="_blank">'+(''!=ha&&ha?ha:g('language','visitLink'))+'</a>':'')+'</div>'}),Z.innerHTML=W;var ba=Z.querySelector('video'),ca=function(ea){ea.muted?U.classList.add('muted'):U.classList.remove('muted')};ba&&(ba.onwaiting=function(){ba.paused&&(U.classList.add('paused'),U.classList.add('loading'))},ba.onplay=function(){ca(ba),U.classList.remove('stopped'),U.classList.remove('paused'),U.classList.remove('loading')},ba.onready=ba.onload=ba.onplaying=ba.oncanplay=function(){ca(ba),U.classList.remove('loading')},ba.onvolumechange=function(){ca(ba)});var U=p.createElement('div');U.className='story-viewer muted '+S+' '+(T?'':'stopped')+' '+(g('backButton')?'with-back-button':''),U.setAttribute('data-story-id',Y);var da='<div class="head"><div class="left">'+(g('backButton')?'<a class="back">‹</a>':'')+'<u class="img" style="background-image:url('+s(R,'photo')+');"></u><div><strong>'+s(R,'name')+'</strong><span class="time">'+aa+'</span></div></div><div class="right"><span class="time">'+aa+'</span><span class="loading"></span><a class="close" tabIndex="2">×</a></div></div><div class="slides-pointers"><div>'+X+'</div></div>';U.innerHTML=da,t(U.querySelectorAll('.close, .back'),function(ea,fa){fa.onclick=function(ga){ga.preventDefault(),h.close()}}),U.appendChild(Z),'viewing'==S&&l(U.querySelectorAll('[data-index="'+$+'"].active'),!1),t(U.querySelectorAll('.slides-pointers [data-index] > b'),function(ea,fa){w(fa,function(){q.nextItem(!1)})}),'previous'==S?y(V,U):V.appendChild(U)},Q=function(R){var X,Y,Z,$,_,V=R,W={},aa=function(ba){var ca=r('#zuck-modal .viewing');if('A'==ba.target.nodeName)return!0;ba.preventDefault();var da=ba.touches?ba.touches[0]:ba,ea=C(r('#zuck-modal .story-viewer.viewing'));O.slideWidth=r('#zuck-modal .story-viewer').offsetWidth,W={x:ea[0],y:ea[1]};var fa=da.pageX,ga=da.pageY;X={x:fa,y:ga,time:Date.now()},Y=void 0,Z={},V.addEventListener('mousemove',S),V.addEventListener('mouseup',T),V.addEventListener('mouseleave',T),V.addEventListener('touchmove',S),V.addEventListener('touchend',T),ca&&ca.classList.add('paused'),m(),$=setTimeout(function(){ca.classList.add('longPress')},600),_=setTimeout(function(){clearInterval(_),_=!1},250)},S=function(ba){var ca=ba.touches?ba.touches[0]:ba,da=ca.pageX,ea=ca.pageY;X&&(Z={x:da-X.x,y:ea-X.y},'undefined'==typeof Y&&(Y=!!(Y||Math.abs(Z.x)<Math.abs(Z.y))),!Y&&X&&(ba.preventDefault(),B(V,W.x+Z.x,0,null)))},T=function(ba){var ca=r('#zuck-modal .viewing'),da=X;if(Z){var ea=p.querySelectorAll('#zuck-modal .story-viewer').length,fa=X?Date.now()-X.time:void 0,ga=300>+fa&&25<Math.abs(Z.x)||Math.abs(Z.x)>O.slideWidth/3,ha=0>Z.x,ia=ha?r('#zuck-modal .story-viewer.next'):r('#zuck-modal .story-viewer.previous');Y||(ga&&!(ha&&!ia||!ha&&!ia)?P(ha,!0):B(V,W.x,300)),X=void 0,V.removeEventListener('mousemove',S),V.removeEventListener('mouseup',T),V.removeEventListener('mouseleave',T),V.removeEventListener('touchmove',S),V.removeEventListener('touchend',T)}var ka=q.internalData.currentVideoElement;if($&&clearInterval($),ca&&(ca.classList.remove('longPress'),ca.classList.remove('paused')),_){clearInterval(_),_=!1;var la=function(){da.x>window.screen.width/3||!g('previousTap')?q.navigateItem('next',ba):q.navigateItem('previous',ba)},ma=r('#zuck-modal .viewing');if(ma&&ka)ma.classList.contains('muted')?n(ka,ma):la();else return la(),!1}};V.addEventListener('touchstart',aa),V.addEventListener('mousedown',aa)};return{show:function(S){g('callbacks','onOpen')(S,function U(){L.innerHTML='<div id="zuck-modal-slider-'+E+'" class="slider"></div>';var V=q.data[S],W=V.currentItem||0,X=r('#zuck-modal-slider-'+E);Q(X),q.internalData.currentStory=S,V.currentItem=W,g('backNative')&&(location.hash='#!'+E);var Y=j('previous');Y&&M(Y,'previous'),M(V,'viewing',!0);var Z=j('next');Z&&M(Z,'next'),g('autoFullScreen')&&O.classList.add('fullscreen');var $=function(){O.classList.contains('fullscreen')&&g('autoFullScreen')&&1024>=window.screen.width&&A(O),O.focus()};if(g('openEffect')){var _=r('#'+E+' [data-id="'+S+'"] .img'),aa=C(_);O.style.marginLeft=aa[0]+_.offsetWidth/2+'px',O.style.marginTop=aa[1]+_.offsetHeight/2+'px',O.style.display='block',O.slideWidth=r('#zuck-modal .story-viewer').offsetWidth,setTimeout(function(){O.classList.add('animated')},10),setTimeout(function(){$()},300)}else O.style.display='block',O.slideWidth=r('#zuck-modal .story-viewer').offsetWidth,$();g('callbacks','onView')(S)})},next:function(){g('callbacks','onEnd')(q.internalData.currentStory,function T(){var U=q.internalData.currentStory,V=r('#'+E+' [data-id="'+U+'"]');V&&(V.classList.add('seen'),q.data[U].seen=!0,q.internalData.seenItems[U]=!0,o('seenItems',q.internalData.seenItems),k());var W=r('#zuck-modal .story-viewer.next');W?P(!0):h.close()})},close:function(){g('callbacks','onClose')(q.internalData.currentStory,function S(){g('backNative')&&(location.hash=''),A(O,!0),g('openEffect')?O.classList.add('closed'):(L.innerHTML='',O.style.display='none')})}}},H=function(L){var M=L.getAttribute('data-id'),N=p.querySelectorAll('#'+E+' [data-id="'+M+'"] .items > li'),O=[];t(N,function(P,Q){var R=Q.firstElementChild,S=R.firstElementChild;O.push({src:R.getAttribute('href'),length:R.getAttribute('data-length'),type:R.getAttribute('data-type'),time:R.getAttribute('data-time'),link:R.getAttribute('data-link'),linkText:R.getAttribute('data-linkText'),preview:S.getAttribute('src')})}),q.data[M].items=O},I=function(L){var M=L.getAttribute('data-id'),N=!1;q.internalData.seenItems[M]&&(N=!0),N?L.classList.add('seen'):L.classList.remove('seen');try{q.data[M]={id:M,photo:L.getAttribute('data-photo'),name:L.firstElementChild.lastElementChild.firstChild.innerText,link:L.firstElementChild.getAttribute('href'),lastUpdated:L.getAttribute('data-last-updated'),seen:N,items:[]}}catch(O){q.data[M]={items:[]}}L.onclick=function(O){O.preventDefault(),h.show(M)}},j=function(L){var M=q.internalData.currentStory;if(M){var O=r('#'+E+' [data-id="'+M+'"]')[L+'ElementSibling'];if(O){var P=O.getAttribute('data-id'),Q=q.data[P]||!1;return Q}}return!1},k=function(){t(p.querySelectorAll('#'+E+' .story.seen'),function(L,M){var N=q.data[M.getAttribute('data-id')],O=M.parentNode;O.removeChild(M),q.add(N,!0)})},l=function(L,M){var N=L[1],O=L[0],P=O.parentNode.parentNode.parentNode;if(!N||!O)return!1;var Q=q.internalData.currentVideoElement;if(Q&&Q.pause(),'video'==N.getAttribute('data-type')){var R=N.getElementsByTagName('video')[0];if(!R)return q.internalData.currentVideoElement=!1,!1;var S=function(){R.duration&&u(O.getElementsByTagName('b')[0].style,'AnimationDuration',R.duration+'s')};S(),R.addEventListener('loadedmetadata',S),q.internalData.currentVideoElement=R,R.currentTime=0,R.play(),M.target&&n(R,P)}else q.internalData.currentVideoElement=!1},m=function(){var L=q.internalData.currentVideoElement;if(L)try{L.pause()}catch(M){}},n=function(L,M){L.muted=!1,L.volume=1,L.removeAttribute('muted'),L.play(),L.paused&&(L.muted=!0,L.play()),M&&M.classList.remove('paused')},o=function(L,M){try{if(g('localStorage')){window.localStorage['zuck-'+E+'-'+L]=JSON.stringify(M)}}catch(O){}};q.data={},q.internalData={},q.internalData.seenItems=function J(L){if(g('localStorage')){var M='zuck-'+E+'-'+L;return!!window.localStorage[M]&&JSON.parse(window.localStorage[M])}return!1}('seenItems')||{},q.add=q.update=function(L,M){var N=s(L,'id'),O=r('#'+E+' [data-id="'+N+'"]'),P='',Q=s(L,'items'),R=!1;q.data[N]={},O?R=O:(R=p.createElement('div'),R.className='story'),!1===L.seen&&(q.internalData.seenItems[N]=!1,o('seenItems',q.internalData.seenItems)),R.setAttribute('data-id',N),R.setAttribute('data-photo',s(L,'photo')),R.setAttribute('data-last-updated',s(L,'lastUpdated'));var S=!1;Q[0]&&(S=Q[0].preview||''),P='<a href="'+s(L,'link')+'"><span class="img"><u style="background-image:url('+(g('avatars')||!S||''==S?s(L,'photo'):S)+')"></u></span><span class="info"><strong>'+s(L,'name')+'</strong><span class="time">'+D(s(L,'lastUpdated'))+'</span></span></a><ul class="items"></ul>',R.innerHTML=P,I(R),O||(M?c.appendChild(R):y(c,R)),t(Q,function(T,U){q.addItem(N,U,M)}),M||k()},q.next=function(){h.next()},q.addItem=function(L,M,N){var O=r('#'+E+' > [data-id="'+L+'"]'),P=p.createElement('li');P.className=s(M,'seen')?'seen':'',P.setAttribute('data-id',s(M,'id')),P.innerHTML='<a href="'+s(M,'src')+'" data-link="'+s(M,'link')+'" data-linkText="'+s(M,'linkText')+'" data-time="'+s(M,'time')+'" data-type="'+s(M,'type')+'" data-length="'+s(M,'length')+'"><img src="'+s(M,'preview')+'"></a>';var Q=O.querySelectorAll('.items')[0];N?Q.appendChild(P):y(Q,P),H(O)},q.removeItem=function(L,M){var N=r('#'+E+' > [data-id="'+L+'"] [data-id="'+M+'"]');c.parentNode.removeChild(N)},q.navigateItem=q.nextItem=function(L,M){var N=q.internalData.currentStory,O=q.data[N].currentItem,P=r('#zuck-modal .story-viewer[data-story-id="'+N+'"]'),Q='previous'==L?-1:1;if(!P||1==P.touchMove)return!1;var R=P.querySelectorAll('[data-index="'+O+'"]'),S=R[0],T=R[1],V=P.querySelectorAll('[data-index="'+(O+Q)+'"]'),W=V[0],X=V[1];if(P&&W&&X){var Z=g('callbacks','onNavigateItem');Z=Z?g('callbacks','onNavigateItem'):g('callbacks','onNextItem'),Z(N,X.getAttribute('data-story-id'),function Y(){'previous'==L?(S.classList.remove('seen'),T.classList.remove('seen')):(S.classList.add('seen'),T.classList.add('seen')),S.classList.remove('active'),T.classList.remove('active'),W.classList.remove('seen'),W.classList.add('active'),X.classList.remove('seen'),X.classList.add('active'),t(P.querySelectorAll('.time'),function($,_){_.innerText=D(X.getAttribute('data-time'))}),q.data[N].currentItem+=Q,l(V,M)})}else P&&'previous'!=L&&h.next(M)};return function K(){location.hash=='#!'+E&&(location.hash=''),r('#'+E+' .story')&&t(c.querySelectorAll('.story'),function(N,O){I(O,!0)}),g('backNative')&&window.addEventListener('popstate',function(){location.hash!='#!'+E&&(location.hash='')},!1),t(g('stories'),function(N,O){q.add(O,!0)}),k();var L=g('avatars')?'user-icon':'story-preview',M=g('list')?'list':'carousel';return c.className='stories '+L+' '+M+' '+(g('skin')+'').toLowerCase(),q}()},b}();