@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 1.9 kB
JavaScript
/*! License details at fancyapps.com/license */
import{isPlainObject as e}from"../utils/isPlainObject.js";const n={syncOnChange:!1,syncOnClick:!0,syncOnHover:!1},t=()=>{let t,i;function o(){const i=t?.getOptions().Sync;return e(i)?{...n,...i}:n}function s(e){t&&e&&(i=e,t.getOptions().classes={...t.getOptions().classes,isSelected:""},t.getOptions().initialSlide=i.getPage()?.slides[0]?.index||0,o().syncOnChange&&t.on("change",r),o().syncOnClick&&t.on("click",a),o().syncOnHover&&t.getViewport()?.addEventListener("mouseover",d),function(){if(!t||!i)return;t.on("ready",g),t.on("refresh",l),i.on("change",f),i.on("filter",u)}())}function c(){const e=o().target;t&&e&&s(e)}function g(){v()}function r(){if(t&&i){const e=t.getPage()?.slides||[],n=i.getPageIndex(e[0].index||0);n>-1&&i.goTo(n,t.hasNavigated()?void 0:{tween:!1,transition:!1}),v()}}function f(){if(t&&i){const e=t.getPageIndex(i.getPage()?.slides[0].index||0);e>-1&&t.goTo(e,i.hasNavigated()?void 0:{tween:!1,transition:!1}),v()}}function a(e,n){if(!t||!i)return;if(t.getTween()?.isRunning())return;const o=t?.getOptions().classes.slide;if(!o)return;const s=n.target.closest(`.${o}`);if(s){const e=parseInt(s.getAttribute("index")||"")||0,n=i.getPageIndex(e);i.goTo(n)}}function d(e){t&&a(0,e)}function l(){if(t&&i){const e=t.getPageIndex(i.getPage()?.slides[0].index||0);e>-1&&t.goTo(e,{tween:!1,transition:!1}),v()}}function u(e,n){t&&i&&(t.filter(n),f())}function v(){if(!i)return;const e=i.getPage()?.slides[0]?.index||0;for(const n of t?.getSlides()||[])n.el?.classList.toggle("is-selected",n.index===e)}return{init:function(e){t=e,t.on("initSlides",c)},destroy:function(){t?.off("ready",g),t?.off("refresh",l),t?.off("change",r),t?.off("click",a),t?.getViewport()?.removeEventListener("mouseover",d),i?.off("change",f),i?.off("filter",u),i=void 0,t?.off("initSlides",c),t=void 0},getTarget:function(){return i}}};export{t as Sync};