UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) • 2.11 kB
/*! License details at fancyapps.com/license */ import{isPlainObject as n}from"../utils/isPlainObject.js";import{isString as t}from"../utils/isString.js";const i={defaultCaption:"<em>{{NO_CAPTION}}</em>",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">\n <div class="fancybox__grid">\n <div class="fancybox__column with-viewport">\n <div class="fancybox__viewport"></div>\n </div>\n <div class="fancybox__column with-sidebar">\n <div class="fancybox__sidebar"></div>\n </div>\n </div>\n </div>\n </div>\n </dialog>',showOnStart:!0},o=()=>{let o,a=!1;function e(){const t=o?.getOptions().Sidebar;return n(t)?{...i,...t}:i}function s(n){a&&o?.getContainer()?.classList.toggle("has-sidebar",n)}function l(){const n=o?.getCarousel()?.getPlugins().Toolbar;n?.add("sidebar",{tpl:'<button class="f-button" title="{{TOGGLE_SIDEBAR}}"><svg><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></svg></button>',click:()=>s()})}function c(){const n=o?.getOptions();if(!o||!n||!1===n.Sidebar)return;a=!0;const i=e();n.mainTpl=i.mainTpl,n.Carousel=n.Carousel||{},n.Carousel.formatCaption=(n,a)=>{let e=a.caption||"";if(!e){const n=o?.getOptions().triggerEl?.dataset.fancybox;if(n){const t=document.querySelector(`[data-fancybox-caption="${n}"]`);t&&(e=t.innerHTML)}}if(!e){const n=i.defaultCaption;e="function"==typeof n?o?n(o):"":n}return e&&t(e)&&o&&(e=o.localize(e)),e},n.Carousel.captionEl=()=>o?.getContainer()?.querySelector(".fancybox__sidebar")||null;let s=n.Carousel.Thumbs;!1!==s&&(s=s||{},s.parentEl=n=>n.getViewport()?.parentElement||null,n.Carousel.Thumbs=s)}function r(){s(e().showOnStart)}return{init:function(n){o=n,o.on("Carousel.initPlugins",l),o.on("initSlides",c),o.on("initLayout",r)},destroy:function(){a=!1,o?.off("Carousel.initPlugins",l),o?.off("initSlides",c),o?.off("initLayout",r)},isEnabled:function(){return a},toggle:s}};export{o as Sidebar};