@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 2.95 kB
JavaScript
/*! License details at fancyapps.com/license */
import{extend as o}from"../utils/extend.js";import{isPlainObject as e}from"../utils/isPlainObject.js";var t;!function(o){o.Reset="reset",o.Zoom="zoom",o.ZoomIn="zoomIn",o.ZoomOut="zoomOut",o.ZoomTo="zoomTo",o.ToggleCover="toggleCover",o.ToggleFull="toggleFull",o.ToggleMax="toggleMax",o.IterateZoom="iterateZoom",o.Pan="pan",o.Swipe="swipe",o.Move="move",o.MoveLeft="moveLeft",o.MoveRight="moveRight",o.MoveUp="moveUp",o.MoveDown="moveDown",o.RotateCCW="rotateCCW",o.RotateCW="rotateCW",o.FlipX="flipX",o.FlipY="flipY"}(t||(t={}));const n={mediaQuery:"(max-width: 578px), (max-height: 578px)"},i=()=>{let i,l,a,c=!1,s=null,r=null;function m(o){d(o.matches)}function g(){if(!i||!1===i.getOptions().Compactmode)return;const t=function(){const o=i?.getOptions().Compactmode;return e(o)?{...n,...o}:n}().mediaQuery;if(!t||!t.length)return;i.on("backdropClick",p),i.on("Carousel.panzoom:init",u);const c=i.getOptions();l=o({},c),a=window.matchMedia(t),d(a.matches),a.addEventListener("change",m)}function p(){c&&i?.getContainer()?.classList.toggle("is-idle")}function u(o,n,a){a&&a.panzoomRef&&(a.panzoomRef.on("singleClick",()=>{c&&i?.getContainer()?.classList.toggle("is-idle")}),a.panzoomRef.on("dblClick",(o,n)=>{if(c){const o=l?.Carousel?.Zoomable,i=o&&e(o)?o.Panzoom?.clickAction:t.ToggleFull;i&&a?.panzoomRef?.execute(i,{srcEvent:n.srcEvent})}}))}function d(n){c=n;const a=i?.getContainer(),m=i?.getCarousel();if(!i||!a)return;const g=i?.getPlugins()?.Sidebar?.isEnabled(),p=i.getOptions(),u=l?.Carousel?.Zoomable,d=l?.Carousel?.Thumbs;a.classList.toggle("is-compact",c);const f=o({clickAction:t.ToggleFull,singleClickAction:!1,dblClickAction:!1},c?{clickAction:!1,singleClickAction:!1,dblClickAction:!1}:e(u)?u.Panzoom:{});if(c?(s||(s=document.createElement("div"),s.classList.add("fancybox__footer"),a.appendChild(s)),r||g||(r=document.createElement("div"),r.classList.add("f-caption"),s.appendChild(r))):a.classList.remove("is-idle"),m){const o=m.getPlugins().Thumbs;if(o&&o.isEnabled()){const e=o.getContainer();s&&e&&s.insertAdjacentElement("beforeend",e)}}if(m&&!g)for(const e of m.getSlides()||[]){const t=e.index===m.getPageIndex();e.panzoomRef&&o(e.panzoomRef.getOptions(),f),c&&e.captionEl&&(t?(s?.insertAdjacentElement("afterbegin",e.captionEl),r&&r.remove(),r=e.captionEl,r.removeAttribute("id")):e.captionEl.remove(),e.captionEl=void 0),!c&&t&&r&&(e.el?.insertAdjacentElement("beforeend",r),e.captionEl=r,r=null)}const C={captionEl:c&&!g?r:l?.Carousel?.captionEl,Thumbs:!1!==d&&{parentEl:c?s:e(d)?d.parentEl:null},Zoomable:!1!==u&&{Panzoom:{...f}}};o(p,{idle:!1,backdropClick:!c&&(l?.backdropClick||"close"),Carousel:C});const v=m?.getOptions();v&&o(v,C)}return{init:function(o){i=o,i.on("initLayout",g)},destroy:function(){c=!1,i?.off("initLayout",g),i?.off("Carousel.panzoom:init",u),a?.removeEventListener("change",m),a=void 0},isEnabled:function(){return c}}};export{i as Compactmode};