@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 25.3 kB
JavaScript
/*! License details at fancyapps.com/license */
import{isPlainObject as e}from"../utils/isPlainObject.js";import{isString as t}from"../utils/isString.js";import{isNode as n}from"../utils/isNode.js";import{stringToHtml as o}from"../utils/strToHtml.js";import{getScrollableParent as i}from"../utils/getScrollableParent.js";import{scrollLock as s}from"../utils/scrollLock.js";import{extend as l}from"../utils/extend.js";import{canUseDOM as r}from"../utils/canUseDOM.js";import{map as a}from"../utils/map.js";import{addClass as c}from"../utils/addClass.js";import{removeClass as u}from"../utils/removeClass.js";import{toggleClass as d}from"../utils/toggleClass.js";import{Tween as f}from"../libs/tween.js";import{Gestures as m,isTouchEvent as g}from"../libs/gestures.js";import{PANZOOM_DEFAULT_POS as p,PanzoomAction as v}from"../panzoom/panzoom.js";export{Panzoom,PanzoomZoomLevel}from"../panzoom/panzoom.js";import{Carousel as y}from"../carousel/carousel.js";import{Zoomable as h}from"../carousel/carousel.zoomable.js";import{Sync as b}from"../carousel/carousel.sync.js";import{Lazyload as E}from"../carousel/carousel.lazyload.js";import{Arrows as x}from"../carousel/carousel.arrows.js";import{Toolbar as w}from"../carousel/carousel.toolbar.js";export{ToolbarColumn}from"../carousel/carousel.toolbar.js";import{Autoplay as L}from"../carousel/carousel.autoplay.js";import{Thumbs as j}from"../carousel/carousel.thumbs.js";import{Html as S}from"../carousel/carousel.html.js";import{Video as P}from"../carousel/carousel.video.js";import{Fullscreen as C}from"../carousel/carousel.fullscreen.js";import{Hash as T}from"./fancybox.hash.js";import{en_EN as M}from"./l10n/en_EN.js";const A='<button class="f-button" title="{{CLOSE}}" data-fancybox-close><svg tabindex="-1" width="24" height="24" viewBox="0 0 24 24"><path d="M19.286 4.714 4.714 19.286M4.714 4.714l14.572 14.572" /></svg></button>';w().add("close",{tpl:A});const k=e=>{e.cancelable&&e.preventDefault()};const O=(e=null,t="",n)=>{if(!e||!e.parentElement||!t)return void(n&&n());R(e);const o=i=>{i.target===e&&e.dataset.animationName&&(e.removeEventListener("animationend",o),delete e.dataset.animationName,n&&n(),e.classList.remove(t))};e.dataset.animationName=t,e.addEventListener("animationend",o),c(e,t)},R=e=>{e&&e.dispatchEvent(new CustomEvent("animationend",{bubbles:!1,cancelable:!0,currentTarget:e}))};var _;!function(e){e[e.Init=0]="Init",e[e.Ready=1]="Ready",e[e.Closing=2]="Closing",e[e.Destroyed=3]="Destroyed"}(_||(_={}));const I={ajax:null,backdropClick:"close",Carousel:{},closeButton:"auto",closeExisting:!1,delegateEl:void 0,dragToClose:!0,fadeEffect:!0,groupAll:!1,groupAttr:"data-fancybox",hideClass:"f-fadeOut",hideScrollbar:!0,id:void 0,idle:!1,keyboard:{Escape:"close",Delete:"close",Backspace:"close",PageUp:"next",PageDown:"prev",ArrowUp:"prev",ArrowDown:"next",ArrowRight:"next",ArrowLeft:"prev"},l10n:M,mainClass:"",mainStyle:{},mainTpl:'<dialog class="fancybox__dialog">\n <div class="fancybox__container" tabindex="0" aria-label="{{MODAL}}">\n <div class="fancybox__backdrop"></div>\n <div class="fancybox__carousel"></div>\n </div>\n </dialog>',modal:!0,on:{},parentEl:void 0,placeFocusBack:!0,showClass:"f-zoomInUp",startIndex:0,sync:void 0,theme:"dark",triggerEl:void 0,triggerEvent:void 0,zoomEffect:!0},z=new Map;let H=0;const D="with-fancybox",B=()=>{let r,T,M,B,q,F,V,W=_.Init,$=Object.assign({},I),K=-1,U={},X=[],G=!1,Y=!0,Z=0;function J(e,...t){let n=$[e];return n&&"function"==typeof n?n(Oe,...t):n}function Q(e,t=[]){const n=J("l10n")||{};e=String(e).replace(/\{\{(\w+)\}\}/g,((e,t)=>n[t]||e));for(let n=0;n<t.length;n++)e=e.split(t[n][0]).join(t[n][1]);return e=e.replace(/\{\{(.*?)\}\}/g,((e,t)=>t))}const ee=new Map;function te(e,...t){const n=[...ee.get(e)||[]];for(const[t,o]of Object.entries($.on||{}))(t===e||t.split(" ").indexOf(e)>-1)&&n.push(o);for(const e of n)e&&"function"==typeof e&&e(Oe,...t);"*"!==e&&te("*",e,...t)}function ne(){u(T,"is-revealing");try{if(document.activeElement===r){((null==T?void 0:T.querySelector("[autofocus]"))||T).focus()}}catch(e){}}function oe(e,n){var o;ve(n),de(),null===(o=n.el)||void 0===o||o.addEventListener("click",se),"inline"!==n.type&&"clone"!==n.type||function(e){if(!B||!e||!e.el)return;let n=null;if(t(e.src)){const t=e.src.split("#",2).pop();n=t?document.getElementById(t):null}if(n){if(c(n,"f-html"),"clone"===e.type||n.closest(".fancybox__carousel")){n=n.cloneNode(!0);const t=n.dataset.animationName;t&&(n.classList.remove(t),delete n.dataset.animationName);let o=n.getAttribute("id");o=o?`${o}--clone`:`clone-${K}-${e.index}`,n.setAttribute("id",o)}else if(n.parentNode){const t=document.createElement("div");t.inert=!0,n.parentNode.insertBefore(t,n),e.placeholderEl=t}e.htmlEl=n,c(e.el,"has-html"),e.el.prepend(n),n.classList.remove("hidden"),"none"===n.style.display&&(n.style.display=""),"none"===getComputedStyle(n).getPropertyValue("display")&&(n.style.display=n.dataset.display||"flex"),null==B||B.emit("contentReady",e)}else null==B||B.showError(e,"{{ELEMENT_NOT_FOUND}}")}(n),"ajax"===n.type&&function(e){const t=e.el;if(!t)return;if(e.htmlEl||e.xhr)return;null==B||B.showLoading(e),e.state=0;const n=new XMLHttpRequest;n.onreadystatechange=function(){if(n.readyState===XMLHttpRequest.DONE&&W===_.Ready)if(null==B||B.hideLoading(e),e.state=1,200===n.status){let o=n.responseText+"",i=null,s=null;if(e.filter){const t=document.createElement("div");t.innerHTML=o,s=t.querySelector(e.filter+"")}s&&s instanceof HTMLElement?i=s:(i=document.createElement("div"),i.innerHTML=o),i.classList.add("f-html"),e.htmlEl=i,t.classList.add("has-html"),t.classList.add("has-ajax"),t.prepend(i),null==B||B.emit("contentReady",e)}else null==B||B.showError(e)};const o=J("ajax")||null;n.open(o?"POST":"GET",e.src+""),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("X-Requested-With","XMLHttpRequest"),n.send(o),e.xhr=n}(n)}function ie(e,t){var n;ye(t),null===(n=t.el)||void 0===n||n.removeEventListener("click",se),"inline"!==t.type&&"clone"!==t.type||function(e){const t=e.htmlEl,n=e.placeholderEl;t&&("none"!==getComputedStyle(t).getPropertyValue("display")&&(t.style.display="none"),t.offsetHeight);n&&(t&&n.parentNode&&n.parentNode.insertBefore(t,n),n.remove());e.htmlEl=void 0,e.placeholderEl=void 0}(t),t.xhr&&(t.xhr.abort(),t.xhr=void 0)}function se(e){if(!be())return;if(W!==_.Ready)return k(e),void e.stopPropagation();if(e.defaultPrevented)return;if(!m.isClickAllowed())return;const t=e.composedPath()[0];t.closest(".fancybox__carousel")&&t.classList.contains("fancybox__slide")&&fe(e)}function le(){Y=!1,T&&B&&T.classList.remove("is-revealing"),de();const e=J("sync");if(B&&e){const t=e.getPageIndex(B.getPageIndex())||0;e.goTo(t,{transition:!1,tween:!1})}}function re(){var e;!function(){const e=null==B?void 0:B.getViewport();if(!J("dragToClose")||!B||!e)return;if(q=m(e).init(),!q)return;let t=!1,n=0,o=0,s={},l=1;function r(){var e,t;null==F||F.spring({clamp:!0,mass:1,tension:0===o?140:960,friction:17,restDelta:.1,restSpeed:.1,maxSpeed:1/0}).from({y:n}).to({y:o}).start();const i=(null===(e=null==B?void 0:B.getViewport())||void 0===e?void 0:e.getBoundingClientRect().height)||0,s=null===(t=Ee())||void 0===t?void 0:t.panzoomRef;if(i&&s)if(0===o)s.execute(v.Reset);else{const e=a(Math.abs(n),0,.33*i,l,.77*l,!1);s.execute(v.ZoomTo,{scale:e})}}const c=e=>{var t;const n=e.srcEvent,o=n.target;return B&&!(g(n)&&(null===(t=n.touches)||void 0===t?void 0:t.length)>1)&&o&&!i(o)};F=f().on("step",(t=>{if(T&&e&&W===_.Ready){const o=e.getBoundingClientRect().height;n=Math.min(o,Math.max(-1*o,t.y));const i=a(Math.abs(n),0,.5*o,1,0,!0);T.style.setProperty("--f-drag-opacity",i+""),T.style.setProperty("--f-drag-offset",n+"px")}})),q.on("start",(function(){t||(null==F||F.pause(),o=n)})).on("panstart",(e=>{var n,o;if(!t&&c(e)&&"y"===e.axis){k(e.srcEvent),t=!0,Te(),null===(n=null==B?void 0:B.getViewport())||void 0===n||n.classList.add("is-dragging");const i=null===(o=Ee())||void 0===o?void 0:o.panzoomRef;if(i){l=i.getTransform().scale||1;const e=i.getOptions();s=Object.assign({},e),e.bounds=!1,e.gestures=!1}}else t=!1})).on("pan",(function(e){t&&c(e)&&(k(e.srcEvent),e.srcEvent.stopPropagation(),"y"===e.axis&&(o+=e.deltaY,r()))})).on("end",(e=>{var i,l,a;if(null===(i=null==B?void 0:B.getViewport())||void 0===i||i.classList.remove("is-dragging"),t){const t=null===(l=Ee())||void 0===l?void 0:l.panzoomRef;if(t){null===(a=t.getTween())||void 0===a||a.end();const e=t.getOptions();e.bounds=s.bounds||!1,e.gestures=s.gestures||!1}c(e)&&"y"===e.axis&&(Math.abs(e.velocityY)>5||Math.abs(n)>50)&&Me(e.srcEvent,"f-throwOut"+(e.velocityY>0?"Down":"Up"))}t=!1,W===_.Ready&&0!==n&&(o=0,r())}))}(),document.body.addEventListener("click",pe),document.body.addEventListener("keydown",ge,{passive:!1,capture:!0}),de(),je();const t=J("sync");B&&t&&(null===(e=t.getTween())||void 0===e||e.start()),he(Ee())}function ae(){(null==B?void 0:B.canGoNext())?je():Ce()}function ce(e,t){ve(t),he(t)}function ue(){var e;const t=null==B?void 0:B.getPlugins().Thumbs;d(T,"has-thumbs",(null==t?void 0:t.isEnabled())||!1),d(T,"has-vertical-thumbs",!!t&&("scrollable"===t.getType()||!0===(null===(e=t.getCarousel())||void 0===e?void 0:e.isVertical())))}function de(){if(T){const e=(null==B?void 0:B.getPages())||[],t=(null==B?void 0:B.getPageIndex())||0;for(const e of T.querySelectorAll("[data-fancybox-index]"))e.innerHTML=t+"";for(const e of T.querySelectorAll("[data-fancybox-page]"))e.innerHTML=t+1+"";for(const t of T.querySelectorAll("[data-fancybox-pages]"))t.innerHTML=e.length+""}}function fe(e){if(!!e.composedPath()[0].closest("[data-fancybox-close]"))return void Me(e);if(te("backdropClick",e),e.defaultPrevented)return;J("backdropClick")&&Me(e)}function me(){Pe()}function ge(e){if(!be())return;if(W!==_.Ready)return;const t=e.key,o=J("keyboard");if(!o)return;if(e.ctrlKey||e.altKey||e.shiftKey)return;const i=e.composedPath()[0];if(!n(i))return;if("Escape"!==t&&(e=>{const t=["input","textarea","select","option","video","iframe","[contenteditable]","[data-selectable]","[data-draggable]"].join(",");return e.matches(t)||e.closest(t)})(i))return;if(te("keydown",e),e.defaultPrevented)return;const s=o[t];if(s)switch(s){case"close":Me(e);break;case"next":k(e),null==B||B.next();break;case"prev":k(e),null==B||B.prev()}}function pe(e){if(!be())return;if(W!==_.Ready)return;if(Pe(),e.defaultPrevented)return;const t=e.composedPath()[0],n=!!t.closest("[data-fancybox-close]"),o=t.classList.contains("fancybox__backdrop");(n||o)&&fe(e)}function ve(e){var t;const{el:n,htmlEl:i,panzoomRef:s,closeButtonEl:l}=e,r=s?s.getWrapper():i;if(!n||!n.parentElement||!r)return;let a=J("closeButton");if("auto"===a&&(a=!0!==(null===(t=null==B?void 0:B.getPlugins().Toolbar)||void 0===t?void 0:t.isEnabled())),a){if(!l){const t=o(Q(A));t&&(c(t,"is-close-button"),e.closeButtonEl=r.insertAdjacentElement("afterbegin",t),c(n,"has-close-btn"))}}else ye(e)}function ye(e){e.closeButtonEl&&(e.closeButtonEl.remove(),e.closeButtonEl=void 0),u(e.el,"has-close-btn")}function he(e){if(!(Y&&B&&1===B.getState()&&e&&e.index===B.getOptions().initialPage&&e.el&&e.el.parentElement))return;if(void 0!==e.state&&1!==e.state)return;Y=!1;const t=e.panzoomRef,n=null==t?void 0:t.getTween(),o=J("zoomEffect")&&n?we(e):void 0;if(t&&n&&o){const{x:e,y:i,scale:s}=t.getStartPosition();return void n.spring({tension:215,friction:25,restDelta:.001,restSpeed:.001,maxSpeed:1/0}).from(o).to({x:e,y:i,scale:s}).start()}const i=(null==t?void 0:t.getContent())||e.htmlEl;i&&O(i,J("showClass",e))}function be(){var e;return(null===(e=N.getInstance())||void 0===e?void 0:e.getId())===K}function Ee(){var e;return null===(e=null==B?void 0:B.getPage())||void 0===e?void 0:e.slides[0]}function xe(){const e=Ee();return e?e.triggerEl||J("triggerEl"):void 0}function we(e){var t,n;const o=e.thumbEl;if(!o||!(e=>{const t=e.getBoundingClientRect(),n=e.closest("[style]"),o=null==n?void 0:n.parentElement;if(n&&n.style.transform&&o){const e=o.getBoundingClientRect();if(t.left<e.left||t.left>e.left+e.width-t.width)return!1;if(t.top<e.top||t.top>e.top+e.height-t.height)return!1}const i=Math.max(document.documentElement.clientHeight,window.innerHeight),s=Math.max(document.documentElement.clientWidth,window.innerWidth);return!(t.bottom<0||t.top-i>=0||t.right<0||t.left-s>=0)})(o))return;const i=null===(n=null===(t=e.panzoomRef)||void 0===t?void 0:t.getWrapper())||void 0===n?void 0:n.getBoundingClientRect(),s=null==i?void 0:i.width,l=null==i?void 0:i.height;if(!s||!l)return;const r=o.getBoundingClientRect();let a=r.width,c=r.height,u=r.left,d=r.top;if(!r||!a||!c)return;if(o instanceof HTMLImageElement){const e=window.getComputedStyle(o).getPropertyValue("object-fit");if("contain"===e||"scale-down"===e){const{width:t,height:n}=((e,t,n,o,i="contain")=>{if("contain"===i||e>n||t>o){const i=n/e,s=o/t,l=Math.min(i,s);e*=l,t*=l}return{width:e,height:t}})(o.naturalWidth,o.naturalHeight,a,c,e);u+=.5*(a-t),d+=.5*(c-n),a=t,c=n}}if(Math.abs(s/l-a/c)>.1)return;return{x:u+.5*a-(i.left+.5*s),y:d+.5*c-(i.top+.5*l),scale:a/s}}function Le(){V&&clearTimeout(V),V=void 0,document.removeEventListener("mousemove",me)}function je(){if(G)return;if(V)return;const e=J("idle");e&&(V=setTimeout(Se,e))}function Se(){T&&(Le(),c(T,"is-idle"),document.addEventListener("mousemove",me),G=!0)}function Pe(){G&&(Ce(),je())}function Ce(){Le(),null==T||T.classList.remove("is-idle"),G=!1}function Te(){const e=xe();var t;!e||(t=e.getBoundingClientRect()).bottom>0&&t.right>0&&t.left<(window.innerWidth||document.documentElement.clientWidth)&&t.top<(window.innerHeight||document.documentElement.clientHeight)||e.closest("[inert]")||e.scrollIntoView({behavior:"instant",block:"center",inline:"center"})}function Me(e,t){var n,o,i,s,r;if(W===_.Closing||W===_.Destroyed)return;const a=new Event("shouldClose",{bubbles:!0,cancelable:!0});if(te("shouldClose",a,e),a.defaultPrevented)return;if(Le(),e){if(e.defaultPrevented)return;k(e),e.stopPropagation(),e.stopImmediatePropagation()}if(W=_.Closing,null==F||F.pause(),null==q||q.destroy(),B){null===(n=B.getGestures())||void 0===n||n.destroy(),null===(o=B.getTween())||void 0===o||o.pause();for(const e of B.getSlides()){const t=e.panzoomRef;t&&(l(t.getOptions(),{clickAction:!1,dblClickAction:!1,wheelAction:!1,bounds:!1,minScale:0,maxScale:1/0}),null===(i=t.getGestures())||void 0===i||i.destroy(),null===(s=t.getTween())||void 0===s||s.pause())}}const c=null==B?void 0:B.getPlugins();null===(r=null==c?void 0:c.Autoplay)||void 0===r||r.stop();const u=null==c?void 0:c.Fullscreen;u&&u.inFullscreen()?Promise.resolve(u.exit()).then((()=>{setTimeout((()=>{Ae(e,t)}),150)})):Ae(e,t)}function Ae(e,t){var n,o;if(W!==_.Closing)return;te("close",e),Y=!1,document.body.removeEventListener("click",pe),document.body.removeEventListener("keydown",ge,{passive:!1,capture:!0}),J("placeFocusBack")&&Te();const i=document.activeElement;i&&(null==r?void 0:r.contains(i))&&i.blur(),J("fadeEffect")&&(null==T||T.classList.remove("is-ready"),null==T||T.classList.add("is-hiding")),null==T||T.classList.add("is-closing");const s=Ee(),l=null==s?void 0:s.el,a=null==s?void 0:s.panzoomRef,c=null===(n=null==s?void 0:s.panzoomRef)||void 0===n?void 0:n.getTween(),u=t||J("hideClass");let d=!1,m=!1;if(B&&s&&l&&a&&c){let e;if(J("zoomEffect")&&1===s.state&&(e=we(s)),e){d=!0;const t=()=>{e=we(s),e?c.to(Object.assign(Object.assign({},p),e)):ke()};a.on("refresh",(()=>{t()})),c.easing(f.Easings.EaseOut).duration(350).from(Object.assign({},a.getTransform())).to(Object.assign(Object.assign({},p),e)).start(),(null==l?void 0:l.getAnimations())&&(l.style.animationPlayState="paused",requestAnimationFrame((()=>{t()})))}}const g=(null==s?void 0:s.htmlEl)||(null===(o=null==s?void 0:s.panzoomRef)||void 0===o?void 0:o.getWrapper());g&&R(g),!d&&u&&g&&(m=!0,O(g,u,(()=>{ke()}))),d||m?setTimeout((()=>{ke()}),350):ke()}function ke(){var e,t,n,o,i;if(W===_.Destroyed)return;W=_.Destroyed;const l=xe();te("destroy"),null===(t=null===(e=J("sync"))||void 0===e?void 0:e.getPlugins().Autoplay)||void 0===t||t.resume(),null===(o=null===(n=J("sync"))||void 0===n?void 0:n.getPlugins().Autoscroll)||void 0===o||o.resume(),r instanceof HTMLDialogElement&&r.close(),null===(i=null==B?void 0:B.getContainer())||void 0===i||i.classList.remove("is-idle"),null==B||B.destroy();for(const e of Object.values(U))null==e||e.destroy();if(U={},null==r||r.remove(),r=void 0,T=void 0,B=void 0,z.delete(K),!z.size&&(s(!1),document.documentElement.classList.remove(D),J("placeFocusBack")&&l&&!l.closest("[inert]")))try{null==l||l.focus({preventScroll:!0})}catch(e){}}const Oe={close:Me,destroy:ke,getCarousel:function(){return B},getContainer:function(){return T},getId:function(){return K},getOptions:function(){return $},getPlugins:function(){return U},getSlide:function(){return Ee()},getState:function(){return W},init:function(t=[],n={}){W!==_.Init&&(Oe.destroy(),W=_.Init),$=l({},I,n),K=J("id")||"fancybox-"+ ++H;const a=z.get(K);if(a&&a.destroy(),z.set(K,Oe),te("init"),function(){for(const[e,t]of Object.entries(Object.assign(Object.assign({},N.Plugins),$.plugins||{})))if(e&&!U[e]&&t instanceof Function){const n=t();n.init(Oe),U[e]=n}te("initPlugins")}(),function(e=[]){te("initSlides",e),X=[...e]}(t),function(){const t=J("parentEl")||document.body;if(!(t&&t instanceof HTMLElement))return;const n=Q(J("mainTpl")||"");if(r=o(n)||void 0,!r)return;if(T=r.querySelector(".fancybox__container"),!(T&&T instanceof HTMLElement))return;const l=J("mainClass");l&&c(T,l);const a=J("mainStyle");if(a&&e(a))for(const[e,t]of Object.entries(a))T.style.setProperty(e,t);const u=J("theme"),d="auto"===u?window.matchMedia("(prefers-color-scheme:light)").matches:"light"===u;T.setAttribute("theme",d?"light":"dark"),r.setAttribute("id",`${K}`),r.addEventListener("keydown",(e=>{"Escape"===e.key&&k(e)})),r.addEventListener("wheel",(e=>{const t=e.target;let n=J("wheel",e);t.closest(".f-thumbs")&&(n="slide");const o="slide"===n,s=[-e.deltaX||0,-e.deltaY||0,-e.detail||0].reduce((function(e,t){return Math.abs(t)>Math.abs(e)?t:e})),l=Math.max(-1,Math.min(1,s)),r=Date.now();Z&&r-Z<300?o&&k(e):(Z=r,te("wheel",e,l),e.defaultPrevented||("close"===n?Me(e):"slide"===n&&B&&!i(t)&&(k(e),B[l>0?"prev":"next"]())))}),{capture:!0,passive:!1}),r.addEventListener("cancel",(e=>{Me(e)})),t.append(r),1===z.size&&(J("hideScrollbar")&&s(!0),document.documentElement.classList.add(D));r instanceof HTMLDialogElement&&(J("modal")?r.showModal():r.show());te("initLayout")}(),function(){if(M=(null==r?void 0:r.querySelector(".fancybox__carousel"))||void 0,!M)return;M.fancybox=Oe;const e=l({},{Autoplay:{autoStart:!1,pauseOnHover:!1,progressbarParentEl:e=>{const t=e.getContainer();return(null==t?void 0:t.querySelector(".f-carousel__toolbar [data-autoplay-action]"))||t}},Fullscreen:{el:T},Toolbar:{absolute:!0,items:{counter:{tpl:'<div class="f-counter"><span data-fancybox-page></span>/<span data-fancybox-pages></span></div>'}},display:{left:["counter"],right:["toggleFull","autoplay","fullscreen","thumbs","close"]}},Video:{autoplay:!0},Thumbs:{minCount:2,Carousel:{classes:{container:"fancybox__thumbs"}}},classes:{container:"fancybox__carousel",viewport:"fancybox__viewport",slide:"fancybox__slide"},spinnerTpl:'<div class="f-spinner" data-fancybox-close></div>',dragFree:!1,slidesPerPage:1,plugins:{Sync:b,Arrows:x,Lazyload:E,Zoomable:h,Html:S,Video:P,Autoplay:L,Fullscreen:C,Thumbs:j,Toolbar:w}},J("Carousel")||{},{slides:X,enabled:!0,initialPage:J("startIndex")||0,l10n:J("l10n")});B=y(M,e),te("initCarousel",B),B.on("*",((e,t,...n)=>{te(`Carousel.${t}`,e,...n)})),B.on("attachSlideEl",oe),B.on("detachSlideEl",ie),B.on("contentReady",ce),B.on("ready",re),B.on("change",le),B.on("settle",ae),B.on("thumbs:ready",ue),B.on("thumbs:destroy",ue),B.init()}(),r&&T){if(J("closeExisting"))for(const[e,t]of z.entries())e!==K&&t.close();J("fadeEffect")?(setTimeout((()=>{ne()}),500),c(T,"is-revealing")):ne(),T.classList.add("is-ready"),W=_.Ready,te("ready")}},isCurrentSlide:function(e){const t=Ee();return!(!e||!t)&&t.index===e.index},isTopMost:function(){return be()},off:function(e,t){return ee.has(e)&&ee.set(e,ee.get(e).filter((e=>e!==t))),Oe},on:function(e,t){return ee.set(e,[...ee.get(e)||[],t]),Oe},toggleIdle(e){(G||!0===e)&&Se(),G&&!1!==e||Ce()}};return Oe};function q(e,t={}){var n,o,i;if(!(e&&e instanceof Element))return;let s,r,a,c,u={};for(const[t,n]of N.openers)if(t.contains(e))for(const[o,i]of n){let n;if(o){for(const i of t.querySelectorAll(o))if(i.contains(e)){n=i;break}if(!n)continue}for(const[o,d]of i){let i=null;try{i=e.closest(o)}catch(e){}i&&(r=t,a=n,s=i,c=o,l(u,d||{}))}}if(!r||!c||!s)return;const d=l({},I,t,u,{triggerEl:s});let f=[].slice.call((a||r).querySelectorAll(c));const m=s.closest(".f-carousel"),g=null==m?void 0:m.carousel;if(g&&(!a||!m.contains(a))){const e=[];for(const t of null==g?void 0:g.getSlides()){const n=t.el;n&&(n.matches(c)?e.push(n):e.push(...[].slice.call(n.querySelectorAll(c))))}e.length&&(f=[...e],null===(n=g.getPlugins().Autoplay)||void 0===n||n.pause(),null===(o=g.getPlugins().Autoscroll)||void 0===o||o.pause(),d.sync=g)}if(!1===d.groupAll){const e=d.groupAttr,t=e&&s?s.getAttribute(`${e}`):"";f=e&&t?f.filter((n=>n.getAttribute(`${e}`)===t)):[s]}if(!f.length)return;null===(i=d.triggerEvent)||void 0===i||i.preventDefault();const p=N.getInstance();if(p){const e=p.getOptions().triggerEl;if(e&&f.indexOf(e)>-1)return}return Object.assign({},d.Carousel||{}).rtl&&(f=f.reverse()),s&&void 0===t.startIndex&&(d.startIndex=f.indexOf(s)),N.fromNodes(f,d)}const N={Plugins:{Hash:T},version:"6.1.7",openers:new Map,bind:function(e,n,o,i){if(!r())return;let s=document.body,l=null,a="[data-fancybox]",c={};e instanceof Element&&(s=e),t(e)&&t(n)?(l=e,a=n):t(n)&&t(o)?(l=n,a=o):t(n)?a=n:t(e)&&(a=e),"object"==typeof n&&(c=n||{}),"object"==typeof o&&(c=o||{}),"object"==typeof i&&(c=i||{}),function(e,t,n,o={}){if(!(e&&e instanceof Element&&n))return;const i=N.openers.get(e)||new Map,s=i.get(t)||new Map;if(s.set(n,o),i.set(t,s),N.openers.set(e,i),1===i.size&&e.addEventListener("click",N.fromEvent),1===N.openers.size)for(const e of Object.values(N.Plugins)){const t=e.setup;"function"==typeof t&&t(N)}}(s,l,a,c)},close:function(e=!0,...t){if(e)for(const e of z.values())e.close(...t);else{const e=N.getInstance();e&&e.close(...t)}},destroy:function(){let e;for(;e=N.getInstance();)e.destroy();for(const e of N.openers.keys())e.removeEventListener("click",N.fromEvent);N.openers.clear()},fromEvent:function(e){if(e.defaultPrevented)return;if(e.button&&0!==e.button)return;if(e.ctrlKey||e.metaKey||e.shiftKey)return;let t=e.composedPath()[0];const n={triggerEvent:e};if(t.closest(".fancybox__container.is-hiding"))return k(e),void e.stopPropagation();const o=t.closest("[data-fancybox-delegate]")||void 0;if(o){const e=o.dataset.fancyboxDelegate||"",i=document.querySelectorAll(`[data-fancybox="${e}"]`),s=parseInt(o.dataset.fancyboxIndex||"",10)||0;t=i[s]||i[0],l(n,{delegateEl:o,startIndex:s})}return q(t,n)},fromNodes:function(e,t){t=l({},I,t||{});const n=[],o=e=>e instanceof HTMLImageElement?e:e instanceof HTMLElement?e.querySelector("img:not([aria-hidden])"):void 0;for(const i of e){const s=i.dataset||{},l=t.delegateEl&&e.indexOf(i)===t.startIndex?t.delegateEl:void 0,r=o(l)||o(i)||void 0,a=s.src||i.getAttribute("href")||i.getAttribute("currentSrc")||i.getAttribute("src")||void 0,c=s.thumb||s.thumbSrc||(null==r?void 0:r.getAttribute("currentSrc"))||(null==r?void 0:r.getAttribute("src"))||(null==r?void 0:r.dataset.lazySrc)||void 0,u={src:a,alt:s.alt||(null==r?void 0:r.getAttribute("alt"))||void 0,thumbSrc:c,thumbEl:r,triggerEl:i,delegateEl:l};for(const e in s){let t=s[e]+"";t="false"!==t&&("true"===t||t),u[e]=t}n.push(u)}return N.show(n,t)},fromSelector:function(e,n,o,i){if(!r())return;let s=document.body,l=null,a="[data-fancybox]",c={};e instanceof Element&&(s=e),t(e)&&t(n)?(l=e,a=n):t(n)&&t(o)?(l=n,a=o):t(n)?a=n:t(e)&&(a=e),"object"==typeof n&&(c=n||{}),"object"==typeof o&&(c=o||{}),"object"==typeof i&&(c=i||{});for(const[e,t]of N.openers)for(const[n,o]of t)for(const[t,i]of o)if(e===s&&n===l){const e=s.querySelector((n?`${n} `:"")+a);if(e&&e.matches(t))return N.fromTriggerEl(e,c)}},fromTriggerEl:q,getCarousel:function(){var e;return(null===(e=N.getInstance())||void 0===e?void 0:e.getCarousel())||void 0},getDefaults:function(){return I},getInstance:function(e){if(e){const t=z.get(e);return t&&t.getState()!==_.Destroyed?t:void 0}return Array.from(z.values()).reverse().find((e=>{if(e.getState()!==_.Destroyed)return e}))||void 0},getSlide:function(){var e;return(null===(e=N.getInstance())||void 0===e?void 0:e.getSlide())||void 0},show:function(e=[],t={}){return B().init(e,t)},unbind:function(e,n,o){if(!r())return;let i=document.body,s=null,l="[data-fancybox]";e instanceof Element&&(i=e),t(e)&&t(n)?(s=e,l=n):t(n)&&t(o)?(s=n,l=o):t(n)?l=n:t(e)&&(l=e),function(e,t,n){if(!(e&&e instanceof Element&&n))return;const o=N.openers.get(e)||new Map,i=o.get(t)||new Map;i&&n&&i.delete(n),i.size&&n||o.delete(t),o.size||(N.openers.delete(e),e.removeEventListener("click",N.fromEvent))}(i,s,l)}};export{x as Arrows,L as Autoplay,y as Carousel,N as Fancybox,_ as FancyboxState,C as Fullscreen,S as Html,E as Lazyload,p as PANZOOM_DEFAULT_POS,v as PanzoomAction,b as Sync,j as Thumbs,w as Toolbar,P as Video,h as Zoomable};