UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

2 lines 2.48 kB
/*! License details at fancyapps.com/license */ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.window=e.window||{}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t=e=>typeof e==`object`&&!!e&&e.constructor===Object&&Object.prototype.toString.call(e)===`[object Object]`,n=function(e){var t=new DOMParser().parseFromString(e,`text/html`).body;if(t.childElementCount>1){for(var n=document.createElement(`div`);t.firstChild;)n.appendChild(t.firstChild);return n}let r=t.firstChild;if(r&&!(r instanceof HTMLElement)){var n=document.createElement(`div`);return n.appendChild(r),n}return r},r=(e,t=``)=>{e&&e.classList&&t.split(` `).forEach(t=>{t&&e.classList.add(t)})},i=(e,t=``)=>{e&&e.classList&&t.split(` `).forEach(t=>{t&&e.classList.remove(t)})},a={dotTpl:`<button class="f-carousel__dot" data-carousel-go-to="%i" aria-label="{{GOTO}}"></button>`,dynamicFrom:11,dynamicPadd:4,maxCount:1/0,minCount:2},o=`f-carousel__dots`,s=`has-dots`;e.Dots=()=>{let e,c,l=!1,u=4,d=0,f=u;function p(){if(!e)return;let n=e.getOptions().Dots,i=t(n)?{...a,...n}:a;u=i.dynamicPadd,d=0,f=u;let p=e.getContainer(),m=e.getViewport(),v=e.getPages().length;if(n===!1||!p||!m||v<i.minCount||v>i.maxCount){_();return}c||=Array.from(p.querySelectorAll(`.`+o)).filter(e=>!m.contains(e)).pop(),c||(c=document.createElement(`div`),r(c,o),m.insertAdjacentElement(`afterend`,c));let y=l,{dynamicFrom:b}=i;l=!!(b&&v>=b&&v>=u+4),y!==l&&_(),g(i),h(),c.classList.toggle(`is-dynamic`,l),c.style.display=``,r(p,s)}function m(){h()}function h(){if(!e||!c||!l)return;let t=e.getPageIndex(),n=e.getPages().length;t<d&&(d=t,f=Math.min(d+u,n)),t>f&&(f=t,d=Math.max(f-u,0));let a=e=>e===t?`active`:e>=d&&e<=f?`padd`:e===d-1||e===f+1?`small`:e===d-2||e===f+2?`micro`:`hidden`,o=[...c.childNodes];for(let e of o){let t=parseInt(e.dataset.carouselGoTo||`0`,10);i(e,`active padd small micro hidden`),r(e,a(t))}}function g(t){if(!e||!c)return;let r=e.getPages().length;if(r!==c.childElementCount){let i=[],a=t.dotTpl||`%d`;for(let t=0;t<r;t++){let r=n(e.localize(a,[[`%d`,t+1]]).replace(/%i/g,t+``));r&&i.push(r)}c.replaceChildren(...i)}}function _(){c&&(c.replaceChildren(),c.style.display=`none`),i(e?.getContainer(),s)}return{init:function(t){e=t,e.on(`refresh`,p),e.on(`change`,m)},destroy:function(){_(),e?.off(`refresh`,p),e?.off(`change`,m),e=void 0}}}});