@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 24 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 s}from"../utils/getScrollableParent.js";import{scrollLock as r}from"../utils/scrollLock.js";import{extend as i}from"../utils/extend.js";import{canUseDOM as a}from"../utils/canUseDOM.js";import{map as c}from"../utils/map.js";import{addClass as l}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 y}from"../panzoom/panzoom.js";export{Panzoom,PanzoomState,PanzoomZoomLevel}from"../panzoom/panzoom.js";import{Carousel as h}from"../carousel/carousel.js";import{Zoomable as b}from"../carousel/carousel.zoomable.js";import{Sync as v}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 S}from"../carousel/carousel.thumbs.js";import{Html as C}from"../carousel/carousel.html.js";import{Video as P}from"../carousel/carousel.video.js";import{Fullscreen as T}from"../carousel/carousel.fullscreen.js";import{Hash as j}from"./fancybox.hash.js";import{en_EN as A}from"./l10n/en_EN.js";const M='<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:M});const k=e=>{e.cancelable&&e.preventDefault()};const R=(e=null,t="",n)=>{if(!e||!e.parentElement||!t)return void(n&&n());_(e);const o=s=>{s.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),l(e,t)},_=e=>{e&&e.dispatchEvent(new CustomEvent("animationend",{bubbles:!1,cancelable:!0,currentTarget:e}))};var I;!function(e){e[e.Init=0]="Init",e[e.Ready=1]="Ready",e[e.Closing=2]="Closing",e[e.Destroyed=3]="Destroyed"}(I||(I={}));const z={ajax:null,backdropClick:"close",Carousel:{},closeButton:"auto",closeButtonTpl:M,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:A,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},O=new Map;let H=0;const B="with-fancybox",D=()=>{let a,j,A,M,D,q,N,V,W=I.Init,$={...z},X=-1,K={},U=[],Y=!1,G=!0,Z=0;function J(e,...t){let n=$[e];return n&&"function"==typeof n?n(ze,...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(ze,...t);"*"!==e&&te("*",e,...t)}function ne(){u(j,"is-revealing");try{if(document.activeElement===a){(j?.querySelector("[autofocus]")||j).focus()}}catch(e){}}function oe(e,n){ve(n),fe(),n.el?.addEventListener("click",re),"inline"!==n.type&&"clone"!==n.type||function(e){if(!M||!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(l(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-${X}-${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,l(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"),M?.emit("contentReady",e)}else M?.showError(e,"{{ELEMENT_NOT_FOUND}}")}(n),"ajax"===n.type&&function(e){const t=e.el;if(!t)return;if(e.htmlEl||e.xhr)return;M?.showLoading(e),e.state=0;const n=new XMLHttpRequest;n.onreadystatechange=function(){if(n.readyState===XMLHttpRequest.DONE&&W===I.Ready)if(M?.hideLoading(e),e.state=1,200===n.status){let o=n.responseText+"",s=null,r=null;if(e.filter){const t=document.createElement("div");t.innerHTML=o,r=t.querySelector(e.filter+"")}r&&r instanceof HTMLElement?s=r:(s=document.createElement("div"),s.innerHTML=o),s.classList.add("f-html"),e.htmlEl=s,t.classList.add("has-html"),t.classList.add("has-ajax"),t.prepend(s),M?.emit("contentReady",e)}else M?.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 se(e,t){Ee(t),t.el?.removeEventListener("click",re),"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 re(e){if(!we())return;if(W!==I.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")&&ge(e)}function ie(){G=!1,j&&M&&j.classList.remove("is-revealing"),fe();const e=J("sync");if(M&&e){const t=e.getPageIndex(M.getPageIndex())||0;e.goTo(t,{transition:!1,tween:!1})}}function ae(){!function(){const e=M?.getViewport();if(!M||!e)return;if(D=m(e).init(),!D)return;be();let t=!1,n=0,o=0,r={},i=1;function a(){q?.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 e=M?.getViewport()?.getBoundingClientRect().height||0,t=Le()?.panzoomRef;if(e&&t)if(0===o)t.execute(y.Reset);else{const o=c(Math.abs(n),0,.33*e,i,.77*i,!1);t.execute(y.ZoomTo,{scale:o})}}const l=e=>{const t=e.srcEvent,n=t.target;return J("dragToClose")&&M&&!(g(t)&&t.touches?.length>1)&&n&&!s(n)};q=f().on("step",t=>{if(j&&e&&W===I.Ready){const o=e.getBoundingClientRect().height;n=Math.min(o,Math.max(-1*o,t.y));const s=c(Math.abs(n),0,.65*o,1,.2,!0);j.style.setProperty("--f-drag-opacity",s+""),j.style.setProperty("--f-drag-offset",n+"px")}}),D.on("start",function(){t||(q?.pause(),o=n)}).on("panstart",e=>{if(!t&&l(e)&&"y"===e.axis){k(e.srcEvent),t=!0,ke(),M?.getViewport()?.classList.add("is-dragging");const n=Le()?.panzoomRef;if(n){i=n.getTransform().scale||1;const e=n.getOptions();r={...e},e.bounds=!1,e.gestures=!1}}else t=!1}).on("pan",function(e){t&&l(e)&&(k(e.srcEvent),e.srcEvent.stopPropagation(),"y"===e.axis&&(o+=e.deltaY,a()))}).on("end",e=>{if(M?.getViewport()?.classList.remove("is-dragging"),t){const t=Le()?.panzoomRef;if(t){t.getTween()?.end();const e=t.getOptions();e.bounds=r.bounds||!1,e.gestures=r.gestures||!1}l(e)&&"y"===e.axis&&(Math.abs(e.velocityY)>5||Math.abs(n)>50)&&Re(e.srcEvent,"f-throwOut"+(e.velocityY>0?"Down":"Up"))}t=!1,W===I.Ready&&0!==n&&(o=0,a())})}(),document.body.addEventListener("click",he),document.body.addEventListener("pointerdown",me,{capture:!0}),document.body.addEventListener("keydown",ye,{passive:!1,capture:!0}),fe(),Te();const e=J("sync");M&&e&&e.getTween()?.start(),xe(Le())}function ce(){M?.canGoNext()?Te():Me()}function le(e,t){ve(t)}function ue(e,t){ve(t),xe(t)}function de(){const e=M?.getPlugins().Thumbs;d(j,"has-thumbs",e?.isEnabled()||!1),d(j,"has-vertical-thumbs",!!e&&("scrollable"===e.getType()||!0===e.getCarousel()?.isVertical()))}function fe(){if(!j)return;const e=M?.getPages().length||0,t=M?.getPageIndex()||0,n=j.querySelectorAll("[data-fancybox-index],[data-fancybox-page],[data-fancybox-pages]");for(const o of n)o.hasAttribute("data-fancybox-index")?o.textContent=String(t):o.hasAttribute("data-fancybox-page")?o.textContent=String(t+1):o.textContent=String(e)}function me(e){be(),V={x:e.clientX,y:e.clientY}}function ge(e){if(!!e.composedPath()[0].closest("[data-fancybox-close]"))return void Re(e);if(function(e){if(!V)return!1;const t="clientX"in e?e:e.changedTouches[0];return!!t&&(Math.abs(t.clientX-V.x)>10||Math.abs(t.clientY-V.y)>10)}(e))return;if(te("backdropClick",e),e.defaultPrevented)return;J("backdropClick")&&Re(e)}function pe(){Ae()}function ye(e){if(!we())return;if(W!==I.Ready)return;const t=e.key,o=J("keyboard");if(!o)return;if(e.ctrlKey||e.altKey||e.shiftKey)return;const s=e.composedPath()[0];if(!n(s))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)})(s))return;if(te("keydown",e),e.defaultPrevented)return;const r=o[t];if(r)switch(r){case"close":Re(e);break;case"next":k(e),M?.next();break;case"prev":k(e),M?.prev()}}function he(e){if(!we())return;if(W!==I.Ready)return;if(Ae(),e.defaultPrevented)return;const t=e.composedPath()[0],n=!!t.closest("[data-fancybox-close]"),o=t.classList.contains("fancybox__backdrop");(n||o)&&ge(e)}function be(){D&&(J("dragToClose")?D.enable():D.disable())}function ve(e){const{el:t,htmlEl:n,panzoomRef:s,closeButtonEl:r}=e,i=s?s.getWrapper():n;if(!t||!t.parentElement||!i)return;let a=J("closeButton");if("auto"===a&&(a=!0!==M?.getPlugins().Toolbar?.isEnabled()),a){if(!r){const n=o(Q(J("closeButtonTpl")));n&&(l(n,"is-close-button"),e.closeButtonEl=i.insertAdjacentElement("afterbegin",n),l(t,"has-close-btn"))}}else Ee(e)}function Ee(e){e.closeButtonEl&&(e.closeButtonEl.remove(),e.closeButtonEl=void 0),u(e.el,"has-close-btn")}function xe(e){if(!(G&&M&&1===M.getState()&&e&&e.index===M.getOptions().initialPage&&e.el&&e.el.parentElement))return;if(void 0!==e.state&&1!==e.state)return;G=!1;const t=e.panzoomRef,n=t?.getTween(),o=J("zoomEffect")&&n?Ce(e):void 0;if(t&&n&&o){const{x:e,y:s,scale:r}=t.getStartPosition();return void n.spring({tension:215,friction:25,restDelta:.001,restSpeed:.001,maxSpeed:1/0}).from(o).to({x:e,y:s,scale:r}).start()}const s=t?.getContent()||e.htmlEl;s&&R(s,J("showClass",e))}function we(){return F.getInstance()?.getId()===X}function Le(){return M?.getPage()?.slides[0]}function Se(){const e=Le();return e?e.triggerEl||J("triggerEl"):void 0}function Ce(e){const t=e.thumbEl;if(!t||!(e=>{const t=e.getBoundingClientRect(),n=e.closest("[style]"),o=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 s=Math.max(document.documentElement.clientHeight,window.innerHeight),r=Math.max(document.documentElement.clientWidth,window.innerWidth);return!(t.bottom<0||t.top-s>=0||t.right<0||t.left-r>=0)})(t))return;const n=e.panzoomRef?.getWrapper()?.getBoundingClientRect(),o=n?.width,s=n?.height;if(!o||!s)return;const r=t.getBoundingClientRect();let i=r.width,a=r.height,c=r.left,l=r.top;if(!r||!i||!a)return;if(t instanceof HTMLImageElement){const e=window.getComputedStyle(t).getPropertyValue("object-fit");if("contain"===e||"scale-down"===e){const{width:n,height:o}=((e,t,n,o,s="contain")=>{if("contain"===s||e>n||t>o){const s=n/e,r=o/t,i=Math.min(s,r);e*=i,t*=i}return{width:e,height:t}})(t.naturalWidth,t.naturalHeight,i,a,e);c+=.5*(i-n),l+=.5*(a-o),i=n,a=o}}if(Math.abs(o/s-i/a)>.1)return;return{x:c+.5*i-(n.left+.5*o),y:l+.5*a-(n.top+.5*s),scale:i/o}}function Pe(){N&&clearTimeout(N),N=void 0,document.removeEventListener("mousemove",pe)}function Te(){if(Y)return;if(N)return;const e=J("idle");e&&(N=setTimeout(je,e))}function je(){j&&(Pe(),l(j,"is-idle"),document.addEventListener("mousemove",pe),Y=!0)}function Ae(){Y&&(Me(),Te())}function Me(){Pe(),j?.classList.remove("is-idle"),Y=!1}function ke(){const e=Se();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 Re(e,t){if(W===I.Closing||W===I.Destroyed)return;const n=new Event("shouldClose",{bubbles:!0,cancelable:!0});if(te("shouldClose",n,e),n.defaultPrevented)return;if(Pe(),e){if(e.defaultPrevented)return;k(e),e.stopPropagation(),e.stopImmediatePropagation()}if(W=I.Closing,q?.pause(),D?.destroy(),M){M.getGestures()?.destroy(),M.getTween()?.pause();for(const e of M.getSlides()){const t=e.panzoomRef;t&&(i(t.getOptions(),{clickAction:!1,dblClickAction:!1,wheelAction:!1,bounds:!1,minScale:0,maxScale:1/0}),t.getGestures()?.destroy(),t.getTween()?.pause())}}const o=M?.getPlugins();o?.Autoplay?.stop();const s=o?.Fullscreen;s&&s.inFullscreen()?Promise.resolve(s.exit()).then(()=>{setTimeout(()=>{_e(e,t)},150)}):_e(e,t)}function _e(e,t){if(W!==I.Closing)return;te("close",e),G=!1,document.body.removeEventListener("click",he),document.body.removeEventListener("pointerdown",me,{capture:!0}),document.body.removeEventListener("keydown",ye,{passive:!1,capture:!0}),V=void 0,J("placeFocusBack")&&ke();const n=document.activeElement;n&&a?.contains(n)&&n.blur(),J("fadeEffect")&&(j?.classList.remove("is-ready"),j?.classList.add("is-hiding")),j?.classList.add("is-closing");const o=Le(),s=o?.el,r=o?.panzoomRef,i=o?.panzoomRef?.getTween(),c=t||J("hideClass");let l=!1,u=!1;if(M&&o&&s&&r&&i){let e;if(J("zoomEffect")&&1===o.state&&(e=Ce(o)),e){l=!0;const t=()=>{e=Ce(o),e?i.to({...p,...e}):Ie()};r.on("refresh",()=>{t()}),i.easing(f.Easings.EaseOut).duration(350).from({...r.getTransform()}).to({...p,...e}).start(),s?.getAnimations()&&(s.style.animationPlayState="paused",requestAnimationFrame(()=>{t()}))}}const d=o?.htmlEl||o?.panzoomRef?.getWrapper();d&&_(d),!l&&c&&d&&(u=!0,R(d,c,()=>{Ie()})),l||u?setTimeout(()=>{Ie()},350):Ie()}function Ie(){if(W===I.Destroyed)return;W=I.Destroyed;const e=Se();te("destroy"),J("sync")?.getPlugins().Autoplay?.resume(),J("sync")?.getPlugins().Autoscroll?.resume(),a instanceof HTMLDialogElement&&a.close(),M?.getContainer()?.classList.remove("is-idle"),M?.destroy();for(const e of Object.values(K))e?.destroy();if(K={},a?.remove(),a=void 0,j=void 0,M=void 0,O.delete(X),!O.size&&(r(!1),document.documentElement.classList.remove(B),J("placeFocusBack")&&e&&!e.closest("[inert]")))try{e?.focus({preventScroll:!0})}catch(e){}}const ze={close:Re,destroy:Ie,getCarousel:function(){return M},getContainer:function(){return j},getId:function(){return X},getOptions:function(){return $},getPlugins:function(){return K},getSlide:function(){return Le()},getState:function(){return W},init:function(t=[],n={}){W!==I.Init&&(ze.destroy(),W=I.Init),$=i({},z,n),X=J("id")||"fancybox-"+ ++H;const c=O.get(X);if(c&&c.destroy(),O.set(X,ze),te("init"),function(){for(const[e,t]of Object.entries({...F.Plugins,...$.plugins||{}}))if(e&&!K[e]&&t instanceof Function){const n=t();n.init(ze),K[e]=n}te("initPlugins")}(),function(e=[]){te("initSlides",e),U=[...e]}(t),function(){const t=J("parentEl")||document.body;if(!(t&&t instanceof HTMLElement))return;const n=Q(J("mainTpl")||"");if(a=o(n)||void 0,!a)return;if(j=a.querySelector(".fancybox__container"),!(j&&j instanceof HTMLElement))return;const i=J("mainClass");i&&l(j,i);const c=J("mainStyle");if(c&&e(c))for(const[e,t]of Object.entries(c))j.style.setProperty(e,t);const u=J("theme"),d="auto"===u?window.matchMedia("(prefers-color-scheme:light)").matches:"light"===u;j.setAttribute("theme",d?"light":"dark"),a.setAttribute("id",`${X}`),a.addEventListener("keydown",e=>{"Escape"===e.key&&k(e)}),a.addEventListener("wheel",e=>{const t=e.target;let n=J("wheel",e);t.closest(".f-thumbs")&&(n="slide");const o="slide"===n,r=[-e.deltaX||0,-e.deltaY||0,-e.detail||0].reduce(function(e,t){return Math.abs(t)>Math.abs(e)?t:e}),i=Math.max(-1,Math.min(1,r)),a=Date.now();Z&&a-Z<300?o&&k(e):(Z=a,te("wheel",e,i),e.defaultPrevented||("close"===n?Re(e):"slide"===n&&M&&!s(t)&&(k(e),M[i>0?"prev":"next"]())))},{capture:!0,passive:!1}),a.addEventListener("cancel",e=>{Re(e)}),t.append(a),1===O.size&&(J("hideScrollbar")&&r(!0),document.documentElement.classList.add(B));te("initLayout"),a instanceof HTMLDialogElement&&(J("modal")?a.showModal():a.show())}(),function(){if(A=a?.querySelector(".fancybox__carousel")||void 0,!A)return;A.fancybox=ze;const e=i({},{Autoplay:{autoStart:!1,pauseOnHover:!1,progressbarParentEl:e=>{const t=e.getContainer();return t?.querySelector(".f-carousel__toolbar [data-autoplay-action]")||t}},Fullscreen:{el:j},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:v,Arrows:x,Lazyload:E,Zoomable:b,Html:C,Video:P,Autoplay:L,Fullscreen:T,Thumbs:S,Toolbar:w}},J("Carousel")||{},{slides:U,enabled:!0,initialPage:J("startIndex")||0,l10n:J("l10n")});M=h(A,e),te("initCarousel",M),M.on("*",(e,t,...n)=>{te(`Carousel.${t}`,e,...n)}),M.on("attachSlideEl",oe),M.on("detachSlideEl",se),M.on("contentLoading",le),M.on("contentReady",ue),M.on("ready",ae),M.on("change",ie),M.on("settle",ce),M.on("thumbs:ready",de),M.on("thumbs:destroy",de),M.init()}(),a&&j){if(J("closeExisting"))for(const[e,t]of O.entries())e!==X&&t.close();J("fadeEffect")?(setTimeout(()=>{ne()},500),l(j,"is-revealing")):ne(),j.classList.add("is-ready"),W=I.Ready,te("ready")}},isCurrentSlide:function(e){const t=Le();return!(!e||!t)&&t.index===e.index},isTopMost:function(){return we()},localize:Q,off:function(e,t){return ee.has(e)&&ee.set(e,ee.get(e).filter(e=>e!==t)),ze},on:function(e,t){return ee.set(e,[...ee.get(e)||[],t]),ze},toggleIdle(e){(Y||!0===e)&&je(),Y&&!1!==e||Me()}};return ze};function q(){for(const e of Object.values(F.Plugins)){const t=e.setup;"function"==typeof t&&t(F)}}function N(e,t={}){if(!(e&&e instanceof Element))return;let n,o,s,r,a={};for(const[t,c]of F.openers)if(t.contains(e))for(const[l,u]of c){let c;if(l){for(const n of t.querySelectorAll(l))if(n.contains(e)){c=n;break}if(!c)continue}for(const[l,d]of u){let u=null;try{u=e.closest(l)}catch(e){}u&&(o=t,s=c,n=u,r=l,i(a,d||{}))}}if(!o||!r||!n)return;const c=i({},z,t,a,{triggerEl:n});let l=[].slice.call((s||o).querySelectorAll(r));const u=n.closest(".f-carousel"),d=u?.carousel;if(d&&(!s||!u.contains(s))){const e=[];for(const t of d?.getSlides()){const n=t.el;n&&(n.matches(r)?e.push(n):e.push(...[].slice.call(n.querySelectorAll(r))))}e.length&&(l=[...e],d.getPlugins().Autoplay?.pause(),d.getPlugins().Autoscroll?.pause(),c.sync=d)}if(!1===c.groupAll){const e=c.groupAttr,t=e&&n?n.getAttribute(`${e}`):"";l=e&&t&&"true"!==t?l.filter(n=>n.getAttribute(`${e}`)===t):[n]}if(!l.length)return;c.triggerEvent?.preventDefault();const f=F.getInstance(),m=f?.getState();if(f&&(m===I.Init||m===I.Ready)){const e=f.getOptions().triggerEl;if(e&&l.indexOf(e)>-1)return}return{...c.Carousel||{}}.rtl&&(l=l.reverse()),n&&void 0===t.startIndex&&(c.startIndex=l.indexOf(n)),F.fromNodes(l,c)}const F={Plugins:{Hash:j},version:"6.1.15",openers:new Map,bind:function(e,n,o,s){if(!a())return;let r=document.body,i=null,c="[data-fancybox]",l={};e instanceof Element&&(r=e),t(e)&&t(n)?(i=e,c=n):t(n)&&t(o)?(i=n,c=o):t(n)?c=n:t(e)&&(c=e),"object"==typeof n&&(l=n||{}),"object"==typeof o&&(l=o||{}),"object"==typeof s&&(l=s||{}),function(e,t,n,o={}){if(!(e&&e instanceof Element&&n))return;const s=F.openers.get(e)||new Map,r=s.get(t)||new Map;r.set(n,o),s.set(t,r),F.openers.set(e,s),1===s.size&&e.addEventListener("click",F.fromEvent),q()}(r,i,c,l)},close:function(e=!0,...t){if(e)for(const e of O.values())e.close(...t);else{const e=F.getInstance();e&&e.close(...t)}},destroy:function(){let e;for(;e=F.getInstance();)e.destroy();for(const e of F.openers.keys())e.removeEventListener("click",F.fromEvent);F.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||"",s=document.querySelectorAll(`[data-fancybox="${e}"]`),r=parseInt(o.dataset.fancyboxIndex||"",10)||0;t=s[r]||s[0],i(n,{delegateEl:o,startIndex:r})}return N(t,n)},fromNodes:function(e,t){t=i({},z,t||{});const n=[],o=e=>e instanceof HTMLImageElement?e:e instanceof HTMLElement?e.querySelector("img:not([aria-hidden])"):void 0;for(const s of e){const r=s.dataset||{},i=t.delegateEl&&e.indexOf(s)===t.startIndex?t.delegateEl:void 0,a=o(s),c=o(i)||a||void 0,l=r.src||s.getAttribute("href")||s.getAttribute("currentSrc")||s.getAttribute("src")||void 0,u=r.thumb||r.thumbSrc||c?.getAttribute("currentSrc")||c?.getAttribute("src")||c?.dataset.lazySrc||void 0,d={src:l,alt:r.alt||a?.getAttribute("alt")||c?.getAttribute("alt")||void 0,thumbSrc:u,thumbEl:c,triggerEl:s,delegateEl:i};for(const e in r){let t=r[e]+"";d[e]="true"===t?"fancybox"!==e||"":"false"!==t&&t}n.push(d)}return F.show(n,t)},fromSelector:function(e,n,o,s){if(!a())return;let r=document.body,i=null,c="[data-fancybox]",l={};e instanceof Element&&(r=e),t(e)&&t(n)?(i=e,c=n):t(n)&&t(o)?(i=n,c=o):t(n)?c=n:t(e)&&(c=e),"object"==typeof n&&(l=n||{}),"object"==typeof o&&(l=o||{}),"object"==typeof s&&(l=s||{});for(const[e,t]of F.openers)for(const[n,o]of t)for(const[t,s]of o)if(e===r&&n===i){const e=r.querySelector((n?`${n} `:"")+c);if(e&&e.matches(t))return F.fromTriggerEl(e,l)}},fromTriggerEl:N,getCarousel:function(){return F.getInstance()?.getCarousel()||void 0},getDefaults:function(){return z},getInstance:function(e){if(e){const t=O.get(e);return t&&t.getState()!==I.Destroyed?t:void 0}return Array.from(O.values()).reverse().find(e=>{if(e.getState()!==I.Destroyed)return e})||void 0},getSlide:function(){return F.getInstance()?.getSlide()||void 0},show:function(e=[],t={}){return q(),D().init(e,t)},unbind:function(e,n,o){if(!a())return;let s=document.body,r=null,i="[data-fancybox]";e instanceof Element&&(s=e),t(e)&&t(n)?(r=e,i=n):t(n)&&t(o)?(r=n,i=o):t(n)?i=n:t(e)&&(i=e),function(e,t,n){if(!(e&&e instanceof Element&&n))return;const o=F.openers.get(e)||new Map,s=o.get(t)||new Map;s&&n&&s.delete(n),s.size&&n||o.delete(t),o.size||(F.openers.delete(e),e.removeEventListener("click",F.fromEvent))}(s,r,i)}};export{x as Arrows,L as Autoplay,h as Carousel,F as Fancybox,I as FancyboxState,T as Fullscreen,C as Html,E as Lazyload,p as PANZOOM_DEFAULT_POS,y as PanzoomAction,v as Sync,S as Thumbs,w as Toolbar,P as Video,b as Zoomable};