aero-slider 1.0.0-beta.3 → 1.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,18 +21,35 @@ interface SliderInstance {
21
21
  refresh(): void;
22
22
  add(slides: HTMLElement | HTMLElement[], index?: number): void;
23
23
  remove(index: number | number[]): void;
24
- on(event: SliderEvent, callback: SliderEventCallback): void;
25
- off(event: SliderEvent, callback: SliderEventCallback): void;
26
24
  readonly currentIndex: number;
27
25
  readonly slideCount: number;
28
26
  }
29
- type SliderEvent = "slideChange" | "dragStart" | "dragEnd" | "autoplayStart" | "autoplayStop" | "ready" | "destroy" | "resize" | "resized" | "visible" | "hidden";
30
- /** Event payload. dragEnd includes fromIndex (slide index at drag start). */
31
- type SliderEventData = {
32
- index: number;
33
- fromIndex?: number;
34
- };
35
- type SliderEventCallback = (data: SliderEventData) => void;
27
+ type SliderEvent = "ready" | "slideChange" | "dragStart" | "dragEnd" | "autoplayStart" | "autoplayStop" | "destroy" | "resize" | "resized" | "visible" | "hidden";
28
+ interface SliderEventMap {
29
+ ready: {};
30
+ slideChange: {
31
+ index: number;
32
+ };
33
+ dragStart: {
34
+ index: number;
35
+ };
36
+ dragEnd: {
37
+ index: number;
38
+ fromIndex: number;
39
+ };
40
+ autoplayStart: {};
41
+ autoplayStop: {};
42
+ destroy: {};
43
+ resize: {};
44
+ resized: {};
45
+ visible: {
46
+ index: number;
47
+ };
48
+ hidden: {
49
+ index: number;
50
+ };
51
+ }
52
+ type SliderEventData<E extends SliderEvent = SliderEvent> = SliderEventMap[E];
36
53
  declare global {
37
54
  interface HTMLElement {
38
55
  aeroSlider?: SliderInstance;
@@ -65,4 +82,4 @@ declare global {
65
82
  }
66
83
  }
67
84
 
68
- export { type SliderConfig, type SliderEvent, type SliderEventCallback, type SliderEventData, type SliderInstance, type SyncThumbnailsOptions, createSlider, syncThumbnails };
85
+ export { type SliderConfig, type SliderEvent, type SliderEventData, type SliderInstance, type SyncThumbnailsOptions, createSlider, syncThumbnails };
@@ -1 +1 @@
1
- var Ee={loop:!1,autoplay:!1,autoplayInterval:5e3,draggable:!0,centered:!0,maxDots:0,noDrag:"",perMove:0,direction:"ltr"},ee={slidesPerView:1,gap:0,aspectRatio:"16 / 9"},be=5,fe=.3,le=80,he=250,Le=300,pe=100,Te=250,j="data-aero-slider-index",q="data-aero-slider-clone";function Ae(e,m,a,c={}){let o=c.debounceMs??100,S=c.maxWaitMs??250,n="",p=null,h=null;function s(){let b=getComputedStyle(e);return m.map(I=>b.getPropertyValue(I).trim()).join("\0")}function t(){p!==null&&(clearTimeout(p),p=null),h=null;let b=s();b!==n&&(n=b,a())}function T(){let b=Date.now();if(h===null&&(h=b),b-h>=S){t();return}p!==null&&clearTimeout(p),p=setTimeout(t,o)}return n=s(),window.addEventListener("resize",T),()=>{window.removeEventListener("resize",T),p!==null&&(clearTimeout(p),p=null)}}var Ke=50,$e=2,Me=3;function Ie(e){let{track:m,state:a}=e,c=null,o=Me;function S(){let y=Math.ceil(e.config.slidesPerView)+$e;return Math.max(Me,Math.ceil(y/e.slideCount))}function n(){return o*e.slideCount*a.slideWidthPx}function p(){return(o+1)*e.slideCount*a.slideWidthPx}function h(y){a.isProgrammaticScroll=!0,m.style.scrollBehavior="auto",m.style.scrollSnapType="none",e.setScrollPos(y),requestAnimationFrame(()=>{requestAnimationFrame(()=>{m.style.scrollBehavior="",m.style.scrollSnapType="",a.isProgrammaticScroll=!1})})}function s(){if(!a.loopModeActive)return;let y=a.slideWidthPx;if(y===0)return;let l=e.slideCount*y,d=n(),u=p(),f=e.getScrollPos(),g=2;if(f<d-g||f>=u+g){for(;f<d;)f+=l;for(;f>=u;)f-=l;h(f)}}function t(){c!==null&&clearTimeout(c),c=setTimeout(()=>{c=null,s()},Ke)}function T(){c!==null&&(clearTimeout(c),c=null)}function b(){let y=a.slideWidthPx;if(y===0)return a.currentIndex;let l=e.isVertical()?m.clientHeight:m.clientWidth;if(e.isFractionalView()){let f=y-e.config.gap,g=e.getScrollPos()+l/2,E=n();return(Math.round((g-E-f/2)/y)%e.slideCount+e.slideCount)%e.slideCount}let d=e.getScrollPos()-n();return(Math.round(d/y)%e.slideCount+e.slideCount)%e.slideCount}function I(y){if(!e.isLoopEnabled()){a.loopModeActive&&C(y);return}o=S(),m.querySelectorAll(`[${q}]`).forEach(u=>u.remove());let{slides:l,slideCount:d}=e;for(let u=0;u<o;u++)for(let f=d-1;f>=0;f--){let g=l[f].cloneNode(!0);g.setAttribute(q,""),g.removeAttribute(j),m.prepend(g)}for(let u=0;u<o;u++)for(let f=0;f<d;f++){let g=l[f].cloneNode(!0);g.setAttribute(q,""),g.removeAttribute(j),m.append(g)}a.loopModeActive=!0,e.applySnapAlignment(),requestAnimationFrame(()=>{e.recalcSlideMetrics();let u=e.normalizeIndex(y);a.currentIndex=u;let f=m.querySelector(`[${j}="${u}"]`);if(!f)return;a.isProgrammaticScroll=!0,m.style.scrollBehavior="auto",m.style.scrollSnapType="none";let g=e.isFractionalView()?"center":"start",E=e.isVertical()?e.isFractionalView()?"center":"start":"nearest";f.scrollIntoView({behavior:"instant",inline:g,block:E}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{m.style.scrollBehavior="",m.style.scrollSnapType="",a.isProgrammaticScroll=!1})})})}function C(y){T(),m.querySelectorAll(`[${q}]`).forEach(l=>l.remove()),a.loopModeActive=!1,e.recalcSlideMetrics(),a.currentIndex=Math.max(0,Math.min(y,e.getMaxIndex())),h(e.getScrollPosForIndex(a.currentIndex))}return{getLoopRealStart:n,getLoopRealEnd:p,getLoopIndexFromScroll:b,instantScrollTo:h,teleportIfNeeded:s,scheduleTeleport:t,setupLoopTrack:I,teardownLoopTrack:C,cancelTeleport:T}}function Ce(e,m,a,c,o){let{container:S,track:n,state:p}=e,h=!1,s=!1;function t(l){return e.isVertical()?l.clientY:l.clientX}function T(){return e.config.direction==="rtl"?-1:1}function b(l){if(l.button!==0||l.pointerType==="touch"||e.config.noDrag&&l.target.closest(e.config.noDrag))return;s=!1;let d=T(),u=t(l),f=e.getScrollPos(),g=f,E=null,w=0,L=u,x=performance.now(),k=!1,H=p.currentIndex;function V(){E=null,e.setScrollPos(g)}function Z(R){let P=t(R);if(!k){if(Math.abs(P-u)<be)return;k=!0,s=!0,n.setPointerCapture(R.pointerId),p.isDragging=!0,p.suppressSettleEmit=!1,n.style.scrollBehavior="auto",n.style.scrollSnapType="none",S.classList.add("aero-slider--dragging"),e.emit("dragStart",{index:H}),c()}R.preventDefault(),g=f+(u-P)*d,E===null&&(E=requestAnimationFrame(V));let D=performance.now(),F=D-x;if(F>0){if(F<100){let B=(L-P)*d/F;w=fe*B+(1-fe)*w}else w*=.5;L=P,x=D}}function O(){if(n.removeEventListener("pointermove",Z),n.removeEventListener("pointerup",O),n.removeEventListener("pointercancel",O),!k)return;p.isDragging=!1,S.classList.remove("aero-slider--dragging"),E!==null&&(cancelAnimationFrame(E),E=null,e.setScrollPos(g));let R=performance.now()-x;R>50&&(w*=Math.max(0,1-R/200));let P=e.getSlideSize();if(n.style.scrollBehavior="",P>0)if(p.loopModeActive){m.teleportIfNeeded();let D=m.getLoopRealStart(),F=e.getScrollPos(),B=e.isVertical()?n.clientHeight:n.clientWidth,Y,z;if(e.isFractionalView()){let K=P-e.config.gap,W=F+w*le+B/2;Y=Math.round((W-D-K/2)/P),z=D+Y*P+K/2-B/2}else{let W=F-D+w*le;Y=Math.round(W/P),z=D+Y*P}p.isProgrammaticScroll=!0,p.suppressSettleEmit=!0,e.scrollToPos(z,"smooth"),m.scheduleTeleport();let J=e.normalizeIndex(Y);J!==p.currentIndex&&(p.currentIndex=J,e.emit("slideChange",{index:p.currentIndex}),e.refreshPagination(),e.refreshNavState())}else{let D=e.getScrollPos()+w*le,F=e.getIndexFromScrollPos(D);a(F)}e.emit("dragEnd",{index:p.currentIndex,fromIndex:H}),e.config.autoplay&&o()}n.addEventListener("pointermove",Z),n.addEventListener("pointerup",O),n.addEventListener("pointercancel",O)}function I(l){s&&(l.preventDefault(),l.stopPropagation(),s=!1)}function C(l){l.preventDefault()}function y(l){l!==h&&(l?(n.addEventListener("pointerdown",b),n.addEventListener("click",I,{capture:!0}),n.addEventListener("dragstart",C),h=!0):(n.removeEventListener("pointerdown",b),n.removeEventListener("click",I,{capture:!0}),n.removeEventListener("dragstart",C),h=!1))}return{setEnabled:y,isActive:()=>h}}function xe(e,m,a){let c=null,o=null,S=a,n=m;function p(){c&&(c.removeEventListener("click",S),c=null),o&&(o.removeEventListener("click",n),o=null)}function h(){p(),c=e.container.querySelector(".aero-slider__nav--prev"),o=e.container.querySelector(".aero-slider__nav--next");let t=e.config.direction==="rtl";S=t?m:a,n=t?a:m,c&&c.addEventListener("click",S),o&&o.addEventListener("click",n),s()}function s(){let t=e.getMaxIndex(),T=t>0,b=e.config.direction==="rtl",I=!T||!e.isLoopEnabled()&&e.state.currentIndex===0,C=!T||!e.isLoopEnabled()&&e.state.currentIndex>=t;c&&(c.disabled=b?C:I),o&&(o.disabled=b?I:C)}return{build:h,clear:p,refresh:s}}function _e(e,m){let a=null,c=null,o=null,S=[],n=!1,p=10,h=8;function s(l){let d=l.target.closest(".aero-slider__dot");if(!d||!a)return;let u=d.getAttribute("data-slide-index");u!==null&&m(Number(u))}function t(){if(a){a.removeEventListener("click",s),c?.remove(),c=null,o&&(o.style.display="");let l=a.querySelectorAll(".aero-slider__dot");for(let d=1;d<l.length;d++)l[d]?.remove();a.querySelectorAll(".aero-slider__pagination-label").forEach(d=>d.remove()),a=null}o=null,S=[],n=!1}function T(){return e.isLoopEnabled()?e.slideCount:e.getMaxIndex()+1}function b(){if(a=e.container.querySelector(".aero-slider__pagination"),!a||(o=a.querySelector(".aero-slider__dot"),!o))return;o.style.display==="none"&&(o.style.display=""),o.style.transform="",o.style.opacity="",o.offsetWidth;let d=getComputedStyle(o);p=parseFloat(d.width)||10;let u=getComputedStyle(a);h=parseInt(u.gap)||8,a.setAttribute("role","tablist"),a.addEventListener("click",s);let f=T(),g=e.config.maxDots;n=g>0&&f>g,c?.remove();let E=a.querySelectorAll(".aero-slider__dot");for(let L=1;L<E.length;L++)E[L]?.remove();if(a.querySelectorAll(".aero-slider__pagination-label").forEach(L=>L.remove()),n){a.classList.add("aero-slider__pagination--windowed");let L=g*p+(g-1)*h;a.style.setProperty("--pagination-width",`${L}px`),c=document.createElement("div"),c.className="aero-slider__pagination-track",o.style.display="none";for(let x=0;x<f;x++){let k=o.cloneNode(!0);k.style.display="",c.appendChild(k)}a.appendChild(c)}else{a.classList.remove("aero-slider__pagination--windowed"),a.style.removeProperty("--pagination-width"),o.style.display="";for(let L=1;L<f;L++){let x=o.cloneNode(!0);a.appendChild(x)}}S=Array.from((n&&c?c:a).querySelectorAll(".aero-slider__dot")),S.forEach((L,x)=>{L.setAttribute("role","tab"),L.setAttribute("data-slide-index",String(x)),L.setAttribute("aria-label",`Go to slide ${x+1}`)}),y()}function I(l,d,u,f){if(l<0||l>=d)return"aero-slider__dot--hidden";let g=l===0,E=l===d-1,w=l===1,L=l===d-2;return g&&!u?"aero-slider__dot--edge":w&&!u?"aero-slider__dot--near-edge":E&&!f?"aero-slider__dot--edge":L&&!f?"aero-slider__dot--near-edge":null}function C(l){l.classList.remove("aero-slider__dot--hidden","aero-slider__dot--edge","aero-slider__dot--near-edge")}function y(){let l=T(),d=e.state.currentIndex,u=e.config.maxDots;if(n&&u>0&&c){let f=Math.floor(u/2),g=p+h,E=d-f;E=Math.max(0,Math.min(E,l-u)),c.style.setProperty("--track-offset",`${-E*g}px`);let w=E===0,L=E>=l-u;S.forEach((x,k)=>{let H=k===d;x.classList.toggle("aero-slider__dot--active",H),x.setAttribute("aria-selected",String(H)),C(x);let V=I(k-E,u,w,L);V&&x.classList.add(V)})}else S.forEach((f,g)=>{let E=g===d;f.classList.toggle("aero-slider__dot--active",E),f.setAttribute("aria-selected",String(E)),C(f)})}return{build:b,clear:t,refresh:y}}function we(e,m,a){let c=!1;function o(n){let p=e.config.direction;p==="ttb"?n.key==="ArrowUp"?(n.preventDefault(),a()):n.key==="ArrowDown"&&(n.preventDefault(),m()):p==="rtl"?n.key==="ArrowRight"?(n.preventDefault(),a()):n.key==="ArrowLeft"&&(n.preventDefault(),m()):n.key==="ArrowLeft"?(n.preventDefault(),a()):n.key==="ArrowRight"&&(n.preventDefault(),m())}function S(n){n!==c&&(n?(e.container.setAttribute("tabindex","0"),e.container.addEventListener("keydown",o),c=!0):(e.container.removeAttribute("tabindex"),e.container.removeEventListener("keydown",o),c=!1))}return{setEnabled:S}}function Pe(e,m){let a=null,c=!1,o=null;function S(){e.config.autoplay&&(n(),a=setInterval(()=>{if(!e.state.loopModeActive&&e.state.currentIndex>=e.getMaxIndex()){n();return}m()},e.config.autoplayInterval),e.emit("autoplayStart",{index:e.state.currentIndex}))}function n(){a!==null&&(clearInterval(a),a=null,e.emit("autoplayStop",{index:e.state.currentIndex}))}function p(){n()}function h(){e.config.autoplay&&S()}function s(){o!==null&&(clearTimeout(o),o=null),n()}function t(){e.config.autoplay&&(o=setTimeout(()=>{o=null,e.config.autoplay&&S()},1e3))}function T(b){b!==c&&(b?(e.container.addEventListener("mouseenter",p),e.container.addEventListener("mouseleave",h),e.track.addEventListener("touchstart",s,{passive:!0}),e.track.addEventListener("touchend",t,{passive:!0}),e.track.addEventListener("touchcancel",t,{passive:!0}),c=!0):(e.container.removeEventListener("mouseenter",p),e.container.removeEventListener("mouseleave",h),e.track.removeEventListener("touchstart",s),e.track.removeEventListener("touchend",t),e.track.removeEventListener("touchcancel",t),o!==null&&(clearTimeout(o),o=null),c=!1))}return{start:S,pause:n,setHoverPause:T}}function De(e,m={}){let a=e,c=e.querySelector(".aero-slider__track");if(!c)throw new Error("aero-slider: missing .aero-slider__track");let o=c,S=Array.from(o.children).filter(r=>!r.hasAttribute(q)),n=S.length;if(n===0)throw new Error("aero-slider: no slides found");S.forEach((r,i)=>r.setAttribute(j,String(i)));function p(r,i){if(!r||r==="0"||r==="0px")return i;let v=document.createElement("div");v.style.position="absolute",v.style.visibility="hidden",v.style.width=r,e.appendChild(v);let M=v.offsetWidth;return e.removeChild(v),M||i}function h(){let r=getComputedStyle(e),i=parseFloat(r.getPropertyValue("--slides-per-view")?.trim()||"")||ee.slidesPerView,v=r.getPropertyValue("--slide-gap")?.trim()||"0px",M=p(v,ee.gap),A=r.getPropertyValue("--slide-aspect")?.trim()||ee.aspectRatio;return{slidesPerView:i,gap:M,aspectRatio:A}}let s={...Ee,...m,...ee},t={currentIndex:0,isDragging:!1,isDestroyed:!1,loopModeActive:!1,isProgrammaticScroll:!1,suppressSettleEmit:!1,slideWidthPx:0},T=new Map,b=null,I=null,C=null,y=null,l=null;function d(r,i){T.get(r)?.forEach(v=>v(i))}function u(){return s.direction==="ttb"}function f(){return g()?Math.max(0,n-1):Math.max(0,Math.floor(n-s.slidesPerView))}function g(){return s.centered||s.slidesPerView%1!==0}function E(){return s.loop&&f()>0}function w(){return s.perMove>0?s.perMove:1}function L(r){let i=f();return E()?(Math.trunc(r)%n+n)%n:Math.max(0,Math.min(r,i))}function x(){return s.direction==="rtl"?-o.scrollLeft:s.direction==="ttb"?o.scrollTop:o.scrollLeft}function k(r){s.direction==="rtl"?o.scrollLeft=-r:s.direction==="ttb"?o.scrollTop=r:o.scrollLeft=r}function H(r,i="auto"){s.direction==="ttb"?o.scrollTo({top:r,behavior:i}):s.direction==="rtl"?o.scrollTo({left:-r,behavior:i}):o.scrollTo({left:r,behavior:i})}function V(){return u()?o.clientHeight:o.clientWidth}function Z(){return u()?o.scrollHeight:o.scrollWidth}function O(){if(t.slideWidthPx>0)return t.slideWidthPx;let r=S[0];if(!r)return 0;let i=r.getBoundingClientRect();return t.slideWidthPx=(u()?i.height:i.width)+s.gap,t.slideWidthPx}function R(){t.slideWidthPx=0,O()}function P(){Object.assign(s,h())}function D(r){let i=O();if(i===0)return 0;if(!g())return r*i;let v=V(),M=i-s.gap;if(t.loopModeActive)return r*i+M/2-v/2;let A=f();return r<=0?0:r>=A?Z()-V():r*i+M/2-v/2}function F(r){let i=O();if(i===0)return t.currentIndex;let v=t.loopModeActive?n-1:f(),M=Z()-V();if(!g()){let ie=Math.round(r/i);return Math.max(0,Math.min(ie,v))}if(M<=0||r<=1)return 0;if(r>=M-1)return v;let A=V(),G=i-s.gap,oe=r+A/2,ne=Math.round((oe-G/2)/i);return Math.max(0,Math.min(ne,v))}function B(){let r=Array.from(o.children);if(!g()){for(let i of r)i.style.scrollSnapAlign="";return}if(t.loopModeActive){for(let i of r)i.style.scrollSnapAlign="center";return}for(let i of r)i.style.scrollSnapAlign="center"}function Y(){e.classList.remove("aero-slider--rtl","aero-slider--vertical"),e.removeAttribute("dir"),s.direction==="rtl"?(e.setAttribute("dir","rtl"),e.classList.add("aero-slider--rtl")):s.direction==="ttb"&&e.classList.add("aero-slider--vertical")}let z=new Set;function J(){let r=new Set,i=Math.ceil(s.slidesPerView);for(let v=0;v<i;v++){let M=t.currentIndex+v;if(t.loopModeActive)M=(M%n+n)%n;else if(M>=n)break;r.add(M)}return r}function K(){let r=J();for(let i of z)r.has(i)||d("hidden",{index:i});for(let i of r)z.has(i)||d("visible",{index:i});z.clear();for(let i of r)z.add(i)}let W={container:e,track:o,get slides(){return S},get slideCount(){return n},get config(){return s},state:t,listeners:T,emit:d,getSlideSize:O,recalcSlideMetrics:R,normalizeIndex:L,getMaxIndex:f,getEffectivePerMove:w,isLoopEnabled:E,isFractionalView:g,isVertical:u,getScrollPos:x,setScrollPos:k,scrollToPos:H,getScrollPosForIndex:D,getIndexFromScrollPos:F,refreshPagination:()=>N.refresh(),refreshNavState:()=>$.refresh(),applySnapAlignment:B},_=Ie(W),$=xe(W,re,de),N=_e(W,Q),se=we(W,re,de),U=Pe(W,re),ae=Ce(W,_,Q,U.pause,U.start);function te(){if(t.isDragging||t.isProgrammaticScroll)return;let r=t.loopModeActive?_.getLoopIndexFromScroll():F(x());r!==t.currentIndex&&(t.currentIndex=r,d("slideChange",{index:t.currentIndex}),N.refresh(),$.refresh(),K())}function Re(){if(I=null,t.isProgrammaticScroll=!1,X===null&&(o.style.scrollSnapType=""),t.suppressSettleEmit){t.suppressSettleEmit=!1,N.refresh(),$.refresh();return}te()}function me(){t.loopModeActive&&_.scheduleTeleport(),I!==null&&clearTimeout(I),I=setTimeout(Re,he),b===null&&(b=requestAnimationFrame(()=>{b=null,te()}))}let X=null;function ve(){t.isDragging||(t.suppressSettleEmit=!1,o.style.scrollSnapType="none",X!==null&&clearTimeout(X),X=setTimeout(()=>{X=null,o.style.scrollSnapType=""},Le))}function ge(){if(R(),t.loopModeActive){let r=O();if(r>0){let i=_.getLoopRealStart(),v=i+t.currentIndex*r;if(g()){let M=V(),A=r-s.gap;v=i+t.currentIndex*r+A/2-M/2}k(v)}}else k(D(t.currentIndex))}function Se(){t.isDestroyed||(y===null&&(o.style.scrollSnapType="none",t.isProgrammaticScroll=!0),l===null&&(l=requestAnimationFrame(()=>{l=null,t.isDestroyed||ge()})),y!==null&&clearTimeout(y),y=setTimeout(()=>{y=null,!t.isDestroyed&&(ge(),t.isProgrammaticScroll=!1,o.style.scrollSnapType="")},pe))}let Ve=["--slides-per-view","--slide-gap","--slide-aspect"];function Oe(){C?.(),C=Ae(e,Ve,()=>{t.isDestroyed||(d("resize",{index:t.currentIndex}),ye(),d("resized",{index:t.currentIndex}))},{debounceMs:pe,maxWaitMs:Te})}function re(){t.isDestroyed||Q(L(t.currentIndex+w()))}function de(){t.isDestroyed||Q(L(t.currentIndex-w()))}function Q(r){if(t.isDestroyed)return;let i=L(r),v=O();if(v!==0){if(i!==t.currentIndex&&(t.currentIndex=i,d("slideChange",{index:t.currentIndex}),N.refresh(),$.refresh(),K()),t.suppressSettleEmit=!0,t.loopModeActive){_.cancelTeleport(),t.isProgrammaticScroll=!0;let M=_.getLoopIndexFromScroll(),A=(i-M+n)%n,G=A-n,oe=Math.abs(G)<A?G:A;if(oe===0){let ne=_.getLoopRealStart(),ie=ne+i*v;if(g()){let Ue=V(),Ye=v-s.gap;ie=ne+i*v+Ye/2-Ue/2}H(ie,"smooth"),_.scheduleTeleport();return}H(x()+oe*v,"smooth"),_.scheduleTeleport();return}t.isProgrammaticScroll=!0,H(D(i),"smooth")}}function ye(r){let i=s;if(s={...s,...h(),...r??{}},i.direction!==s.direction&&Y(),P(),R(),ae.setEnabled(s.draggable),se.setEnabled(!0),U.setHoverPause(s.autoplay),(i.slidesPerView!==s.slidesPerView||i.loop!==s.loop||i.maxDots!==s.maxDots||i.perMove!==s.perMove)&&(N.clear(),N.build()),(i.autoplay!==s.autoplay||i.autoplayInterval!==s.autoplayInterval||i.loop!==s.loop)&&(s.autoplay?U.start():U.pause()),i.loop!==s.loop?E()?_.setupLoopTrack(t.currentIndex):_.teardownLoopTrack(t.currentIndex):t.loopModeActive&&i.slidesPerView!==s.slidesPerView&&_.setupLoopTrack(t.currentIndex),B(),!t.loopModeActive){let v=L(t.currentIndex);t.currentIndex=v,H(D(v))}te(),N.refresh(),$.refresh(),K()}function ce(){if(!t.isDestroyed&&(t.loopModeActive&&_.teardownLoopTrack(t.currentIndex),S=Array.from(o.children).filter(r=>!r.hasAttribute(q)),n=S.length,n!==0)){if(S.forEach((r,i)=>{r.setAttribute(j,String(i)),r.classList.add("aero-slider__slide")}),P(),R(),E()&&_.setupLoopTrack(t.currentIndex),B(),!t.loopModeActive){let r=L(t.currentIndex);t.currentIndex=r,H(D(r))}N.clear(),N.build(),$.build(),te(),K()}}function Fe(r,i){if(t.isDestroyed)return;let v=Array.isArray(r)?r:[r];t.loopModeActive&&_.teardownLoopTrack(t.currentIndex);let M=Array.from(o.children).filter(A=>!A.hasAttribute(q));if(i!==void 0&&i<M.length){let A=M[i]??null;for(let G of v)o.insertBefore(G,A)}else for(let A of v)o.appendChild(A);ce()}function Ne(r){if(t.isDestroyed)return;let i=Array.isArray(r)?r:[r];t.loopModeActive&&_.teardownLoopTrack(t.currentIndex);let v=Array.from(o.children).filter(A=>!A.hasAttribute(q)),M=[...i].sort((A,G)=>G-A);for(let A of M)A>=0&&A<v.length&&v[A].remove();ce()}function ze(r,i){T.has(r)||T.set(r,new Set),T.get(r).add(i)}function We(r,i){T.get(r)?.delete(i)}function qe(){t.isDestroyed||(d("destroy",{index:t.currentIndex}),t.isDestroyed=!0,U.pause(),t.loopModeActive&&_.teardownLoopTrack(t.currentIndex),_.cancelTeleport(),t.isProgrammaticScroll=!1,C?.(),C=null,window.removeEventListener("resize",Se),y!==null&&(clearTimeout(y),y=null),l!==null&&(cancelAnimationFrame(l),l=null),o.removeEventListener("scroll",me),o.removeEventListener("wheel",ve),X!==null&&clearTimeout(X),I!==null&&clearTimeout(I),ae.setEnabled(!1),se.setEnabled(!1),U.setHoverPause(!1),b!==null&&cancelAnimationFrame(b),$.clear(),N.clear(),e.removeAttribute("aria-roledescription"),e.removeAttribute("dir"),e.classList.remove("aero-slider--dragging","aero-slider--rtl","aero-slider--vertical","aero-slider--ready"),e.removeAttribute("data-aero-defer-visibility"),a.aeroSlider===ue&&delete a.aeroSlider,T.clear())}e.removeAttribute("data-aero-defer-visibility"),P(),e.classList.add("aero-slider"),e.setAttribute("aria-roledescription","carousel"),o.classList.add("aero-slider__track");for(let r of S)r.classList.add("aero-slider__slide");Y(),P(),R(),B(),o.addEventListener("scroll",me,{passive:!0}),o.addEventListener("wheel",ve,{passive:!0}),window.addEventListener("resize",Se),E()?_.setupLoopTrack(0):k(0),Oe(),ae.setEnabled(s.draggable),se.setEnabled(!0),U.setHoverPause(s.autoplay),$.build(),N.build(),s.autoplay&&U.start();let Be=J();for(let r of Be)z.add(r);for(let r of z)d("visible",{index:r});let ue={get element(){return e},next:re,prev:de,goTo:Q,destroy:qe,update:ye,refresh:ce,add:Fe,remove:Ne,on:ze,off:We,get currentIndex(){return t.currentIndex},get slideCount(){return n}};return a.aeroSlider=ue,e.classList.add("aero-slider--ready"),d("ready",{index:t.currentIndex}),ue}var ke="aero-slider__thumb--active";function Ge(e,m,a){e.querySelectorAll(":scope > *").forEach(o=>{let S=a(o);o.classList.toggle(ke,S===m)})}function He(e,m,a){let c=m.element.querySelector(".aero-slider__track");if(!c)return()=>{};let o=c,S=a?.loop??!0;m.update({draggable:!1,loop:S});let n=Array.from(o.children).filter(l=>l.hasAttribute("data-aero-slider-index"));n.sort((l,d)=>Number(l.getAttribute("data-aero-slider-index"))-Number(d.getAttribute("data-aero-slider-index")));let p=n.length,h=Array.from(o.children).indexOf(n[0]??o),s=[];function t(l){let d=l.getAttribute("data-aero-slider-index");if(d!==null)return Number(d);let u=Array.from(o.children).indexOf(l);return u<h?u%p:(u-h-p)%p}let T=e.currentIndex;function b(l){T=l,Ge(o,T,t)}function I(l){b(l),m.goTo(l),e.goTo(l)}function C(l){b(l),m.goTo(l)}Array.from(o.children).forEach(l=>{let d=l,u=()=>{let f=t(d);I(f)};d.addEventListener("click",u),d.style.cursor="pointer",s.push({el:d,fn:u})});let y=l=>{l.index!==T&&C(l.index)};return e.on("slideChange",y),C(e.currentIndex),()=>{s.forEach(({el:l,fn:d})=>l.removeEventListener("click",d)),o.querySelectorAll(":scope > *").forEach(l=>l.classList.remove(ke)),e.off("slideChange",y)}}typeof window<"u"&&(window.AeroSlider={createSlider:De,syncThumbnails:He});export{De as createSlider,He as syncThumbnails};
1
+ var Ee={loop:!1,autoplay:!1,autoplayInterval:5e3,draggable:!0,centered:!0,maxDots:0,noDrag:"",perMove:0,direction:"ltr"},Q={slidesPerView:1,gap:0,aspectRatio:"16 / 9"},ye=5,ue=.3,ie=80,he=250,be=300,fe=100,Le=250,Z="data-aero-slider-index",W="data-aero-slider-clone";function Te(e,p,a,c={}){let r=c.debounceMs??100,S=c.maxWaitMs??250,n="",m=null,b=null;function s(){let y=getComputedStyle(e);return p.map(w=>y.getPropertyValue(w).trim()).join("\0")}function t(){m!==null&&(clearTimeout(m),m=null),b=null;let y=s();y!==n&&(n=y,a())}function T(){let y=Date.now();if(b===null&&(b=y),y-b>=S){t();return}m!==null&&clearTimeout(m),m=setTimeout(t,r)}return n=s(),window.addEventListener("resize",T),()=>{window.removeEventListener("resize",T),m!==null&&(clearTimeout(m),m=null)}}var Be=50,Ue=2,Ae=3;function Me(e){let{track:p,state:a}=e,c=null,r=Ae;function S(){let E=Math.ceil(e.config.slidesPerView)+Ue;return Math.max(Ae,Math.ceil(E/e.slideCount))}function n(){return r*e.slideCount*a.slideWidthPx}function m(){return(r+1)*e.slideCount*a.slideWidthPx}function b(E){a.isProgrammaticScroll=!0,p.style.scrollBehavior="auto",p.style.scrollSnapType="none",e.setScrollPos(E),requestAnimationFrame(()=>{requestAnimationFrame(()=>{p.style.scrollBehavior="",p.style.scrollSnapType="",a.isProgrammaticScroll=!1})})}function s(){if(!a.loopModeActive)return;let E=a.slideWidthPx;if(E===0)return;let i=e.slideCount*E,d=n(),f=m(),u=e.getScrollPos(),g=2;if(u<d-g||u>=f+g){for(;u<d;)u+=i;for(;u>=f;)u-=i;b(u)}}function t(){c!==null&&clearTimeout(c),c=setTimeout(()=>{c=null,s()},Be)}function T(){c!==null&&(clearTimeout(c),c=null)}function y(){let E=a.slideWidthPx;if(E===0)return a.currentIndex;let i=e.isVertical()?p.clientHeight:p.clientWidth;if(e.isFractionalView()){let u=E-e.config.gap,g=e.getScrollPos()+i/2,h=n();return(Math.round((g-h-u/2)/E)%e.slideCount+e.slideCount)%e.slideCount}let d=e.getScrollPos()-n();return(Math.round(d/E)%e.slideCount+e.slideCount)%e.slideCount}function w(E){if(!e.isLoopEnabled()){a.loopModeActive&&M(E);return}r=S(),p.querySelectorAll(`[${W}]`).forEach(f=>f.remove());let{slides:i,slideCount:d}=e;for(let f=0;f<r;f++)for(let u=d-1;u>=0;u--){let g=i[u].cloneNode(!0);g.setAttribute(W,""),g.removeAttribute(Z),p.prepend(g)}for(let f=0;f<r;f++)for(let u=0;u<d;u++){let g=i[u].cloneNode(!0);g.setAttribute(W,""),g.removeAttribute(Z),p.append(g)}a.loopModeActive=!0,e.applySnapAlignment(),requestAnimationFrame(()=>{e.recalcSlideMetrics();let f=e.normalizeIndex(E);a.currentIndex=f;let u=a.slideWidthPx;if(u===0)return;let g=n(),h=g+f*u;if(e.isFractionalView()){let _=e.isVertical()?p.clientHeight:p.clientWidth,L=u-e.config.gap;h=g+f*u+L/2-_/2}a.isProgrammaticScroll=!0,p.style.scrollBehavior="auto",p.style.scrollSnapType="none",e.setScrollPos(h),requestAnimationFrame(()=>{requestAnimationFrame(()=>{p.style.scrollBehavior="",p.style.scrollSnapType="",a.isProgrammaticScroll=!1})})})}function M(E){T(),p.querySelectorAll(`[${W}]`).forEach(i=>i.remove()),a.loopModeActive=!1,e.recalcSlideMetrics(),a.currentIndex=Math.max(0,Math.min(E,e.getMaxIndex())),b(e.getScrollPosForIndex(a.currentIndex))}return{getLoopRealStart:n,getLoopRealEnd:m,getLoopIndexFromScroll:y,instantScrollTo:b,teleportIfNeeded:s,scheduleTeleport:t,setupLoopTrack:w,teardownLoopTrack:M,cancelTeleport:T}}function Ce(e,p,a,c,r){let{container:S,track:n,state:m}=e,b=!1,s=!1;function t(i){return e.isVertical()?i.clientY:i.clientX}function T(){return e.config.direction==="rtl"?-1:1}function y(i){if(i.button!==0||i.pointerType==="touch"||e.config.noDrag&&i.target.closest(e.config.noDrag))return;s=!1;let d=T(),f=t(i),u=e.getScrollPos(),g=u,h=null,_=0,L=f,x=performance.now(),D=!1,R=m.currentIndex;function K(){h=null,e.setScrollPos(g)}function q(O){let P=t(O);if(!D){if(Math.abs(P-f)<ye)return;D=!0,s=!0,n.setPointerCapture(O.pointerId),m.isDragging=!0,m.suppressSettleEmit=!1,n.style.scrollBehavior="auto",n.style.scrollSnapType="none",S.classList.add("aero-slider--dragging"),e.emit("dragStart",{index:R}),c()}O.preventDefault(),g=u+(f-P)*d,h===null&&(h=requestAnimationFrame(K));let k=performance.now(),H=k-x;if(H>0){if(H<100){let G=(L-P)*d/H;_=ue*G+(1-ue)*_}else _*=.5;L=P,x=k}}function N(){if(n.removeEventListener("pointermove",q),n.removeEventListener("pointerup",N),n.removeEventListener("pointercancel",N),!D)return;m.isDragging=!1,S.classList.remove("aero-slider--dragging"),h!==null&&(cancelAnimationFrame(h),h=null,e.setScrollPos(g));let O=performance.now()-x;O>50&&(_*=Math.max(0,1-O/200));let P=e.getSlideSize();if(n.style.scrollBehavior="",P>0)if(m.loopModeActive){p.teleportIfNeeded();let k=p.getLoopRealStart(),H=e.getScrollPos(),G=e.isVertical()?n.clientHeight:n.clientWidth,V,j;if(e.isFractionalView()){let z=P-e.config.gap,C=H+_*ie+G/2;V=Math.round((C-k-z/2)/P),j=k+V*P+z/2-G/2}else{let C=H-k+_*ie;V=Math.round(C/P),j=k+V*P}m.isProgrammaticScroll=!0,m.suppressSettleEmit=!0,e.scrollToPos(j,"smooth"),p.scheduleTeleport();let X=e.normalizeIndex(V);X!==m.currentIndex&&(m.currentIndex=X,e.emit("slideChange",{index:m.currentIndex}),e.refreshPagination(),e.refreshNavState())}else{let k=e.getScrollPos()+_*ie,H=e.getIndexFromScrollPos(k);a(H)}e.emit("dragEnd",{index:m.currentIndex,fromIndex:R}),e.config.autoplay&&r()}n.addEventListener("pointermove",q),n.addEventListener("pointerup",N),n.addEventListener("pointercancel",N)}function w(i){s&&(i.preventDefault(),i.stopPropagation(),s=!1)}function M(i){i.preventDefault()}function E(i){i!==b&&(i?(n.addEventListener("pointerdown",y),n.addEventListener("click",w,{capture:!0}),n.addEventListener("dragstart",M),b=!0):(n.removeEventListener("pointerdown",y),n.removeEventListener("click",w,{capture:!0}),n.removeEventListener("dragstart",M),b=!1))}return{setEnabled:E,isActive:()=>b}}function Ie(e,p,a){let c=null,r=null,S=a,n=p;function m(){c&&(c.removeEventListener("click",S),c=null),r&&(r.removeEventListener("click",n),r=null)}function b(){m(),c=e.container.querySelector(".aero-slider__nav--prev"),r=e.container.querySelector(".aero-slider__nav--next");let t=e.config.direction==="rtl";S=t?p:a,n=t?a:p,c&&c.addEventListener("click",S),r&&r.addEventListener("click",n),s()}function s(){let t=e.getMaxIndex(),T=t>0,y=e.config.direction==="rtl",w=!T||!e.isLoopEnabled()&&e.state.currentIndex===0,M=!T||!e.isLoopEnabled()&&e.state.currentIndex>=t;c&&(c.disabled=y?M:w),r&&(r.disabled=y?w:M)}return{build:b,clear:m,refresh:s}}function _e(e,p){let a=null,c=null,r=null,S=[],n=!1,m=10,b=8;function s(i){let d=i.target.closest(".aero-slider__dot");if(!d||!a)return;let f=d.getAttribute("data-slide-index");f!==null&&p(Number(f))}function t(){if(a){a.removeEventListener("click",s),c?.remove(),c=null,r&&(r.style.display="");let i=a.querySelectorAll(".aero-slider__dot");for(let d=1;d<i.length;d++)i[d]?.remove();a.querySelectorAll(".aero-slider__pagination-label").forEach(d=>d.remove()),a=null}r=null,S=[],n=!1}function T(){return e.isLoopEnabled()?e.slideCount:e.getMaxIndex()+1}function y(){if(a=e.container.querySelector(".aero-slider__pagination"),!a||(r=a.querySelector(".aero-slider__dot"),!r))return;r.style.display==="none"&&(r.style.display=""),r.style.transform="",r.style.opacity="",r.offsetWidth;let d=getComputedStyle(r);m=parseFloat(d.width)||10;let f=getComputedStyle(a);b=parseInt(f.gap)||8,a.setAttribute("role","tablist"),a.addEventListener("click",s);let u=T(),g=e.config.maxDots;n=g>0&&u>g,c?.remove();let h=a.querySelectorAll(".aero-slider__dot");for(let L=1;L<h.length;L++)h[L]?.remove();if(a.querySelectorAll(".aero-slider__pagination-label").forEach(L=>L.remove()),n){a.classList.add("aero-slider__pagination--windowed");let L=g*m+(g-1)*b;a.style.setProperty("--pagination-width",`${L}px`),c=document.createElement("div"),c.className="aero-slider__pagination-track",r.style.display="none";for(let x=0;x<u;x++){let D=r.cloneNode(!0);D.style.display="",c.appendChild(D)}a.appendChild(c)}else{a.classList.remove("aero-slider__pagination--windowed"),a.style.removeProperty("--pagination-width"),r.style.display="";for(let L=1;L<u;L++){let x=r.cloneNode(!0);a.appendChild(x)}}S=Array.from((n&&c?c:a).querySelectorAll(".aero-slider__dot")),S.forEach((L,x)=>{L.setAttribute("role","tab"),L.setAttribute("data-slide-index",String(x)),L.setAttribute("aria-label",`Go to slide ${x+1}`)}),E()}function w(i,d,f,u){if(i<0||i>=d)return"aero-slider__dot--hidden";let g=i===0,h=i===d-1,_=i===1,L=i===d-2;return g&&!f?"aero-slider__dot--edge":_&&!f?"aero-slider__dot--near-edge":h&&!u?"aero-slider__dot--edge":L&&!u?"aero-slider__dot--near-edge":null}function M(i){i.classList.remove("aero-slider__dot--hidden","aero-slider__dot--edge","aero-slider__dot--near-edge")}function E(){let i=T(),d=e.state.currentIndex,f=e.config.maxDots;if(n&&f>0&&c){let u=Math.floor(f/2),g=m+b,h=d-u;h=Math.max(0,Math.min(h,i-f)),c.style.setProperty("--track-offset",`${-h*g}px`);let _=h===0,L=h>=i-f;S.forEach((x,D)=>{let R=D===d;x.classList.toggle("aero-slider__dot--active",R),x.setAttribute("aria-selected",String(R)),M(x);let K=w(D-h,f,_,L);K&&x.classList.add(K)})}else S.forEach((u,g)=>{let h=g===d;u.classList.toggle("aero-slider__dot--active",h),u.setAttribute("aria-selected",String(h)),M(u)})}return{build:y,clear:t,refresh:E}}function xe(e,p,a){let c=!1;function r(n){let m=e.config.direction;m==="ttb"?n.key==="ArrowUp"?(n.preventDefault(),a()):n.key==="ArrowDown"&&(n.preventDefault(),p()):m==="rtl"?n.key==="ArrowRight"?(n.preventDefault(),a()):n.key==="ArrowLeft"&&(n.preventDefault(),p()):n.key==="ArrowLeft"?(n.preventDefault(),a()):n.key==="ArrowRight"&&(n.preventDefault(),p())}function S(n){n!==c&&(n?(e.container.setAttribute("tabindex","0"),e.container.addEventListener("keydown",r),c=!0):(e.container.removeAttribute("tabindex"),e.container.removeEventListener("keydown",r),c=!1))}return{setEnabled:S}}function we(e,p){let a=null,c=!1,r=null;function S(){e.config.autoplay&&(n(),a=setInterval(()=>{if(!e.state.loopModeActive&&e.state.currentIndex>=e.getMaxIndex()){n();return}p()},e.config.autoplayInterval),e.emit("autoplayStart",{}))}function n(){a!==null&&(clearInterval(a),a=null,e.emit("autoplayStop",{}))}function m(){n()}function b(){e.config.autoplay&&S()}function s(){r!==null&&(clearTimeout(r),r=null),n()}function t(){e.config.autoplay&&(r=setTimeout(()=>{r=null,e.config.autoplay&&S()},1e3))}function T(y){y!==c&&(y?(e.container.addEventListener("mouseenter",m),e.container.addEventListener("mouseleave",b),e.track.addEventListener("touchstart",s,{passive:!0}),e.track.addEventListener("touchend",t,{passive:!0}),e.track.addEventListener("touchcancel",t,{passive:!0}),c=!0):(e.container.removeEventListener("mouseenter",m),e.container.removeEventListener("mouseleave",b),e.track.removeEventListener("touchstart",s),e.track.removeEventListener("touchend",t),e.track.removeEventListener("touchcancel",t),r!==null&&(clearTimeout(r),r=null),c=!1))}return{start:S,pause:n,setHoverPause:T}}function Pe(e,p={}){let a=e,c=e.querySelector(".aero-slider__track");if(!c)throw new Error("aero-slider: missing .aero-slider__track");let r=c,S=Array.from(r.children).filter(o=>!o.hasAttribute(W)),n=S.length;if(n===0)throw new Error("aero-slider: no slides found");S.forEach((o,l)=>o.setAttribute(Z,String(l)));function m(o,l){if(!o||o==="0"||o==="0px")return l;let v=document.createElement("div");v.style.position="absolute",v.style.visibility="hidden",v.style.width=o,e.appendChild(v);let I=v.offsetWidth;return e.removeChild(v),I||l}function b(){let o=getComputedStyle(e),l=parseFloat(o.getPropertyValue("--slides-per-view")?.trim()||"")||Q.slidesPerView,v=o.getPropertyValue("--slide-gap")?.trim()||"0px",I=m(v,Q.gap),A=o.getPropertyValue("--slide-aspect")?.trim()||Q.aspectRatio;return{slidesPerView:l,gap:I,aspectRatio:A}}let s={...Ee,...p,...Q},t={currentIndex:0,isDragging:!1,isDestroyed:!1,loopModeActive:!1,isProgrammaticScroll:!1,suppressSettleEmit:!1,slideWidthPx:0},T=null,y=null,w=null,M=null,E=null;function i(o,l){e.dispatchEvent(new CustomEvent(`aero:${o}`,{detail:l,bubbles:!0}))}function d(){return s.direction==="ttb"}function f(){return u()?Math.max(0,n-1):Math.max(0,Math.floor(n-s.slidesPerView))}function u(){return s.centered||s.slidesPerView%1!==0}function g(){return s.loop&&f()>0}function h(){return s.perMove>0?s.perMove:1}function _(o){let l=f();return g()?(Math.trunc(o)%n+n)%n:Math.max(0,Math.min(o,l))}function L(){return s.direction==="rtl"?-r.scrollLeft:s.direction==="ttb"?r.scrollTop:r.scrollLeft}function x(o){s.direction==="rtl"?r.scrollLeft=-o:s.direction==="ttb"?r.scrollTop=o:r.scrollLeft=o}function D(o,l="auto"){s.direction==="ttb"?r.scrollTo({top:o,behavior:l}):s.direction==="rtl"?r.scrollTo({left:-o,behavior:l}):r.scrollTo({left:o,behavior:l})}function R(){return d()?r.clientHeight:r.clientWidth}function K(){return d()?r.scrollHeight:r.scrollWidth}function q(){if(t.slideWidthPx>0)return t.slideWidthPx;let o=S[0];if(!o)return 0;let l=o.getBoundingClientRect();return t.slideWidthPx=(d()?l.height:l.width)+s.gap,t.slideWidthPx}function N(){t.slideWidthPx=0,q()}function O(){Object.assign(s,b())}function P(o){let l=q();if(l===0)return 0;if(!u())return o*l;let v=R(),I=l-s.gap;if(t.loopModeActive)return o*l+I/2-v/2;let A=f();return o<=0?0:o>=A?K()-R():o*l+I/2-v/2}function k(o){let l=q();if(l===0)return t.currentIndex;let v=t.loopModeActive?n-1:f(),I=K()-R();if(!u()){let ne=Math.round(o/l);return Math.max(0,Math.min(ne,v))}if(I<=0||o<=1)return 0;if(o>=I-1)return v;let A=R(),Y=l-s.gap,re=o+A/2,oe=Math.round((re-Y/2)/l);return Math.max(0,Math.min(oe,v))}function H(){let o=Array.from(r.children);if(!u()){for(let l of o)l.style.scrollSnapAlign="";return}if(t.loopModeActive){for(let l of o)l.style.scrollSnapAlign="center";return}for(let l of o)l.style.scrollSnapAlign="center"}function G(){e.classList.remove("aero-slider--rtl","aero-slider--vertical"),e.removeAttribute("dir"),s.direction==="rtl"?(e.setAttribute("dir","rtl"),e.classList.add("aero-slider--rtl")):s.direction==="ttb"&&e.classList.add("aero-slider--vertical")}let V=new Set;function j(){let o=new Set,l=Math.ceil(s.slidesPerView);for(let v=0;v<l;v++){let I=t.currentIndex+v;if(t.loopModeActive)I=(I%n+n)%n;else if(I>=n)break;o.add(I)}return o}function X(){let o=j();for(let l of V)o.has(l)||i("hidden",{index:l});for(let l of o)V.has(l)||i("visible",{index:l});V.clear();for(let l of o)V.add(l)}let z={container:e,track:r,get slides(){return S},get slideCount(){return n},get config(){return s},state:t,emit:i,getSlideSize:q,recalcSlideMetrics:N,normalizeIndex:_,getMaxIndex:f,getEffectivePerMove:h,isLoopEnabled:g,isFractionalView:u,isVertical:d,getScrollPos:L,setScrollPos:x,scrollToPos:D,getScrollPosForIndex:P,getIndexFromScrollPos:k,refreshPagination:()=>F.refresh(),refreshNavState:()=>U.refresh(),applySnapAlignment:H},C=Me(z),U=Ie(z,te,ae),F=_e(z,J),le=xe(z,te,ae),B=we(z,te),se=Ce(z,C,J,B.pause,B.start);function ee(){if(t.isDragging||t.isProgrammaticScroll)return;let o=t.loopModeActive?C.getLoopIndexFromScroll():k(L());o!==t.currentIndex&&(t.currentIndex=o,i("slideChange",{index:t.currentIndex}),F.refresh(),U.refresh(),X())}function Re(){if(y=null,t.isProgrammaticScroll=!1,$===null&&(r.style.scrollSnapType=""),t.suppressSettleEmit){t.suppressSettleEmit=!1,F.refresh(),U.refresh();return}ee()}function pe(){t.loopModeActive&&C.scheduleTeleport(),y!==null&&clearTimeout(y),y=setTimeout(Re,he),T===null&&(T=requestAnimationFrame(()=>{T=null,ee()}))}let $=null;function me(){t.isDragging||(t.suppressSettleEmit=!1,r.style.scrollSnapType="none",$!==null&&clearTimeout($),$=setTimeout(()=>{$=null,r.style.scrollSnapType=""},be))}function ve(){if(N(),t.loopModeActive){let o=q();if(o>0){let l=C.getLoopRealStart(),v=l+t.currentIndex*o;if(u()){let I=R(),A=o-s.gap;v=l+t.currentIndex*o+A/2-I/2}x(v)}}else x(P(t.currentIndex))}function ge(){t.isDestroyed||(M===null&&(r.style.scrollSnapType="none",t.isProgrammaticScroll=!0),E===null&&(E=requestAnimationFrame(()=>{E=null,t.isDestroyed||ve()})),M!==null&&clearTimeout(M),M=setTimeout(()=>{M=null,!t.isDestroyed&&(ve(),t.isProgrammaticScroll=!1,r.style.scrollSnapType="")},fe))}let ke=["--slides-per-view","--slide-gap","--slide-aspect"];function Ve(){w?.(),w=Te(e,ke,()=>{t.isDestroyed||(i("resize",{}),Se(),i("resized",{}))},{debounceMs:fe,maxWaitMs:Le})}function te(){t.isDestroyed||J(_(t.currentIndex+h()))}function ae(){t.isDestroyed||J(_(t.currentIndex-h()))}function J(o){if(t.isDestroyed)return;let l=_(o),v=q();if(v!==0){if(l!==t.currentIndex&&(t.currentIndex=l,i("slideChange",{index:t.currentIndex}),F.refresh(),U.refresh(),X()),t.suppressSettleEmit=!0,t.loopModeActive){C.cancelTeleport(),t.isProgrammaticScroll=!0;let I=C.getLoopIndexFromScroll(),A=(l-I+n)%n,Y=A-n,re=Math.abs(Y)<A?Y:A;if(re===0){let oe=C.getLoopRealStart(),ne=oe+l*v;if(u()){let We=R(),qe=v-s.gap;ne=oe+l*v+qe/2-We/2}D(ne,"smooth"),C.scheduleTeleport();return}D(L()+re*v,"smooth"),C.scheduleTeleport();return}t.isProgrammaticScroll=!0,D(P(l),"smooth")}}function Se(o){let l=s;if(s={...s,...b(),...o??{}},l.direction!==s.direction&&G(),O(),N(),se.setEnabled(s.draggable),le.setEnabled(!0),B.setHoverPause(s.autoplay),(l.slidesPerView!==s.slidesPerView||l.loop!==s.loop||l.maxDots!==s.maxDots||l.perMove!==s.perMove)&&(F.clear(),F.build()),(l.autoplay!==s.autoplay||l.autoplayInterval!==s.autoplayInterval||l.loop!==s.loop)&&(s.autoplay?B.start():B.pause()),l.loop!==s.loop?g()?C.setupLoopTrack(t.currentIndex):C.teardownLoopTrack(t.currentIndex):t.loopModeActive&&l.slidesPerView!==s.slidesPerView&&C.setupLoopTrack(t.currentIndex),H(),!t.loopModeActive){let v=_(t.currentIndex);t.currentIndex=v,D(P(v))}ee(),F.refresh(),U.refresh(),X()}function de(){if(!t.isDestroyed&&(t.loopModeActive&&C.teardownLoopTrack(t.currentIndex),S=Array.from(r.children).filter(o=>!o.hasAttribute(W)),n=S.length,n!==0)){if(S.forEach((o,l)=>{o.setAttribute(Z,String(l)),o.classList.add("aero-slider__slide")}),O(),N(),g()&&C.setupLoopTrack(t.currentIndex),H(),!t.loopModeActive){let o=_(t.currentIndex);t.currentIndex=o,D(P(o))}F.clear(),F.build(),U.build(),ee(),X()}}function Oe(o,l){if(t.isDestroyed)return;let v=Array.isArray(o)?o:[o];t.loopModeActive&&C.teardownLoopTrack(t.currentIndex);let I=Array.from(r.children).filter(A=>!A.hasAttribute(W));if(l!==void 0&&l<I.length){let A=I[l]??null;for(let Y of v)r.insertBefore(Y,A)}else for(let A of v)r.appendChild(A);de()}function Fe(o){if(t.isDestroyed)return;let l=Array.isArray(o)?o:[o];t.loopModeActive&&C.teardownLoopTrack(t.currentIndex);let v=Array.from(r.children).filter(A=>!A.hasAttribute(W)),I=[...l].sort((A,Y)=>Y-A);for(let A of I)A>=0&&A<v.length&&v[A].remove();de()}function Ne(){t.isDestroyed||(i("destroy",{}),t.isDestroyed=!0,B.pause(),t.loopModeActive&&C.teardownLoopTrack(t.currentIndex),C.cancelTeleport(),t.isProgrammaticScroll=!1,w?.(),w=null,window.removeEventListener("resize",ge),M!==null&&(clearTimeout(M),M=null),E!==null&&(cancelAnimationFrame(E),E=null),r.removeEventListener("scroll",pe),r.removeEventListener("wheel",me),$!==null&&clearTimeout($),y!==null&&clearTimeout(y),se.setEnabled(!1),le.setEnabled(!1),B.setHoverPause(!1),T!==null&&cancelAnimationFrame(T),U.clear(),F.clear(),e.removeAttribute("aria-roledescription"),e.removeAttribute("dir"),e.classList.remove("aero-slider--dragging","aero-slider--rtl","aero-slider--vertical","aero-slider--ready"),e.removeAttribute("data-aero-defer-visibility"),a.aeroSlider===ce&&delete a.aeroSlider)}e.removeAttribute("data-aero-defer-visibility"),O(),e.classList.add("aero-slider"),e.setAttribute("aria-roledescription","carousel"),r.classList.add("aero-slider__track");for(let o of S)o.classList.add("aero-slider__slide");G(),O(),N(),H(),r.addEventListener("scroll",pe,{passive:!0}),r.addEventListener("wheel",me,{passive:!0}),window.addEventListener("resize",ge),g()?C.setupLoopTrack(0):x(0),Ve(),se.setEnabled(s.draggable),le.setEnabled(!0),B.setHoverPause(s.autoplay),U.build(),F.build(),s.autoplay&&B.start();let ze=j();for(let o of ze)V.add(o);for(let o of V)i("visible",{index:o});let ce={get element(){return e},next:te,prev:ae,goTo:J,destroy:Ne,update:Se,refresh:de,add:Oe,remove:Fe,get currentIndex(){return t.currentIndex},get slideCount(){return n}};return a.aeroSlider=ce,e.classList.add("aero-slider--ready"),i("ready",{}),ce}var De="aero-slider__thumb--active";function Ye(e,p,a){e.querySelectorAll(":scope > *").forEach(r=>{let S=a(r);r.classList.toggle(De,S===p)})}function He(e,p,a){let c=p.element.querySelector(".aero-slider__track");if(!c)return()=>{};let r=c,S=a?.loop??!0;p.update({draggable:!1,loop:S});let n=Array.from(r.children).filter(i=>i.hasAttribute("data-aero-slider-index"));n.sort((i,d)=>Number(i.getAttribute("data-aero-slider-index"))-Number(d.getAttribute("data-aero-slider-index")));let m=n.length,b=Array.from(r.children).indexOf(n[0]??r),s=[];function t(i){let d=i.getAttribute("data-aero-slider-index");if(d!==null)return Number(d);let f=Array.from(r.children).indexOf(i);return f<b?f%m:(f-b-m)%m}let T=e.currentIndex;function y(i){T=i,Ye(r,T,t)}function w(i){y(i),p.goTo(i),e.goTo(i)}function M(i){y(i),p.goTo(i)}Array.from(r.children).forEach(i=>{let d=i,f=()=>{let u=t(d);w(u)};d.addEventListener("click",f),d.style.cursor="pointer",s.push({el:d,fn:f})});let E=i=>{let{index:d}=i.detail;d!==T&&M(d)};return e.element.addEventListener("aero:slideChange",E),M(e.currentIndex),()=>{s.forEach(({el:i,fn:d})=>i.removeEventListener("click",d)),r.querySelectorAll(":scope > *").forEach(i=>i.classList.remove(De)),e.element.removeEventListener("aero:slideChange",E)}}typeof window<"u"&&(window.AeroSlider={createSlider:Pe,syncThumbnails:He});export{Pe as createSlider,He as syncThumbnails};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aero-slider",
3
- "version": "1.0.0-beta.3",
3
+ "version": "1.0.0-beta.5",
4
4
  "description": "A lightweight, CSS-first slider library for the modern web",
5
5
  "type": "module",
6
6
  "workspaces": [