@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 1.7 kB
JavaScript
/*! License details at fancyapps.com/license */
import{isPlainObject as t}from"../utils/isPlainObject.js";import{stringToHtml as e}from"../utils/strToHtml.js";const o={dotTpl:'<button class="f-carousel__dot" data-carousel-go-to="%i" aria-label="{{GOTO}}"></button>',maxCount:1/0,minCount:2},n=()=>{let n,l;function s(e){const l=null==n?void 0:n.getOptions().Dots;return(t(l)?Object.assign(Object.assign({},o),l):o)[e]}function i(){var t;l&&(l.replaceChildren(),l.style.display="none"),null===(t=null==n?void 0:n.getContainer())||void 0===t||t.classList.remove("has-dots")}function a(t=-1){null==l||l.querySelectorAll("[data-carousel-go-to]").forEach((e=>{var o;parseInt((null===(o=e.dataset)||void 0===o?void 0:o.carouselGoTo)||"-1",10)===t?e.classList.add("is-selected"):e.classList.remove("is-selected")}))}function r(){a(null==n?void 0:n.getPageIndex())}function d(){n&&n.getPages().length!==(l?l.childElementCount:-1)&&(i(),function(){var t,o;if(!n)return;if(!1===n.getOptions().Dots)return;const i=n.getPages().length,r=n.getContainer();if(!(i<s("minCount")||i>s("maxCount"))&&r){l||(l=(null===(t=n.getContainer())||void 0===t?void 0:t.querySelector(".f-carousel__dots"))||void 0),l||(l=document.createElement("div"),l.classList.add("f-carousel__dots"),null===(o=n.getViewport())||void 0===o||o.insertAdjacentElement("afterend",l));for(let t=0;t<i;t++){const o=s("dotTpl")||"%d",i=e(n.localize(o,[["%d",t+1]]).replace(/\%i/g,t+""));i&&l.appendChild(i)}a(n.getPageIndex()),l.style.display="",r.classList.add("has-dots")}}())}return{init:function(t){n=t,n.on("refresh",d),n.on("change",r)},destroy:function(){i(),null==n||n.off("refresh",d),null==n||n.off("change",r),n=void 0}}};export{n as Dots};