use-scroll-animate 1.2.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/presets.ts","../src/core.ts","../src/react.ts","../src/vue.ts","../src/index.ts"],"sourcesContent":["/**\n * use-scroll-animate - Animation Presets\n * Defines keyframes for all built-in animation presets\n */\n\nimport type { AnimationPreset, CustomAnimation } from './types';\n\ntype KeyframeMap = {\n from: Record<string, string | number>;\n to: Record<string, string | number>;\n};\n\nexport const PRESETS: Record<AnimationPreset, KeyframeMap> = {\n 'fade-in': {\n from: { opacity: 0 },\n to: { opacity: 1 },\n },\n 'fade-in-up': {\n from: { opacity: 0, transform: 'translateY(40px)' },\n to: { opacity: 1, transform: 'translateY(0)' },\n },\n 'fade-in-down': {\n from: { opacity: 0, transform: 'translateY(-40px)' },\n to: { opacity: 1, transform: 'translateY(0)' },\n },\n 'fade-in-left': {\n from: { opacity: 0, transform: 'translateX(-40px)' },\n to: { opacity: 1, transform: 'translateX(0)' },\n },\n 'fade-in-right': {\n from: { opacity: 0, transform: 'translateX(40px)' },\n to: { opacity: 1, transform: 'translateX(0)' },\n },\n 'zoom-in': {\n from: { opacity: 0, transform: 'scale(0.8)' },\n to: { opacity: 1, transform: 'scale(1)' },\n },\n 'zoom-out': {\n from: { opacity: 0, transform: 'scale(1.2)' },\n to: { opacity: 1, transform: 'scale(1)' },\n },\n 'flip-x': {\n from: { opacity: 0, transform: 'rotateX(-90deg)' },\n to: { opacity: 1, transform: 'rotateX(0)' },\n },\n 'flip-y': {\n from: { opacity: 0, transform: 'rotateY(-90deg)' },\n to: { opacity: 1, transform: 'rotateY(0)' },\n },\n 'slide-up': {\n from: { transform: 'translateY(100%)' },\n to: { transform: 'translateY(0)' },\n },\n 'slide-down': {\n from: { transform: 'translateY(-100%)' },\n to: { transform: 'translateY(0)' },\n },\n 'slide-left': {\n from: { transform: 'translateX(-100%)' },\n to: { transform: 'translateX(0)' },\n },\n 'slide-right': {\n from: { transform: 'translateX(100%)' },\n to: { transform: 'translateX(0)' },\n },\n 'bounce': {\n from: { opacity: 0, transform: 'translateY(-60px)' },\n to: { opacity: 1, transform: 'translateY(0)' },\n },\n 'rotate-in': {\n from: { opacity: 0, transform: 'rotate(-180deg) scale(0.5)' },\n to: { opacity: 1, transform: 'rotate(0deg) scale(1)' },\n },\n 'blur-in': {\n from: { opacity: 0, filter: 'blur(12px)' },\n to: { opacity: 1, filter: 'blur(0px)' },\n },\n 'skew-in': {\n from: { opacity: 0, transform: 'skewX(20deg) translateX(30px)' },\n to: { opacity: 1, transform: 'skewX(0deg) translateX(0)' },\n },\n 'scale-x': {\n from: { transform: 'scaleX(0)' },\n to: { transform: 'scaleX(1)' },\n },\n 'scale-y': {\n from: { transform: 'scaleY(0)' },\n to: { transform: 'scaleY(1)' },\n },\n 'shimmer': {\n from: { opacity: 0.5, filter: 'brightness(1)' },\n to: { opacity: 1, filter: 'brightness(1.5)' },\n },\n 'pulse': {\n from: { transform: 'scale(1)' },\n to: { transform: 'scale(1.05)' },\n },\n 'swing': {\n from: { transform: 'rotate(-10deg)' },\n to: { transform: 'rotate(10deg)' },\n },\n};\n\nexport function resolvePreset(animation: AnimationPreset | AnimationPreset[] | CustomAnimation): KeyframeMap {\n if (typeof animation === 'string') {\n return PRESETS[animation] ?? PRESETS['fade-in-up'];\n }\n \n if (Array.isArray(animation)) {\n const combined: KeyframeMap = { from: {}, to: {} };\n animation.forEach(name => {\n const preset = PRESETS[name];\n if (preset) {\n Object.entries(preset.from).forEach(([key, val]) => {\n if (key === 'transform' && combined.from[key]) {\n combined.from[key] = `${combined.from[key]} ${val}`;\n } else {\n combined.from[key] = val;\n }\n });\n Object.entries(preset.to).forEach(([key, val]) => {\n if (key === 'transform' && combined.to[key]) {\n combined.to[key] = `${combined.to[key]} ${val}`;\n } else {\n combined.to[key] = val;\n }\n });\n }\n });\n return combined;\n }\n \n return animation;\n}\n\n/** Easing to CSS cubic-bezier mapping */\nexport const EASING_MAP: Record<string, string> = {\n linear: 'linear',\n ease: 'ease',\n 'ease-in': 'ease-in',\n 'ease-out': 'ease-out',\n 'ease-in-out': 'ease-in-out',\n spring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n};\n\nexport function resolveEasing(easing: string): string {\n return EASING_MAP[easing] ?? easing;\n}\n","/**\n * use-scroll-animate - Core Implementation\n * Uses IntersectionObserver + Web Animations API for zero-dependency,\n * high-performance scroll-triggered animations.\n */\n\nimport type {\n AnimateOptions,\n AnimatedElement,\n ScrollAnimateConfig,\n ScrollAnimateInstance,\n ParallaxOptions,\n} from './types';\nimport { resolvePreset, resolveEasing } from './presets';\n\nconst DEFAULT_CONFIG: Required<ScrollAnimateConfig> = {\n defaultAnimation: 'fade-in-up',\n defaultDuration: 600,\n defaultDelay: 0,\n defaultEasing: 'ease',\n defaultThreshold: 0.1,\n defaultRootMargin: '0px',\n defaultRepeat: false,\n defaultOnce: true,\n defaultOffset: 0,\n hiddenClass: 'sa-hidden',\n visibleClass: 'sa-visible',\n useClassNames: false,\n disabled: false,\n root: null,\n};\n\nconst DEFAULT_OPTIONS: Required<AnimateOptions> = {\n animation: 'fade-in-up',\n duration: 600,\n delay: 0,\n easing: 'ease',\n threshold: 0.1,\n rootMargin: '0px',\n repeat: false,\n once: true,\n offset: 0,\n stagger: 0,\n parallax: {},\n onStart: () => undefined,\n onComplete: () => undefined,\n onEnter: () => undefined,\n onLeave: () => undefined,\n onProgress: () => undefined,\n};\n\nfunction parseDataAttributes(el: Element, config: Required<ScrollAnimateConfig>): Required<AnimateOptions> {\n const dataset = (el as HTMLElement).dataset;\n const opts: AnimateOptions = {};\n\n if (dataset.saAnimation) {\n const anim = dataset.saAnimation;\n opts.animation = anim.includes(',') \n ? anim.split(',').map(s => s.trim()) as any \n : anim as any;\n }\n if (dataset.saDuration) opts.duration = parseInt(dataset.saDuration, 10);\n if (dataset.saDelay) opts.delay = parseInt(dataset.saDelay, 10);\n if (dataset.saEasing) opts.easing = dataset.saEasing;\n if (dataset.saThreshold) {\n const t = dataset.saThreshold;\n opts.threshold = t.includes(',') ? t.split(',').map(parseFloat) : parseFloat(t);\n }\n if (dataset.saRootMargin) opts.rootMargin = dataset.saRootMargin;\n if (dataset.saRepeat !== undefined) opts.repeat = dataset.saRepeat !== 'false';\n if (dataset.saOnce !== undefined) opts.once = dataset.saOnce !== 'false';\n if (dataset.saOffset) opts.offset = parseInt(dataset.saOffset, 10);\n if (dataset.saStagger) opts.stagger = parseInt(dataset.saStagger, 10);\n \n if (dataset.saParallaxX || dataset.saParallaxY || dataset.saParallaxRotate || dataset.saParallaxScale) {\n opts.parallax = {\n x: dataset.saParallaxX,\n y: dataset.saParallaxY,\n rotate: dataset.saParallaxRotate ? parseFloat(dataset.saParallaxRotate) : undefined,\n scale: dataset.saParallaxScale ? parseFloat(dataset.saParallaxScale) : undefined,\n speed: dataset.saParallaxSpeed ? parseFloat(dataset.saParallaxSpeed) : 1,\n };\n }\n\n return mergeOptions(opts, config);\n}\n\nfunction mergeOptions(\n opts: AnimateOptions,\n config: Required<ScrollAnimateConfig>\n): Required<AnimateOptions> {\n const repeat = opts.repeat ?? config.defaultRepeat;\n return {\n animation: opts.animation ?? config.defaultAnimation,\n duration: opts.duration ?? config.defaultDuration,\n delay: opts.delay ?? config.defaultDelay,\n easing: opts.easing ?? config.defaultEasing,\n threshold: opts.threshold ?? config.defaultThreshold,\n rootMargin: opts.rootMargin ?? config.defaultRootMargin,\n repeat: repeat,\n once: opts.once ?? (repeat ? false : config.defaultOnce),\n offset: opts.offset ?? config.defaultOffset,\n stagger: opts.stagger ?? DEFAULT_OPTIONS.stagger,\n parallax: opts.parallax ?? DEFAULT_OPTIONS.parallax,\n onStart: opts.onStart ?? DEFAULT_OPTIONS.onStart,\n onComplete: opts.onComplete ?? DEFAULT_OPTIONS.onComplete,\n onEnter: opts.onEnter ?? DEFAULT_OPTIONS.onEnter,\n onLeave: opts.onLeave ?? DEFAULT_OPTIONS.onLeave,\n onProgress: opts.onProgress ?? DEFAULT_OPTIONS.onProgress,\n };\n}\n\nfunction resolveTargets(target: string | Element | NodeList | Element[]): Element[] {\n if (typeof target === 'string') {\n return Array.from(document.querySelectorAll(target));\n }\n if (target instanceof Element) {\n return [target];\n }\n if (target instanceof NodeList) {\n return Array.from(target) as Element[];\n }\n if (Array.isArray(target)) {\n return target;\n }\n return [];\n}\n\nfunction prefersReducedMotion(): boolean {\n return window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n}\n\nfunction runAnimation(\n el: Element,\n opts: Required<AnimateOptions>,\n config: Required<ScrollAnimateConfig>,\n staggerIndex = 0\n): void {\n const { animation, duration, delay, easing, stagger, onStart, onComplete } = opts;\n const totalDelay = delay + staggerIndex * stagger;\n const preset = resolvePreset(animation);\n const easingValue = resolveEasing(easing);\n\n if (config.useClassNames) {\n if (totalDelay > 0) {\n (el as HTMLElement).style.animationDelay = `${totalDelay}ms`;\n }\n el.classList.remove(config.hiddenClass);\n el.classList.add(config.visibleClass);\n onStart(el);\n setTimeout(() => onComplete(el), duration + totalDelay);\n return;\n }\n\n const keyframes: Keyframe[] = [\n preset.from as Keyframe,\n preset.to as Keyframe,\n ];\n\n const timing: KeyframeAnimationOptions = {\n duration,\n delay: totalDelay,\n easing: easingValue,\n fill: 'both',\n };\n\n // Check if Web Animations API is supported\n if (typeof el.animate === 'function') {\n const anim = el.animate(keyframes, timing);\n onStart(el);\n anim.onfinish = () => onComplete(el);\n } else {\n // Fallback for older browsers\n (el as HTMLElement).style.opacity = '1';\n (el as HTMLElement).style.transform = 'none';\n onStart(el);\n onComplete(el);\n }\n}\n\nfunction applyParallax(el: Element, progress: number, parallax: ParallaxOptions): void {\n const { x = 0, y = 0, rotate = 0, scale = 1, speed = 1 } = parallax;\n const p = (progress - 0.5) * 2 * speed;\n \n let transform = '';\n if (x) transform += ` translateX(${typeof x === 'number' ? x * p + 'px' : 'calc(' + x + ' * ' + p + ')'})`;\n if (y) transform += ` translateY(${typeof y === 'number' ? y * p + 'px' : 'calc(' + y + ' * ' + p + ')'})`;\n if (rotate) transform += ` rotate(${rotate * p}deg)`;\n if (scale !== 1) transform += ` scale(${1 + (scale - 1) * p})`;\n \n (el as HTMLElement).style.transform = transform;\n}\n\nfunction hideElement(el: Element, config: Required<ScrollAnimateConfig>): void {\n if (config.useClassNames) {\n el.classList.add(config.hiddenClass);\n el.classList.remove(config.visibleClass);\n } else {\n (el as HTMLElement).style.opacity = '0';\n }\n}\n\nexport function createScrollAnimate(userConfig: ScrollAnimateConfig = {}): ScrollAnimateInstance {\n let config: Required<ScrollAnimateConfig> = { ...DEFAULT_CONFIG, ...userConfig };\n const registry = new Map<Element, AnimatedElement>();\n\n function createObserver(opts: Required<AnimateOptions>): IntersectionObserver {\n // Handle offset by adjusting rootMargin\n const rootMargin = opts.offset !== 0 \n ? `${opts.rootMargin.split(' ')[0]} 0px -${opts.offset}px 0px`\n : opts.rootMargin;\n\n return new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const record = registry.get(entry.target);\n if (!record) return;\n\n if (entry.isIntersecting) {\n opts.onEnter(entry.target);\n\n if (!record.animated || opts.repeat) {\n const parent = entry.target.parentElement;\n let staggerIndex = 0;\n if (parent && opts.stagger > 0) {\n // BUG FIX: Use a more robust way to find index among siblings that are also observed\n const siblings = Array.from(parent.children).filter((c) => registry.has(c));\n staggerIndex = siblings.indexOf(entry.target);\n }\n\n if (!config.disabled && !prefersReducedMotion()) {\n runAnimation(entry.target, opts, config, staggerIndex);\n } else {\n (entry.target as HTMLElement).style.opacity = '1';\n (entry.target as HTMLElement).style.transform = '';\n }\n\n record.animated = true;\n \n // Handle 'once' functionality\n if (opts.once) {\n record.observer.unobserve(entry.target);\n record.progressObserver?.unobserve(entry.target);\n // We don't delete from registry yet to allow other potential interactions\n }\n }\n } else {\n opts.onLeave(entry.target);\n if (opts.repeat && record.animated) {\n hideElement(entry.target, config);\n record.animated = false;\n }\n }\n });\n },\n {\n threshold: typeof opts.threshold === 'number' ? opts.threshold : opts.threshold[0],\n rootMargin: rootMargin,\n root: config.root,\n }\n );\n }\n\n function createProgressObserver(el: Element, opts: Required<AnimateOptions>): IntersectionObserver {\n const thresholds = [];\n for (let i = 0; i <= 100; i++) thresholds.push(i / 100);\n\n return new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const progress = entry.intersectionRatio;\n opts.onProgress(el, progress);\n \n if (Object.keys(opts.parallax).length > 0) {\n applyParallax(el, progress, opts.parallax);\n }\n });\n },\n {\n threshold: thresholds,\n rootMargin: opts.rootMargin,\n root: config.root,\n }\n );\n }\n\n function observeElement(el: Element, opts: Required<AnimateOptions>): void {\n if (registry.has(el)) return;\n\n if (!config.useClassNames) {\n hideElement(el, config);\n }\n\n const observer = createObserver(opts);\n observer.observe(el);\n\n let progressObserver;\n if (Object.keys(opts.parallax).length > 0 || opts.onProgress !== DEFAULT_OPTIONS.onProgress) {\n progressObserver = createProgressObserver(el, opts);\n progressObserver.observe(el);\n }\n\n registry.set(el, { \n element: el, \n options: opts, \n observer, \n animated: false,\n progressObserver \n });\n }\n\n const instance: ScrollAnimateInstance = {\n observe(target, options = {}) {\n const elements = resolveTargets(target);\n const opts = mergeOptions(options, config);\n elements.forEach((el) => observeElement(el, opts));\n },\n\n unobserve(target) {\n const elements = resolveTargets(target);\n elements.forEach((el) => {\n const record = registry.get(el);\n if (record) {\n record.observer.disconnect(); // BUG FIX: Use disconnect for better cleanup\n record.progressObserver?.disconnect();\n registry.delete(el);\n }\n });\n },\n\n init(rootElement = document) {\n const elements = rootElement.querySelectorAll('[data-sa]');\n elements.forEach((el) => {\n const opts = parseDataAttributes(el, config);\n observeElement(el, opts);\n });\n },\n\n destroy() {\n registry.forEach((record) => {\n record.observer.disconnect();\n record.progressObserver?.disconnect();\n });\n registry.clear();\n },\n\n refresh() {\n const entries = Array.from(registry.entries());\n instance.destroy();\n entries.forEach(([el, record]) => {\n observeElement(el, record.options);\n });\n },\n\n animate(target, options = {}) {\n const elements = resolveTargets(target);\n const opts = mergeOptions(options, config);\n elements.forEach((el) => {\n runAnimation(el, opts, config, 0);\n });\n },\n\n getObservedElements() {\n return Array.from(registry.values());\n },\n\n configure(newConfig) {\n config = { ...config, ...newConfig };\n },\n };\n\n return instance;\n}\n","/**\n * use-scroll-animate - React Integration\n * Provides useScrollAnimate and useScrollRef hooks for React applications.\n */\n\nimport type { AnimateOptions } from './types';\nimport { resolvePreset, resolveEasing } from './presets';\n\ntype ReactRef<T> = { current: T | null };\n\nexport function createReactHooks(React: {\n useRef: <T>(initial: T | null) => ReactRef<T>;\n useEffect: (effect: () => (() => void) | void, deps?: unknown[]) => void;\n}) {\n function useScrollAnimate(options: AnimateOptions = {}) {\n const ref = React.useRef<Element>(null);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const {\n animation = 'fade-in-up',\n duration = 600,\n delay = 0,\n easing = 'ease',\n threshold = 0.1,\n rootMargin = '0px',\n repeat = false,\n parallax = {},\n onStart,\n onComplete,\n onEnter,\n onLeave,\n onProgress,\n } = options;\n\n const preset = resolvePreset(animation);\n const easingValue = resolveEasing(easing);\n let animated = false;\n\n (el as HTMLElement).style.opacity = '0';\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n onEnter?.(el);\n if (!animated || repeat) {\n const keyframes: Keyframe[] = [\n preset.from as Keyframe,\n preset.to as Keyframe,\n ];\n const anim = el.animate(keyframes, {\n duration,\n delay,\n easing: easingValue,\n fill: 'both',\n });\n onStart?.(el);\n anim.onfinish = () => onComplete?.(el);\n animated = true;\n if (!repeat && !Object.keys(parallax).length && !onProgress) {\n observer.unobserve(el);\n }\n }\n } else {\n onLeave?.(el);\n if (repeat && animated) {\n (el as HTMLElement).style.opacity = '0';\n animated = false;\n }\n }\n });\n },\n { threshold: typeof threshold === 'number' ? threshold : threshold[0], rootMargin }\n );\n\n let progressObserver: IntersectionObserver | null = null;\n if (Object.keys(parallax).length > 0 || onProgress) {\n const thresholds = [];\n for (let i = 0; i <= 100; i++) thresholds.push(i / 100);\n \n progressObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const progress = entry.intersectionRatio;\n onProgress?.(el, progress);\n \n if (Object.keys(parallax).length > 0) {\n const { x = 0, y = 0, rotate = 0, scale = 1, speed = 1 } = parallax;\n const p = (progress - 0.5) * 2 * speed;\n let transform = '';\n if (x) transform += ` translateX(${typeof x === 'number' ? x * p + 'px' : 'calc(' + x + ' * ' + p + ')'})`;\n if (y) transform += ` translateY(${typeof y === 'number' ? y * p + 'px' : 'calc(' + y + ' * ' + p + ')'})`;\n if (rotate) transform += ` rotate(${rotate * p}deg)`;\n if (scale !== 1) transform += ` scale(${1 + (scale - 1) * p})`;\n (el as HTMLElement).style.transform = transform;\n }\n });\n },\n { threshold: thresholds, rootMargin }\n );\n progressObserver.observe(el);\n }\n\n observer.observe(el);\n return () => {\n observer.disconnect();\n progressObserver?.disconnect();\n };\n }, []);\n\n return ref;\n }\n\n function useScrollStagger(options: AnimateOptions & { stagger?: number } = {}) {\n const ref = React.useRef<Element>(null);\n\n React.useEffect(() => {\n const container = ref.current;\n if (!container) return;\n\n const {\n animation = 'fade-in-up',\n duration = 600,\n delay = 0,\n easing = 'ease',\n threshold = 0.1,\n rootMargin = '0px',\n stagger = 80,\n } = options;\n\n const children = Array.from(container.children) as HTMLElement[];\n const preset = resolvePreset(animation);\n const easingValue = resolveEasing(easing);\n\n children.forEach((child) => {\n child.style.opacity = '0';\n });\n\n let animated = false;\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting && !animated) {\n animated = true;\n children.forEach((child, i) => {\n child.animate(\n [preset.from as Keyframe, preset.to as Keyframe],\n {\n duration,\n delay: delay + i * stagger,\n easing: easingValue,\n fill: 'both',\n }\n );\n });\n observer.unobserve(container);\n }\n });\n },\n { threshold: typeof threshold === 'number' ? threshold : threshold[0], rootMargin }\n );\n\n observer.observe(container);\n return () => observer.disconnect();\n }, []);\n\n return ref;\n }\n\n return { useScrollAnimate, useScrollStagger };\n}\n","/**\n * use-scroll-animate - Vue 3 Integration\n * Provides useScrollAnimate composable for Vue 3 applications.\n */\n\nimport type { AnimateOptions } from './types';\nimport { resolvePreset, resolveEasing } from './presets';\n\nexport function createVueComposables(Vue: {\n ref: <T>(value: T | null) => { value: T | null };\n onMounted: (fn: () => void) => void;\n onUnmounted: (fn: () => void) => void;\n}) {\n function useScrollAnimate(options: AnimateOptions = {}) {\n const animateRef = Vue.ref<Element>(null);\n let observer: IntersectionObserver | null = null;\n let progressObserver: IntersectionObserver | null = null;\n\n Vue.onMounted(() => {\n const el = animateRef.value;\n if (!el) return;\n\n const {\n animation = 'fade-in-up',\n duration = 600,\n delay = 0,\n easing = 'ease',\n threshold = 0.1,\n rootMargin = '0px',\n repeat = false,\n parallax = {},\n onStart,\n onComplete,\n onEnter,\n onLeave,\n onProgress,\n } = options;\n\n const preset = resolvePreset(animation);\n const easingValue = resolveEasing(easing);\n let animated = false;\n\n (el as HTMLElement).style.opacity = '0';\n\n observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n onEnter?.(el);\n if (!animated || repeat) {\n const anim = el.animate(\n [preset.from as Keyframe, preset.to as Keyframe],\n {\n duration,\n delay,\n easing: easingValue,\n fill: 'both',\n }\n );\n onStart?.(el);\n anim.onfinish = () => onComplete?.(el);\n animated = true;\n if (!repeat && !Object.keys(parallax).length && !onProgress) {\n observer?.unobserve(el);\n }\n }\n } else {\n onLeave?.(el);\n if (repeat && animated) {\n (el as HTMLElement).style.opacity = '0';\n animated = false;\n }\n }\n });\n },\n { threshold: typeof threshold === 'number' ? threshold : threshold[0], rootMargin }\n );\n\n if (Object.keys(parallax).length > 0 || onProgress) {\n const thresholds = [];\n for (let i = 0; i <= 100; i++) thresholds.push(i / 100);\n \n progressObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const progress = entry.intersectionRatio;\n onProgress?.(el, progress);\n \n if (Object.keys(parallax).length > 0) {\n const { x = 0, y = 0, rotate = 0, scale = 1, speed = 1 } = parallax;\n const p = (progress - 0.5) * 2 * speed;\n let transform = '';\n if (x) transform += ` translateX(${typeof x === 'number' ? x * p + 'px' : 'calc(' + x + ' * ' + p + ')'})`;\n if (y) transform += ` translateY(${typeof y === 'number' ? y * p + 'px' : 'calc(' + y + ' * ' + p + ')'})`;\n if (rotate) transform += ` rotate(${rotate * p}deg)`;\n if (scale !== 1) transform += ` scale(${1 + (scale - 1) * p})`;\n (el as HTMLElement).style.transform = transform;\n }\n });\n },\n { threshold: thresholds, rootMargin }\n );\n progressObserver.observe(el);\n }\n\n observer.observe(el);\n });\n\n Vue.onUnmounted(() => {\n observer?.disconnect();\n progressObserver?.disconnect();\n });\n\n return { animateRef };\n }\n\n return { useScrollAnimate };\n}\n","/**\n * use-scroll-animate\n *\n * A lightweight (~4KB gzipped), dependency-free scroll animation library\n * for modern web applications. Built with TypeScript, powered by\n * IntersectionObserver and the Web Animations API.\n *\n * @version 1.0.0\n * @license MIT\n * @see https://github.com/use-scroll-animate/use-scroll-animate\n */\n\nexport { createScrollAnimate } from './core';\nexport { PRESETS, resolvePreset, resolveEasing, EASING_MAP } from './presets';\nexport { createReactHooks } from './react';\nexport { createVueComposables } from './vue';\n\nexport type {\n AnimationPreset,\n EasingType,\n AnimationKeyframe,\n CustomAnimation,\n AnimateOptions,\n ScrollAnimateConfig,\n AnimatedElement,\n ScrollAnimateInstance,\n} from './types';\n\n// Default export: a ready-to-use singleton instance\nimport { createScrollAnimate } from './core';\n\n/**\n * Default singleton instance of ScrollAnimate.\n * Ready to use out of the box with sensible defaults.\n *\n * @example\n * ```js\n * import ScrollAnimate from 'use-scroll-animate';\n *\n * // Auto-initialize all elements with data-sa attribute\n * ScrollAnimate.init();\n *\n * // Or manually observe elements\n * ScrollAnimate.observe('.my-element', { animation: 'fade-in-up' });\n * ```\n */\nconst ScrollAnimate = createScrollAnimate();\nexport default ScrollAnimate;\n"],"names":[],"mappings":"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"}