-
Notifications
You must be signed in to change notification settings - Fork 127
Expand file tree
/
Copy pathspotlight.min.js
More file actions
31 lines (31 loc) · 11 KB
/
spotlight.min.js
File metadata and controls
31 lines (31 loc) · 11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* Spotlight.js v0.7.8
* Copyright 2019-2021 Nextapps GmbH
* Author: Thomas Wilkerling
* Licence: Apache-2.0
* https://github.com/nextapps-de/spotlight
*/
(function(){'use strict';Object.assign||(Object.assign=function(a,b){for(var c=Object.keys(b),e=0,f;e<c.length;e++)f=c[e],a[f]=b[f];return a});Element.prototype.closest||(Element.prototype.closest=function(a){a=a.substring(1);for(var b=this;b&&1===b.nodeType;){if(b.classList.contains(a))return b;b=b.parentElement}return null});function d(a,b){a.classList.add(b)}function g(a,b){a.classList.remove(b)}function aa(){var a=h,b;for(b in a)b.startsWith("_s_")&&a.style.setProperty(b.substring(3),a[b])}function k(a,b,c){c=""+c;a["_s_"+b]!==c&&(a.style.setProperty(b,c),a["_s_"+b]=c)}var ba=0;function ca(a,b){b&&(k(a,"transition","none"),b());ba||(ba=a.clientTop&&0);b&&k(a,"transition","")}function l(a,b,c,e){da(!0,a,b,c,e)}function da(a,b,c,e,f){b[(a?"add":"remove")+"EventListener"](c,e,f||!1===f?f:!0)}
function ea(a,b){a.stopPropagation();b&&a.preventDefault()}function m(a,b){k(a,"display",b?"":"none")}function fa(a,b){k(a,"visibility",b?"":"hidden")}function n(a,b){k(a,"transition",b?"":"none")};var ha="info theme download play page close autofit zoom-in zoom-out prev next fullscreen".split(" "),ia={info:1,page:1,close:1,autofit:1,"zoom-in":1,"zoom-out":1,prev:1,next:1,fullscreen:1};var p=document.createElement("div");p.id="spotlight";p.innerHTML="<div class=spl-spinner></div><div class=spl-track><div class=spl-scene><div class=spl-pane></div></div></div><div class=spl-header><div class=spl-page> </div></div><div class=spl-progress></div><div class=spl-footer><div class=spl-title> </div><div class=spl-description> </div><div class=spl-button> </div></div><div class=spl-prev></div><div class=spl-next></div>";var ja={},ka=document.createElement("video");function la(a,b,c,e){if("node"!==e)for(var f=Object.keys(c),r=0,y;r<f.length;r++)if(y=f[r],3<y.length&&0===y.indexOf("src"))if("video"===e){var H=ja[y];if(H){if(0<H){var Ma=c[y];break}}else if(ka.canPlayType("video/"+y.substring(3).replace("-","").toLowerCase())){ja[y]=1;Ma=c[y];break}else ja[y]=-1}else if(H=parseInt(y.substring(4),10))if(H=Math.abs(b-H),!mb||H<mb){var mb=H;Ma=c[y]}return Ma||c.src||c.href||a.src||a.href};var ma={},na=navigator.connection,oa=window.devicePixelRatio||1,q,t,pa,u,v,w,qa,ra,x,z,sa,ta,ua,A,B,C,D,E,F,G,va,wa,I,xa,ya,za,Aa,Ba,Ca,J,Da,Ea,Fa,Ga,K,Ha,Ia,Ja,Ka,L,M,N,La,h,Na=document.createElement("img"),Oa,Pa,O,Qa=!1,Ra,Sa,Ta,Ua,Va,Wa,Xa,Ya,P,Za,Q,R,S,T,$a,U,ab;l(document,"click",bb);
function cb(){function a(c){return ma[c]=(p||document).getElementsByClassName("spl-"+c)[0]}if(!M){M=document.body;Oa=a("scene");Pa=a("header");O=a("footer");Ra=a("title");Sa=a("description");Ta=a("button");Ua=a("prev");Va=a("next");Xa=a("page");P=a("progress");Za=a("spinner");La=[a("pane")];V("close",db);M[U="requestFullscreen"]||M[U="msRequestFullscreen"]||M[U="webkitRequestFullscreen"]||M[U="mozRequestFullscreen"]||(U="");U?(ab=U.replace("request","exit").replace("mozRequest","mozCancel").replace("Request",
"Exit"),Wa=V("fullscreen",eb)):ha.pop();V("info",fb);V("autofit",gb);V("zoom-in",hb);V("zoom-out",ib);V("theme",jb);Ya=V("play",W);V("download",kb);l(Ua,"click",lb);l(Va,"click",nb);var b=a("track");l(b,"mousedown",ob);l(b,"mousemove",pb);l(b,"mouseleave",qb);l(b,"mouseup",qb);l(b,"touchstart",ob,{passive:!1});l(b,"touchmove",pb,{passive:!0});l(b,"touchend",qb);l(Ta,"click",function(){Ga?Ga(D,G):Fa&&(location.href=Fa)})}}
function V(a,b){var c=document.createElement("div");c.className="spl-"+a;l(c,"click",b);Pa.appendChild(c);return ma[a]=c}function bb(a){if(!A){var b=a.target.closest(".spotlight");if(b){ea(a,!0);a=b.closest(".spotlight-group");F=(a||document).getElementsByClassName("spotlight");for(var c=0;c<F.length;c++)if(F[c]===b){wa=a&&a.dataset;rb(c+1);break}}}}
function rb(a){if(E=F.length){M||cb();ya&&ya(a);for(var b=La[0],c=b.parentNode,e=La.length;e<E;e++){var f=b.cloneNode(!1);k(f,"left",100*e+"%");c.appendChild(f);La[e]=f}N||(M.appendChild(p),sb());D=a||1;n(Oa);tb(!0);U&&m(Wa,0<screen.availHeight-window.innerHeight);history.pushState({spl:1},"");history.pushState({spl:2},"");n(p,!0);d(M,"hide-scrollbars");d(p,"show");ub(!0);sb();X();J&&W(!0,!0)}}function Y(a,b){a=G[a];return"undefined"!==typeof a?(a=""+a,"false"!==a&&(a||b)):b}
function vb(a){a?ca(h,vb):(n(Oa,Ka),k(h,"opacity",Ja?0:1),wb(Ia&&.8),L&&d(h,L))}
function xb(a){N=La[a-1];h=N.firstChild;D=a;if(h)B&&gb(),Ba&&d(h,Ba),vb(!0),L&&g(h,L),Ja&&k(h,"opacity",1),Ia&&k(h,"transform",""),k(h,"visibility","visible"),R&&(Na.src=R),J&&yb(S);else{var b=Q.media,c=Y("spinner",!0);if("video"===b)zb(c,!0),h=document.createElement("video"),h.onloadedmetadata=function(){h===this&&(h.onerror=null,h.width=h.videoWidth,h.height=h.videoHeight,Ab(),zb(c),xb(a))},h.poster=G.poster,h.preload=Ea?"auto":"metadata",h.controls=Y("controls",!0),h.autoplay=G.autoplay,h.i=Y("inline"),
h.muted=Y("muted"),h.src=Q.src,N.appendChild(h);else{if("node"===b){h=Q.src;"string"===typeof h&&(h=document.querySelector(h));h&&(h.g||(h.g=h.parentNode),h.h||(h.h=h.getAttribute("style")),aa(),Ab(),N.appendChild(h),xb(a));return}zb(c,!0);h=document.createElement("img");h.onload=function(){h===this&&(h.onerror=null,zb(c),xb(a),Ab())};h.src=Q.src;N.appendChild(h)}h&&(c||k(h,"visibility","visible"),h.onerror=function(){h===this&&(Bb(h),d(Za,"error"),zb(c))})}}
function zb(a,b){a&&(a=Za,b?d(a,"spin"):g(a,"spin"))}function Cb(){return document.fullscreen||document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement}function Db(){sb();h&&Ab();if(U){var a=Cb(),b=Wa;a?d(b,"on"):g(b,"on");a||m(Wa,0<screen.availHeight-window.innerHeight)}}function sb(){v=p.clientWidth;w=p.clientHeight}function Ab(){qa=h.clientWidth;ra=h.clientHeight}function wb(a){k(h,"transform","translate(-50%, -50%) scale("+(a||x)+")")}
function Z(a,b){k(N,"transform",a||b?"translate("+a+"px, "+b+"px)":"")}function Eb(a,b,c){b?ca(Oa,function(){Eb(a,!1,c)}):k(Oa,"transform","translateX("+(100*-a+(c||0))+"%)")}function ub(a){da(a,window,"keydown",Fb);da(a,window,"wheel",Gb);da(a,window,"resize",Db);da(a,window,"popstate",Hb)}function Hb(a){N&&a.state.spl&&db(!0)}
function Fb(a){if(N){var b=!1!==G["zoom-in"];switch(a.keyCode){case 8:b&&gb();break;case 27:db();break;case 32:J&&W();break;case 37:lb();break;case 39:nb();break;case 38:case 107:case 187:b&&hb();break;case 40:case 109:case 189:b&&ib();break;case 73:fb()}}}function Gb(a){if(N&&!1!==G["zoom-in"]){var b=a.deltaY;b=.5*(0>b?1:b?-1:0);0>b?ib(a,a.clientX,a.clientY):0<b&&hb(a,a.clientX,a.clientY)}}
function W(a,b){("boolean"===typeof a?a:!S)===!S&&(S=S?clearTimeout(S):1,a=Ya,S?d(a,"on"):g(a,"on"),b||yb(S))}function yb(a){xa&&(ca(P,function(){k(P,"transition-duration","");k(P,"transform","")}),a&&(k(P,"transition-duration",Ha+"s"),k(P,"transform","translateX(0)")));a&&(S=setTimeout(nb,1E3*Ha))}function X(){Ca&&($a=Date.now()+2950,T||(d(p,"menu"),Ib(3E3)))}function Ib(a){T=setTimeout(function(){var b=Date.now();b>=$a?(g(p,"menu"),T=0):Ib($a-b)},a)}
function Jb(a){"boolean"===typeof a&&(T=a?T:0);T?(T=clearTimeout(T),g(p,"menu")):X()}function ob(a){ea(a,!0);sa=!0;A=ta=!1;var b=a;(z=a=a.touches)&&(a=a[0])&&(b=a);ua=qa*x<=v;pa=b.pageX;u=b.pageY;n(N)}function qb(a){ea(a);z=null;if(sa){if(ta){if(ua&&ta){var b=(a=q<-(v/7)&&(D<E||I))||q>v/7&&(1<D||I);if(a||b)Eb(D-1,!0,q/v*100),a&&nb()||b&&lb();A&&t<-(w/4)?db():t=q=0;Z()}n(N,!0)}else Jb();sa=!1}}
function Kb(a){return Math.sqrt(Math.pow(a[0].clientX-a[1].clientX,2)+Math.pow(a[0].clientY-a[1].clientY,2))}
function pb(a){ea(a);if(sa){var b=a.touches;if(!1!==G["zoom-in"]&&b&&2===b.length&&z&&2===z.length){var c=[.5*(b[0].clientX+b[1].clientX),.5*(b[0].clientY+b[1].clientY)];Lb(Kb(b)/Kb(z),c[0],c[1],!1)}(b=(z=b)&&b[0])&&(a=b);ta||(b=pa-a.pageX,c=u-a.pageY,A=ua&&c>1.15*Math.abs(b));A?t-=u-(u=a.pageY):q-=pa-(pa=a.pageX);ua||(b=(qa*x-v)/2,q>b?q=b:q<-b&&(q=-b),ra*x>w&&(b=(ra*x-w)/2,t-=u-(u=a.pageY),t>b?t=b:t<-b&&(t=-b)));ta=!0;Z(q,t)}else X()}
function eb(a){var b=Cb();if("boolean"!==typeof a||a!==!!b)if(b)document[ab]();else p[U]()}function jb(a){"string"!==typeof a&&(a=C?"":Da||"white");C!==a&&(C&&g(p,C),a&&d(p,a),C=a)}function gb(a){"boolean"===typeof a&&(B=!a);B=1===x&&!B;a=h;B?d(a,"autofit"):g(a,"autofit");k(h,"transform","");x=1;t=q=0;Ab();n(N);Z()}function Lb(a,b,c,e){var f=x*a;n(N,e);n(h,e);B&&gb();if(1>=f)q=t=0,Z(q,t),Mb(1);else if(!(50<f)){if(c){e=v/2;var r=w/2;q=b-(b-q-e)*a-e;t=c-(c-t-r)*a-r}else q*=a,t*=a;Z(q,t);Mb(f)}}
function hb(a,b,c){Lb(1/.65,b,c,!0)}function ib(a,b,c){Lb(.65,b,c,!0)}function Mb(a){x=a||1;wb()}function fb(){Qa=!Qa;fa(O,Qa)}function kb(){var a=M,b=document.createElement("a"),c=h.src;b.href=c;b.download=c.substring(c.lastIndexOf("/")+1);a.appendChild(b);b.click();a.removeChild(b)}
function db(a){setTimeout(function(){M.removeChild(p);N=h=Q=G=wa=F=ya=za=Aa=Ga=null;A=!1},200);g(M,"hide-scrollbars");g(p,"show");eb(!1);ub();history.go(!0===a?-1:-2);R&&(Na.src="");S&&W();h&&Bb(h);T&&(T=clearTimeout(T));C&&jb();K&&g(p,K);Aa&&Aa()}function Bb(a){if(a.g)a.setAttribute("style",a.h||""),a.g.appendChild(a),a.g=a.h=null;else{var b=a.parentNode;b&&b.removeChild(a);a.onerror=null;a.src=""}}function lb(a){a&&X();if(1<E){if(1<D)return Nb(D-1);if(I)return Eb(E,!0),Nb(E)}}
function nb(a){a&&X();if(1<E){if(D<E)return Nb(D+1);if(I)return Eb(-1,!0),Nb(1);S&&W()}}function Nb(a){if(a!==D){S?(clearTimeout(S),yb()):X();var b=a>D;D=a;tb(b);return!0}}
function Ob(a){var b=F[D-1],c=b;G={};wa&&Object.assign(G,wa);Object.assign(G,c.dataset||c);va=G.media;Ga=G.onclick;Da=G.theme;K=G["class"];Ca=Y("autohide",!0);I=Y("infinite");xa=Y("progress",!0);J=Y("autoslide");Ea=Y("preload",!0);Fa=G.buttonHref;Ha=J&&parseFloat(J)||7;C||Da&&jb(Da);K&&d(p,K);K&&ca(p);if(c=G.control){c="string"===typeof c?c.split(","):c;for(var e=0;e<ha.length;e++)G[ha[e]]=!1;for(e=0;e<c.length;e++){var f=c[e].trim();"zoom"===f?G["zoom-in"]=G["zoom-out"]=!0:G[f]=!0}}c=G.animation;
Ia=Ja=Ka=!c;L=!1;if(c)for(c="string"===typeof c?c.split(","):c,e=0;e<c.length;e++)f=c[e].trim(),"scale"===f?Ia=!0:"fade"===f?Ja=!0:"slide"===f?Ka=!0:f&&(L=f);Ba=G.fit;e=na&&na.downlink;c=Math.max(w,v)*oa;e&&1200*e<c&&(c=1200*e);var r;Q={media:va,src:la(b,c,G,va),title:Y("title",b.alt||b.title||(r=b.firstElementChild)&&(r.alt||r.title))};R&&(Na.src=R="");Ea&&a&&(b=F[D])&&(a=b.dataset||b,(r=a.media)&&"image"!==r||(R=la(b,c,a,r)));for(b=0;b<ha.length;b++)a=ha[b],m(ma[a],Y(a,ia[a]))}
function tb(a){t=q=0;x=1;if(h)if(h.onerror)Bb(h);else{var b=h;setTimeout(function(){b&&h!==b&&(Bb(b),b=null)},650);vb();Z()}O&&fa(O,!1);Ob(a);Eb(D-1);g(Za,"error");xb(D);n(N);Z();a=Q.title;var c=Y("description"),e=Y("button"),f=a||c||e;f&&(a&&(Ra.firstChild.nodeValue=a),c&&(Sa.firstChild.nodeValue=c),e&&(Ta.firstChild.nodeValue=e),m(Ra,a),m(Sa,c),m(Ta,e),k(O,"transform","all"===Ca?"":"none"));Ca||d(p,"menu");fa(O,Qa&&f);fa(Ua,I||1<D);fa(Va,I||D<E);Xa.firstChild.nodeValue=1<E?D+" / "+E:"";za&&za(D,
G)};window.Spotlight={init:cb,theme:jb,fullscreen:eb,download:kb,autofit:gb,next:nb,prev:lb,goto:Nb,close:db,zoom:Mb,menu:Jb,show:function(a,b,c){F=a;b&&(wa=b,ya=b.onshow,za=b.onchange,Aa=b.onclose,c=c||b.index);rb(c)},play:W,addControl:V,removeControl:function(a){var b=ma[a];b&&(Pa.removeChild(b),ma[a]=null)}};}).call(this);