Skip to content

Latest commit

 

History

History
96 lines (74 loc) · 2.73 KB

README.md

File metadata and controls

96 lines (74 loc) · 2.73 KB

solid-spring

A port of react-spring, for SolidJS

solid-spring is a spring-physics first animation library for SolidJS based on react-spring/core.

This an experimental project that was made to be submitted in hack.solidjs.com, feel free to create github ticket

The API looks like this:

const styles = createSpring({
  from: {
    opacity: 0
  },
  to: {
    opacity: 1
  }
})

<animated.div style={styles()} />

The API is similar to what we have in react-spring, with small differences to make the library compatible with SolidJS

Preview

Click on the below gifs for exploring the code of each preview (ported from Poimandres examples).

Install

npm install solid-spring

Examples

Hello (opacity animation)
Svg (animating svg elements)
Numbers (non style use case)

API

createSpring

Turns values into animated-values.

import { createSpring, animated } from "solid-spring";

function ChainExample() {
  const styles = createSpring({
    loop: true,
    to: [
      { opacity: 1, color: '#ffaaee' },
      { opacity: 0, color: 'rgb(14,26,19)' },
    ],
    from: { opacity: 0, color: 'red' },
  })

  return <animated.div style={styles()}>I will fade in and out</animated.div>
}

createSpring also takes a function in case you want to pass a reactive value as a style!

const [disabled, setDisabled] = createSignal(false)

const styles = createSpring(() => ({
  pause: disabled(),
}))

createSprings

Creates multiple springs, each with its own config. Use it for static lists, etc.

Similar to useSprings in react-spring, It takes number or a function that returns a number (for reactivity) as the first argument, and a list of springs or a function that returns a spring as the second argument.

function createSprings<Props extends CreateSpringsProps>(
  lengthFn: number | (() => number),
  props: Props[] & CreateSpringsProps<PickAnimated<Props>>[]
): Accessor<SpringValues<PickAnimated<Props>>[]> & {
  ref: SpringRefType<PickAnimated<Props>>;
};

function createSprings<Props extends CreateSpringsProps>(
  lengthFn: number | (() => number),
  props: (i: number, ctrl: Controller) => Props
): Accessor<SpringValues<PickAnimated<Props>>[]> & {
  ref: SpringRefType<PickAnimated<Props>>;
};