npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

use-anim

v2.0.0

Published

A super small hook-based animation library for React

Downloads

7

Readme

use-anim

minified size npm version

Super small easy-to-use hook-based animation library for React.

  • Zero dependencies
  • Written in TypeScript
  • Very small code-base

Check it out on CodeSandbox!

Installation

npm install use-anim

or

yarn add use-anim

Usage

import React, {useState} from 'react'
import { useAnim, easing } from 'use-anim'

// A component that makes its children
// appear with a fancy fade animation
const FadeReveal = ({ children }) => {
  const [opacity, setOpacity] = useState(0)
  const [translation, setTranslation] = useState(-30)

  useAnim({
    duration: 500,
    easing: easing.easeOutQuad,
  }, t => {
    setOpacity(t)
    setTranslation(-30*(1-t))
  })

  return (
    <div style={{ opacity, transform: `translateY(${translation}px)`}}>
      {children}
    </div>
  )
}

AnimationConfig

To start an animation you give useAnim an object compatible with the following interface as the first parameter:

interface AnimationConfig {
  duration: number,
  easing?: Easing,
  started?: boolean,
  playMode?: PlayMode,
}

duration: How long does the animation run in milliseconds.

easing: A function that accepts a value t in range 0-1 and returns a modified number in the same range. This is used to get a more smooth animation.

started: If the animation should not start automatically, you can set this value to false. The animation will start when this is changed to true.

playMode: Controls playback of the animation. Valid values are: forward (default), reverse, loop and pingPong.

The second parameter, known as updateFunc, is a function which takes a parameter t. This is called every frame during the animation, with t running from 0 to 1.

Drawbacks 😕

As pointed out by a good Reddit user, using setState every frame can be expensive. It will trigger a rerender of the component and all its children. Therefore I recommend using this library for simple components that reside near the leafs.

Contributing 👍

Pull requests are very welcome

To test locally, you can use:

npm run build
npm run copy-to-example

Note: The copy-to-example script uses the cp command which is not available through CMD on Windows. You can use Git Bash instead.

This will compile TypeScript to JavaScript in a folder called lib and copy this folder to example/node_modules/use-anim. You can now test your new addition in the example project.

cd example
npm start

Note: Remember to run npm install in both the root directory and the example directory.