UNPKG

@rootenginear/svelte-action-motionone

Version:

Unofficial Svelte Action for Motion One animation library

59 lines (58 loc) 1.65 kB
import { scroll as motionScroll } from 'motion'; const createScroll = (node) => (params) => { const [onScroll, options] = typeof params === 'function' ? params(node) : params; return motionScroll(onScroll, options); }; export const scroll = (node, params) => { const instanceScroll = createScroll(node); let stop = instanceScroll(params); return { update(params) { stop(); stop = instanceScroll(params); }, destroy() { stop(); } }; }; const createContainerScroll = (node) => (params) => { const [onScroll, options] = typeof params === 'function' ? params(node) : params; return motionScroll(onScroll, { ...options, container: options?.container ?? node }); }; export const containerScroll = (node, params) => { const instanceScroll = createContainerScroll(node); let stop = instanceScroll(params); return { update(params) { stop(); stop = instanceScroll(params); }, destroy() { stop(); } }; }; const createScrollInView = (node) => (params) => { const [onScroll, options] = typeof params === 'function' ? params(node) : params; return motionScroll(onScroll, { ...options, target: options?.target ?? node }); }; export const scrollInView = (node, params) => { const instanceScroll = createScrollInView(node); let stop = instanceScroll(params); return { update(params) { stop(); stop = instanceScroll(params); }, destroy() { stop(); } }; };