UNPKG

resig.js

Version:

Universal reactive signal library with complete platform features: signals, animations, CRDTs, scheduling, DOM integration. Works identically across React, SolidJS, Svelte, Vue, and Qwik.

43 lines (42 loc) 2.64 kB
/** * Animation-Signal Integration * Reactive signals that drive UI updates from animation state changes */ import { Signal } from '../core/signal'; import { Animation, EasingFunction, Interpolator } from './core'; export interface AnimatedSignal<T> extends Signal<T> { readonly animation: Signal<Animation<T> | null>; readonly isAnimating: Signal<boolean>; readonly progress: Signal<number>; readonly animateTo: (target: T, duration?: number, easing?: EasingFunction) => Promise<T>; readonly setImmediate: (value: T) => void; readonly stop: () => void; } export interface SpringConfig { readonly tension: number; readonly friction: number; readonly mass: number; readonly precision: number; } export interface SpringSignal<T> extends AnimatedSignal<T> { readonly config: Signal<SpringConfig>; readonly velocity: Signal<number>; readonly setConfig: (config: Partial<SpringConfig>) => void; } export declare const animatedSignal: <T>(initial: T, interpolator: Interpolator<T>, defaultDuration?: number, defaultEasing?: EasingFunction) => AnimatedSignal<T>; export declare const springSignal: <T>(initial: T, interpolator: Interpolator<T>, config?: SpringConfig) => SpringSignal<T>; export declare const animatedNumber: (initial: number, duration?: number, easing?: EasingFunction) => AnimatedSignal<number>; export declare const springNumber: (initial: number, config?: Partial<SpringConfig>) => SpringSignal<number>; export declare const animatedColor: (initial: string, duration?: number, easing?: EasingFunction) => AnimatedSignal<string>; export declare const animatedArray: <T>(initial: T[], itemInterpolator: Interpolator<T>, duration?: number, easing?: EasingFunction) => AnimatedSignal<T[]>; export declare const useAnimatedValue: <T>(sourceSignal: Signal<T>, interpolator: Interpolator<T>, duration?: number, easing?: EasingFunction) => AnimatedSignal<T>; export declare const springFromSignal: <T>(sourceSignal: Signal<T>, interpolator: Interpolator<T>, config?: Partial<SpringConfig>) => SpringSignal<T>; export declare const sequence: <T>(signal: AnimatedSignal<T>, values: T[], duration?: number, easing?: EasingFunction) => Promise<T>; export declare const loop: <T>(signal: AnimatedSignal<T>, values: T[], duration?: number, easing?: EasingFunction, iterations?: number) => { stop: () => void; }; export declare const gestureSignal: <T>(initial: T, interpolator: Interpolator<T>) => AnimatedSignal<T> & { readonly startGesture: (target: T) => void; readonly updateGesture: (progress: number) => void; readonly endGesture: (velocity?: number) => void; };