@ngfly/carousel
Version:
A smooth, customizable carousel component for Angular 17+ applications
1 lines • 1.46 kB
JavaScript
export const easings={linear:e=>e,ease:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>e*(2-e),easeInOutQuad:e=>e<.5?2*e*e:(4-2*e)*e-1,easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1};export function getCssTimingFunction(e){switch(e){case"linear":return easings.linear;case"ease-in":return easings.easeInQuad;case"ease-out":return easings.easeOutQuad;case"ease-in-out":default:return easings.easeInOutQuad;case"ease":return easings.ease}}export function createTranslation(e,n){return n?`translateY(-${e}px)`:`translateX(-${e}px)`}export function parseTimeToMs(e,n=300){return e?e.endsWith("ms")?parseInt(e,10):e.endsWith("s")?1e3*parseFloat(e):parseInt(e,10)||n:n}export function calculateScrollAmount(e,n,t,s=.8){if(!e)return n*s;if(e.endsWith("%")){return n*(parseFloat(e)/100)}return t[e]?t[e]:e.endsWith("px")?parseFloat(e):n*s}export function smoothScroll(e,n,t=300,s=easings.easeInOutQuad){return new Promise((r=>{const a=e.scrollLeft,o=n-a,i=performance.now();requestAnimationFrame((function u(c){const l=c-i;if(l>=t)return e.scrollLeft=n,void r();const p=s(l/t);e.scrollLeft=a+o*p,requestAnimationFrame(u)}))}))}export function smoothScrollVertical(e,n,t=300,s=easings.easeInOutQuad){return new Promise((r=>{const a=e.scrollTop,o=n-a,i=performance.now();requestAnimationFrame((function u(c){const l=c-i;if(l>=t)return e.scrollTop=n,void r();const p=s(l/t);e.scrollTop=a+o*p,requestAnimationFrame(u)}))}))}