diff --git a/CHANGELOG.md b/CHANGELOG.md index cd91d77..535fd9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +### [2.1.6] +- Update: use /youtube-nocookie.com/embed/ for all YouTube videos + ### [2.1.5] - Update: return false after function execution for `onPostOpen` and `onPreClose` #190 diff --git a/composer.json b/composer.json index 049d062..2a15c4d 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "nicolafranchini/venobox", "description": "Responsive JavaScript modal window plugin, touch swipe gallery", - "version": "2.1.5", + "version": "2.1.6", "keywords": [ "lightbox", "modal", diff --git a/dist/venobox.js b/dist/venobox.js index 5135160..d7cd0a7 100644 --- a/dist/venobox.js +++ b/dist/venobox.js @@ -5,7 +5,7 @@ }(this, (function () { 'use strict'; /** - * VenoBox 2.1.5 + * VenoBox 2.1.6 * Copyright 2013-2024 Nicola Franchini * @license: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE */ @@ -416,7 +416,7 @@ if (videoObj.type == 'vimeo') { player = 'https://player.vimeo.com/video/'; } else if (videoObj.type == 'youtube') { - player = 'https://www.youtube.com/embed/'; + player = 'https://www.youtube-nocookie.com/embed/'; } newcontent = '
'; } else { diff --git a/dist/venobox.min.js b/dist/venobox.min.js index 01e4baf..896caec 100644 --- a/dist/venobox.min.js +++ b/dist/venobox.min.js @@ -1,7 +1,7 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VenoBox=t()}(this,(function(){"use strict"; /** - * VenoBox 2.1.5 + * VenoBox 2.1.6 * Copyright 2013-2024 Nicola Franchini * @license: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE - */let e,t,o,n,s,i,a,r,l,d,c,v,u,b,p,g,m,f,y,x,h,L,w,k,S,C,A,E,q,P,M,T,j,H,O,z,I,V;const B=document.createElement("div");let N,D=0,Q=0,X=0,Y=!1,R=new Image,F=!1;const K={bounce:["sk-bounce","sk-bounce-dot",2],chase:["sk-chase","sk-chase-dot",6],circle:["sk-circle","sk-circle-dot",12],"circle-fade":["sk-circle-fade","sk-circle-fade-dot",12],flow:["sk-flow","sk-flow-dot",3],fold:["sk-fold","sk-fold-cube",4],grid:["sk-grid","sk-grid-cube",9],plane:["sk-plane","",0],pulse:["sk-pulse","",5],swing:["sk-swing","sk-swing-dot",2],wander:["sk-wander","sk-wander-cube",3],wave:["sk-wave","sk-wave-rect",5]},U={selector:".venobox",autoplay:!1,bgcolor:"#fff",border:"0",customClass:!1,infinigall:!1,maxWidth:"100%",navigation:!0,navKeyboard:!0,navTouch:!0,navSpeed:300,numeration:!1,overlayClose:!0,overlayColor:"rgba(23,23,23,0.95)",popup:!1,ratio:"16x9",share:!1,shareStyle:"pill",spinner:"bounce",spinColor:"#d2d2d2",titleattr:"title",titlePosition:"top",titleStyle:"bar",toolsBackground:"#1C1C1C",toolsColor:"#d2d2d2",onPreOpen:function(){return!0},onPostOpen:function(){},onPreClose:function(){return!0},onNavComplete:function(){},onContentLoaded:function(){},onInit:function(){},jQuerySelectors:!1,focusItem:!1,fitView:!1};function W(e,t,o){if("[object Object]"===Object.prototype.toString.call(e)){let n;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.call(o,e[n],n,e)}else{let n=0,s=e.length;for(n=0;n1&&(a=1);let r=e(a);t(r),a<1&&requestAnimationFrame(s)}))}function G(e){if(!e)return!1;y=!0,r=e,L=!1,w=!1,S=e.getAttribute("data-maxwidth")||e.settings.maxWidth,C=e.getAttribute("data-overlay")||e.settings.overlayColor,A=e.getAttribute("data-ratio")||e.settings.ratio,E=e.hasAttribute("data-autoplay")||e.settings.autoplay,q=e.getAttribute("data-href")||e.getAttribute("href"),P=e.getAttribute("data-customclass")||e.settings.customClass,I=e.getAttribute(e.settings.titleattr)||"",O=e.getAttribute("data-border")||e.settings.border,M=e.hasAttribute("data-fitview")||e.settings.fitView}function J(){return!(!r||!document.body.classList.contains("vbox-open"))&&((!r.settings.onPreClose||"function"!=typeof r.settings.onPreClose||!1!==r.settings.onPreClose(r,p,j,H))&&(document.body.removeEventListener("keydown",te),document.body.classList.remove("vbox-open"),r.settings.focusItem&&r.focus(),void _({duration:200,timing:Z,draw:function(e){k.style.opacity=1-e,1===e&&k.remove()}})))}function $(){ue(j)}function ee(){ue(H)}function te(e){27===e.keyCode&&J(),V||(37==e.keyCode&&!0===w&&ue(H),39==e.keyCode&&!0===L&&ue(j),V=setTimeout((()=>{V=null}),100))}function oe(){y=!1,a.style.opacity=0,a.innerHTML=x,F?(a.classList.add("vbox-grab"),a.addEventListener("touchstart",ae,!1),a.addEventListener("touchend",re,!1),a.addEventListener("touchmove",le,!1),a.addEventListener("mousedown",ae,!1),a.addEventListener("mouseup",re,!1),a.addEventListener("mouseout",re,!1),a.addEventListener("mousemove",le,!1)):(a.classList.remove("vbox-grab"),a.removeEventListener("touchstart",ae,!1),a.removeEventListener("touchend",re,!1),a.removeEventListener("touchmove",le,!1),a.removeEventListener("mousedown",ae,!1),a.removeEventListener("mouseup",re,!1),a.removeEventListener("mouseout",re,!1),a.removeEventListener("mousemove",le,!1));let e=a.querySelector(":first-child");e.classList.add("vbox-child"),e.style.backgroundColor=r.settings.bgcolor,e.style.transform="scale(0.9)",e.style.transition="transform 200ms";let t=a.querySelector(".vbox-child img");t&&t.addEventListener("dragstart",(function(e){e.preventDefault()})),i.scrollTo(0,0),e.style.transform="scale(1)",k.style.setProperty("--vbox-padding",O),k.style.setProperty("--vbox-max-width",S),W(k.classList,(function(e){"vbox-overlay"!==e&&k.classList.remove(e)})),P&&k.classList.add(P),M?a.classList.add("vbox-fit"):a.classList.remove("vbox-fit"),_({duration:200,timing:Z,draw:function(e){a.style.opacity=e,1===e&&u.classList.add("vbox-hidden")}}),r.settings.onContentLoaded&&"function"==typeof r.settings.onContentLoaded&&r.settings.onContentLoaded(x)}function ne(e){a.classList.contains("vbox-"+e)||oe()}function se(e,t,o){let n;a.classList.add("vbox-loading");let s=function(e){let t,o,n;if(o=e.match(/(https?:\/\/)?((www\.)?(youtube(-nocookie)?|youtube.googleapis)\.com.*(v\/|v=|vi=|vi\/|e\/|embed\/|user\/.*\/u\/\d+\/)|youtu\.be\/)([_0-9a-z-]+)/i),o&&o[7])t="youtube",n=o[7];else{let s=/^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/;o=e.match(s),o&&o[5]&&(t="vimeo",n=o[5])}return{type:t,id:n}}(e);if("vimeo"==s.type||"youtube"==s.type){let i;n=o?"?rel=0&autoplay=1":"?rel=0";let a=n+function(e){let t="",o=decodeURIComponent(e).split("?");if(void 0!==o[1]){let e,n,s=o[1].split("&");for(n=0;n'}else n=o?" autoplay":"",x='
";a.classList.remove("vbox-loading"),ne("animated")}function ie(){var e;if(e=x,B.innerHTML=e,g=B.querySelectorAll("img"),g.length){let e=0;W(g,(function(t){let o=t.src;R=new Image,R.onload=function(){e++,e==g.length&&(a.classList.remove("vbox-loading"),ne("animated"))},R.onerror=function(){e++,e==g.length&&(a.classList.remove("vbox-loading"),ne("animated"))},R.src=o}))}else a.classList.remove("vbox-loading"),ne("animated")}function ae(e){if(!y){let t=.84*r.settings.navSpeed;a.style.transition="margin "+t+"ms ease-out, opacity "+t+"ms ease-out",D=Q="touchstart"===e.type?e.touches[0].pageX:e.pageX,T=v="touchstart"===e.type?e.touches[0].pageY:e.pageY,Y=!0}}function re(e){if(Y){Y=!1;let e=r,t=!1;X=Q-D,X<0&&L&&(e=j,t=!0),X>0&&w&&(e=H,t=!0),Math.abs(X)>=50&&t?ue(e):(a.style.marginLeft=0,a.style.opacity=1)}}function le(e){if(Y&&!y){Q="touchmove"===e.type?e.touches[0].pageX:e.pageX,v="touchmove"===e.type?e.touches[0].pageY:e.pageY,d=Q-D,c=v-T;let t=Math.abs(d);if(t>Math.abs(c)&&t<=180){let o=1.5*(1-t/180);e.preventDefault(),a.style.marginLeft=d+"px",a.style.opacity=o}}}function de(e){if(!e)return!1;z=e.dataset.gall,h=e.settings.numeration,m=e.settings.infinigall,o.innerHTML="";let s=e.dataset.vbtype;e.settings.share&&"iframe"!==s&&"inline"!==s&&"ajax"!==s&&function(e){if(navigator.canShare){const t={url:e};o.insertAdjacentHTML("beforeend",''),o.querySelector(".vbox-share-mobile").addEventListener("click",(function(e){e.preventDefault(),navigator.share(t)}))}o.insertAdjacentHTML("beforeend",''),o.insertAdjacentHTML("beforeend",'
'),o.querySelector(".vbox-share-copy").addEventListener("click",(function(t){t.preventDefault();let o=document.getElementById("myTooltip");navigator.clipboard.writeText(e).then((function(){o.innerHTML='
Copied
'}),(function(){console.log("copy failed")}))}))}(e.href),f=document.querySelectorAll('.vbox-item[data-gall="'+z+'"]'),l=Array.prototype.indexOf.call(f,e),f.length<2&&(h=!1),f.length<3&&(m=!1),j=f[l+1],H=f[l-1],!j&&m&&(j=f[0]),!H&&m&&(H=f[f.length-1]),f.length>=1?(p=l+1,t.innerHTML=p+" / "+f.length):p=1,h?t.classList.remove("vbox-hidden"):t.classList.add("vbox-hidden"),""!==I?n.classList.remove("vbox-hidden"):n.classList.add("vbox-hidden"),n.innerHTML=I,w=!1,L=!1,(j||m)&&(L=!0),(l>0||m)&&(w=!0),F=(w||L)&&e.settings.navTouch;let i=k.querySelector(".vbox-next"),a=k.querySelector(".vbox-prev");w?a.classList.remove("vbox-hidden"):a.classList.add("vbox-hidden"),L?i.classList.remove("vbox-hidden"):i.classList.add("vbox-hidden"),e.settings.navigation||(i.classList.add("vbox-hidden"),a.classList.add("vbox-hidden"))}function ce(t){if(!t)return!1;e.style.backgroundColor=C,b.innerHTML=function(e){if(!e)return"Loading...";let t='
',o=0;for(o=0;o
';return t+="",t}(K[t.settings.spinner]),k.style.setProperty("--sk-color",t.settings.spinColor),u.classList.remove("vbox-hidden"),o.classList.remove("vbox-top","vbox-bottom"),n.classList.remove("vbox-top","vbox-bottom"),"top"==t.settings.titlePosition?(n.classList.add("vbox-top"),o.classList.add("vbox-bottom")):(n.classList.add("vbox-bottom"),o.classList.add("vbox-top"));let s="bar"===t.settings.titleStyle?"100%":"auto",i="pill"===t.settings.titleStyle?"5em":"0",a="bar"===t.settings.shareStyle?"100%":"auto",r="pill"===t.settings.shareStyle?"5em":"0",l="transparent"===t.settings.titleStyle?"transparent":t.settings.toolsBackground,d="transparent"===t.settings.shareStyle?"transparent":t.settings.toolsBackground;k.style.setProperty("--vbox-title-width",s),k.style.setProperty("--vbox-title-radius",i),k.style.setProperty("--vbox-share-width",a),k.style.setProperty("--vbox-share-radius",r),k.style.setProperty("--vbox-tools-color",t.settings.toolsColor),k.style.setProperty("--vbox-title-background",l),k.style.setProperty("--vbox-share-background",d)}function ve(){if(!r)return!1;switch(r.dataset.vbtype){case"iframe":e=q,t=A,a.classList.add("vbox-loading"),x='
',a.classList.remove("vbox-loading"),ne("animated");break;case"inline":!function(e){let t=document.querySelector(e);t&&(a.classList.add("vbox-loading"),x='
'+t.innerHTML+"
",a.classList.remove("vbox-loading"),ne("animated"))}(q);break;case"ajax":!function(e){a.classList.add("vbox-loading");let t=new XMLHttpRequest;t.open("GET",e,!0),t.onload=function(){x='
'+t.response+"
",ie()},t.onerror=function(){x='
',a.classList.remove("vbox-loading"),ne("animated")},t.send()}(q);break;case"video":se(q,A,E);break;default:!function(e){R.onload=function(){x='
',a.classList.remove("vbox-loading"),ne("animated")},R.src=e}(q)}var e,t}function ue(e){if(!e||y||!document.body.classList.contains("vbox-open"))return!1;G(e),ce(e);const t=.84*r.settings.navSpeed;a.style.transition="margin "+t+"ms ease-out, opacity "+t+"ms ease-out",e===H&&a.classList.add("swipe-right"),e===j&&a.classList.add("swipe-left"),u.classList.remove("vbox-hidden");const o=a.style.opacity;a.classList.add("vbox-animated","vbox-loading"),N=a.cloneNode(!1),N.classList.add("cloned"),N.classList.remove("swipe-left","swipe-right"),N.style.opacity=0,N.style.marginLeft="0",N.style.marginRight="0";const n=a;i.append(N),a=N,a.classList.remove("cloned"),de(e),_({duration:r.settings.navSpeed,timing:Z,draw:function(e){n.style.opacity=o-e/o,1===e&&(n.remove(),a.classList.remove("vbox-animated"),ne("loading"),y=!1,r.settings.onNavComplete&&"function"==typeof r.settings.onNavComplete&&r.settings.onNavComplete(r,p,j,H))}}),ve()}function be(l){return!(document.body.classList.contains("vbox-open")||!l)&&((!l.settings.onPreOpen||"function"!=typeof l.settings.onPreOpen||!1!==l.settings.onPreOpen(l))&&(G(l),document.body.insertAdjacentHTML("beforeend",s),document.body.classList.add("vbox-open"),k=document.querySelector(".vbox-overlay"),e=k.querySelector(".vbox-backdrop"),i=k.querySelector(".vbox-container"),a=i.querySelector(".vbox-content"),t=k.querySelector(".vbox-num"),o=k.querySelector(".vbox-share"),n=k.querySelector(".vbox-title"),u=k.querySelector(".vbox-preloader"),b=u.querySelector(".vbox-preloader-inner"),k.style.opacity=0,ce(l),de(l),a.classList.add("vbox-animated","vbox-loading"),_({duration:200,timing:Z,draw:function(e){k.style.opacity=e,1===e&&(a.classList.remove("vbox-animated"),y=!1,ne("loading"),r.settings.onPostOpen&&"function"==typeof r.settings.onPostOpen&&r.settings.onPostOpen(r,p,j,H))}}),ve(),l.settings.navKeyboard&&(document.body.addEventListener("keydown",te),document.body.addEventListener("keyup",(()=>{V&&(clearTimeout(V),V=null)}))),document.querySelector(".vbox-prev").addEventListener("click",(function(){ue(H)})),document.querySelector(".vbox-next").addEventListener("click",(function(){ue(j)})),void k.addEventListener("click",(function(e){let t=document.querySelector(".vbox-close");t&&(t.contains(e.target)||t===e.target||r.settings.overlayClose&&(e.target.classList.contains("vbox-overlay")||e.target.classList.contains("vbox-content")||e.target.classList.contains("vbox-backdrop")||e.target.classList.contains("vbox-close")||e.target.classList.contains("vbox-preloader")||e.target.classList.contains("vbox-container")))&&J()}))))}const pe=function(e){const t={};let o=function(e,t){let o={};return W(e,(function(t,n){o[n]=e[n]})),W(t,(function(e,n){o[n]=t[n]})),o}(U,e||{});return t.close=J,t.next=$,t.prev=ee,t.open=be,t.settings=o,function(e,t){t.onInit&&"function"==typeof t.onInit&&t.onInit(e);let o=t.jQuerySelectors||document.querySelectorAll(t.selector);if(s='',W(o,(function(e){if(e.classList.contains("vbox-item"))return!0;e.settings=t,e.classList.add("vbox-item"),e.addEventListener("click",(function(t){return t.preventDefault(),e.blur(),be(e),!1}))})),t.popup){let e=document.querySelector(t.popup);e.settings=t,be(e)}}(t,o),t};return"function"==typeof jQuery&&jQuery.fn.extend({venobox:function(e){const t=e||{};t.jQuerySelectors=this,new pe({pluginoptions:t})}}),pe})); + */let e,t,o,n,s,i,a,r,l,d,c,v,u,b,p,g,m,f,y,x,h,L,w,k,S,C,A,E,q,P,M,T,j,H,O,z,I,V;const B=document.createElement("div");let N,D=0,Q=0,X=0,Y=!1,R=new Image,F=!1;const K={bounce:["sk-bounce","sk-bounce-dot",2],chase:["sk-chase","sk-chase-dot",6],circle:["sk-circle","sk-circle-dot",12],"circle-fade":["sk-circle-fade","sk-circle-fade-dot",12],flow:["sk-flow","sk-flow-dot",3],fold:["sk-fold","sk-fold-cube",4],grid:["sk-grid","sk-grid-cube",9],plane:["sk-plane","",0],pulse:["sk-pulse","",5],swing:["sk-swing","sk-swing-dot",2],wander:["sk-wander","sk-wander-cube",3],wave:["sk-wave","sk-wave-rect",5]},U={selector:".venobox",autoplay:!1,bgcolor:"#fff",border:"0",customClass:!1,infinigall:!1,maxWidth:"100%",navigation:!0,navKeyboard:!0,navTouch:!0,navSpeed:300,numeration:!1,overlayClose:!0,overlayColor:"rgba(23,23,23,0.95)",popup:!1,ratio:"16x9",share:!1,shareStyle:"pill",spinner:"bounce",spinColor:"#d2d2d2",titleattr:"title",titlePosition:"top",titleStyle:"bar",toolsBackground:"#1C1C1C",toolsColor:"#d2d2d2",onPreOpen:function(){return!0},onPostOpen:function(){},onPreClose:function(){return!0},onNavComplete:function(){},onContentLoaded:function(){},onInit:function(){},jQuerySelectors:!1,focusItem:!1,fitView:!1};function W(e,t,o){if("[object Object]"===Object.prototype.toString.call(e)){let n;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.call(o,e[n],n,e)}else{let n=0,s=e.length;for(n=0;n1&&(a=1);let r=e(a);t(r),a<1&&requestAnimationFrame(s)}))}function G(e){if(!e)return!1;y=!0,r=e,L=!1,w=!1,S=e.getAttribute("data-maxwidth")||e.settings.maxWidth,C=e.getAttribute("data-overlay")||e.settings.overlayColor,A=e.getAttribute("data-ratio")||e.settings.ratio,E=e.hasAttribute("data-autoplay")||e.settings.autoplay,q=e.getAttribute("data-href")||e.getAttribute("href"),P=e.getAttribute("data-customclass")||e.settings.customClass,I=e.getAttribute(e.settings.titleattr)||"",O=e.getAttribute("data-border")||e.settings.border,M=e.hasAttribute("data-fitview")||e.settings.fitView}function J(){return!(!r||!document.body.classList.contains("vbox-open"))&&((!r.settings.onPreClose||"function"!=typeof r.settings.onPreClose||!1!==r.settings.onPreClose(r,p,j,H))&&(document.body.removeEventListener("keydown",te),document.body.classList.remove("vbox-open"),r.settings.focusItem&&r.focus(),void _({duration:200,timing:Z,draw:function(e){k.style.opacity=1-e,1===e&&k.remove()}})))}function $(){ue(j)}function ee(){ue(H)}function te(e){27===e.keyCode&&J(),V||(37==e.keyCode&&!0===w&&ue(H),39==e.keyCode&&!0===L&&ue(j),V=setTimeout((()=>{V=null}),100))}function oe(){y=!1,a.style.opacity=0,a.innerHTML=x,F?(a.classList.add("vbox-grab"),a.addEventListener("touchstart",ae,!1),a.addEventListener("touchend",re,!1),a.addEventListener("touchmove",le,!1),a.addEventListener("mousedown",ae,!1),a.addEventListener("mouseup",re,!1),a.addEventListener("mouseout",re,!1),a.addEventListener("mousemove",le,!1)):(a.classList.remove("vbox-grab"),a.removeEventListener("touchstart",ae,!1),a.removeEventListener("touchend",re,!1),a.removeEventListener("touchmove",le,!1),a.removeEventListener("mousedown",ae,!1),a.removeEventListener("mouseup",re,!1),a.removeEventListener("mouseout",re,!1),a.removeEventListener("mousemove",le,!1));let e=a.querySelector(":first-child");e.classList.add("vbox-child"),e.style.backgroundColor=r.settings.bgcolor,e.style.transform="scale(0.9)",e.style.transition="transform 200ms";let t=a.querySelector(".vbox-child img");t&&t.addEventListener("dragstart",(function(e){e.preventDefault()})),i.scrollTo(0,0),e.style.transform="scale(1)",k.style.setProperty("--vbox-padding",O),k.style.setProperty("--vbox-max-width",S),W(k.classList,(function(e){"vbox-overlay"!==e&&k.classList.remove(e)})),P&&k.classList.add(P),M?a.classList.add("vbox-fit"):a.classList.remove("vbox-fit"),_({duration:200,timing:Z,draw:function(e){a.style.opacity=e,1===e&&u.classList.add("vbox-hidden")}}),r.settings.onContentLoaded&&"function"==typeof r.settings.onContentLoaded&&r.settings.onContentLoaded(x)}function ne(e){a.classList.contains("vbox-"+e)||oe()}function se(e,t,o){let n;a.classList.add("vbox-loading");let s=function(e){let t,o,n;if(o=e.match(/(https?:\/\/)?((www\.)?(youtube(-nocookie)?|youtube.googleapis)\.com.*(v\/|v=|vi=|vi\/|e\/|embed\/|user\/.*\/u\/\d+\/)|youtu\.be\/)([_0-9a-z-]+)/i),o&&o[7])t="youtube",n=o[7];else{let s=/^.*(vimeo\.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/;o=e.match(s),o&&o[5]&&(t="vimeo",n=o[5])}return{type:t,id:n}}(e);if("vimeo"==s.type||"youtube"==s.type){let i;n=o?"?rel=0&autoplay=1":"?rel=0";let a=n+function(e){let t="",o=decodeURIComponent(e).split("?");if(void 0!==o[1]){let e,n,s=o[1].split("&");for(n=0;n'}else n=o?" autoplay":"",x='
";a.classList.remove("vbox-loading"),ne("animated")}function ie(){var e;if(e=x,B.innerHTML=e,g=B.querySelectorAll("img"),g.length){let e=0;W(g,(function(t){let o=t.src;R=new Image,R.onload=function(){e++,e==g.length&&(a.classList.remove("vbox-loading"),ne("animated"))},R.onerror=function(){e++,e==g.length&&(a.classList.remove("vbox-loading"),ne("animated"))},R.src=o}))}else a.classList.remove("vbox-loading"),ne("animated")}function ae(e){if(!y){let t=.84*r.settings.navSpeed;a.style.transition="margin "+t+"ms ease-out, opacity "+t+"ms ease-out",D=Q="touchstart"===e.type?e.touches[0].pageX:e.pageX,T=v="touchstart"===e.type?e.touches[0].pageY:e.pageY,Y=!0}}function re(e){if(Y){Y=!1;let e=r,t=!1;X=Q-D,X<0&&L&&(e=j,t=!0),X>0&&w&&(e=H,t=!0),Math.abs(X)>=50&&t?ue(e):(a.style.marginLeft=0,a.style.opacity=1)}}function le(e){if(Y&&!y){Q="touchmove"===e.type?e.touches[0].pageX:e.pageX,v="touchmove"===e.type?e.touches[0].pageY:e.pageY,d=Q-D,c=v-T;let t=Math.abs(d);if(t>Math.abs(c)&&t<=180){let o=1.5*(1-t/180);e.preventDefault(),a.style.marginLeft=d+"px",a.style.opacity=o}}}function de(e){if(!e)return!1;z=e.dataset.gall,h=e.settings.numeration,m=e.settings.infinigall,o.innerHTML="";let s=e.dataset.vbtype;e.settings.share&&"iframe"!==s&&"inline"!==s&&"ajax"!==s&&function(e){if(navigator.canShare){const t={url:e};o.insertAdjacentHTML("beforeend",''),o.querySelector(".vbox-share-mobile").addEventListener("click",(function(e){e.preventDefault(),navigator.share(t)}))}o.insertAdjacentHTML("beforeend",''),o.insertAdjacentHTML("beforeend",'
'),o.querySelector(".vbox-share-copy").addEventListener("click",(function(t){t.preventDefault();let o=document.getElementById("myTooltip");navigator.clipboard.writeText(e).then((function(){o.innerHTML='
Copied
'}),(function(){console.log("copy failed")}))}))}(e.href),f=document.querySelectorAll('.vbox-item[data-gall="'+z+'"]'),l=Array.prototype.indexOf.call(f,e),f.length<2&&(h=!1),f.length<3&&(m=!1),j=f[l+1],H=f[l-1],!j&&m&&(j=f[0]),!H&&m&&(H=f[f.length-1]),f.length>=1?(p=l+1,t.innerHTML=p+" / "+f.length):p=1,h?t.classList.remove("vbox-hidden"):t.classList.add("vbox-hidden"),""!==I?n.classList.remove("vbox-hidden"):n.classList.add("vbox-hidden"),n.innerHTML=I,w=!1,L=!1,(j||m)&&(L=!0),(l>0||m)&&(w=!0),F=(w||L)&&e.settings.navTouch;let i=k.querySelector(".vbox-next"),a=k.querySelector(".vbox-prev");w?a.classList.remove("vbox-hidden"):a.classList.add("vbox-hidden"),L?i.classList.remove("vbox-hidden"):i.classList.add("vbox-hidden"),e.settings.navigation||(i.classList.add("vbox-hidden"),a.classList.add("vbox-hidden"))}function ce(t){if(!t)return!1;e.style.backgroundColor=C,b.innerHTML=function(e){if(!e)return"Loading...";let t='
',o=0;for(o=0;o
';return t+="",t}(K[t.settings.spinner]),k.style.setProperty("--sk-color",t.settings.spinColor),u.classList.remove("vbox-hidden"),o.classList.remove("vbox-top","vbox-bottom"),n.classList.remove("vbox-top","vbox-bottom"),"top"==t.settings.titlePosition?(n.classList.add("vbox-top"),o.classList.add("vbox-bottom")):(n.classList.add("vbox-bottom"),o.classList.add("vbox-top"));let s="bar"===t.settings.titleStyle?"100%":"auto",i="pill"===t.settings.titleStyle?"5em":"0",a="bar"===t.settings.shareStyle?"100%":"auto",r="pill"===t.settings.shareStyle?"5em":"0",l="transparent"===t.settings.titleStyle?"transparent":t.settings.toolsBackground,d="transparent"===t.settings.shareStyle?"transparent":t.settings.toolsBackground;k.style.setProperty("--vbox-title-width",s),k.style.setProperty("--vbox-title-radius",i),k.style.setProperty("--vbox-share-width",a),k.style.setProperty("--vbox-share-radius",r),k.style.setProperty("--vbox-tools-color",t.settings.toolsColor),k.style.setProperty("--vbox-title-background",l),k.style.setProperty("--vbox-share-background",d)}function ve(){if(!r)return!1;switch(r.dataset.vbtype){case"iframe":e=q,t=A,a.classList.add("vbox-loading"),x='
',a.classList.remove("vbox-loading"),ne("animated");break;case"inline":!function(e){let t=document.querySelector(e);t&&(a.classList.add("vbox-loading"),x='
'+t.innerHTML+"
",a.classList.remove("vbox-loading"),ne("animated"))}(q);break;case"ajax":!function(e){a.classList.add("vbox-loading");let t=new XMLHttpRequest;t.open("GET",e,!0),t.onload=function(){x='
'+t.response+"
",ie()},t.onerror=function(){x='
',a.classList.remove("vbox-loading"),ne("animated")},t.send()}(q);break;case"video":se(q,A,E);break;default:!function(e){R.onload=function(){x='
',a.classList.remove("vbox-loading"),ne("animated")},R.src=e}(q)}var e,t}function ue(e){if(!e||y||!document.body.classList.contains("vbox-open"))return!1;G(e),ce(e);const t=.84*r.settings.navSpeed;a.style.transition="margin "+t+"ms ease-out, opacity "+t+"ms ease-out",e===H&&a.classList.add("swipe-right"),e===j&&a.classList.add("swipe-left"),u.classList.remove("vbox-hidden");const o=a.style.opacity;a.classList.add("vbox-animated","vbox-loading"),N=a.cloneNode(!1),N.classList.add("cloned"),N.classList.remove("swipe-left","swipe-right"),N.style.opacity=0,N.style.marginLeft="0",N.style.marginRight="0";const n=a;i.append(N),a=N,a.classList.remove("cloned"),de(e),_({duration:r.settings.navSpeed,timing:Z,draw:function(e){n.style.opacity=o-e/o,1===e&&(n.remove(),a.classList.remove("vbox-animated"),ne("loading"),y=!1,r.settings.onNavComplete&&"function"==typeof r.settings.onNavComplete&&r.settings.onNavComplete(r,p,j,H))}}),ve()}function be(l){return!(document.body.classList.contains("vbox-open")||!l)&&((!l.settings.onPreOpen||"function"!=typeof l.settings.onPreOpen||!1!==l.settings.onPreOpen(l))&&(G(l),document.body.insertAdjacentHTML("beforeend",s),document.body.classList.add("vbox-open"),k=document.querySelector(".vbox-overlay"),e=k.querySelector(".vbox-backdrop"),i=k.querySelector(".vbox-container"),a=i.querySelector(".vbox-content"),t=k.querySelector(".vbox-num"),o=k.querySelector(".vbox-share"),n=k.querySelector(".vbox-title"),u=k.querySelector(".vbox-preloader"),b=u.querySelector(".vbox-preloader-inner"),k.style.opacity=0,ce(l),de(l),a.classList.add("vbox-animated","vbox-loading"),_({duration:200,timing:Z,draw:function(e){k.style.opacity=e,1===e&&(a.classList.remove("vbox-animated"),y=!1,ne("loading"),r.settings.onPostOpen&&"function"==typeof r.settings.onPostOpen&&r.settings.onPostOpen(r,p,j,H))}}),ve(),l.settings.navKeyboard&&(document.body.addEventListener("keydown",te),document.body.addEventListener("keyup",(()=>{V&&(clearTimeout(V),V=null)}))),document.querySelector(".vbox-prev").addEventListener("click",(function(){ue(H)})),document.querySelector(".vbox-next").addEventListener("click",(function(){ue(j)})),void k.addEventListener("click",(function(e){let t=document.querySelector(".vbox-close");t&&(t.contains(e.target)||t===e.target||r.settings.overlayClose&&(e.target.classList.contains("vbox-overlay")||e.target.classList.contains("vbox-content")||e.target.classList.contains("vbox-backdrop")||e.target.classList.contains("vbox-close")||e.target.classList.contains("vbox-preloader")||e.target.classList.contains("vbox-container")))&&J()}))))}const pe=function(e){const t={};let o=function(e,t){let o={};return W(e,(function(t,n){o[n]=e[n]})),W(t,(function(e,n){o[n]=t[n]})),o}(U,e||{});return t.close=J,t.next=$,t.prev=ee,t.open=be,t.settings=o,function(e,t){t.onInit&&"function"==typeof t.onInit&&t.onInit(e);let o=t.jQuerySelectors||document.querySelectorAll(t.selector);if(s='',W(o,(function(e){if(e.classList.contains("vbox-item"))return!0;e.settings=t,e.classList.add("vbox-item"),e.addEventListener("click",(function(t){return t.preventDefault(),e.blur(),be(e),!1}))})),t.popup){let e=document.querySelector(t.popup);e.settings=t,be(e)}}(t,o),t};return"function"==typeof jQuery&&jQuery.fn.extend({venobox:function(e){const t=e||{};t.jQuerySelectors=this,new pe({pluginoptions:t})}}),pe})); //# sourceMappingURL=venobox.min.js.map diff --git a/dist/venobox.min.js.map b/dist/venobox.min.js.map index bbc1409..50cf0ab 100644 --- a/dist/venobox.min.js.map +++ b/dist/venobox.min.js.map @@ -1 +1 @@ -{"version":3,"file":"venobox.min.js","sources":["../src/venobox.esm.js"],"sourcesContent":["/**\n * VenoBox 2.1.5\n * Copyright 2013-2024 Nicola Franchini\n * @license: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE\n */\nlet backdrop, blocknum, blockshare, blocktitle, core, container, content, current_item, current_index, diffX, diffY, endY, elPreloader, elPreloaderInner;\nlet gallIndex, images, infinigall, items, navigationDisabled, newcontent, numeratio, nextok, prevok, overlay;\nlet set_maxWidth, set_overlayColor, set_ratio, set_autoplay, set_href, set_customclass, set_fitview, startY, thenext, theprev, thisborder, thisgall, title, throttle;\n\nconst svgOpen = '';\nconst svgClose = '';\nconst downloadIcon = svgOpen + '' + svgClose;\nconst shareIcon = svgOpen + '' + svgClose;\nconst linkIcon = svgOpen + '' + svgClose;\nconst imagesHolder = document.createElement('div');\n\nlet startX = 0;\nlet endX = 0;\nlet diff = 0;\nlet threshold = 50;\nlet startouch = false;\nlet imgLoader = new Image();\nlet clonecontent;\nlet canDrag = false;\n\nconst spinners = {\n 'bounce': ['sk-bounce', 'sk-bounce-dot', 2],\n 'chase': ['sk-chase', 'sk-chase-dot', 6],\n 'circle': ['sk-circle', 'sk-circle-dot', 12],\n 'circle-fade': ['sk-circle-fade', 'sk-circle-fade-dot', 12],\n 'flow': ['sk-flow', 'sk-flow-dot', 3],\n 'fold': ['sk-fold', 'sk-fold-cube', 4],\n 'grid': ['sk-grid', 'sk-grid-cube', 9],\n 'plane': ['sk-plane', '', 0],\n 'pulse': ['sk-pulse', '', 5],\n 'swing': ['sk-swing', 'sk-swing-dot', 2],\n 'wander': ['sk-wander', 'sk-wander-cube', 3],\n 'wave': ['sk-wave', 'sk-wave-rect', 5]\n};\n\n// Default settings\nconst defaults = {\n selector: '.venobox',\n autoplay : false,\n bgcolor: '#fff',\n border: '0',\n customClass: false,\n infinigall: false,\n maxWidth: '100%',\n navigation: true,\n navKeyboard: true,\n navTouch: true,\n navSpeed: 300,\n numeration: false,\n overlayClose: true,\n overlayColor: 'rgba(23,23,23,0.95)',\n popup: false,\n ratio: '16x9', // '1x1' | '4x3' | '16x9' | '21x9'\n share: false,\n shareStyle: 'pill', // 'bar' | 'block' | 'pill' | 'transparent'\n spinner: 'bounce', // 'plane' | 'chase' | 'bounce' | 'wave' | 'pulse' | 'flow' | 'swing' | 'circle' | 'circle-fade' | 'grid' | 'fold' | 'wander'\n spinColor : '#d2d2d2',\n titleattr: 'title',\n titlePosition: 'top', // 'top' || 'bottom'\n titleStyle: 'bar', // 'bar' | 'block' | 'pill' | 'transparent'\n toolsBackground: '#1C1C1C', // 'transparent'\n toolsColor: '#d2d2d2',\n onPreOpen: function(){ return true; }, // Return the selected object - set return false to prevent opening\n onPostOpen: function(){}, // Return: current_item, gallIndex, thenext, theprev\n onPreClose: function(){ return true; }, // Return: current_item, gallIndex, thenext, theprev - set return false to prevent closing\n onNavComplete: function(){}, // Return: current_item, gallIndex, thenext, theprev\n onContentLoaded: function(){}, // Return: newcontent\n onInit: function(){}, // Return: plugin obj\n jQuerySelectors: false,\n focusItem: false,\n fitView: false\n};\n\n/**\n * Generate spinner html\n * @param {Array} spinarray Selected spinner\n */\nfunction createspinner(spinarray){\n if (!spinarray) {\n return 'Loading...';\n }\n let spinner = '
';\n let i = 0;\n for (i = 0; i < spinarray[2]; i++) {\n spinner += '
';\n }\n spinner += '
';\n return spinner;\n}\n\n/**\n * A simple forEach() implementation for Arrays, Objects and NodeLists\n * @param {Array|Object|NodeList} collection Collection of items to iterate\n * @param {Function} callback Callback function for each iteration\n * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)\n */\nfunction forEach(collection, callback, scope) {\n if (Object.prototype.toString.call(collection) === '[object Object]') {\n let prop;\n for (prop in collection) {\n if (Object.prototype.hasOwnProperty.call(collection, prop)) {\n callback.call(scope, collection[prop], prop, collection);\n }\n }\n } else {\n let i = 0;\n let len = collection.length;\n for (i = 0; i < len; i++) {\n callback.call(scope, collection[i], i, collection);\n }\n }\n}\n\n/**\n* Merge defaults with user options\n* @param {Object} defaults Default settings\n* @param {Object} options User options\n* @returns {Object} Merged values of defaults and options\n*/\nfunction extend( defaults, options ) {\n let extended = {};\n\n forEach(defaults, function (value, prop) {\n extended[prop] = defaults[prop];\n });\n\n forEach(options, function (value, prop) {\n extended[prop] = options[prop];\n });\n return extended;\n}\n\n/**\n * Linear animation timing\n */\nfunction timingLinear(timeFraction){\n return timeFraction;\n}\n\n/**\n * Animate with callback\n * https://javascript.info/js-animation\n */\nfunction animate({timing, draw, duration}) {\n let start = performance.now();\n requestAnimationFrame(function animate(time) {\n // timeFraction goes from 0 to 1\n let timeFraction = (time - start) / duration;\n if (timeFraction > 1) {\n timeFraction = 1;\n }\n // calculate the current animation state\n let progress = timing(timeFraction);\n draw(progress); // draw it\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n}\n\n/**\n * Parse Youtube or Vimeo videos and get host & ID\n */\nfunction parseVideo(url) {\n let type, match, vid;\n let regYt = /(https?:\\/\\/)?((www\\.)?(youtube(-nocookie)?|youtube.googleapis)\\.com.*(v\\/|v=|vi=|vi\\/|e\\/|embed\\/|user\\/.*\\/u\\/\\d+\\/)|youtu\\.be\\/)([_0-9a-z-]+)/i;\n match = url.match(regYt);\n if (match && match[7]) {\n type = 'youtube';\n vid = match[7];\n } else {\n let regVim = /^.*(vimeo\\.com\\/)((channels\\/[A-z]+\\/)|(groups\\/[A-z]+\\/videos\\/))?([0-9]+)/;\n match = url.match(regVim);\n if (match && match[5]) {\n type = 'vimeo';\n vid = match[5];\n }\n }\n return {\n type: type,\n id: vid\n };\n}\n\n/**\n * Get additional url parameters\n */\nfunction getUrlParameter(url) {\n let result = '';\n let sPageURL = decodeURIComponent(url);\n let firstsplit = sPageURL.split('?');\n\n if (firstsplit[1] !== undefined) {\n let sURLVariables = firstsplit[1].split('&');\n let sParameterName;\n let i;\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n result = result + '&'+ sParameterName[0]+'='+ sParameterName[1];\n }\n }\n return encodeURI(result);\n}\n\n/**\n * Get all images from string\n */\nfunction getImages(string) {\n imagesHolder.innerHTML = string;\n return imagesHolder.querySelectorAll('img');\n}\n\n/**\n * Update item settings.\n */\nfunction updateVars(obj){\n if (!obj) {\n return false;\n }\n navigationDisabled = true;\n current_item = obj;\n nextok = false;\n prevok = false;\n set_maxWidth = obj.getAttribute(\"data-maxwidth\") || obj.settings.maxWidth;\n set_overlayColor = obj.getAttribute(\"data-overlay\") || obj.settings.overlayColor;\n set_ratio = obj.getAttribute(\"data-ratio\") || obj.settings.ratio;\n set_autoplay = obj.hasAttribute(\"data-autoplay\") || obj.settings.autoplay;\n set_href = obj.getAttribute(\"data-href\") || obj.getAttribute('href');\n set_customclass = obj.getAttribute(\"data-customclass\") || obj.settings.customClass;\n title = obj.getAttribute(obj.settings.titleattr) || '';\n thisborder = obj.getAttribute(\"data-border\") || obj.settings.border;\n set_fitview = obj.hasAttribute(\"data-fitview\") || obj.settings.fitView;\n}\n\n/**\n * Close modal.\n */\nfunction close() {\n if (!current_item || !document.body.classList.contains('vbox-open')) {\n return false;\n }\n if (current_item.settings.onPreClose && typeof current_item.settings.onPreClose === 'function') {\n if (current_item.settings.onPreClose(current_item, gallIndex, thenext, theprev) === false) {\n return false;\n }\n }\n\n document.body.removeEventListener('keydown', keyboardHandler);\n document.body.classList.remove('vbox-open');\n\n if (current_item.settings.focusItem) {\n current_item.focus();\n }\n\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n overlay.style.opacity = 1 - progress;\n if (progress === 1){\n overlay.remove();\n }\n }\n });\n}\n\n/**\n * Navigate gallery.\n */\nfunction next() {\n navigateGall(thenext);\n}\nfunction prev() {\n navigateGall(theprev);\n}\n\n/**\n * Keyboard navigation.\n */\nfunction keyboardHandler(e) {\n if (e.keyCode === 27) { // esc\n close();\n }\n if (!throttle) {\n if (e.keyCode == 37 && prevok === true) { // <\n navigateGall(theprev);\n }\n if (e.keyCode == 39 && nextok === true) { // >\n navigateGall(thenext);\n }\n /* prevent keyboard processing until timer completed */\n throttle = setTimeout(() => {\n throttle = null;\n }, 100);\n }\n}\n\n/**\n * Append and fade-in new content\n */\nfunction contentLoaded(){\n\n navigationDisabled = false;\n\n content.style.opacity = 0;\n\n content.innerHTML = newcontent;\n dragListeners();\n\n let vboxChild = content.querySelector(\":first-child\");\n\n vboxChild.classList.add('vbox-child');\n\n vboxChild.style.backgroundColor = current_item.settings.bgcolor;\n // vboxChild.style.maxWidth = set_maxWidth;\n vboxChild.style.transform = 'scale(0.9)';\n vboxChild.style.transition = 'transform 200ms';\n\n // Fix weird drag\n let childImageLock = content.querySelector('.vbox-child img');\n\n if (childImageLock) {\n childImageLock.addEventListener('dragstart', function(e) {\n e.preventDefault();\n });\n }\n\n // reset content scroll\n container.scrollTo(0, 0);\n vboxChild.style.transform = 'scale(1)';\n\n overlay.style.setProperty('--vbox-padding', thisborder);\n overlay.style.setProperty('--vbox-max-width', set_maxWidth);\n\n // Reset custom classes.\n forEach(overlay.classList, function(obj){\n if (obj !== 'vbox-overlay') {\n overlay.classList.remove(obj);\n }\n });\n\n // Set custom class.\n if (set_customclass){\n overlay.classList.add(set_customclass);\n }\n\n // Set fitview class.\n if (set_fitview){\n content.classList.add('vbox-fit');\n } else {\n content.classList.remove('vbox-fit');\n }\n\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n content.style.opacity = progress;\n if (progress === 1){\n elPreloader.classList.add('vbox-hidden');\n }\n }\n });\n if (current_item.settings.onContentLoaded && typeof current_item.settings.onContentLoaded === 'function') {\n current_item.settings.onContentLoaded(newcontent);\n }\n}\n\n/**\n * Check animation state\n * @param {string} state 'loading' | 'animated'\n */\nfunction checkState(state) {\n if (!content.classList.contains('vbox-' + state)) {\n contentLoaded();\n }\n}\n\n/**\n * Load iFrame\n */\nfunction loadIframe(dest, ratio){\n content.classList.add(\"vbox-loading\");\n newcontent = '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n}\n\n/**\n * Load videos\n */\nfunction loadVid(dest, ratio, autoplay){\n\n content.classList.add(\"vbox-loading\");\n let stringAutoplay; \n let videoObj = parseVideo(dest);\n\n if (videoObj.type == 'vimeo' || videoObj.type == 'youtube') {\n let player;\n\n // set rel=0 to hide related videos at the end of YT + optional autoplay\n stringAutoplay = autoplay ? \"?rel=0&autoplay=1\" : \"?rel=0\";\n let queryvars = stringAutoplay + getUrlParameter(dest);\n\n if (videoObj.type == 'vimeo') {\n player = 'https://player.vimeo.com/video/';\n } else if (videoObj.type == 'youtube') {\n player = 'https://www.youtube.com/embed/';\n }\n newcontent = '
';\n } else {\n // // check if it's a video file - thanks to @alexxandar\n // if (/\\.(mp4|ogg|ogv|mov|webm)$/i.test(dest)) {\n stringAutoplay = autoplay ? \" autoplay\" : \"\";\n newcontent = '
';\n // }\n }\n\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n}\n\n/**\n * Load inline content\n */\nfunction loadInline(dest){\n let inlineContent = document.querySelector(dest);\n if (inlineContent) {\n content.classList.add(\"vbox-loading\");\n newcontent = '
' + inlineContent.innerHTML + '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n}\n\n/**\n * Preload images from ajax call\n */\nfunction loadAjaxImages(){\n images = getImages(newcontent);\n if (images.length) {\n let imgCounter = 0;\n forEach(images, function(getimg){\n let srcimg = getimg.src;\n imgLoader = new Image();\n imgLoader.onload = function(){\n imgCounter++;\n if ( imgCounter == images.length ) {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n };\n imgLoader.onerror = function(){\n imgCounter++;\n if ( imgCounter == images.length ) {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n };\n imgLoader.src = srcimg;\n });\n } else {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n}\n\n/**\n * Load Ajax\n */\nfunction loadAjax(dest){\n content.classList.add(\"vbox-loading\");\n let xhr = new XMLHttpRequest();\n xhr.open(\"GET\", dest, true);\n xhr.onload = function() {\n newcontent = '
'+ xhr.response +'
';\n loadAjaxImages();\n };\n xhr.onerror = function() {\n newcontent = '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n };\n xhr.send();\n}\n\n/**\n * Preload image\n */\nfunction loadImage(dest){\n // imgLoader = new Image();\n imgLoader.onload = function(){\n // image has been loaded\n newcontent = '
';\n content.classList.remove('vbox-loading');\n checkState('animated');\n };\n imgLoader.src = dest;\n}\n\n/**\n * Start Drag\n */\nfunction dragStart(e) {\n if (!navigationDisabled) {\n let speed = current_item.settings.navSpeed * 0.84;\n content.style.transition = \"margin \" + speed + \"ms ease-out, opacity \" + speed + \"ms ease-out\";\n startX = endX = e.type === \"touchstart\" ? e.touches[0].pageX : e.pageX;\n startY = endY = e.type === \"touchstart\" ? e.touches[0].pageY : e.pageY;\n startouch = true;\n }\n}\n\n/**\n * End Drag\n */\nfunction dragEnd(e) {\n if (startouch) {\n startouch = false;\n let subject = current_item;\n let change = false;\n diff = endX - startX;\n\n if (diff < 0 && nextok) {\n subject = thenext;\n change = true;\n }\n if (diff > 0 && prevok) {\n subject = theprev;\n change = true;\n }\n\n if (Math.abs(diff) >= threshold && change) {\n navigateGall(subject);\n } else {\n content.style.marginLeft = 0;\n content.style.opacity = 1;\n }\n }\n}\n\n/**\n * Drag items\n */\nfunction drag(e) {\n if (startouch && !navigationDisabled) {\n endX = e.type === \"touchmove\" ? e.touches[0].pageX : e.pageX;\n endY = e.type === \"touchmove\" ? e.touches[0].pageY : e.pageY;\n diffX = endX - startX;\n diffY = endY - startY;\n\n let absdiffX = Math.abs(diffX);\n let absdiffY = Math.abs(diffY);\n \n if (absdiffX > absdiffY && absdiffX <= 180) {\n let diffopac = (1 - absdiffX / 180) * 1.5;\n e.preventDefault();\n content.style.marginLeft = diffX + \"px\";\n content.style.opacity = diffopac;\n }\n }\n}\n\nfunction setShareButtons(href){\n // Navigator share\n if (navigator.canShare) {\n const shareData = {\n url: href\n };\n blockshare.insertAdjacentHTML('beforeend', '');\n const mobileShareBtn = blockshare.querySelector('.vbox-share-mobile');\n mobileShareBtn.addEventListener('click', function(e){\n e.preventDefault();\n navigator.share(shareData);\n });\n }\n\n // Download\n blockshare.insertAdjacentHTML('beforeend', ''+downloadIcon+'');\n\n // Copy link\n blockshare.insertAdjacentHTML('beforeend', '
');\n const shareCopyBtn = blockshare.querySelector('.vbox-share-copy');\n shareCopyBtn.addEventListener('click', function(e){\n e.preventDefault();\n let tooltip = document.getElementById(\"myTooltip\");\n navigator.clipboard.writeText(href).then(function() {\n tooltip.innerHTML = '
Copied
';\n }, function() {\n console.log('copy failed');\n });\n });\n}\n\nfunction dragListeners(){\n // activate swipe\n if (canDrag) {\n content.classList.add('vbox-grab');\n content.addEventListener(\"touchstart\", dragStart, false);\n content.addEventListener(\"touchend\", dragEnd, false);\n content.addEventListener(\"touchmove\", drag, false);\n content.addEventListener(\"mousedown\", dragStart, false);\n content.addEventListener(\"mouseup\", dragEnd, false);\n content.addEventListener(\"mouseout\", dragEnd, false);\n content.addEventListener(\"mousemove\", drag, false);\n } else {\n content.classList.remove('vbox-grab');\n content.removeEventListener(\"touchstart\", dragStart, false);\n content.removeEventListener(\"touchend\", dragEnd, false);\n content.removeEventListener(\"touchmove\", drag, false);\n content.removeEventListener(\"mousedown\", dragStart, false);\n content.removeEventListener(\"mouseup\", dragEnd, false);\n content.removeEventListener(\"mouseout\", dragEnd, false);\n content.removeEventListener(\"mousemove\", drag, false);\n }\n}\n\n/**\n * Check navigation\n * @param {object} el Current item\n */\nfunction checknav(el){\n\n if (!el) {\n return false;\n }\n\n thisgall = el.dataset.gall;\n numeratio = el.settings.numeration;\n infinigall = el.settings.infinigall;\n blockshare.innerHTML = '';\n\n let vbtype = el.dataset.vbtype;\n\n if (el.settings.share && vbtype !== 'iframe' && vbtype !== 'inline' && vbtype !== 'ajax' ) {\n setShareButtons(el.href);\n }\n\n items = document.querySelectorAll('.vbox-item[data-gall=\"' + thisgall + '\"]');\n\n current_index = Array.prototype.indexOf.call(items, el);\n\n if (items.length < 2) {\n numeratio = false;\n }\n if (items.length < 3) {\n infinigall = false;\n }\n\n thenext = items[current_index + 1];\n theprev = items[current_index - 1];\n\n if (!thenext && infinigall) {\n thenext = items[0];\n }\n\n if (!theprev && infinigall) {\n theprev = items[items.length - 1];\n }\n\n // Update gallery numeration\n if (items.length >= 1) {\n gallIndex = current_index + 1;\n blocknum.innerHTML = gallIndex + ' / ' + items.length;\n } else {\n gallIndex = 1;\n }\n if (numeratio) {\n blocknum.classList.remove('vbox-hidden');\n } else {\n blocknum.classList.add('vbox-hidden');\n }\n\n // Update title\n if (title !== '') {\n blocktitle.classList.remove('vbox-hidden');\n } else {\n blocktitle.classList.add('vbox-hidden');\n }\n blocktitle.innerHTML = title;\n\n // update navigation arrows\n prevok = false;\n nextok = false;\n\n if (thenext || infinigall) {\n nextok = true;\n }\n\n if (current_index > 0 || infinigall) {\n prevok = true;\n }\n\n canDrag = (prevok || nextok) && el.settings.navTouch;\n\n let vbox_next = overlay.querySelector('.vbox-next');\n let vbox_prev = overlay.querySelector('.vbox-prev');\n\n if (prevok) {\n vbox_prev.classList.remove('vbox-hidden');\n } else {\n vbox_prev.classList.add('vbox-hidden');\n }\n\n if (nextok) {\n vbox_next.classList.remove('vbox-hidden');\n } else {\n vbox_next.classList.add('vbox-hidden');\n }\n\n if (!el.settings.navigation) {\n vbox_next.classList.add('vbox-hidden');\n vbox_prev.classList.add('vbox-hidden');\n }\n} // Checknav\n\n/**\n * Update overlay and tools style.\n */\nfunction updateOverlay(destination){\n\n if (!destination) {\n return false;\n }\n\n backdrop.style.backgroundColor = set_overlayColor;\n\n // Custom preloader color.\n elPreloaderInner.innerHTML = createspinner(spinners[destination.settings.spinner]);\n\n overlay.style.setProperty('--sk-color', destination.settings.spinColor);\n\n elPreloader.classList.remove('vbox-hidden');\n\n blockshare.classList.remove('vbox-top', 'vbox-bottom');\n blocktitle.classList.remove('vbox-top', 'vbox-bottom');\n\n if (destination.settings.titlePosition == 'top') {\n blocktitle.classList.add('vbox-top');\n blockshare.classList.add('vbox-bottom');\n } else {\n blocktitle.classList.add('vbox-bottom');\n blockshare.classList.add('vbox-top');\n }\n\n let titleWidth = destination.settings.titleStyle === 'bar' ? '100%' : 'auto';\n let titleRadius = destination.settings.titleStyle === 'pill' ? '5em' : '0';\n let shareWidth = destination.settings.shareStyle === 'bar' ? '100%' : 'auto';\n let shareRadius = destination.settings.shareStyle === 'pill' ? '5em' : '0';\n let titlebg = destination.settings.titleStyle === 'transparent' ? 'transparent' : destination.settings.toolsBackground;\n let sharebg = destination.settings.shareStyle === 'transparent' ? 'transparent' : destination.settings.toolsBackground;\n\n overlay.style.setProperty('--vbox-title-width', titleWidth);\n overlay.style.setProperty('--vbox-title-radius', titleRadius);\n overlay.style.setProperty('--vbox-share-width', shareWidth);\n overlay.style.setProperty('--vbox-share-radius', shareRadius);\n overlay.style.setProperty('--vbox-tools-color', destination.settings.toolsColor);\n overlay.style.setProperty('--vbox-title-background', titlebg);\n overlay.style.setProperty('--vbox-share-background', sharebg);\n}\n\n/**\n * Load content\n */\nfunction loadContent(){\n if (!current_item) {\n return false;\n }\n let vbtype = current_item.dataset.vbtype;\n switch (vbtype) {\n case 'iframe':\n loadIframe(set_href, set_ratio);\n break;\n case 'inline':\n loadInline(set_href);\n break;\n case 'ajax':\n loadAjax(set_href);\n break;\n case 'video':\n loadVid(set_href, set_ratio, set_autoplay);\n break;\n default:\n loadImage(set_href);\n }\n}\n\n/**\n * Gallery navigation.\n */\nfunction navigateGall(destination) {\n\n if (!destination || navigationDisabled || !document.body.classList.contains('vbox-open')) {\n return false;\n }\n\n updateVars(destination);\n updateOverlay(destination);\n\n // swipe out item\n const speed = (current_item.settings.navSpeed * 0.84);\n content.style.transition = 'margin '+ speed + 'ms ease-out, opacity '+ speed + 'ms ease-out';\n\n if (destination === theprev) {\n content.classList.add(\"swipe-right\");\n }\n if (destination === thenext) {\n content.classList.add(\"swipe-left\");\n }\n\n elPreloader.classList.remove('vbox-hidden');\n const startopacity = content.style.opacity;\n content.classList.add(\"vbox-animated\", \"vbox-loading\");\n\n clonecontent = content.cloneNode(false);\n clonecontent.classList.add('cloned');\n clonecontent.classList.remove(\"swipe-left\", \"swipe-right\");\n clonecontent.style.opacity = 0;\n clonecontent.style.marginLeft = '0';\n clonecontent.style.marginRight = '0';\n\n const oldcontent = content;\n container.append(clonecontent);\n content = clonecontent;\n content.classList.remove('cloned');\n\n checknav(destination);\n\n animate({\n duration: current_item.settings.navSpeed,\n timing: timingLinear,\n draw: function(progress) {\n\n oldcontent.style.opacity = startopacity - progress/startopacity;\n\n if (progress === 1){\n oldcontent.remove();\n content.classList.remove(\"vbox-animated\");\n checkState('loading');\n navigationDisabled = false;\n\n if (current_item.settings.onNavComplete && typeof current_item.settings.onNavComplete === 'function') {\n current_item.settings.onNavComplete(current_item, gallIndex, thenext, theprev);\n }\n }\n }\n });\n loadContent();\n}\n\n/**\n * Open item.\n */\n function open(obj) {\n\n if (document.body.classList.contains('vbox-open') || !obj) {\n return false;\n }\n\n if (obj.settings.onPreOpen && typeof obj.settings.onPreOpen === 'function') {\n if (obj.settings.onPreOpen(obj) === false) {\n return false;\n }\n }\n\n updateVars(obj);\n\n document.body.insertAdjacentHTML('beforeend', core);\n document.body.classList.add('vbox-open');\n\n overlay = document.querySelector(\".vbox-overlay\");\n backdrop = overlay.querySelector(\".vbox-backdrop\");\n container = overlay.querySelector(\".vbox-container\");\n content = container.querySelector(\".vbox-content\");\n blocknum = overlay.querySelector(\".vbox-num\");\n blockshare = overlay.querySelector(\".vbox-share\");\n blocktitle = overlay.querySelector(\".vbox-title\");\n elPreloader = overlay.querySelector(\".vbox-preloader\");\n elPreloaderInner = elPreloader.querySelector(\".vbox-preloader-inner\");\n\n overlay.style.opacity = 0;\n\n updateOverlay(obj);\n checknav(obj);\n\n content.classList.add(\"vbox-animated\", \"vbox-loading\");\n\n // fade in overlay\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n overlay.style.opacity = progress;\n if (progress === 1){\n content.classList.remove('vbox-animated');\n navigationDisabled = false;\n checkState('loading');\n if (current_item.settings.onPostOpen && typeof current_item.settings.onPostOpen === 'function') {\n current_item.settings.onPostOpen(current_item, gallIndex, thenext, theprev);\n }\n }\n }\n });\n\n loadContent();\n\n // Keyboard actions\n if (obj.settings.navKeyboard) {\n document.body.addEventListener('keydown', keyboardHandler);\n\n // Reset the throttle timer\n document.body.addEventListener('keyup', () => {\n if (throttle) {\n clearTimeout(throttle);\n throttle = null;\n }\n });\n }\n\n // Prev gallery\n document.querySelector('.vbox-prev').addEventListener('click', function(){\n navigateGall(theprev);\n });\n\n // Newxt gallery\n document.querySelector('.vbox-next').addEventListener('click', function(){\n navigateGall(thenext);\n });\n\n // Close modal.\n overlay.addEventListener('click', function(e){\n let closeBtn = document.querySelector('.vbox-close');\n if (closeBtn) {\n if (closeBtn.contains(e.target) || closeBtn === e.target || (current_item.settings.overlayClose &&\n (e.target.classList.contains('vbox-overlay') ||\n e.target.classList.contains('vbox-content') ||\n e.target.classList.contains('vbox-backdrop') ||\n e.target.classList.contains('vbox-close') ||\n e.target.classList.contains('vbox-preloader') ||\n e.target.classList.contains('vbox-container'))\n )) {\n close();\n }\n }\n });\n}\n\n/**\n * Initialize Plugin\n */\nfunction init(venobox, settings) {\n\n if (settings.onInit && typeof settings.onInit === 'function') {\n settings.onInit(venobox);\n }\n\n let selectors = settings.jQuerySelectors || document.querySelectorAll(settings.selector);\n let navigation = 'NextPrev';\n let vbheader = '
0/0
';\n let vbfooter = '
';\n let preloader = '
';\n core = '
' + preloader + '
' + vbheader + navigation + vbfooter + '
';\n\n /**\n * Loop items.\n */\n forEach(selectors, function(obj){\n if (obj.classList.contains(\"vbox-item\")) {\n return true;\n }\n obj.settings = settings;\n obj.classList.add(\"vbox-item\");\n\n // Open Link\n obj.addEventListener(\"click\", function(e){\n e.preventDefault();\n // Remove focus from link to avoid multiple calls with enter key\n obj.blur();\n open(obj);\n return false;\n }); // Click;\n }); // forEach\n\n if (settings.popup) {\n let popup = document.querySelector(settings.popup);\n popup.settings = settings;\n open(popup);\n }\n} // init\n\n/**\n * VenoBox constructor\n */\nconst VenoBox = function (options) {\n const venobox = {};\n\n // Merge user options with defaults\n let settings = extend( defaults, options || {} );\n\n venobox.close = close;\n venobox.next = next;\n venobox.prev = prev;\n venobox.open = open;\n venobox.settings = settings;\n\n init(venobox, settings);\n\n // Public APIs\n return venobox;\n};\n\n/* jQuery bridge for $().venobox() */\nif (typeof jQuery === 'function') {\n (function($){\n \"use strict\";\n $.fn.extend({\n // plugin name - venobox\n venobox: function(options) {\n const pluginoptions = options || {};\n pluginoptions.jQuerySelectors = this;\n // Init venobx\n new VenoBox({pluginoptions});\n } // venobox\n }); // extend\n })(jQuery);\n}\n\nexport default VenoBox;\n"],"names":["backdrop","blocknum","blockshare","blocktitle","core","container","content","current_item","current_index","diffX","diffY","endY","elPreloader","elPreloaderInner","gallIndex","images","infinigall","items","navigationDisabled","newcontent","numeratio","nextok","prevok","overlay","set_maxWidth","set_overlayColor","set_ratio","set_autoplay","set_href","set_customclass","set_fitview","startY","thenext","theprev","thisborder","thisgall","title","throttle","imagesHolder","document","createElement","clonecontent","startX","endX","diff","startouch","imgLoader","Image","canDrag","spinners","bounce","chase","circle","flow","fold","grid","plane","pulse","swing","wander","wave","defaults","selector","autoplay","bgcolor","border","customClass","maxWidth","navigation","navKeyboard","navTouch","navSpeed","numeration","overlayClose","overlayColor","popup","ratio","share","shareStyle","spinner","spinColor","titleattr","titlePosition","titleStyle","toolsBackground","toolsColor","onPreOpen","onPostOpen","onPreClose","onNavComplete","onContentLoaded","onInit","jQuerySelectors","focusItem","fitView","forEach","collection","callback","scope","Object","prototype","toString","call","prop","hasOwnProperty","i","len","length","timingLinear","timeFraction","animate","timing","draw","duration","start","performance","now","requestAnimationFrame","time","progress","updateVars","obj","getAttribute","settings","hasAttribute","close","body","classList","contains","removeEventListener","keyboardHandler","remove","focus","style","opacity","next","navigateGall","prev","e","keyCode","setTimeout","contentLoaded","innerHTML","add","addEventListener","dragStart","dragEnd","drag","vboxChild","querySelector","backgroundColor","transform","transition","childImageLock","preventDefault","scrollTo","setProperty","checkState","state","loadVid","dest","stringAutoplay","videoObj","url","type","match","vid","regVim","id","parseVideo","player","queryvars","result","firstsplit","decodeURIComponent","split","undefined","sParameterName","sURLVariables","encodeURI","getUrlParameter","loadAjaxImages","string","querySelectorAll","imgCounter","getimg","srcimg","src","onload","onerror","speed","touches","pageX","pageY","subject","change","Math","abs","marginLeft","absdiffX","diffopac","checknav","el","dataset","gall","vbtype","href","navigator","canShare","shareData","insertAdjacentHTML","tooltip","getElementById","clipboard","writeText","then","console","log","setShareButtons","Array","indexOf","vbox_next","vbox_prev","updateOverlay","destination","spinarray","createspinner","titleWidth","titleRadius","shareWidth","shareRadius","titlebg","sharebg","loadContent","inlineContent","loadInline","xhr","XMLHttpRequest","open","response","send","loadAjax","loadImage","startopacity","cloneNode","marginRight","oldcontent","append","clearTimeout","closeBtn","target","VenoBox","options","venobox","extended","value","extend","selectors","blur","init","jQuery","fn","pluginoptions","this"],"mappings":";;;;;MAKA,IAAIA,EAAUC,EAAUC,EAAYC,EAAYC,EAAMC,EAAWC,EAASC,EAAcC,EAAeC,EAAOC,EAAOC,EAAMC,EAAaC,EACpIC,EAAWC,EAAQC,EAAYC,EAAOC,EAAoBC,EAAYC,EAAWC,EAAQC,EAAQC,EACjGC,EAAcC,EAAkBC,EAAWC,EAAcC,EAAUC,EAAiBC,EAAaC,EAAQC,EAASC,EAASC,EAAYC,EAAUC,EAAOC,EAE5J,MAKMC,EAAeC,SAASC,cAAc,OAE5C,IAMIC,EANAC,EAAS,EACTC,EAAO,EACPC,EAAO,EAEPC,GAAY,EACZC,EAAY,IAAIC,MAEhBC,GAAU,EAEd,MAAMC,EAAW,CACbC,OAAU,CAAC,YAAa,gBAAiB,GACzCC,MAAS,CAAC,WAAY,eAAgB,GACtCC,OAAU,CAAC,YAAa,gBAAiB,IACzC,cAAe,CAAC,iBAAkB,qBAAsB,IACxDC,KAAQ,CAAC,UAAW,cAAe,GACnCC,KAAQ,CAAC,UAAW,eAAgB,GACpCC,KAAQ,CAAC,UAAW,eAAgB,GACpCC,MAAS,CAAC,WAAY,GAAI,GAC1BC,MAAS,CAAC,WAAY,GAAI,GAC1BC,MAAS,CAAC,WAAY,eAAgB,GACtCC,OAAU,CAAC,YAAa,iBAAkB,GAC1CC,KAAQ,CAAC,UAAW,eAAgB,IAIlCC,EAAW,CACbC,SAAU,WACVC,UAAW,EACXC,QAAS,OACTC,OAAQ,IACRC,aAAa,EACblD,YAAY,EACZmD,SAAU,OACVC,YAAY,EACZC,aAAa,EACbC,UAAU,EACVC,SAAU,IACVC,YAAY,EACZC,cAAc,EACdC,aAAc,sBACdC,OAAO,EACPC,MAAO,OACPC,OAAO,EACPC,WAAY,OACZC,QAAS,SACTC,UAAY,UACZC,UAAW,QACXC,cAAe,MACfC,WAAY,MACZC,gBAAiB,UACjBC,WAAY,UACZC,UAAW,WAAY,OAAO,GAC9BC,WAAY,aACZC,WAAY,WAAY,OAAO,GAC/BC,cAAe,aACfC,gBAAiB,aACjBC,OAAQ,aACRC,iBAAiB,EACjBC,WAAW,EACXC,SAAS,GA0Bb,SAASC,EAAQC,EAAYC,EAAUC,GACnC,GAAmD,oBAA/CC,OAAOC,UAAUC,SAASC,KAAKN,GAAmC,CAClE,IAAIO,EACJ,IAAKA,KAAQP,EACLG,OAAOC,UAAUI,eAAeF,KAAKN,EAAYO,IACjDN,EAASK,KAAKJ,EAAOF,EAAWO,GAAOA,EAAMP,OAGlD,CACH,IAAIS,EAAI,EACJC,EAAMV,EAAWW,OACrB,IAAKF,EAAI,EAAGA,EAAIC,EAAKD,IACjBR,EAASK,KAAKJ,EAAOF,EAAWS,GAAIA,EAAGT,IA2BnD,SAASY,EAAaC,GAClB,OAAOA,EAOX,SAASC,GAAQC,OAACA,EAAMC,KAAEA,EAAIC,SAAEA,IAC5B,IAAIC,EAAQC,YAAYC,MACxBC,uBAAsB,SAASP,EAAQQ,GAEnC,IAAIT,GAAgBS,EAAOJ,GAASD,EAChCJ,EAAe,IACfA,EAAe,GAGnB,IAAIU,EAAWR,EAAOF,GACtBG,EAAKO,GACDV,EAAe,GACfQ,sBAAsBP,MA4DlC,SAASU,EAAWC,GAChB,IAAKA,EACD,OAAO,EAEXvG,GAAqB,EACrBX,EAAekH,EACfpG,GAAS,EACTC,GAAS,EACTE,EAAeiG,EAAIC,aAAa,kBAAoBD,EAAIE,SAASxD,SACjE1C,EAAmBgG,EAAIC,aAAa,iBAAmBD,EAAIE,SAASjD,aACpEhD,EAAY+F,EAAIC,aAAa,eAAiBD,EAAIE,SAAS/C,MAC3DjD,EAAe8F,EAAIG,aAAa,kBAAoBH,EAAIE,SAAS5D,SACjEnC,EAAW6F,EAAIC,aAAa,cAAgBD,EAAIC,aAAa,QAC7D7F,EAAkB4F,EAAIC,aAAa,qBAAuBD,EAAIE,SAASzD,YACvE9B,EAAQqF,EAAIC,aAAaD,EAAIE,SAAS1C,YAAc,GACpD/C,EAAauF,EAAIC,aAAa,gBAAkBD,EAAIE,SAAS1D,OAC7DnC,EAAc2F,EAAIG,aAAa,iBAAmBH,EAAIE,SAAS7B,QAMnE,SAAS+B,IACL,SAAKtH,IAAiBgC,SAASuF,KAAKC,UAAUC,SAAS,kBAGnDzH,EAAaoH,SAASnC,YAA0D,mBAArCjF,EAAaoH,SAASnC,aACmB,IAAhFjF,EAAaoH,SAASnC,WAAWjF,EAAcO,EAAWkB,EAASC,MAK3EM,SAASuF,KAAKG,oBAAoB,UAAWC,IAC7C3F,SAASuF,KAAKC,UAAUI,OAAO,aAE3B5H,EAAaoH,SAAS9B,WACtBtF,EAAa6H,aAGjBtB,EAAQ,CACJG,SAAU,IACVF,OAAQH,EACRI,KAAM,SAASO,GACXhG,EAAQ8G,MAAMC,QAAW,EAAIf,EACZ,IAAbA,GACAhG,EAAQ4G,cASxB,SAASI,IACLC,GAAaxG,GAEjB,SAASyG,KACLD,GAAavG,GAMjB,SAASiG,GAAgBQ,GACH,KAAdA,EAAEC,SACFd,IAECxF,IACgB,IAAbqG,EAAEC,UAA4B,IAAXrH,GACnBkH,GAAavG,GAEA,IAAbyG,EAAEC,UAA4B,IAAXtH,GACnBmH,GAAaxG,GAGjBK,EAAWuG,YAAW,KAClBvG,EAAW,OACZ,MAOX,SAASwG,KAEL3H,GAAqB,EAErBZ,EAAQ+H,MAAMC,QAAU,EAExBhI,EAAQwI,UAAY3H,EAkShB6B,GACA1C,EAAQyH,UAAUgB,IAAI,aACtBzI,EAAQ0I,iBAAiB,aAAcC,IAAW,GAClD3I,EAAQ0I,iBAAiB,WAAYE,IAAS,GAC9C5I,EAAQ0I,iBAAiB,YAAaG,IAAM,GAC5C7I,EAAQ0I,iBAAiB,YAAaC,IAAW,GACjD3I,EAAQ0I,iBAAiB,UAAWE,IAAS,GAC7C5I,EAAQ0I,iBAAiB,WAAYE,IAAS,GAC9C5I,EAAQ0I,iBAAiB,YAAaG,IAAM,KAE5C7I,EAAQyH,UAAUI,OAAO,aACzB7H,EAAQ2H,oBAAoB,aAAcgB,IAAW,GACrD3I,EAAQ2H,oBAAoB,WAAYiB,IAAS,GACjD5I,EAAQ2H,oBAAoB,YAAakB,IAAM,GAC/C7I,EAAQ2H,oBAAoB,YAAagB,IAAW,GACpD3I,EAAQ2H,oBAAoB,UAAWiB,IAAS,GAChD5I,EAAQ2H,oBAAoB,WAAYiB,IAAS,GACjD5I,EAAQ2H,oBAAoB,YAAakB,IAAM,IAhTnD,IAAIC,EAAY9I,EAAQ+I,cAAc,gBAEtCD,EAAUrB,UAAUgB,IAAI,cAExBK,EAAUf,MAAMiB,gBAAkB/I,EAAaoH,SAAS3D,QAExDoF,EAAUf,MAAMkB,UAAY,aAC5BH,EAAUf,MAAMmB,WAAa,kBAG7B,IAAIC,EAAiBnJ,EAAQ+I,cAAc,mBAEvCI,GACAA,EAAeT,iBAAiB,aAAa,SAASN,GAClDA,EAAEgB,oBAKVrJ,EAAUsJ,SAAS,EAAG,GACtBP,EAAUf,MAAMkB,UAAY,WAE5BhI,EAAQ8G,MAAMuB,YAAY,iBAAkB1H,GAC5CX,EAAQ8G,MAAMuB,YAAY,mBAAoBpI,GAG9CuE,EAAQxE,EAAQwG,WAAW,SAASN,GACpB,iBAARA,GACDlG,EAAQwG,UAAUI,OAAOV,MAK5B5F,GACAN,EAAQwG,UAAUgB,IAAIlH,GAItBC,EACAxB,EAAQyH,UAAUgB,IAAI,YAEtBzI,EAAQyH,UAAUI,OAAO,YAG7BrB,EAAQ,CACJG,SAAU,IACVF,OAAQH,EACRI,KAAM,SAASO,GACXjH,EAAQ+H,MAAMC,QAAUf,EACP,IAAbA,GACA3G,EAAYmH,UAAUgB,IAAI,kBAIlCxI,EAAaoH,SAASjC,iBAAoE,mBAA1CnF,EAAaoH,SAASjC,iBACtEnF,EAAaoH,SAASjC,gBAAgBvE,GAQ9C,SAAS0I,GAAWC,GACXxJ,EAAQyH,UAAUC,SAAS,QAAU8B,IACtCjB,KAiBR,SAASkB,GAAQC,EAAMpF,EAAOb,GAG1B,IAAIkG,EADJ3J,EAAQyH,UAAUgB,IAAI,gBAEtB,IAAImB,EAxOR,SAAoBC,GAChB,IAAIC,EAAMC,EAAOC,EAGjB,GADAD,EAAQF,EAAIE,MADA,qJAERA,GAASA,EAAM,GACfD,EAAO,UACPE,EAAMD,EAAM,OACT,CACH,IAAIE,EAAS,8EACbF,EAAQF,EAAIE,MAAME,GACdF,GAASA,EAAM,KACfD,EAAO,QACPE,EAAMD,EAAM,IAGpB,MAAO,CACHD,KAAMA,EACNI,GAAIF,GAuNOG,CAAWT,GAE1B,GAAqB,SAAjBE,EAASE,MAAoC,WAAjBF,EAASE,KAAmB,CACxD,IAAIM,EAGJT,EAAiBlG,EAAW,oBAAsB,SAClD,IAAI4G,EAAYV,EAvNxB,SAAyBE,GACrB,IAAIS,EAAS,GAETC,EADWC,mBAAmBX,GACRY,MAAM,KAEhC,QAAsBC,IAAlBH,EAAW,GAAkB,CAC7B,IACII,EACAxE,EAFAyE,EAAgBL,EAAW,GAAGE,MAAM,KAGxC,IAAKtE,EAAI,EAAGA,EAAIyE,EAAcvE,OAAQF,IAClCwE,EAAiBC,EAAczE,GAAGsE,MAAM,KACxCH,EAASA,EAAS,IAAKK,EAAe,GAAG,IAAKA,EAAe,GAGrE,OAAOE,UAAUP,GAyMoBQ,CAAgBpB,GAE5B,SAAjBE,EAASE,KACTM,EAAS,kCACe,WAAjBR,EAASE,OAChBM,EAAS,kCAEbvJ,EAAa,mCAAqCyD,EAAQ,4GAA4G8F,EAAOR,EAASM,GAAGG,EAAU,yBAI/LV,EAAiBlG,EAAW,YAAc,GAC1C5C,EAAa,mCAAqCyD,EAAQ,iBAAmBoF,EAAO,IAAMC,EAAiB,uEAInH3J,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,YAmBf,SAASwB,KAvOT,IAAmBC,EAyOf,GAzOeA,EAwOInK,EAvOnBmB,EAAawG,UAAYwC,EAuOzBvK,EAtOOuB,EAAaiJ,iBAAiB,OAuOjCxK,EAAO4F,OAAQ,CACf,IAAI6E,EAAa,EACjBzF,EAAQhF,GAAQ,SAAS0K,GACrB,IAAIC,EAASD,EAAOE,IACpB7I,EAAY,IAAIC,MAChBD,EAAU8I,OAAS,WACfJ,IACKA,GAAczK,EAAO4F,SACtBrG,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,cAGnB/G,EAAU+I,QAAU,WAChBL,IACKA,GAAczK,EAAO4F,SACtBrG,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,cAGnB/G,EAAU6I,IAAMD,UAGpBpL,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,YAwCnB,SAASZ,GAAUP,GACf,IAAKxH,EAAoB,CACrB,IAAI4K,EAAyC,IAAjCvL,EAAaoH,SAASpD,SAClCjE,EAAQ+H,MAAMmB,WAAc,UAAYsC,EAAQ,wBAA0BA,EAAQ,cAClFpJ,EAASC,EAAkB,eAAX+F,EAAE0B,KAAwB1B,EAAEqD,QAAQ,GAAGC,MAAQtD,EAAEsD,MACjEjK,EAASpB,EAAkB,eAAX+H,EAAE0B,KAAwB1B,EAAEqD,QAAQ,GAAGE,MAAQvD,EAAEuD,MACjEpJ,GAAY,GAOpB,SAASqG,GAAQR,GACb,GAAI7F,EAAW,CACXA,GAAY,EACZ,IAAIqJ,EAAU3L,EACV4L,GAAS,EACbvJ,EAAOD,EAAOD,EAEVE,EAAO,GAAKvB,IACZ6K,EAAUlK,EACVmK,GAAS,GAETvJ,EAAO,GAAKtB,IACZ4K,EAAUjK,EACVkK,GAAS,GAGTC,KAAKC,IAAIzJ,IAtgBL,IAsgB2BuJ,EAC/B3D,GAAa0D,IAEb5L,EAAQ+H,MAAMiE,WAAa,EAC3BhM,EAAQ+H,MAAMC,QAAU,IAQpC,SAASa,GAAKT,GACV,GAAI7F,IAAc3B,EAAoB,CAClCyB,EAAkB,cAAX+F,EAAE0B,KAAuB1B,EAAEqD,QAAQ,GAAGC,MAAQtD,EAAEsD,MACvDrL,EAAkB,cAAX+H,EAAE0B,KAAuB1B,EAAEqD,QAAQ,GAAGE,MAAQvD,EAAEuD,MACvDxL,EAAQkC,EAAOD,EACfhC,EAAQC,EAAOoB,EAEf,IAAIwK,EAAWH,KAAKC,IAAI5L,GAGxB,GAAI8L,EAFWH,KAAKC,IAAI3L,IAEG6L,GAAY,IAAK,CACxC,IAAIC,EAAkC,KAAtB,EAAID,EAAW,KAC/B7D,EAAEgB,iBACFpJ,EAAQ+H,MAAMiE,WAAa7L,EAAQ,KACnCH,EAAQ+H,MAAMC,QAAUkE,IA+DpC,SAASC,GAASC,GAEd,IAAKA,EACD,OAAO,EAGXvK,EAAWuK,EAAGC,QAAQC,KACtBxL,EAAYsL,EAAG/E,SAASnD,WACxBxD,EAAa0L,EAAG/E,SAAS3G,WACzBd,EAAW4I,UAAY,GAEvB,IAAI+D,EAASH,EAAGC,QAAQE,OAEpBH,EAAG/E,SAAS9C,OAAoB,WAAXgI,GAAkC,WAAXA,GAAkC,SAAXA,GAvE3E,SAAyBC,GAErB,GAAIC,UAAUC,SAAU,CACpB,MAAMC,EAAY,CACd9C,IAAK2C,GAET5M,EAAWgN,mBAAmB,YAAa,wjBACpBhN,EAAWmJ,cAAc,sBACjCL,iBAAiB,SAAS,SAASN,GAC9CA,EAAEgB,iBACFqD,UAAUlI,MAAMoI,MAKxB/M,EAAWgN,mBAAmB,YAAa,4BAA4BJ,EAA5B,kaAG3C5M,EAAWgN,mBAAmB,YAAa,4vBACtBhN,EAAWmJ,cAAc,oBACjCL,iBAAiB,SAAS,SAASN,GAC5CA,EAAEgB,iBACF,IAAIyD,EAAU5K,SAAS6K,eAAe,aACtCL,UAAUM,UAAUC,UAAUR,GAAMS,MAAK,WACvCJ,EAAQrE,UAAY,kDACnB,WACC0E,QAAQC,IAAI,qBA8ChBC,CAAgBhB,EAAGI,MAGvB7L,EAAQsB,SAASgJ,iBAAiB,yBAA2BpJ,EAAW,MAExE3B,EAAgBmN,MAAMvH,UAAUwH,QAAQtH,KAAKrF,EAAOyL,GAEhDzL,EAAM0F,OAAS,IACfvF,GAAY,GAEZH,EAAM0F,OAAS,IACf3F,GAAa,GAGjBgB,EAAUf,EAAMT,EAAgB,GAChCyB,EAAUhB,EAAMT,EAAgB,IAE3BwB,GAAWhB,IACZgB,EAAUf,EAAM,KAGfgB,GAAWjB,IACZiB,EAAUhB,EAAMA,EAAM0F,OAAS,IAI/B1F,EAAM0F,QAAU,GAChB7F,EAAYN,EAAgB,EAC5BP,EAAS6I,UAAYhI,EAAY,MAAQG,EAAM0F,QAE/C7F,EAAY,EAEZM,EACAnB,EAAS8H,UAAUI,OAAO,eAE1BlI,EAAS8H,UAAUgB,IAAI,eAIb,KAAV3G,EACAjC,EAAW4H,UAAUI,OAAO,eAE5BhI,EAAW4H,UAAUgB,IAAI,eAE7B5I,EAAW2I,UAAY1G,EAGvBd,GAAS,EACTD,GAAS,GAELW,GAAWhB,KACXK,GAAS,IAGTb,EAAgB,GAAKQ,KACrBM,GAAS,GAGb0B,GAAW1B,GAAUD,IAAWqL,EAAG/E,SAASrD,SAE5C,IAAIuJ,EAAYtM,EAAQ8H,cAAc,cAClCyE,EAAYvM,EAAQ8H,cAAc,cAElC/H,EACAwM,EAAU/F,UAAUI,OAAO,eAE3B2F,EAAU/F,UAAUgB,IAAI,eAGxB1H,EACAwM,EAAU9F,UAAUI,OAAO,eAE3B0F,EAAU9F,UAAUgB,IAAI,eAGvB2D,EAAG/E,SAASvD,aACbyJ,EAAU9F,UAAUgB,IAAI,eACxB+E,EAAU/F,UAAUgB,IAAI,gBAOhC,SAASgF,GAAcC,GAEnB,IAAKA,EACD,OAAO,EAGXhO,EAASqI,MAAMiB,gBAAkB7H,EAGjCZ,EAAiBiI,UA3oBrB,SAAuBmF,GACnB,IAAKA,EACD,MAAO,aAEX,IAAIlJ,EAAU,yBAA2BkJ,EAAU,GAAK,KACpDxH,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIwH,EAAU,GAAIxH,IAC1B1B,GAAW,eAAiBkJ,EAAU,GAAK,WAG/C,OADAlJ,GAAW,SACJA,EAioBsBmJ,CAAcjL,EAAS+K,EAAYrG,SAAS5C,UAEzExD,EAAQ8G,MAAMuB,YAAY,aAAcoE,EAAYrG,SAAS3C,WAE7DpE,EAAYmH,UAAUI,OAAO,eAE7BjI,EAAW6H,UAAUI,OAAO,WAAY,eACxChI,EAAW4H,UAAUI,OAAO,WAAY,eAEC,OAAtC6F,EAAYrG,SAASzC,eACpB/E,EAAW4H,UAAUgB,IAAI,YACzB7I,EAAW6H,UAAUgB,IAAI,iBAEzB5I,EAAW4H,UAAUgB,IAAI,eACzB7I,EAAW6H,UAAUgB,IAAI,aAG7B,IAAIoF,EAAiD,QAApCH,EAAYrG,SAASxC,WAAuB,OAAS,OAClEiJ,EAAkD,SAApCJ,EAAYrG,SAASxC,WAAwB,MAAQ,IACnEkJ,EAAiD,QAApCL,EAAYrG,SAAS7C,WAAuB,OAAS,OAClEwJ,EAAkD,SAApCN,EAAYrG,SAAS7C,WAAwB,MAAQ,IACnEyJ,EAA8C,gBAApCP,EAAYrG,SAASxC,WAA+B,cAAgB6I,EAAYrG,SAASvC,gBACnGoJ,EAA8C,gBAApCR,EAAYrG,SAAS7C,WAA+B,cAAgBkJ,EAAYrG,SAASvC,gBAEvG7D,EAAQ8G,MAAMuB,YAAY,qBAAsBuE,GAChD5M,EAAQ8G,MAAMuB,YAAY,sBAAuBwE,GACjD7M,EAAQ8G,MAAMuB,YAAY,qBAAsByE,GAChD9M,EAAQ8G,MAAMuB,YAAY,sBAAuB0E,GACjD/M,EAAQ8G,MAAMuB,YAAY,qBAAsBoE,EAAYrG,SAAStC,YACrE9D,EAAQ8G,MAAMuB,YAAY,0BAA2B2E,GACrDhN,EAAQ8G,MAAMuB,YAAY,0BAA2B4E,GAMzD,SAASC,KACL,IAAKlO,EACD,OAAO,EAGX,OADaA,EAAaoM,QAAQE,QAElC,IAAK,SArYW7C,EAsYDpI,EAtYOgD,EAsYGlD,EArYzBpB,EAAQyH,UAAUgB,IAAI,gBACtB5H,EAAa,mCAAqCyD,EAAQ,kBAAoBoF,EAAO,oBACrF1J,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,YAmYX,MACA,IAAK,UA5VT,SAAoBG,GAChB,IAAI0E,EAAgBnM,SAAS8G,cAAcW,GACvC0E,IACApO,EAAQyH,UAAUgB,IAAI,gBACtB5H,EAAa,4BAA8BuN,EAAc5F,UAAY,SACrExI,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,aAuVX8E,CAAW/M,GACf,MACA,IAAK,QAlTT,SAAkBoI,GACd1J,EAAQyH,UAAUgB,IAAI,gBACtB,IAAI6F,EAAM,IAAIC,eACdD,EAAIE,KAAK,MAAO9E,GAAM,GACtB4E,EAAIhD,OAAS,WACTzK,EAAa,4BAA6ByN,EAAIG,SAAU,SACxD1D,MAEJuD,EAAI/C,QAAU,WACV1K,EAAa,kCACbb,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,aAEf+E,EAAII,OAsSAC,CAASrN,GACb,MACA,IAAK,QACDmI,GAAQnI,EAAUF,EAAWC,GACjC,MACA,SArSJ,SAAmBqI,GAEflH,EAAU8I,OAAS,WAEfzK,EAAa,qCAAuC6I,EAAO,WAC3D1J,EAAQyH,UAAUI,OAAO,gBACzB0B,GAAW,aAEf/G,EAAU6I,IAAM3B,EA8RZkF,CAAUtN,GAlZlB,IAAoBoI,EAAMpF,EAyZ1B,SAAS4D,GAAawF,GAElB,IAAKA,GAAe9M,IAAuBqB,SAASuF,KAAKC,UAAUC,SAAS,aACxE,OAAO,EAGXR,EAAWwG,GACXD,GAAcC,GAGd,MAAMlC,EAA0C,IAAjCvL,EAAaoH,SAASpD,SACrCjE,EAAQ+H,MAAMmB,WAAa,UAAWsC,EAAQ,wBAAyBA,EAAQ,cAE3EkC,IAAgB/L,GAClB3B,EAAQyH,UAAUgB,IAAI,eAEpBiF,IAAgBhM,GAClB1B,EAAQyH,UAAUgB,IAAI,cAGxBnI,EAAYmH,UAAUI,OAAO,eAC7B,MAAMgH,EAAe7O,EAAQ+H,MAAMC,QACnChI,EAAQyH,UAAUgB,IAAI,gBAAiB,gBAEvCtG,EAAenC,EAAQ8O,WAAU,GACjC3M,EAAasF,UAAUgB,IAAI,UAC3BtG,EAAasF,UAAUI,OAAO,aAAc,eAC5C1F,EAAa4F,MAAMC,QAAU,EAC7B7F,EAAa4F,MAAMiE,WAAa,IAChC7J,EAAa4F,MAAMgH,YAAc,IAEjC,MAAMC,EAAahP,EACnBD,EAAUkP,OAAO9M,GACjBnC,EAAUmC,EACVnC,EAAQyH,UAAUI,OAAO,UAEzBsE,GAASuB,GAETlH,EAAQ,CACJG,SAAU1G,EAAaoH,SAASpD,SAChCwC,OAAQH,EACRI,KAAM,SAASO,GAEX+H,EAAWjH,MAAMC,QAAU6G,EAAe5H,EAAS4H,EAElC,IAAb5H,IACA+H,EAAWnH,SACX7H,EAAQyH,UAAUI,OAAO,iBACzB0B,GAAW,WACX3I,GAAqB,EAEjBX,EAAaoH,SAASlC,eAAgE,mBAAxClF,EAAaoH,SAASlC,eACpElF,EAAaoH,SAASlC,cAAclF,EAAcO,EAAWkB,EAASC,OAKtFwM,KAMH,SAASK,GAAKrH,GAEX,QAAIlF,SAASuF,KAAKC,UAAUC,SAAS,eAAiBP,OAIlDA,EAAIE,SAASrC,WAA+C,mBAA3BmC,EAAIE,SAASrC,YACV,IAAhCmC,EAAIE,SAASrC,UAAUmC,MAK/BD,EAAWC,GAEXlF,SAASuF,KAAKoF,mBAAmB,YAAa9M,GAC9CmC,SAASuF,KAAKC,UAAUgB,IAAI,aAE5BxH,EAAUgB,SAAS8G,cAAc,iBACjCrJ,EAAWuB,EAAQ8H,cAAc,kBACjChJ,EAAYkB,EAAQ8H,cAAc,mBAClC/I,EAAUD,EAAUgJ,cAAc,iBAClCpJ,EAAWsB,EAAQ8H,cAAc,aACjCnJ,EAAaqB,EAAQ8H,cAAc,eACnClJ,EAAaoB,EAAQ8H,cAAc,eACnCzI,EAAcW,EAAQ8H,cAAc,mBACpCxI,EAAmBD,EAAYyI,cAAc,yBAE7C9H,EAAQ8G,MAAMC,QAAU,EAExByF,GAActG,GACdgF,GAAShF,GAETnH,EAAQyH,UAAUgB,IAAI,gBAAiB,gBAGvCjC,EAAQ,CACJG,SAAU,IACVF,OAAQH,EACRI,KAAM,SAASO,GACXhG,EAAQ8G,MAAMC,QAAUf,EACP,IAAbA,IACAjH,EAAQyH,UAAUI,OAAO,iBACzBjH,GAAqB,EACrB2I,GAAW,WACPtJ,EAAaoH,SAASpC,YAA0D,mBAArChF,EAAaoH,SAASpC,YACjEhF,EAAaoH,SAASpC,WAAWhF,EAAcO,EAAWkB,EAASC,OAMnFwM,KAGIhH,EAAIE,SAAStD,cACb9B,SAASuF,KAAKkB,iBAAiB,UAAWd,IAG1C3F,SAASuF,KAAKkB,iBAAiB,SAAS,KAChC3G,IACAmN,aAAanN,GACbA,EAAW,UAMvBE,SAAS8G,cAAc,cAAcL,iBAAiB,SAAS,WAC3DR,GAAavG,MAIjBM,SAAS8G,cAAc,cAAcL,iBAAiB,SAAS,WAC3DR,GAAaxG,WAIjBT,EAAQyH,iBAAiB,SAAS,SAASN,GACvC,IAAI+G,EAAWlN,SAAS8G,cAAc,eAClCoG,IACIA,EAASzH,SAASU,EAAEgH,SAAWD,IAAa/G,EAAEgH,QAAWnP,EAAaoH,SAASlD,eAC9EiE,EAAEgH,OAAO3H,UAAUC,SAAS,iBAC7BU,EAAEgH,OAAO3H,UAAUC,SAAS,iBAC5BU,EAAEgH,OAAO3H,UAAUC,SAAS,kBAC5BU,EAAEgH,OAAO3H,UAAUC,SAAS,eAC5BU,EAAEgH,OAAO3H,UAAUC,SAAS,mBAC5BU,EAAEgH,OAAO3H,UAAUC,SAAS,qBAE5BH,eAoDV8H,GAAU,SAAUC,GACtB,MAAMC,EAAU,GAGhB,IAAIlI,EA92BR,SAAiB9D,EAAU+L,GACvB,IAAIE,EAAW,GASf,OAPA/J,EAAQlC,GAAU,SAAUkM,EAAOxJ,GAC/BuJ,EAASvJ,GAAQ1C,EAAS0C,MAG9BR,EAAQ6J,GAAS,SAAUG,EAAOxJ,GAC9BuJ,EAASvJ,GAAQqJ,EAAQrJ,MAEtBuJ,EAo2BQE,CAAQnM,EAAU+L,GAAW,IAW5C,OATAC,EAAQhI,MAAQA,EAChBgI,EAAQtH,KAAOA,EACfsH,EAAQpH,KAAOA,GACfoH,EAAQf,KAAOA,GACfe,EAAQlI,SAAWA,EArDvB,SAAckI,EAASlI,GAEfA,EAAShC,QAAqC,mBAApBgC,EAAShC,QACnCgC,EAAShC,OAAOkK,GAGpB,IAAII,EAAYtI,EAAS/B,iBAAmBrD,SAASgJ,iBAAiB5D,EAAS7D,UA2B/E,GAtBA1D,EAAO,+yBAKP2F,EAAQkK,GAAW,SAASxI,GACxB,GAAIA,EAAIM,UAAUC,SAAS,aACvB,OAAO,EAEXP,EAAIE,SAAWA,EACfF,EAAIM,UAAUgB,IAAI,aAGlBtB,EAAIuB,iBAAiB,SAAS,SAASN,GAKnC,OAJAA,EAAEgB,iBAEFjC,EAAIyI,OACJpB,GAAKrH,IACE,QAIXE,EAAShD,MAAO,CAChB,IAAIA,EAAQpC,SAAS8G,cAAc1B,EAAShD,OAC5CA,EAAMgD,SAAWA,EACjBmH,GAAKnK,IAmBTwL,CAAKN,EAASlI,GAGPkI,SAIW,mBAAXO,QAYJA,OATGC,GAAGL,OAAO,CAERH,QAAS,SAASD,GACd,MAAMU,EAAgBV,GAAW,GACjCU,EAAc1K,gBAAkB2K,KAEhC,IAAIZ,GAAQ,CAACW,cAAAA"} \ No newline at end of file +{"version":3,"file":"venobox.min.js","sources":["../src/venobox.esm.js"],"sourcesContent":["/**\n * VenoBox 2.1.6\n * Copyright 2013-2024 Nicola Franchini\n * @license: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE\n */\nlet backdrop, blocknum, blockshare, blocktitle, core, container, content, current_item, current_index, diffX, diffY, endY, elPreloader, elPreloaderInner;\nlet gallIndex, images, infinigall, items, navigationDisabled, newcontent, numeratio, nextok, prevok, overlay;\nlet set_maxWidth, set_overlayColor, set_ratio, set_autoplay, set_href, set_customclass, set_fitview, startY, thenext, theprev, thisborder, thisgall, title, throttle;\n\nconst svgOpen = '';\nconst svgClose = '';\nconst downloadIcon = svgOpen + '' + svgClose;\nconst shareIcon = svgOpen + '' + svgClose;\nconst linkIcon = svgOpen + '' + svgClose;\nconst imagesHolder = document.createElement('div');\n\nlet startX = 0;\nlet endX = 0;\nlet diff = 0;\nlet threshold = 50;\nlet startouch = false;\nlet imgLoader = new Image();\nlet clonecontent;\nlet canDrag = false;\n\nconst spinners = {\n 'bounce': ['sk-bounce', 'sk-bounce-dot', 2],\n 'chase': ['sk-chase', 'sk-chase-dot', 6],\n 'circle': ['sk-circle', 'sk-circle-dot', 12],\n 'circle-fade': ['sk-circle-fade', 'sk-circle-fade-dot', 12],\n 'flow': ['sk-flow', 'sk-flow-dot', 3],\n 'fold': ['sk-fold', 'sk-fold-cube', 4],\n 'grid': ['sk-grid', 'sk-grid-cube', 9],\n 'plane': ['sk-plane', '', 0],\n 'pulse': ['sk-pulse', '', 5],\n 'swing': ['sk-swing', 'sk-swing-dot', 2],\n 'wander': ['sk-wander', 'sk-wander-cube', 3],\n 'wave': ['sk-wave', 'sk-wave-rect', 5]\n};\n\n// Default settings\nconst defaults = {\n selector: '.venobox',\n autoplay : false,\n bgcolor: '#fff',\n border: '0',\n customClass: false,\n infinigall: false,\n maxWidth: '100%',\n navigation: true,\n navKeyboard: true,\n navTouch: true,\n navSpeed: 300,\n numeration: false,\n overlayClose: true,\n overlayColor: 'rgba(23,23,23,0.95)',\n popup: false,\n ratio: '16x9', // '1x1' | '4x3' | '16x9' | '21x9'\n share: false,\n shareStyle: 'pill', // 'bar' | 'block' | 'pill' | 'transparent'\n spinner: 'bounce', // 'plane' | 'chase' | 'bounce' | 'wave' | 'pulse' | 'flow' | 'swing' | 'circle' | 'circle-fade' | 'grid' | 'fold' | 'wander'\n spinColor : '#d2d2d2',\n titleattr: 'title',\n titlePosition: 'top', // 'top' || 'bottom'\n titleStyle: 'bar', // 'bar' | 'block' | 'pill' | 'transparent'\n toolsBackground: '#1C1C1C', // 'transparent'\n toolsColor: '#d2d2d2',\n onPreOpen: function(){ return true; }, // Return the selected object - set return false to prevent opening\n onPostOpen: function(){}, // Return: current_item, gallIndex, thenext, theprev\n onPreClose: function(){ return true; }, // Return: current_item, gallIndex, thenext, theprev - set return false to prevent closing\n onNavComplete: function(){}, // Return: current_item, gallIndex, thenext, theprev\n onContentLoaded: function(){}, // Return: newcontent\n onInit: function(){}, // Return: plugin obj\n jQuerySelectors: false,\n focusItem: false,\n fitView: false\n};\n\n/**\n * Generate spinner html\n * @param {Array} spinarray Selected spinner\n */\nfunction createspinner(spinarray){\n if (!spinarray) {\n return 'Loading...';\n }\n let spinner = '
';\n let i = 0;\n for (i = 0; i < spinarray[2]; i++) {\n spinner += '
';\n }\n spinner += '
';\n return spinner;\n}\n\n/**\n * A simple forEach() implementation for Arrays, Objects and NodeLists\n * @param {Array|Object|NodeList} collection Collection of items to iterate\n * @param {Function} callback Callback function for each iteration\n * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)\n */\nfunction forEach(collection, callback, scope) {\n if (Object.prototype.toString.call(collection) === '[object Object]') {\n let prop;\n for (prop in collection) {\n if (Object.prototype.hasOwnProperty.call(collection, prop)) {\n callback.call(scope, collection[prop], prop, collection);\n }\n }\n } else {\n let i = 0;\n let len = collection.length;\n for (i = 0; i < len; i++) {\n callback.call(scope, collection[i], i, collection);\n }\n }\n}\n\n/**\n* Merge defaults with user options\n* @param {Object} defaults Default settings\n* @param {Object} options User options\n* @returns {Object} Merged values of defaults and options\n*/\nfunction extend( defaults, options ) {\n let extended = {};\n\n forEach(defaults, function (value, prop) {\n extended[prop] = defaults[prop];\n });\n\n forEach(options, function (value, prop) {\n extended[prop] = options[prop];\n });\n return extended;\n}\n\n/**\n * Linear animation timing\n */\nfunction timingLinear(timeFraction){\n return timeFraction;\n}\n\n/**\n * Animate with callback\n * https://javascript.info/js-animation\n */\nfunction animate({timing, draw, duration}) {\n let start = performance.now();\n requestAnimationFrame(function animate(time) {\n // timeFraction goes from 0 to 1\n let timeFraction = (time - start) / duration;\n if (timeFraction > 1) {\n timeFraction = 1;\n }\n // calculate the current animation state\n let progress = timing(timeFraction);\n draw(progress); // draw it\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n}\n\n/**\n * Parse Youtube or Vimeo videos and get host & ID\n */\nfunction parseVideo(url) {\n let type, match, vid;\n let regYt = /(https?:\\/\\/)?((www\\.)?(youtube(-nocookie)?|youtube.googleapis)\\.com.*(v\\/|v=|vi=|vi\\/|e\\/|embed\\/|user\\/.*\\/u\\/\\d+\\/)|youtu\\.be\\/)([_0-9a-z-]+)/i;\n match = url.match(regYt);\n if (match && match[7]) {\n type = 'youtube';\n vid = match[7];\n } else {\n let regVim = /^.*(vimeo\\.com\\/)((channels\\/[A-z]+\\/)|(groups\\/[A-z]+\\/videos\\/))?([0-9]+)/;\n match = url.match(regVim);\n if (match && match[5]) {\n type = 'vimeo';\n vid = match[5];\n }\n }\n return {\n type: type,\n id: vid\n };\n}\n\n/**\n * Get additional url parameters\n */\nfunction getUrlParameter(url) {\n let result = '';\n let sPageURL = decodeURIComponent(url);\n let firstsplit = sPageURL.split('?');\n\n if (firstsplit[1] !== undefined) {\n let sURLVariables = firstsplit[1].split('&');\n let sParameterName;\n let i;\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n result = result + '&'+ sParameterName[0]+'='+ sParameterName[1];\n }\n }\n return encodeURI(result);\n}\n\n/**\n * Get all images from string\n */\nfunction getImages(string) {\n imagesHolder.innerHTML = string;\n return imagesHolder.querySelectorAll('img');\n}\n\n/**\n * Update item settings.\n */\nfunction updateVars(obj){\n if (!obj) {\n return false;\n }\n navigationDisabled = true;\n current_item = obj;\n nextok = false;\n prevok = false;\n set_maxWidth = obj.getAttribute(\"data-maxwidth\") || obj.settings.maxWidth;\n set_overlayColor = obj.getAttribute(\"data-overlay\") || obj.settings.overlayColor;\n set_ratio = obj.getAttribute(\"data-ratio\") || obj.settings.ratio;\n set_autoplay = obj.hasAttribute(\"data-autoplay\") || obj.settings.autoplay;\n set_href = obj.getAttribute(\"data-href\") || obj.getAttribute('href');\n set_customclass = obj.getAttribute(\"data-customclass\") || obj.settings.customClass;\n title = obj.getAttribute(obj.settings.titleattr) || '';\n thisborder = obj.getAttribute(\"data-border\") || obj.settings.border;\n set_fitview = obj.hasAttribute(\"data-fitview\") || obj.settings.fitView;\n}\n\n/**\n * Close modal.\n */\nfunction close() {\n if (!current_item || !document.body.classList.contains('vbox-open')) {\n return false;\n }\n if (current_item.settings.onPreClose && typeof current_item.settings.onPreClose === 'function') {\n if (current_item.settings.onPreClose(current_item, gallIndex, thenext, theprev) === false) {\n return false;\n }\n }\n\n document.body.removeEventListener('keydown', keyboardHandler);\n document.body.classList.remove('vbox-open');\n\n if (current_item.settings.focusItem) {\n current_item.focus();\n }\n\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n overlay.style.opacity = 1 - progress;\n if (progress === 1){\n overlay.remove();\n }\n }\n });\n}\n\n/**\n * Navigate gallery.\n */\nfunction next() {\n navigateGall(thenext);\n}\nfunction prev() {\n navigateGall(theprev);\n}\n\n/**\n * Keyboard navigation.\n */\nfunction keyboardHandler(e) {\n if (e.keyCode === 27) { // esc\n close();\n }\n if (!throttle) {\n if (e.keyCode == 37 && prevok === true) { // <\n navigateGall(theprev);\n }\n if (e.keyCode == 39 && nextok === true) { // >\n navigateGall(thenext);\n }\n /* prevent keyboard processing until timer completed */\n throttle = setTimeout(() => {\n throttle = null;\n }, 100);\n }\n}\n\n/**\n * Append and fade-in new content\n */\nfunction contentLoaded(){\n\n navigationDisabled = false;\n\n content.style.opacity = 0;\n\n content.innerHTML = newcontent;\n dragListeners();\n\n let vboxChild = content.querySelector(\":first-child\");\n\n vboxChild.classList.add('vbox-child');\n\n vboxChild.style.backgroundColor = current_item.settings.bgcolor;\n // vboxChild.style.maxWidth = set_maxWidth;\n vboxChild.style.transform = 'scale(0.9)';\n vboxChild.style.transition = 'transform 200ms';\n\n // Fix weird drag\n let childImageLock = content.querySelector('.vbox-child img');\n\n if (childImageLock) {\n childImageLock.addEventListener('dragstart', function(e) {\n e.preventDefault();\n });\n }\n\n // reset content scroll\n container.scrollTo(0, 0);\n vboxChild.style.transform = 'scale(1)';\n\n overlay.style.setProperty('--vbox-padding', thisborder);\n overlay.style.setProperty('--vbox-max-width', set_maxWidth);\n\n // Reset custom classes.\n forEach(overlay.classList, function(obj){\n if (obj !== 'vbox-overlay') {\n overlay.classList.remove(obj);\n }\n });\n\n // Set custom class.\n if (set_customclass){\n overlay.classList.add(set_customclass);\n }\n\n // Set fitview class.\n if (set_fitview){\n content.classList.add('vbox-fit');\n } else {\n content.classList.remove('vbox-fit');\n }\n\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n content.style.opacity = progress;\n if (progress === 1){\n elPreloader.classList.add('vbox-hidden');\n }\n }\n });\n if (current_item.settings.onContentLoaded && typeof current_item.settings.onContentLoaded === 'function') {\n current_item.settings.onContentLoaded(newcontent);\n }\n}\n\n/**\n * Check animation state\n * @param {string} state 'loading' | 'animated'\n */\nfunction checkState(state) {\n if (!content.classList.contains('vbox-' + state)) {\n contentLoaded();\n }\n}\n\n/**\n * Load iFrame\n */\nfunction loadIframe(dest, ratio){\n content.classList.add(\"vbox-loading\");\n newcontent = '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n}\n\n/**\n * Load videos\n */\nfunction loadVid(dest, ratio, autoplay){\n\n content.classList.add(\"vbox-loading\");\n let stringAutoplay; \n let videoObj = parseVideo(dest);\n\n if (videoObj.type == 'vimeo' || videoObj.type == 'youtube') {\n let player;\n\n // set rel=0 to hide related videos at the end of YT + optional autoplay\n stringAutoplay = autoplay ? \"?rel=0&autoplay=1\" : \"?rel=0\";\n let queryvars = stringAutoplay + getUrlParameter(dest);\n\n if (videoObj.type == 'vimeo') {\n player = 'https://player.vimeo.com/video/';\n } else if (videoObj.type == 'youtube') {\n player = 'https://www.youtube-nocookie.com/embed/';\n }\n newcontent = '
';\n } else {\n // // check if it's a video file - thanks to @alexxandar\n // if (/\\.(mp4|ogg|ogv|mov|webm)$/i.test(dest)) {\n stringAutoplay = autoplay ? \" autoplay\" : \"\";\n newcontent = '
';\n // }\n }\n\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n}\n\n/**\n * Load inline content\n */\nfunction loadInline(dest){\n let inlineContent = document.querySelector(dest);\n if (inlineContent) {\n content.classList.add(\"vbox-loading\");\n newcontent = '
' + inlineContent.innerHTML + '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n}\n\n/**\n * Preload images from ajax call\n */\nfunction loadAjaxImages(){\n images = getImages(newcontent);\n if (images.length) {\n let imgCounter = 0;\n forEach(images, function(getimg){\n let srcimg = getimg.src;\n imgLoader = new Image();\n imgLoader.onload = function(){\n imgCounter++;\n if ( imgCounter == images.length ) {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n };\n imgLoader.onerror = function(){\n imgCounter++;\n if ( imgCounter == images.length ) {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n };\n imgLoader.src = srcimg;\n });\n } else {\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n }\n}\n\n/**\n * Load Ajax\n */\nfunction loadAjax(dest){\n content.classList.add(\"vbox-loading\");\n let xhr = new XMLHttpRequest();\n xhr.open(\"GET\", dest, true);\n xhr.onload = function() {\n newcontent = '
'+ xhr.response +'
';\n loadAjaxImages();\n };\n xhr.onerror = function() {\n newcontent = '
';\n content.classList.remove(\"vbox-loading\");\n checkState('animated');\n };\n xhr.send();\n}\n\n/**\n * Preload image\n */\nfunction loadImage(dest){\n // imgLoader = new Image();\n imgLoader.onload = function(){\n // image has been loaded\n newcontent = '
';\n content.classList.remove('vbox-loading');\n checkState('animated');\n };\n imgLoader.src = dest;\n}\n\n/**\n * Start Drag\n */\nfunction dragStart(e) {\n if (!navigationDisabled) {\n let speed = current_item.settings.navSpeed * 0.84;\n content.style.transition = \"margin \" + speed + \"ms ease-out, opacity \" + speed + \"ms ease-out\";\n startX = endX = e.type === \"touchstart\" ? e.touches[0].pageX : e.pageX;\n startY = endY = e.type === \"touchstart\" ? e.touches[0].pageY : e.pageY;\n startouch = true;\n }\n}\n\n/**\n * End Drag\n */\nfunction dragEnd(e) {\n if (startouch) {\n startouch = false;\n let subject = current_item;\n let change = false;\n diff = endX - startX;\n\n if (diff < 0 && nextok) {\n subject = thenext;\n change = true;\n }\n if (diff > 0 && prevok) {\n subject = theprev;\n change = true;\n }\n\n if (Math.abs(diff) >= threshold && change) {\n navigateGall(subject);\n } else {\n content.style.marginLeft = 0;\n content.style.opacity = 1;\n }\n }\n}\n\n/**\n * Drag items\n */\nfunction drag(e) {\n if (startouch && !navigationDisabled) {\n endX = e.type === \"touchmove\" ? e.touches[0].pageX : e.pageX;\n endY = e.type === \"touchmove\" ? e.touches[0].pageY : e.pageY;\n diffX = endX - startX;\n diffY = endY - startY;\n\n let absdiffX = Math.abs(diffX);\n let absdiffY = Math.abs(diffY);\n \n if (absdiffX > absdiffY && absdiffX <= 180) {\n let diffopac = (1 - absdiffX / 180) * 1.5;\n e.preventDefault();\n content.style.marginLeft = diffX + \"px\";\n content.style.opacity = diffopac;\n }\n }\n}\n\nfunction setShareButtons(href){\n // Navigator share\n if (navigator.canShare) {\n const shareData = {\n url: href\n };\n blockshare.insertAdjacentHTML('beforeend', '');\n const mobileShareBtn = blockshare.querySelector('.vbox-share-mobile');\n mobileShareBtn.addEventListener('click', function(e){\n e.preventDefault();\n navigator.share(shareData);\n });\n }\n\n // Download\n blockshare.insertAdjacentHTML('beforeend', ''+downloadIcon+'');\n\n // Copy link\n blockshare.insertAdjacentHTML('beforeend', '
');\n const shareCopyBtn = blockshare.querySelector('.vbox-share-copy');\n shareCopyBtn.addEventListener('click', function(e){\n e.preventDefault();\n let tooltip = document.getElementById(\"myTooltip\");\n navigator.clipboard.writeText(href).then(function() {\n tooltip.innerHTML = '
Copied
';\n }, function() {\n console.log('copy failed');\n });\n });\n}\n\nfunction dragListeners(){\n // activate swipe\n if (canDrag) {\n content.classList.add('vbox-grab');\n content.addEventListener(\"touchstart\", dragStart, false);\n content.addEventListener(\"touchend\", dragEnd, false);\n content.addEventListener(\"touchmove\", drag, false);\n content.addEventListener(\"mousedown\", dragStart, false);\n content.addEventListener(\"mouseup\", dragEnd, false);\n content.addEventListener(\"mouseout\", dragEnd, false);\n content.addEventListener(\"mousemove\", drag, false);\n } else {\n content.classList.remove('vbox-grab');\n content.removeEventListener(\"touchstart\", dragStart, false);\n content.removeEventListener(\"touchend\", dragEnd, false);\n content.removeEventListener(\"touchmove\", drag, false);\n content.removeEventListener(\"mousedown\", dragStart, false);\n content.removeEventListener(\"mouseup\", dragEnd, false);\n content.removeEventListener(\"mouseout\", dragEnd, false);\n content.removeEventListener(\"mousemove\", drag, false);\n }\n}\n\n/**\n * Check navigation\n * @param {object} el Current item\n */\nfunction checknav(el){\n\n if (!el) {\n return false;\n }\n\n thisgall = el.dataset.gall;\n numeratio = el.settings.numeration;\n infinigall = el.settings.infinigall;\n blockshare.innerHTML = '';\n\n let vbtype = el.dataset.vbtype;\n\n if (el.settings.share && vbtype !== 'iframe' && vbtype !== 'inline' && vbtype !== 'ajax' ) {\n setShareButtons(el.href);\n }\n\n items = document.querySelectorAll('.vbox-item[data-gall=\"' + thisgall + '\"]');\n\n current_index = Array.prototype.indexOf.call(items, el);\n\n if (items.length < 2) {\n numeratio = false;\n }\n if (items.length < 3) {\n infinigall = false;\n }\n\n thenext = items[current_index + 1];\n theprev = items[current_index - 1];\n\n if (!thenext && infinigall) {\n thenext = items[0];\n }\n\n if (!theprev && infinigall) {\n theprev = items[items.length - 1];\n }\n\n // Update gallery numeration\n if (items.length >= 1) {\n gallIndex = current_index + 1;\n blocknum.innerHTML = gallIndex + ' / ' + items.length;\n } else {\n gallIndex = 1;\n }\n if (numeratio) {\n blocknum.classList.remove('vbox-hidden');\n } else {\n blocknum.classList.add('vbox-hidden');\n }\n\n // Update title\n if (title !== '') {\n blocktitle.classList.remove('vbox-hidden');\n } else {\n blocktitle.classList.add('vbox-hidden');\n }\n blocktitle.innerHTML = title;\n\n // update navigation arrows\n prevok = false;\n nextok = false;\n\n if (thenext || infinigall) {\n nextok = true;\n }\n\n if (current_index > 0 || infinigall) {\n prevok = true;\n }\n\n canDrag = (prevok || nextok) && el.settings.navTouch;\n\n let vbox_next = overlay.querySelector('.vbox-next');\n let vbox_prev = overlay.querySelector('.vbox-prev');\n\n if (prevok) {\n vbox_prev.classList.remove('vbox-hidden');\n } else {\n vbox_prev.classList.add('vbox-hidden');\n }\n\n if (nextok) {\n vbox_next.classList.remove('vbox-hidden');\n } else {\n vbox_next.classList.add('vbox-hidden');\n }\n\n if (!el.settings.navigation) {\n vbox_next.classList.add('vbox-hidden');\n vbox_prev.classList.add('vbox-hidden');\n }\n} // Checknav\n\n/**\n * Update overlay and tools style.\n */\nfunction updateOverlay(destination){\n\n if (!destination) {\n return false;\n }\n\n backdrop.style.backgroundColor = set_overlayColor;\n\n // Custom preloader color.\n elPreloaderInner.innerHTML = createspinner(spinners[destination.settings.spinner]);\n\n overlay.style.setProperty('--sk-color', destination.settings.spinColor);\n\n elPreloader.classList.remove('vbox-hidden');\n\n blockshare.classList.remove('vbox-top', 'vbox-bottom');\n blocktitle.classList.remove('vbox-top', 'vbox-bottom');\n\n if (destination.settings.titlePosition == 'top') {\n blocktitle.classList.add('vbox-top');\n blockshare.classList.add('vbox-bottom');\n } else {\n blocktitle.classList.add('vbox-bottom');\n blockshare.classList.add('vbox-top');\n }\n\n let titleWidth = destination.settings.titleStyle === 'bar' ? '100%' : 'auto';\n let titleRadius = destination.settings.titleStyle === 'pill' ? '5em' : '0';\n let shareWidth = destination.settings.shareStyle === 'bar' ? '100%' : 'auto';\n let shareRadius = destination.settings.shareStyle === 'pill' ? '5em' : '0';\n let titlebg = destination.settings.titleStyle === 'transparent' ? 'transparent' : destination.settings.toolsBackground;\n let sharebg = destination.settings.shareStyle === 'transparent' ? 'transparent' : destination.settings.toolsBackground;\n\n overlay.style.setProperty('--vbox-title-width', titleWidth);\n overlay.style.setProperty('--vbox-title-radius', titleRadius);\n overlay.style.setProperty('--vbox-share-width', shareWidth);\n overlay.style.setProperty('--vbox-share-radius', shareRadius);\n overlay.style.setProperty('--vbox-tools-color', destination.settings.toolsColor);\n overlay.style.setProperty('--vbox-title-background', titlebg);\n overlay.style.setProperty('--vbox-share-background', sharebg);\n}\n\n/**\n * Load content\n */\nfunction loadContent(){\n if (!current_item) {\n return false;\n }\n let vbtype = current_item.dataset.vbtype;\n switch (vbtype) {\n case 'iframe':\n loadIframe(set_href, set_ratio);\n break;\n case 'inline':\n loadInline(set_href);\n break;\n case 'ajax':\n loadAjax(set_href);\n break;\n case 'video':\n loadVid(set_href, set_ratio, set_autoplay);\n break;\n default:\n loadImage(set_href);\n }\n}\n\n/**\n * Gallery navigation.\n */\nfunction navigateGall(destination) {\n\n if (!destination || navigationDisabled || !document.body.classList.contains('vbox-open')) {\n return false;\n }\n\n updateVars(destination);\n updateOverlay(destination);\n\n // swipe out item\n const speed = (current_item.settings.navSpeed * 0.84);\n content.style.transition = 'margin '+ speed + 'ms ease-out, opacity '+ speed + 'ms ease-out';\n\n if (destination === theprev) {\n content.classList.add(\"swipe-right\");\n }\n if (destination === thenext) {\n content.classList.add(\"swipe-left\");\n }\n\n elPreloader.classList.remove('vbox-hidden');\n const startopacity = content.style.opacity;\n content.classList.add(\"vbox-animated\", \"vbox-loading\");\n\n clonecontent = content.cloneNode(false);\n clonecontent.classList.add('cloned');\n clonecontent.classList.remove(\"swipe-left\", \"swipe-right\");\n clonecontent.style.opacity = 0;\n clonecontent.style.marginLeft = '0';\n clonecontent.style.marginRight = '0';\n\n const oldcontent = content;\n container.append(clonecontent);\n content = clonecontent;\n content.classList.remove('cloned');\n\n checknav(destination);\n\n animate({\n duration: current_item.settings.navSpeed,\n timing: timingLinear,\n draw: function(progress) {\n\n oldcontent.style.opacity = startopacity - progress/startopacity;\n\n if (progress === 1){\n oldcontent.remove();\n content.classList.remove(\"vbox-animated\");\n checkState('loading');\n navigationDisabled = false;\n\n if (current_item.settings.onNavComplete && typeof current_item.settings.onNavComplete === 'function') {\n current_item.settings.onNavComplete(current_item, gallIndex, thenext, theprev);\n }\n }\n }\n });\n loadContent();\n}\n\n/**\n * Open item.\n */\n function open(obj) {\n\n if (document.body.classList.contains('vbox-open') || !obj) {\n return false;\n }\n\n if (obj.settings.onPreOpen && typeof obj.settings.onPreOpen === 'function') {\n if (obj.settings.onPreOpen(obj) === false) {\n return false;\n }\n }\n\n updateVars(obj);\n\n document.body.insertAdjacentHTML('beforeend', core);\n document.body.classList.add('vbox-open');\n\n overlay = document.querySelector(\".vbox-overlay\");\n backdrop = overlay.querySelector(\".vbox-backdrop\");\n container = overlay.querySelector(\".vbox-container\");\n content = container.querySelector(\".vbox-content\");\n blocknum = overlay.querySelector(\".vbox-num\");\n blockshare = overlay.querySelector(\".vbox-share\");\n blocktitle = overlay.querySelector(\".vbox-title\");\n elPreloader = overlay.querySelector(\".vbox-preloader\");\n elPreloaderInner = elPreloader.querySelector(\".vbox-preloader-inner\");\n\n overlay.style.opacity = 0;\n\n updateOverlay(obj);\n checknav(obj);\n\n content.classList.add(\"vbox-animated\", \"vbox-loading\");\n\n // fade in overlay\n animate({\n duration: 200,\n timing: timingLinear,\n draw: function(progress) {\n overlay.style.opacity = progress;\n if (progress === 1){\n content.classList.remove('vbox-animated');\n navigationDisabled = false;\n checkState('loading');\n if (current_item.settings.onPostOpen && typeof current_item.settings.onPostOpen === 'function') {\n current_item.settings.onPostOpen(current_item, gallIndex, thenext, theprev);\n }\n }\n }\n });\n\n loadContent();\n\n // Keyboard actions\n if (obj.settings.navKeyboard) {\n document.body.addEventListener('keydown', keyboardHandler);\n\n // Reset the throttle timer\n document.body.addEventListener('keyup', () => {\n if (throttle) {\n clearTimeout(throttle);\n throttle = null;\n }\n });\n }\n\n // Prev gallery\n document.querySelector('.vbox-prev').addEventListener('click', function(){\n navigateGall(theprev);\n });\n\n // Newxt gallery\n document.querySelector('.vbox-next').addEventListener('click', function(){\n navigateGall(thenext);\n });\n\n // Close modal.\n overlay.addEventListener('click', function(e){\n let closeBtn = document.querySelector('.vbox-close');\n if (closeBtn) {\n if (closeBtn.contains(e.target) || closeBtn === e.target || (current_item.settings.overlayClose &&\n (e.target.classList.contains('vbox-overlay') ||\n e.target.classList.contains('vbox-content') ||\n e.target.classList.contains('vbox-backdrop') ||\n e.target.classList.contains('vbox-close') ||\n e.target.classList.contains('vbox-preloader') ||\n e.target.classList.contains('vbox-container'))\n )) {\n close();\n }\n }\n });\n}\n\n/**\n * Initialize Plugin\n */\nfunction init(venobox, settings) {\n\n if (settings.onInit && typeof settings.onInit === 'function') {\n settings.onInit(venobox);\n }\n\n let selectors = settings.jQuerySelectors || document.querySelectorAll(settings.selector);\n let navigation = 'NextPrev';\n let vbheader = '
0/0
';\n let vbfooter = '
';\n let preloader = '
';\n core = '
' + preloader + '
' + vbheader + navigation + vbfooter + '
';\n\n /**\n * Loop items.\n */\n forEach(selectors, function(obj){\n if (obj.classList.contains(\"vbox-item\")) {\n return true;\n }\n obj.settings = settings;\n obj.classList.add(\"vbox-item\");\n\n // Open Link\n obj.addEventListener(\"click\", function(e){\n e.preventDefault();\n // Remove focus from link to avoid multiple calls with enter key\n obj.blur();\n open(obj);\n return false;\n }); // Click;\n }); // forEach\n\n if (settings.popup) {\n let popup = document.querySelector(settings.popup);\n popup.settings = settings;\n open(popup);\n }\n} // init\n\n/**\n * VenoBox constructor\n */\nconst VenoBox = function (options) {\n const venobox = {};\n\n // Merge user options with defaults\n let settings = extend( defaults, options || {} );\n\n venobox.close = close;\n venobox.next = next;\n venobox.prev = prev;\n venobox.open = open;\n venobox.settings = settings;\n\n init(venobox, settings);\n\n // Public APIs\n return venobox;\n};\n\n/* jQuery bridge for $().venobox() */\nif (typeof jQuery === 'function') {\n (function($){\n \"use strict\";\n $.fn.extend({\n // plugin name - venobox\n venobox: function(options) {\n const pluginoptions = options || {};\n pluginoptions.jQuerySelectors = this;\n // Init venobx\n new VenoBox({pluginoptions});\n } // venobox\n }); // extend\n })(jQuery);\n}\n\nexport default VenoBox;\n"],"names":["backdrop","blocknum","blockshare","blocktitle","core","container","content","current_item","current_index","diffX","diffY","endY","elPreloader","elPreloaderInner","gallIndex","images","infinigall","items","navigationDisabled","newcontent","numeratio","nextok","prevok","overlay","set_maxWidth","set_overlayColor","set_ratio","set_autoplay","set_href","set_customclass","set_fitview","startY","thenext","theprev","thisborder","thisgall","title","throttle","imagesHolder","document","createElement","clonecontent","startX","endX","diff","startouch","imgLoader","Image","canDrag","spinners","bounce","chase","circle","flow","fold","grid","plane","pulse","swing","wander","wave","defaults","selector","autoplay","bgcolor","border","customClass","maxWidth","navigation","navKeyboard","navTouch","navSpeed","numeration","overlayClose","overlayColor","popup","ratio","share","shareStyle","spinner","spinColor","titleattr","titlePosition","titleStyle","toolsBackground","toolsColor","onPreOpen","onPostOpen","onPreClose","onNavComplete","onContentLoaded","onInit","jQuerySelectors","focusItem","fitView","forEach","collection","callback","scope","Object","prototype","toString","call","prop","hasOwnProperty","i","len","length","timingLinear","timeFraction","animate","timing","draw","duration","start","performance","now","requestAnimationFrame","time","progress","updateVars","obj","getAttribute","settings","hasAttribute","close","body","classList","contains","removeEventListener","keyboardHandler","remove","focus","style","opacity","next","navigateGall","prev","e","keyCode","setTimeout","contentLoaded","innerHTML","add","addEventListener","dragStart","dragEnd","drag","vboxChild","querySelector","backgroundColor","transform","transition","childImageLock","preventDefault","scrollTo","setProperty","checkState","state","loadVid","dest","stringAutoplay","videoObj","url","type","match","vid","regVim","id","parseVideo","player","queryvars","result","firstsplit","decodeURIComponent","split","undefined","sParameterName","sURLVariables","encodeURI","getUrlParameter","loadAjaxImages","string","querySelectorAll","imgCounter","getimg","srcimg","src","onload","onerror","speed","touches","pageX","pageY","subject","change","Math","abs","marginLeft","absdiffX","diffopac","checknav","el","dataset","gall","vbtype","href","navigator","canShare","shareData","insertAdjacentHTML","tooltip","getElementById","clipboard","writeText","then","console","log","setShareButtons","Array","indexOf","vbox_next","vbox_prev","updateOverlay","destination","spinarray","createspinner","titleWidth","titleRadius","shareWidth","shareRadius","titlebg","sharebg","loadContent","inlineContent","loadInline","xhr","XMLHttpRequest","open","response","send","loadAjax","loadImage","startopacity","cloneNode","marginRight","oldcontent","append","clearTimeout","closeBtn","target","VenoBox","options","venobox","extended","value","extend","selectors","blur","init","jQuery","fn","pluginoptions","this"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 2f6ce66..71af3cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "venobox", - "version": "2.1.5", + "version": "2.1.6", "description": "Responsive javascript modal window plugin, touch swipe gallery", "main": "dist/venobox.min.js", "module": "src/venobox.esm.js", diff --git a/src/venobox.esm.js b/src/venobox.esm.js index ca42b56..d7e382e 100644 --- a/src/venobox.esm.js +++ b/src/venobox.esm.js @@ -1,5 +1,5 @@ /** - * VenoBox 2.1.5 + * VenoBox 2.1.6 * Copyright 2013-2024 Nicola Franchini * @license: https://github.com/nicolafranchini/VenoBox/blob/master/LICENSE */ @@ -410,7 +410,7 @@ function loadVid(dest, ratio, autoplay){ if (videoObj.type == 'vimeo') { player = 'https://player.vimeo.com/video/'; } else if (videoObj.type == 'youtube') { - player = 'https://www.youtube.com/embed/'; + player = 'https://www.youtube-nocookie.com/embed/'; } newcontent = '
'; } else {