#![cfg_attr(not(feature = "std"), no_std)]
#![forbid(unsafe_code)]
#![warn(missing_docs, missing_debug_implementations)]
#[cfg(not(feature = "std"))]
extern crate alloc;
pub mod easing;
pub mod traits;
pub mod tween;
pub mod keyframe;
pub mod timeline;
pub mod spring;
pub mod clock;
pub mod driver;
pub mod scroll;
pub mod path;
pub mod bezier;
pub mod motion_path;
pub mod svg_path;
pub mod svg_draw;
pub mod morph;
pub mod inertia;
pub mod drag;
pub mod integrations;
#[cfg(feature = "palette")]
pub mod colour;
pub use easing::Easing;
pub use traits::{Animatable, Interpolate, Update};
pub use tween::{Tween, TweenState, snap_to, round_to};
pub use keyframe::{KeyframeTrack, Keyframe, Loop};
pub use timeline::{Timeline, Sequence, At, stagger};
pub use spring::{Spring, SpringConfig, SpringN, SpringAnimatable};
pub use driver::{AnimationDriver, AnimationId};
pub use clock::{Clock, ManualClock, MockClock};
pub use scroll::{ScrollClock, ScrollDriver};
pub use path::{BezierPath, MotionPath, MotionPathTween, PathEvaluate};
pub use bezier::{CatmullRomSpline, PathEvaluate2D, tangent_angle, tangent_angle_deg};
pub use motion_path::{PolyPath, CompoundPath, PathCommand};
pub use svg_path::SvgPathParser;
pub use svg_draw::{draw_on, draw_on_reverse};
pub use morph::{MorphPath, resample};
pub use inertia::{Inertia, InertiaN, InertiaConfig};
pub use drag::{DragState, DragConstraints, DragAxis, PointerData};
#[cfg(feature = "std")]
pub use clock::WallClock;
#[cfg(feature = "palette")]
pub use colour::{lerp_in_lab, lerp_in_linear, lerp_in_oklch, InLab, InLinear, InOklch};