aero-slider 1.0.0-beta.1 → 1.0.0-beta.2
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.
- package/README.md +1 -1
- package/dist/aero-slider.css +5 -4
- package/dist/aero-slider.d.ts +6 -2
- package/dist/aero-slider.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Aero Slider
|
|
2
2
|
|
|
3
|
-
A lightweight (~
|
|
3
|
+
A lightweight (~6.5KB), CSS-first slider library for the modern web.
|
|
4
4
|
|
|
5
5
|
- **CSS-First Architecture** — Layout via custom properties, responsive via media queries
|
|
6
6
|
- **Native Scroll Snapping** — Hardware-accelerated, smooth scrolling
|
package/dist/aero-slider.css
CHANGED
|
@@ -154,14 +154,15 @@
|
|
|
154
154
|
|
|
155
155
|
/* iOS-style windowed pagination */
|
|
156
156
|
.aero-slider__pagination--windowed {
|
|
157
|
-
width: var(--pagination-width);
|
|
158
|
-
max-width: 100
|
|
157
|
+
width: calc(var(--pagination-width) + 12px);
|
|
158
|
+
max-width: calc(100% + 12px);
|
|
159
159
|
margin-left: auto;
|
|
160
160
|
margin-right: auto;
|
|
161
161
|
overflow: hidden;
|
|
162
162
|
justify-content: flex-start;
|
|
163
|
-
padding-left:
|
|
164
|
-
padding-right:
|
|
163
|
+
padding-left: 6px;
|
|
164
|
+
padding-right: 6px;
|
|
165
|
+
box-sizing: border-box;
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
.aero-slider__pagination-track {
|
package/dist/aero-slider.d.ts
CHANGED
|
@@ -39,6 +39,10 @@ declare global {
|
|
|
39
39
|
|
|
40
40
|
declare function createSlider(container: HTMLElement, userConfig?: SliderConfig): SliderInstance;
|
|
41
41
|
|
|
42
|
+
interface SyncThumbnailsOptions {
|
|
43
|
+
/** Loop mode for the thumbnail slider. Defaults to true for backward compatibility. */
|
|
44
|
+
loop?: boolean;
|
|
45
|
+
}
|
|
42
46
|
/**
|
|
43
47
|
* Syncs a primary slider with a thumbnail slider. Clicking a thumbnail navigates
|
|
44
48
|
* the primary to that slide. When the primary changes (drag, arrows, etc.), the
|
|
@@ -48,6 +52,6 @@ declare function createSlider(container: HTMLElement, userConfig?: SliderConfig)
|
|
|
48
52
|
* Both sliders must have the same number of slides. Call the returned function
|
|
49
53
|
* to teardown and remove all listeners.
|
|
50
54
|
*/
|
|
51
|
-
declare function syncThumbnails(primary: SliderInstance, thumbnail: SliderInstance): () => void;
|
|
55
|
+
declare function syncThumbnails(primary: SliderInstance, thumbnail: SliderInstance, options?: SyncThumbnailsOptions): () => void;
|
|
52
56
|
|
|
53
|
-
export { type SliderConfig, type SliderEvent, type SliderEventCallback, type SliderEventData, type SliderInstance, createSlider, syncThumbnails };
|
|
57
|
+
export { type SliderConfig, type SliderEvent, type SliderEventCallback, type SliderEventData, type SliderInstance, type SyncThumbnailsOptions, createSlider, syncThumbnails };
|
package/dist/aero-slider.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var he={loop:!1,autoplay:!1,autoplayInterval:5e3,draggable:!0,maxDots:0,noDrag:"",perMove:0,direction:"ltr"},J={slidesPerView:1,gap:0,aspectRatio:"16 / 9"},ue=.3,ie=80,Te=150,be=300,fe=100,Le=250,$="data-aero-slider-index",z="data-aero-slider-clone";function ye(e,v,s,a={}){let r=a.debounceMs??100,m=a.maxWaitMs??250,n="",d=null,l=null;function t(){let y=getComputedStyle(e);return v.map(h=>y.getPropertyValue(h).trim()).join("\0")}function p(){d!==null&&(clearTimeout(d),d=null),l=null;let y=t();y!==n&&(n=y,s())}function M(){let y=Date.now();if(l===null&&(l=y),y-l>=m){p();return}d!==null&&clearTimeout(d),d=setTimeout(p,r)}return n=t(),window.addEventListener("resize",M),()=>{window.removeEventListener("resize",M),d!==null&&(clearTimeout(d),d=null)}}var Ue=50,qe=2,Me=3;function Ae(e){let{track:v,state:s}=e,a=null,r=Me;function m(){let g=Math.ceil(e.config.slidesPerView)+qe;return Math.max(Me,Math.ceil(g/e.slideCount))}function n(){return r*e.slideCount*s.slideWidthPx}function d(){return(r+1)*e.slideCount*s.slideWidthPx}function l(g){v.style.scrollBehavior="auto",e.setScrollPos(g),requestAnimationFrame(()=>{v.style.scrollBehavior=""})}function t(){if(!s.loopModeActive)return;let g=s.slideWidthPx;if(g===0)return;let c=e.slideCount*g,S=n(),L=d(),f=e.getScrollPos(),T=2;if(f<S-T||f>=L+T){for(;f<S;)f+=c;for(;f>=L;)f-=c;l(f)}}function p(){a!==null&&clearTimeout(a),a=setTimeout(()=>{a=null,t()},Ue)}function M(){a!==null&&(clearTimeout(a),a=null)}function y(){let g=s.slideWidthPx;if(g===0)return s.currentIndex;let c=e.isVertical()?v.clientHeight:v.clientWidth;if(e.isFractionalView()){let f=g-e.config.gap,T=e.getScrollPos()+c/2,C=n();return(Math.round((T-C-f/2)/g)%e.slideCount+e.slideCount)%e.slideCount}let S=e.getScrollPos()-n();return(Math.round(S/g)%e.slideCount+e.slideCount)%e.slideCount}function h(g){if(!e.isLoopEnabled()){s.loopModeActive&&u(g);return}r=m(),v.querySelectorAll(`[${z}]`).forEach(I=>I.remove());let{slides:c,slideCount:S}=e;for(let I=0;I<r;I++)for(let E=S-1;E>=0;E--){let A=c[E].cloneNode(!0);A.setAttribute(z,""),A.removeAttribute($),v.prepend(A)}for(let I=0;I<r;I++)for(let E=0;E<S;E++){let A=c[E].cloneNode(!0);A.setAttribute(z,""),A.removeAttribute($),v.append(A)}s.loopModeActive=!0,e.recalcSlideMetrics(),e.applySnapAlignment();let L=e.normalizeIndex(g);s.currentIndex=L;let f=s.slideWidthPx,T=r*e.slideCount*f,C=T+L*f;if(e.isFractionalView()){let I=e.isVertical()?v.clientHeight:v.clientWidth,E=f-e.config.gap;C=T+L*f+E/2-I/2}l(C)}function u(g){M(),v.querySelectorAll(`[${z}]`).forEach(c=>c.remove()),s.loopModeActive=!1,e.recalcSlideMetrics(),s.currentIndex=Math.max(0,Math.min(g,e.getMaxIndex())),l(e.getScrollPosForIndex(s.currentIndex))}return{getLoopRealStart:n,getLoopRealEnd:d,getLoopIndexFromScroll:y,instantScrollTo:l,teleportIfNeeded:t,scheduleTeleport:p,setupLoopTrack:h,teardownLoopTrack:u,cancelTeleport:M}}function Ce(e,v,s,a,r){let{container:m,track:n,state:d}=e,l=!1;function t(u){return e.isVertical()?u.clientY:u.clientX}function p(){return e.config.direction==="rtl"?-1:1}function M(u){if(u.button!==0||u.pointerType==="touch"||e.config.noDrag&&u.target.closest(e.config.noDrag))return;n.setPointerCapture(u.pointerId),d.isDragging=!0;let g=p(),c=t(u),S=e.getScrollPos(),L=S,f=null,T=0,C=c,I=performance.now();function E(){f=null,e.setScrollPos(L)}n.style.scrollBehavior="auto",n.style.scrollSnapType="none",m.classList.add("aero-slider--dragging");let A=d.currentIndex;e.emit("dragStart",{index:A}),a();function D(V){if(!d.isDragging)return;V.preventDefault();let P=t(V);L=S+(c-P)*g,f===null&&(f=requestAnimationFrame(E));let R=performance.now(),k=R-I;if(k>0){if(k<100){let N=(C-P)*g/k;T=ue*N+(1-ue)*T}else T*=.5;C=P,I=R}}function H(){if(!d.isDragging)return;d.isDragging=!1,m.classList.remove("aero-slider--dragging"),f!==null&&(cancelAnimationFrame(f),f=null,e.setScrollPos(L));let V=performance.now()-I;V>50&&(T*=Math.max(0,1-V/200));let P=e.getSlideSize();if(n.style.scrollBehavior="",P>0)if(d.loopModeActive){v.teleportIfNeeded();let R=v.getLoopRealStart(),k=e.getScrollPos(),N=e.isVertical()?n.clientHeight:n.clientWidth,B,U;if(e.isFractionalView()){let O=P-e.config.gap,X=k+T*ie+N/2;B=Math.round((X-R-O/2)/P),U=R+B*P+O/2-N/2}else{let X=k-R+T*ie;B=Math.round(X/P),U=R+B*P}d.isProgrammaticScroll=!0,e.scrollToPos(U,"smooth"),v.scheduleTeleport();let G=e.normalizeIndex(B);G!==d.currentIndex&&(d.currentIndex=G,e.emit("slideChange",{index:d.currentIndex}),e.refreshPagination(),e.refreshNavState())}else{let R=e.getScrollPos()+T*ie,k=e.getIndexFromScrollPos(R);s(k)}e.emit("dragEnd",{index:d.currentIndex,fromIndex:A}),n.removeEventListener("pointermove",D),n.removeEventListener("pointerup",H),n.removeEventListener("pointercancel",H),e.config.autoplay&&r()}n.addEventListener("pointermove",D),n.addEventListener("pointerup",H),n.addEventListener("pointercancel",H)}function y(u){u.preventDefault()}function h(u){u!==l&&(u?(n.addEventListener("pointerdown",M),n.addEventListener("dragstart",y),l=!0):(n.removeEventListener("pointerdown",M),n.removeEventListener("dragstart",y),l=!1))}return{setEnabled:h,isActive:()=>l}}function Ie(e,v,s){let a=null,r=null,m=s,n=v;function d(){a&&(a.removeEventListener("click",m),a=null),r&&(r.removeEventListener("click",n),r=null)}function l(){d(),a=e.container.querySelector(".aero-slider__nav--prev"),r=e.container.querySelector(".aero-slider__nav--next");let p=e.config.direction==="rtl";m=p?v:s,n=p?s:v,a&&a.addEventListener("click",m),r&&r.addEventListener("click",n),t()}function t(){let p=e.getMaxIndex(),M=p>0,y=e.config.direction==="rtl",h=!M||!e.isLoopEnabled()&&e.state.currentIndex===0,u=!M||!e.isLoopEnabled()&&e.state.currentIndex>=p;a&&(a.disabled=y?u:h),r&&(r.disabled=y?h:u)}return{build:l,clear:d,refresh:t}}function _e(e,v){let s=null,a=null,r=null,m=[],n=!1,d=10,l=8;function t(c){let S=c.target.closest(".aero-slider__dot");if(!S||!s)return;let L=S.getAttribute("data-slide-index");L!==null&&v(Number(L))}function p(){if(s){s.removeEventListener("click",t),a?.remove(),a=null,r&&(r.style.display="");let c=s.querySelectorAll(".aero-slider__dot");for(let S=1;S<c.length;S++)c[S]?.remove();s.querySelectorAll(".aero-slider__pagination-label").forEach(S=>S.remove()),s=null}r=null,m=[],n=!1}function M(){return e.isLoopEnabled()?e.slideCount:e.getMaxIndex()+1}function y(){if(s=e.container.querySelector(".aero-slider__pagination"),!s||(r=s.querySelector(".aero-slider__dot"),!r))return;r.style.display==="none"&&(r.style.display=""),r.style.transform="",r.style.opacity="",r.offsetWidth;let S=getComputedStyle(r);d=parseFloat(S.width)||10;let L=getComputedStyle(s);l=parseInt(L.gap)||8,s.setAttribute("role","tablist"),s.addEventListener("click",t);let f=M(),T=e.config.maxDots;n=T>0&&f>T,a?.remove();let C=s.querySelectorAll(".aero-slider__dot");for(let E=1;E<C.length;E++)C[E]?.remove();if(s.querySelectorAll(".aero-slider__pagination-label").forEach(E=>E.remove()),n){s.classList.add("aero-slider__pagination--windowed");let E=T*d+(T-1)*l;s.style.setProperty("--pagination-width",`${E}px`),a=document.createElement("div"),a.className="aero-slider__pagination-track",r.style.display="none";for(let A=0;A<f;A++){let D=r.cloneNode(!0);D.style.display="",a.appendChild(D)}s.appendChild(a)}else{s.classList.remove("aero-slider__pagination--windowed"),s.style.removeProperty("--pagination-width"),r.style.display="";for(let E=1;E<f;E++){let A=r.cloneNode(!0);s.appendChild(A)}}m=Array.from((n&&a?a:s).querySelectorAll(".aero-slider__dot")),m.forEach((E,A)=>{E.setAttribute("role","tab"),E.setAttribute("data-slide-index",String(A)),E.setAttribute("aria-label",`Go to slide ${A+1}`)}),g()}function h(c,S,L,f){if(c<0||c>=S)return"aero-slider__dot--hidden";let T=c===0,C=c===S-1,I=c===1,E=c===S-2;return T&&!L?"aero-slider__dot--edge":I&&!L?"aero-slider__dot--near-edge":C&&!f?"aero-slider__dot--edge":E&&!f?"aero-slider__dot--near-edge":null}function u(c){c.classList.remove("aero-slider__dot--hidden","aero-slider__dot--edge","aero-slider__dot--near-edge")}function g(){let c=M(),S=e.state.currentIndex,L=e.config.maxDots;if(n&&L>0&&a){let f=Math.floor(L/2),T=d+l,C=S-f;C=Math.max(0,Math.min(C,c-L)),a.style.setProperty("--track-offset",`${-C*T}px`);let I=C===0,E=C>=c-L;m.forEach((A,D)=>{let H=D===S;A.classList.toggle("aero-slider__dot--active",H),A.setAttribute("aria-selected",String(H)),u(A);let V=h(D-C,L,I,E);V&&A.classList.add(V)})}else m.forEach((f,T)=>{let C=T===S;f.classList.toggle("aero-slider__dot--active",C),f.setAttribute("aria-selected",String(C)),u(f)})}return{build:y,clear:p,refresh:g}}function xe(e,v,s){let a=!1;function r(n){let d=e.config.direction;d==="ttb"?n.key==="ArrowUp"?(n.preventDefault(),s()):n.key==="ArrowDown"&&(n.preventDefault(),v()):d==="rtl"?n.key==="ArrowRight"?(n.preventDefault(),s()):n.key==="ArrowLeft"&&(n.preventDefault(),v()):n.key==="ArrowLeft"?(n.preventDefault(),s()):n.key==="ArrowRight"&&(n.preventDefault(),v())}function m(n){n!==a&&(n?(e.container.setAttribute("tabindex","0"),e.container.addEventListener("keydown",r),a=!0):(e.container.removeAttribute("tabindex"),e.container.removeEventListener("keydown",r),a=!1))}return{setEnabled:m}}function we(e,v){let s=null,a=!1,r=null;function m(){e.config.autoplay&&(n(),s=setInterval(()=>{if(!e.state.loopModeActive&&e.state.currentIndex>=e.getMaxIndex()){n();return}v()},e.config.autoplayInterval),e.emit("autoplayStart",{index:e.state.currentIndex}))}function n(){s!==null&&(clearInterval(s),s=null,e.emit("autoplayStop",{index:e.state.currentIndex}))}function d(){n()}function l(){e.config.autoplay&&m()}function t(){r!==null&&(clearTimeout(r),r=null),n()}function p(){e.config.autoplay&&(r=setTimeout(()=>{r=null,e.config.autoplay&&m()},1e3))}function M(y){y!==a&&(y?(e.container.addEventListener("mouseenter",d),e.container.addEventListener("mouseleave",l),e.track.addEventListener("touchstart",t,{passive:!0}),e.track.addEventListener("touchend",p,{passive:!0}),e.track.addEventListener("touchcancel",p,{passive:!0}),a=!0):(e.container.removeEventListener("mouseenter",d),e.container.removeEventListener("mouseleave",l),e.track.removeEventListener("touchstart",t),e.track.removeEventListener("touchend",p),e.track.removeEventListener("touchcancel",p),r!==null&&(clearTimeout(r),r=null),a=!1))}return{start:m,pause:n,setHoverPause:M}}function Ye(e,v={}){let s=e,a=e.querySelector(".aero-slider__track");if(!a)throw new Error("aero-slider: missing .aero-slider__track");let r=a,m=Array.from(r.children).filter(o=>!o.hasAttribute(z)),n=m.length;if(n===0)throw new Error("aero-slider: no slides found");m.forEach((o,i)=>o.setAttribute($,String(i)));function d(){let o=getComputedStyle(e),i=parseFloat(o.getPropertyValue("--slides-per-view")?.trim()||"")||J.slidesPerView,b=o.getPropertyValue("--slide-gap")?.trim()||"0px",x=parseFloat(b)||J.gap,_=o.getPropertyValue("--slide-aspect")?.trim()||J.aspectRatio;return{slidesPerView:i,gap:x,aspectRatio:_}}let l={...he,...v,...J},t={currentIndex:0,isDragging:!1,isDestroyed:!1,loopModeActive:!1,isProgrammaticScroll:!1,slideWidthPx:0},p=new Map,M=null,y=null,h=null,u=null,g=null;function c(o,i){p.get(o)?.forEach(b=>b(i))}function S(){return l.direction==="ttb"}function L(){return l.slidesPerView%1!==0?Math.max(0,n-1):Math.max(0,Math.floor(n-l.slidesPerView))}function f(){return l.slidesPerView%1!==0}function T(){return l.loop&&L()>0}function C(){return l.perMove>0?l.perMove:1}function I(o){let i=L();return T()?(Math.trunc(o)%n+n)%n:Math.max(0,Math.min(o,i))}function E(){return l.direction==="rtl"?-r.scrollLeft:l.direction==="ttb"?r.scrollTop:r.scrollLeft}function A(o){l.direction==="rtl"?r.scrollLeft=-o:l.direction==="ttb"?r.scrollTop=o:r.scrollLeft=o}function D(o,i="auto"){l.direction==="ttb"?r.scrollTo({top:o,behavior:i}):l.direction==="rtl"?r.scrollTo({left:-o,behavior:i}):r.scrollTo({left:o,behavior:i})}function H(){return S()?r.clientHeight:r.clientWidth}function V(){return S()?r.scrollHeight:r.scrollWidth}function P(){if(t.slideWidthPx>0)return t.slideWidthPx;let o=m[0];if(!o)return 0;let i=o.getBoundingClientRect();return t.slideWidthPx=(S()?i.height:i.width)+l.gap,t.slideWidthPx}function R(){t.slideWidthPx=0,P()}function k(){Object.assign(l,d())}function N(o){let i=P();if(i===0)return 0;if(!f())return o*i;let b=H(),x=i-l.gap;if(t.loopModeActive)return o*i+x/2-b/2;let _=L();return o<=0?0:o>=_?V()-H():o*i+x/2-b/2}function B(o){let i=P();if(i===0)return t.currentIndex;let b=t.loopModeActive?n-1:L(),x=V()-H();if(!f()){let ne=Math.round(o/i);return Math.max(0,Math.min(ne,b))}if(x<=0||o<=1)return 0;if(o>=x-1)return b;let _=H(),q=i-l.gap,re=o+_/2,oe=Math.round((re-q/2)/i);return Math.max(0,Math.min(oe,b))}function U(){let o=Array.from(r.children);if(!f()){for(let i of o)i.style.scrollSnapAlign="";return}if(t.loopModeActive){for(let i of o)i.style.scrollSnapAlign="center";return}for(let i of o)i.style.scrollSnapAlign="center"}function G(){e.classList.remove("aero-slider--rtl","aero-slider--vertical"),e.removeAttribute("dir"),l.direction==="rtl"?(e.setAttribute("dir","rtl"),e.classList.add("aero-slider--rtl")):l.direction==="ttb"&&e.classList.add("aero-slider--vertical")}let O=new Set;function X(){let o=new Set,i=Math.ceil(l.slidesPerView);for(let b=0;b<i;b++){let x=t.currentIndex+b;if(t.loopModeActive)x=(x%n+n)%n;else if(x>=n)break;o.add(x)}return o}function Q(){let o=X();for(let i of O)o.has(i)||c("hidden",{index:i});for(let i of o)O.has(i)||c("visible",{index:i});O.clear();for(let i of o)O.add(i)}let j={container:e,track:r,get slides(){return m},get slideCount(){return n},get config(){return l},state:t,listeners:p,emit:c,getSlideSize:P,recalcSlideMetrics:R,normalizeIndex:I,getMaxIndex:L,getEffectivePerMove:C,isLoopEnabled:T,isFractionalView:f,isVertical:S,getScrollPos:E,setScrollPos:A,scrollToPos:D,getScrollPosForIndex:N,getIndexFromScrollPos:B,refreshPagination:()=>F.refresh(),refreshNavState:()=>Y.refresh(),applySnapAlignment:U},w=Ae(j),Y=Ie(j,te,ae),F=_e(j,Z),le=xe(j,te,ae),W=we(j,te),se=Ce(j,w,Z,W.pause,W.start);function ee(){if(t.isDragging||t.isProgrammaticScroll)return;let o=t.loopModeActive?w.getLoopIndexFromScroll():B(E());o!==t.currentIndex&&(t.currentIndex=o,c("slideChange",{index:t.currentIndex}),F.refresh(),Y.refresh(),Q())}function De(){y=null,t.isProgrammaticScroll=!1,K===null&&(r.style.scrollSnapType=""),ee()}function pe(){t.loopModeActive&&w.scheduleTeleport(),y!==null&&clearTimeout(y),y=setTimeout(De,Te),M===null&&(M=requestAnimationFrame(()=>{M=null,ee()}))}let K=null;function ve(){t.isDragging||(r.style.scrollSnapType="none",K!==null&&clearTimeout(K),K=setTimeout(()=>{K=null,r.style.scrollSnapType=""},be))}function ge(){if(R(),t.loopModeActive){let o=P();if(o>0){let i=w.getLoopRealStart(),b=i+t.currentIndex*o;if(f()){let x=H(),_=o-l.gap;b=i+t.currentIndex*o+_/2-x/2}A(b)}}else A(N(t.currentIndex))}function Se(){t.isDestroyed||(u===null&&(r.style.scrollSnapType="none",t.isProgrammaticScroll=!0),g===null&&(g=requestAnimationFrame(()=>{g=null,t.isDestroyed||ge()})),u!==null&&clearTimeout(u),u=setTimeout(()=>{u=null,!t.isDestroyed&&(ge(),t.isProgrammaticScroll=!1,r.style.scrollSnapType="")},fe))}let Re=["--slides-per-view","--slide-gap","--slide-aspect"];function He(){h?.(),h=ye(e,Re,()=>{t.isDestroyed||(c("resize",{index:t.currentIndex}),Ee(),c("resized",{index:t.currentIndex}))},{debounceMs:fe,maxWaitMs:Le})}function te(){t.isDestroyed||Z(I(t.currentIndex+C()))}function ae(){t.isDestroyed||Z(I(t.currentIndex-C()))}function Z(o){if(t.isDestroyed)return;let i=I(o),b=P();if(b!==0){if(i!==t.currentIndex&&(t.currentIndex=i,c("slideChange",{index:t.currentIndex}),F.refresh(),Y.refresh(),Q()),t.loopModeActive){w.cancelTeleport(),t.isProgrammaticScroll=!0;let x=w.getLoopIndexFromScroll(),_=(i-x+n)%n,q=_-n,re=Math.abs(q)<_?q:_;if(re===0){let oe=w.getLoopRealStart(),ne=oe+i*b;if(f()){let We=H(),Be=b-l.gap;ne=oe+i*b+Be/2-We/2}D(ne,"smooth"),w.scheduleTeleport();return}D(E()+re*b,"smooth"),w.scheduleTeleport();return}t.isProgrammaticScroll=!0,D(N(i),"smooth")}}function Ee(o){let i=l;if(l={...l,...d(),...o??{}},i.direction!==l.direction&&G(),k(),R(),se.setEnabled(l.draggable),le.setEnabled(!0),W.setHoverPause(l.autoplay),(i.slidesPerView!==l.slidesPerView||i.loop!==l.loop||i.maxDots!==l.maxDots||i.perMove!==l.perMove)&&(F.clear(),F.build()),(i.autoplay!==l.autoplay||i.autoplayInterval!==l.autoplayInterval||i.loop!==l.loop)&&(l.autoplay?W.start():W.pause()),i.loop!==l.loop?T()?w.setupLoopTrack(t.currentIndex):w.teardownLoopTrack(t.currentIndex):t.loopModeActive&&i.slidesPerView!==l.slidesPerView&&w.setupLoopTrack(t.currentIndex),U(),!t.loopModeActive){let b=I(t.currentIndex);t.currentIndex=b,D(N(b))}ee(),F.refresh(),Y.refresh(),Q()}function de(){if(!t.isDestroyed&&(t.loopModeActive&&w.teardownLoopTrack(t.currentIndex),m=Array.from(r.children).filter(o=>!o.hasAttribute(z)),n=m.length,n!==0)){if(m.forEach((o,i)=>{o.setAttribute($,String(i)),o.classList.add("aero-slider__slide")}),k(),R(),T()&&w.setupLoopTrack(t.currentIndex),U(),!t.loopModeActive){let o=I(t.currentIndex);t.currentIndex=o,D(N(o))}F.clear(),F.build(),Y.build(),ee(),Q()}}function ke(o,i){if(t.isDestroyed)return;let b=Array.isArray(o)?o:[o];t.loopModeActive&&w.teardownLoopTrack(t.currentIndex);let x=Array.from(r.children).filter(_=>!_.hasAttribute(z));if(i!==void 0&&i<x.length){let _=x[i]??null;for(let q of b)r.insertBefore(q,_)}else for(let _ of b)r.appendChild(_);de()}function Ve(o){if(t.isDestroyed)return;let i=Array.isArray(o)?o:[o];t.loopModeActive&&w.teardownLoopTrack(t.currentIndex);let b=Array.from(r.children).filter(_=>!_.hasAttribute(z)),x=[...i].sort((_,q)=>q-_);for(let _ of x)_>=0&&_<b.length&&b[_].remove();de()}function Ne(o,i){p.has(o)||p.set(o,new Set),p.get(o).add(i)}function Oe(o,i){p.get(o)?.delete(i)}function Fe(){t.isDestroyed||(c("destroy",{index:t.currentIndex}),t.isDestroyed=!0,W.pause(),t.loopModeActive&&w.teardownLoopTrack(t.currentIndex),w.cancelTeleport(),t.isProgrammaticScroll=!1,h?.(),h=null,window.removeEventListener("resize",Se),u!==null&&(clearTimeout(u),u=null),g!==null&&(cancelAnimationFrame(g),g=null),r.removeEventListener("scroll",pe),r.removeEventListener("wheel",ve),K!==null&&clearTimeout(K),y!==null&&clearTimeout(y),se.setEnabled(!1),le.setEnabled(!1),W.setHoverPause(!1),M!==null&&cancelAnimationFrame(M),Y.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"),s.aeroSlider===ce&&delete s.aeroSlider,p.clear())}e.removeAttribute("data-aero-defer-visibility"),k(),e.classList.add("aero-slider"),e.setAttribute("aria-roledescription","carousel"),r.classList.add("aero-slider__track");for(let o of m)o.classList.add("aero-slider__slide");G(),k(),R(),U(),r.addEventListener("scroll",pe,{passive:!0}),r.addEventListener("wheel",ve,{passive:!0}),window.addEventListener("resize",Se),T()?w.setupLoopTrack(0):A(0),He(),se.setEnabled(l.draggable),le.setEnabled(!0),W.setHoverPause(l.autoplay),Y.build(),F.build(),l.autoplay&&W.start();let ze=X();for(let o of ze)O.add(o);for(let o of O)c("visible",{index:o});let ce={get element(){return e},next:te,prev:ae,goTo:Z,destroy:Fe,update:Ee,refresh:de,add:ke,remove:Ve,on:Ne,off:Oe,get currentIndex(){return t.currentIndex},get slideCount(){return n}};return s.aeroSlider=ce,e.classList.add("aero-slider--ready"),c("ready",{index:t.currentIndex}),ce}var Pe="aero-slider__thumb--active";function me(e,v,s){e.querySelectorAll(":scope > *").forEach(r=>{let m=s(r);r.classList.toggle(Pe,m===v)})}function Ke(e,v,s){let a=v[s];if(!a)return;let r=e.getBoundingClientRect(),m=a.getBoundingClientRect(),n=a.offsetLeft+m.width/2,d=r.width/2,l=n-d,t=e.scrollWidth-e.clientWidth,p=Math.max(0,Math.min(l,t));e.scrollTo({left:p,behavior:"smooth"})}function Xe(e,v){let s=v.element.querySelector(".aero-slider__track");if(!s)return()=>{};let a=s;v.update({draggable:!1,loop:!0});let r=Array.from(a.children).filter(h=>h.hasAttribute("data-aero-slider-index"));r.sort((h,u)=>Number(h.getAttribute("data-aero-slider-index"))-Number(u.getAttribute("data-aero-slider-index")));let m=r.length,n=Array.from(a.children).indexOf(r[0]??a),d=[];function l(h){let u=h.getAttribute("data-aero-slider-index");if(u!==null)return Number(u);let g=Array.from(a.children).indexOf(h);return g<n?g%m:(g-n-m)%m}let t=null,p=null;Array.from(a.children).forEach(h=>{let u=h,g=()=>{let c=l(u);t=c,me(a,c,l),e.goTo(c)};u.addEventListener("click",g),u.style.cursor="pointer",d.push({el:u,fn:g})});let M=null,y=h=>{if(t!==null){h.index===t?(p!==null&&clearTimeout(p),p=setTimeout(()=>{p=null,t=null},200)):p!==null&&(clearTimeout(p),p=null);return}M!==null&&clearTimeout(M),M=setTimeout(()=>{M=null,me(a,h.index,l),v.goTo(h.index)},50)};return e.on("slideChange",y),me(a,e.currentIndex,l),Ke(a,r,e.currentIndex),()=>{M!==null&&clearTimeout(M),p!==null&&clearTimeout(p),t=null,d.forEach(({el:h,fn:u})=>h.removeEventListener("click",u)),a.querySelectorAll(":scope > *").forEach(h=>h.classList.remove(Pe)),e.off("slideChange",y)}}export{Ye as createSlider,Xe as syncThumbnails};
|
|
1
|
+
var he={loop:!1,autoplay:!1,autoplayInterval:5e3,draggable:!0,maxDots:0,noDrag:"",perMove:0,direction:"ltr"},J={slidesPerView:1,gap:0,aspectRatio:"16 / 9"},ue=.3,ie=80,be=150,Te=300,fe=100,ye=250,$="data-aero-slider-index",z="data-aero-slider-clone";function Le(e,g,s,d={}){let t=d.debounceMs??100,v=d.maxWaitMs??250,o="",c=null,i=null;function r(){let p=getComputedStyle(e);return g.map(A=>p.getPropertyValue(A).trim()).join("\0")}function S(){c!==null&&(clearTimeout(c),c=null),i=null;let p=r();p!==o&&(o=p,s())}function L(){let p=Date.now();if(i===null&&(i=p),p-i>=v){S();return}c!==null&&clearTimeout(c),c=setTimeout(S,t)}return o=r(),window.addEventListener("resize",L),()=>{window.removeEventListener("resize",L),c!==null&&(clearTimeout(c),c=null)}}var qe=50,Ye=2,Me=3;function Ae(e){let{track:g,state:s}=e,d=null,t=Me;function v(){let u=Math.ceil(e.config.slidesPerView)+Ye;return Math.max(Me,Math.ceil(u/e.slideCount))}function o(){return t*e.slideCount*s.slideWidthPx}function c(){return(t+1)*e.slideCount*s.slideWidthPx}function i(u){g.style.scrollBehavior="auto",e.setScrollPos(u),requestAnimationFrame(()=>{g.style.scrollBehavior=""})}function r(){if(!s.loopModeActive)return;let u=s.slideWidthPx;if(u===0)return;let a=e.slideCount*u,f=o(),h=c(),m=e.getScrollPos(),T=2;if(m<f-T||m>=h+T){for(;m<f;)m+=a;for(;m>=h;)m-=a;i(m)}}function S(){d!==null&&clearTimeout(d),d=setTimeout(()=>{d=null,r()},qe)}function L(){d!==null&&(clearTimeout(d),d=null)}function p(){let u=s.slideWidthPx;if(u===0)return s.currentIndex;let a=e.isVertical()?g.clientHeight:g.clientWidth;if(e.isFractionalView()){let m=u-e.config.gap,T=e.getScrollPos()+a/2,C=o();return(Math.round((T-C-m/2)/u)%e.slideCount+e.slideCount)%e.slideCount}let f=e.getScrollPos()-o();return(Math.round(f/u)%e.slideCount+e.slideCount)%e.slideCount}function A(u){if(!e.isLoopEnabled()){s.loopModeActive&&E(u);return}t=v(),g.querySelectorAll(`[${z}]`).forEach(I=>I.remove());let{slides:a,slideCount:f}=e;for(let I=0;I<t;I++)for(let b=f-1;b>=0;b--){let M=a[b].cloneNode(!0);M.setAttribute(z,""),M.removeAttribute($),g.prepend(M)}for(let I=0;I<t;I++)for(let b=0;b<f;b++){let M=a[b].cloneNode(!0);M.setAttribute(z,""),M.removeAttribute($),g.append(M)}s.loopModeActive=!0,e.recalcSlideMetrics(),e.applySnapAlignment();let h=e.normalizeIndex(u);s.currentIndex=h;let m=s.slideWidthPx,T=t*e.slideCount*m,C=T+h*m;if(e.isFractionalView()){let I=e.isVertical()?g.clientHeight:g.clientWidth,b=m-e.config.gap;C=T+h*m+b/2-I/2}i(C)}function E(u){L(),g.querySelectorAll(`[${z}]`).forEach(a=>a.remove()),s.loopModeActive=!1,e.recalcSlideMetrics(),s.currentIndex=Math.max(0,Math.min(u,e.getMaxIndex())),i(e.getScrollPosForIndex(s.currentIndex))}return{getLoopRealStart:o,getLoopRealEnd:c,getLoopIndexFromScroll:p,instantScrollTo:i,teleportIfNeeded:r,scheduleTeleport:S,setupLoopTrack:A,teardownLoopTrack:E,cancelTeleport:L}}function Ce(e,g,s,d,t){let{container:v,track:o,state:c}=e,i=!1;function r(E){return e.isVertical()?E.clientY:E.clientX}function S(){return e.config.direction==="rtl"?-1:1}function L(E){if(E.button!==0||E.pointerType==="touch"||e.config.noDrag&&E.target.closest(e.config.noDrag))return;o.setPointerCapture(E.pointerId),c.isDragging=!0;let u=S(),a=r(E),f=e.getScrollPos(),h=f,m=null,T=0,C=a,I=performance.now();function b(){m=null,e.setScrollPos(h)}o.style.scrollBehavior="auto",o.style.scrollSnapType="none",v.classList.add("aero-slider--dragging");let M=c.currentIndex;e.emit("dragStart",{index:M}),d();function D(V){if(!c.isDragging)return;V.preventDefault();let P=r(V);h=f+(a-P)*u,m===null&&(m=requestAnimationFrame(b));let H=performance.now(),k=H-I;if(k>0){if(k<100){let O=(C-P)*u/k;T=ue*O+(1-ue)*T}else T*=.5;C=P,I=H}}function R(){if(!c.isDragging)return;c.isDragging=!1,v.classList.remove("aero-slider--dragging"),m!==null&&(cancelAnimationFrame(m),m=null,e.setScrollPos(h));let V=performance.now()-I;V>50&&(T*=Math.max(0,1-V/200));let P=e.getSlideSize();if(o.style.scrollBehavior="",P>0)if(c.loopModeActive){g.teleportIfNeeded();let H=g.getLoopRealStart(),k=e.getScrollPos(),O=e.isVertical()?o.clientHeight:o.clientWidth,B,U;if(e.isFractionalView()){let N=P-e.config.gap,X=k+T*ie+O/2;B=Math.round((X-H-N/2)/P),U=H+B*P+N/2-O/2}else{let X=k-H+T*ie;B=Math.round(X/P),U=H+B*P}c.isProgrammaticScroll=!0,e.scrollToPos(U,"smooth"),g.scheduleTeleport();let G=e.normalizeIndex(B);G!==c.currentIndex&&(c.currentIndex=G,e.emit("slideChange",{index:c.currentIndex}),e.refreshPagination(),e.refreshNavState())}else{let H=e.getScrollPos()+T*ie,k=e.getIndexFromScrollPos(H);s(k)}e.emit("dragEnd",{index:c.currentIndex,fromIndex:M}),o.removeEventListener("pointermove",D),o.removeEventListener("pointerup",R),o.removeEventListener("pointercancel",R),e.config.autoplay&&t()}o.addEventListener("pointermove",D),o.addEventListener("pointerup",R),o.addEventListener("pointercancel",R)}function p(E){E.preventDefault()}function A(E){E!==i&&(E?(o.addEventListener("pointerdown",L),o.addEventListener("dragstart",p),i=!0):(o.removeEventListener("pointerdown",L),o.removeEventListener("dragstart",p),i=!1))}return{setEnabled:A,isActive:()=>i}}function Ie(e,g,s){let d=null,t=null,v=s,o=g;function c(){d&&(d.removeEventListener("click",v),d=null),t&&(t.removeEventListener("click",o),t=null)}function i(){c(),d=e.container.querySelector(".aero-slider__nav--prev"),t=e.container.querySelector(".aero-slider__nav--next");let S=e.config.direction==="rtl";v=S?g:s,o=S?s:g,d&&d.addEventListener("click",v),t&&t.addEventListener("click",o),r()}function r(){let S=e.getMaxIndex(),L=S>0,p=e.config.direction==="rtl",A=!L||!e.isLoopEnabled()&&e.state.currentIndex===0,E=!L||!e.isLoopEnabled()&&e.state.currentIndex>=S;d&&(d.disabled=p?E:A),t&&(t.disabled=p?A:E)}return{build:i,clear:c,refresh:r}}function _e(e,g){let s=null,d=null,t=null,v=[],o=!1,c=10,i=8;function r(a){let f=a.target.closest(".aero-slider__dot");if(!f||!s)return;let h=f.getAttribute("data-slide-index");h!==null&&g(Number(h))}function S(){if(s){s.removeEventListener("click",r),d?.remove(),d=null,t&&(t.style.display="");let a=s.querySelectorAll(".aero-slider__dot");for(let f=1;f<a.length;f++)a[f]?.remove();s.querySelectorAll(".aero-slider__pagination-label").forEach(f=>f.remove()),s=null}t=null,v=[],o=!1}function L(){return e.isLoopEnabled()?e.slideCount:e.getMaxIndex()+1}function p(){if(s=e.container.querySelector(".aero-slider__pagination"),!s||(t=s.querySelector(".aero-slider__dot"),!t))return;t.style.display==="none"&&(t.style.display=""),t.style.transform="",t.style.opacity="",t.offsetWidth;let f=getComputedStyle(t);c=parseFloat(f.width)||10;let h=getComputedStyle(s);i=parseInt(h.gap)||8,s.setAttribute("role","tablist"),s.addEventListener("click",r);let m=L(),T=e.config.maxDots;o=T>0&&m>T,d?.remove();let C=s.querySelectorAll(".aero-slider__dot");for(let b=1;b<C.length;b++)C[b]?.remove();if(s.querySelectorAll(".aero-slider__pagination-label").forEach(b=>b.remove()),o){s.classList.add("aero-slider__pagination--windowed");let b=T*c+(T-1)*i;s.style.setProperty("--pagination-width",`${b}px`),d=document.createElement("div"),d.className="aero-slider__pagination-track",t.style.display="none";for(let M=0;M<m;M++){let D=t.cloneNode(!0);D.style.display="",d.appendChild(D)}s.appendChild(d)}else{s.classList.remove("aero-slider__pagination--windowed"),s.style.removeProperty("--pagination-width"),t.style.display="";for(let b=1;b<m;b++){let M=t.cloneNode(!0);s.appendChild(M)}}v=Array.from((o&&d?d:s).querySelectorAll(".aero-slider__dot")),v.forEach((b,M)=>{b.setAttribute("role","tab"),b.setAttribute("data-slide-index",String(M)),b.setAttribute("aria-label",`Go to slide ${M+1}`)}),u()}function A(a,f,h,m){if(a<0||a>=f)return"aero-slider__dot--hidden";let T=a===0,C=a===f-1,I=a===1,b=a===f-2;return T&&!h?"aero-slider__dot--edge":I&&!h?"aero-slider__dot--near-edge":C&&!m?"aero-slider__dot--edge":b&&!m?"aero-slider__dot--near-edge":null}function E(a){a.classList.remove("aero-slider__dot--hidden","aero-slider__dot--edge","aero-slider__dot--near-edge")}function u(){let a=L(),f=e.state.currentIndex,h=e.config.maxDots;if(o&&h>0&&d){let m=Math.floor(h/2),T=c+i,C=f-m;C=Math.max(0,Math.min(C,a-h)),d.style.setProperty("--track-offset",`${-C*T}px`);let I=C===0,b=C>=a-h;v.forEach((M,D)=>{let R=D===f;M.classList.toggle("aero-slider__dot--active",R),M.setAttribute("aria-selected",String(R)),E(M);let V=A(D-C,h,I,b);V&&M.classList.add(V)})}else v.forEach((m,T)=>{let C=T===f;m.classList.toggle("aero-slider__dot--active",C),m.setAttribute("aria-selected",String(C)),E(m)})}return{build:p,clear:S,refresh:u}}function xe(e,g,s){let d=!1;function t(o){let c=e.config.direction;c==="ttb"?o.key==="ArrowUp"?(o.preventDefault(),s()):o.key==="ArrowDown"&&(o.preventDefault(),g()):c==="rtl"?o.key==="ArrowRight"?(o.preventDefault(),s()):o.key==="ArrowLeft"&&(o.preventDefault(),g()):o.key==="ArrowLeft"?(o.preventDefault(),s()):o.key==="ArrowRight"&&(o.preventDefault(),g())}function v(o){o!==d&&(o?(e.container.setAttribute("tabindex","0"),e.container.addEventListener("keydown",t),d=!0):(e.container.removeAttribute("tabindex"),e.container.removeEventListener("keydown",t),d=!1))}return{setEnabled:v}}function we(e,g){let s=null,d=!1,t=null;function v(){e.config.autoplay&&(o(),s=setInterval(()=>{if(!e.state.loopModeActive&&e.state.currentIndex>=e.getMaxIndex()){o();return}g()},e.config.autoplayInterval),e.emit("autoplayStart",{index:e.state.currentIndex}))}function o(){s!==null&&(clearInterval(s),s=null,e.emit("autoplayStop",{index:e.state.currentIndex}))}function c(){o()}function i(){e.config.autoplay&&v()}function r(){t!==null&&(clearTimeout(t),t=null),o()}function S(){e.config.autoplay&&(t=setTimeout(()=>{t=null,e.config.autoplay&&v()},1e3))}function L(p){p!==d&&(p?(e.container.addEventListener("mouseenter",c),e.container.addEventListener("mouseleave",i),e.track.addEventListener("touchstart",r,{passive:!0}),e.track.addEventListener("touchend",S,{passive:!0}),e.track.addEventListener("touchcancel",S,{passive:!0}),d=!0):(e.container.removeEventListener("mouseenter",c),e.container.removeEventListener("mouseleave",i),e.track.removeEventListener("touchstart",r),e.track.removeEventListener("touchend",S),e.track.removeEventListener("touchcancel",S),t!==null&&(clearTimeout(t),t=null),d=!1))}return{start:v,pause:o,setHoverPause:L}}function Ke(e,g={}){let s=e,d=e.querySelector(".aero-slider__track");if(!d)throw new Error("aero-slider: missing .aero-slider__track");let t=d,v=Array.from(t.children).filter(n=>!n.hasAttribute(z)),o=v.length;if(o===0)throw new Error("aero-slider: no slides found");v.forEach((n,l)=>n.setAttribute($,String(l)));function c(){let n=getComputedStyle(e),l=parseFloat(n.getPropertyValue("--slides-per-view")?.trim()||"")||J.slidesPerView,y=n.getPropertyValue("--slide-gap")?.trim()||"0px",x=parseFloat(y)||J.gap,_=n.getPropertyValue("--slide-aspect")?.trim()||J.aspectRatio;return{slidesPerView:l,gap:x,aspectRatio:_}}let i={...he,...g,...J},r={currentIndex:0,isDragging:!1,isDestroyed:!1,loopModeActive:!1,isProgrammaticScroll:!1,slideWidthPx:0},S=new Map,L=null,p=null,A=null,E=null,u=null;function a(n,l){S.get(n)?.forEach(y=>y(l))}function f(){return i.direction==="ttb"}function h(){return i.slidesPerView%1!==0?Math.max(0,o-1):Math.max(0,Math.floor(o-i.slidesPerView))}function m(){return i.slidesPerView%1!==0}function T(){return i.loop&&h()>0}function C(){return i.perMove>0?i.perMove:1}function I(n){let l=h();return T()?(Math.trunc(n)%o+o)%o:Math.max(0,Math.min(n,l))}function b(){return i.direction==="rtl"?-t.scrollLeft:i.direction==="ttb"?t.scrollTop:t.scrollLeft}function M(n){i.direction==="rtl"?t.scrollLeft=-n:i.direction==="ttb"?t.scrollTop=n:t.scrollLeft=n}function D(n,l="auto"){i.direction==="ttb"?t.scrollTo({top:n,behavior:l}):i.direction==="rtl"?t.scrollTo({left:-n,behavior:l}):t.scrollTo({left:n,behavior:l})}function R(){return f()?t.clientHeight:t.clientWidth}function V(){return f()?t.scrollHeight:t.scrollWidth}function P(){if(r.slideWidthPx>0)return r.slideWidthPx;let n=v[0];if(!n)return 0;let l=n.getBoundingClientRect();return r.slideWidthPx=(f()?l.height:l.width)+i.gap,r.slideWidthPx}function H(){r.slideWidthPx=0,P()}function k(){Object.assign(i,c())}function O(n){let l=P();if(l===0)return 0;if(!m())return n*l;let y=R(),x=l-i.gap;if(r.loopModeActive)return n*l+x/2-y/2;let _=h();return n<=0?0:n>=_?V()-R():n*l+x/2-y/2}function B(n){let l=P();if(l===0)return r.currentIndex;let y=r.loopModeActive?o-1:h(),x=V()-R();if(!m()){let oe=Math.round(n/l);return Math.max(0,Math.min(oe,y))}if(x<=0||n<=1)return 0;if(n>=x-1)return y;let _=R(),q=l-i.gap,re=n+_/2,ne=Math.round((re-q/2)/l);return Math.max(0,Math.min(ne,y))}function U(){let n=Array.from(t.children);if(!m()){for(let l of n)l.style.scrollSnapAlign="";return}if(r.loopModeActive){for(let l of n)l.style.scrollSnapAlign="center";return}for(let l of n)l.style.scrollSnapAlign="center"}function G(){e.classList.remove("aero-slider--rtl","aero-slider--vertical"),e.removeAttribute("dir"),i.direction==="rtl"?(e.setAttribute("dir","rtl"),e.classList.add("aero-slider--rtl")):i.direction==="ttb"&&e.classList.add("aero-slider--vertical")}let N=new Set;function X(){let n=new Set,l=Math.ceil(i.slidesPerView);for(let y=0;y<l;y++){let x=r.currentIndex+y;if(r.loopModeActive)x=(x%o+o)%o;else if(x>=o)break;n.add(x)}return n}function Q(){let n=X();for(let l of N)n.has(l)||a("hidden",{index:l});for(let l of n)N.has(l)||a("visible",{index:l});N.clear();for(let l of n)N.add(l)}let j={container:e,track:t,get slides(){return v},get slideCount(){return o},get config(){return i},state:r,listeners:S,emit:a,getSlideSize:P,recalcSlideMetrics:H,normalizeIndex:I,getMaxIndex:h,getEffectivePerMove:C,isLoopEnabled:T,isFractionalView:m,isVertical:f,getScrollPos:b,setScrollPos:M,scrollToPos:D,getScrollPosForIndex:O,getIndexFromScrollPos:B,refreshPagination:()=>F.refresh(),refreshNavState:()=>Y.refresh(),applySnapAlignment:U},w=Ae(j),Y=Ie(j,te,ae),F=_e(j,Z),le=xe(j,te,ae),W=we(j,te),se=Ce(j,w,Z,W.pause,W.start);function ee(){if(r.isDragging||r.isProgrammaticScroll)return;let n=r.loopModeActive?w.getLoopIndexFromScroll():B(b());n!==r.currentIndex&&(r.currentIndex=n,a("slideChange",{index:r.currentIndex}),F.refresh(),Y.refresh(),Q())}function He(){p=null,r.isProgrammaticScroll=!1,K===null&&(t.style.scrollSnapType=""),ee()}function pe(){r.loopModeActive&&w.scheduleTeleport(),p!==null&&clearTimeout(p),p=setTimeout(He,be),L===null&&(L=requestAnimationFrame(()=>{L=null,ee()}))}let K=null;function ve(){r.isDragging||(t.style.scrollSnapType="none",K!==null&&clearTimeout(K),K=setTimeout(()=>{K=null,t.style.scrollSnapType=""},Te))}function ge(){if(H(),r.loopModeActive){let n=P();if(n>0){let l=w.getLoopRealStart(),y=l+r.currentIndex*n;if(m()){let x=R(),_=n-i.gap;y=l+r.currentIndex*n+_/2-x/2}M(y)}}else M(O(r.currentIndex))}function Se(){r.isDestroyed||(E===null&&(t.style.scrollSnapType="none",r.isProgrammaticScroll=!0),u===null&&(u=requestAnimationFrame(()=>{u=null,r.isDestroyed||ge()})),E!==null&&clearTimeout(E),E=setTimeout(()=>{E=null,!r.isDestroyed&&(ge(),r.isProgrammaticScroll=!1,t.style.scrollSnapType="")},fe))}let Re=["--slides-per-view","--slide-gap","--slide-aspect"];function ke(){A?.(),A=Le(e,Re,()=>{r.isDestroyed||(a("resize",{index:r.currentIndex}),Ee(),a("resized",{index:r.currentIndex}))},{debounceMs:fe,maxWaitMs:ye})}function te(){r.isDestroyed||Z(I(r.currentIndex+C()))}function ae(){r.isDestroyed||Z(I(r.currentIndex-C()))}function Z(n){if(r.isDestroyed)return;let l=I(n),y=P();if(y!==0){if(l!==r.currentIndex&&(r.currentIndex=l,a("slideChange",{index:r.currentIndex}),F.refresh(),Y.refresh(),Q()),r.loopModeActive){w.cancelTeleport(),r.isProgrammaticScroll=!0;let x=w.getLoopIndexFromScroll(),_=(l-x+o)%o,q=_-o,re=Math.abs(q)<_?q:_;if(re===0){let ne=w.getLoopRealStart(),oe=ne+l*y;if(m()){let Be=R(),Ue=y-i.gap;oe=ne+l*y+Ue/2-Be/2}D(oe,"smooth"),w.scheduleTeleport();return}D(b()+re*y,"smooth"),w.scheduleTeleport();return}r.isProgrammaticScroll=!0,D(O(l),"smooth")}}function Ee(n){let l=i;if(i={...i,...c(),...n??{}},l.direction!==i.direction&&G(),k(),H(),se.setEnabled(i.draggable),le.setEnabled(!0),W.setHoverPause(i.autoplay),(l.slidesPerView!==i.slidesPerView||l.loop!==i.loop||l.maxDots!==i.maxDots||l.perMove!==i.perMove)&&(F.clear(),F.build()),(l.autoplay!==i.autoplay||l.autoplayInterval!==i.autoplayInterval||l.loop!==i.loop)&&(i.autoplay?W.start():W.pause()),l.loop!==i.loop?T()?w.setupLoopTrack(r.currentIndex):w.teardownLoopTrack(r.currentIndex):r.loopModeActive&&l.slidesPerView!==i.slidesPerView&&w.setupLoopTrack(r.currentIndex),U(),!r.loopModeActive){let y=I(r.currentIndex);r.currentIndex=y,D(O(y))}ee(),F.refresh(),Y.refresh(),Q()}function de(){if(!r.isDestroyed&&(r.loopModeActive&&w.teardownLoopTrack(r.currentIndex),v=Array.from(t.children).filter(n=>!n.hasAttribute(z)),o=v.length,o!==0)){if(v.forEach((n,l)=>{n.setAttribute($,String(l)),n.classList.add("aero-slider__slide")}),k(),H(),T()&&w.setupLoopTrack(r.currentIndex),U(),!r.loopModeActive){let n=I(r.currentIndex);r.currentIndex=n,D(O(n))}F.clear(),F.build(),Y.build(),ee(),Q()}}function Ve(n,l){if(r.isDestroyed)return;let y=Array.isArray(n)?n:[n];r.loopModeActive&&w.teardownLoopTrack(r.currentIndex);let x=Array.from(t.children).filter(_=>!_.hasAttribute(z));if(l!==void 0&&l<x.length){let _=x[l]??null;for(let q of y)t.insertBefore(q,_)}else for(let _ of y)t.appendChild(_);de()}function Oe(n){if(r.isDestroyed)return;let l=Array.isArray(n)?n:[n];r.loopModeActive&&w.teardownLoopTrack(r.currentIndex);let y=Array.from(t.children).filter(_=>!_.hasAttribute(z)),x=[...l].sort((_,q)=>q-_);for(let _ of x)_>=0&&_<y.length&&y[_].remove();de()}function Ne(n,l){S.has(n)||S.set(n,new Set),S.get(n).add(l)}function Fe(n,l){S.get(n)?.delete(l)}function ze(){r.isDestroyed||(a("destroy",{index:r.currentIndex}),r.isDestroyed=!0,W.pause(),r.loopModeActive&&w.teardownLoopTrack(r.currentIndex),w.cancelTeleport(),r.isProgrammaticScroll=!1,A?.(),A=null,window.removeEventListener("resize",Se),E!==null&&(clearTimeout(E),E=null),u!==null&&(cancelAnimationFrame(u),u=null),t.removeEventListener("scroll",pe),t.removeEventListener("wheel",ve),K!==null&&clearTimeout(K),p!==null&&clearTimeout(p),se.setEnabled(!1),le.setEnabled(!1),W.setHoverPause(!1),L!==null&&cancelAnimationFrame(L),Y.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"),s.aeroSlider===ce&&delete s.aeroSlider,S.clear())}e.removeAttribute("data-aero-defer-visibility"),k(),e.classList.add("aero-slider"),e.setAttribute("aria-roledescription","carousel"),t.classList.add("aero-slider__track");for(let n of v)n.classList.add("aero-slider__slide");G(),k(),H(),U(),t.addEventListener("scroll",pe,{passive:!0}),t.addEventListener("wheel",ve,{passive:!0}),window.addEventListener("resize",Se),T()?w.setupLoopTrack(0):M(0),ke(),se.setEnabled(i.draggable),le.setEnabled(!0),W.setHoverPause(i.autoplay),Y.build(),F.build(),i.autoplay&&W.start();let We=X();for(let n of We)N.add(n);for(let n of N)a("visible",{index:n});let ce={get element(){return e},next:te,prev:ae,goTo:Z,destroy:ze,update:Ee,refresh:de,add:Ve,remove:Oe,on:Ne,off:Fe,get currentIndex(){return r.currentIndex},get slideCount(){return o}};return s.aeroSlider=ce,e.classList.add("aero-slider--ready"),a("ready",{index:r.currentIndex}),ce}var De="aero-slider__thumb--active";function me(e,g,s){e.querySelectorAll(":scope > *").forEach(t=>{let v=s(t);t.classList.toggle(De,v===g)})}function Pe(e,g,s){let d=e.clientWidth,t=e.scrollLeft,v=Array.from(e.children).filter(i=>s(i)===g);if(v.length===0)return;let o=0,c=1/0;for(let i of v){let S=i.offsetLeft+i.offsetWidth/2-d/2,L=e.scrollWidth-d,p=Math.max(0,Math.min(S,L)),A=Math.abs(p-t);A<c&&(c=A,o=p)}e.scrollTo({left:o,behavior:"smooth"})}function Xe(e,g,s){let d=g.element.querySelector(".aero-slider__track");if(!d)return()=>{};let t=d,v=s?.loop??!0;g.update({draggable:!1,loop:v});let o=Array.from(t.children).filter(u=>u.hasAttribute("data-aero-slider-index"));o.sort((u,a)=>Number(u.getAttribute("data-aero-slider-index"))-Number(a.getAttribute("data-aero-slider-index")));let c=o.length,i=Array.from(t.children).indexOf(o[0]??t),r=[];function S(u){let a=u.getAttribute("data-aero-slider-index");if(a!==null)return Number(a);let f=Array.from(t.children).indexOf(u);return f<i?f%c:(f-i-c)%c}let L=null,p=null;Array.from(t.children).forEach(u=>{let a=u,f=()=>{let h=S(a);L=h,me(t,h,S),e.goTo(h)};a.addEventListener("click",f),a.style.cursor="pointer",r.push({el:a,fn:f})});let A=null,E=u=>{if(L!==null){u.index===L?(p!==null&&clearTimeout(p),p=setTimeout(()=>{p=null,L=null},200)):p!==null&&(clearTimeout(p),p=null);return}A!==null&&clearTimeout(A),A=setTimeout(()=>{A=null,me(t,u.index,S),Pe(t,u.index,S)},50)};return e.on("slideChange",E),me(t,e.currentIndex,S),Pe(t,e.currentIndex,S),()=>{A!==null&&clearTimeout(A),p!==null&&clearTimeout(p),L=null,r.forEach(({el:u,fn:a})=>u.removeEventListener("click",a)),t.querySelectorAll(":scope > *").forEach(u=>u.classList.remove(De)),e.off("slideChange",E)}}export{Ke as createSlider,Xe as syncThumbnails};
|