1.4.1 • Published 2 months ago

@solid-primitives/tween v1.4.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

@solid-primitives/tween

size size stage

Creates an efficient tweening derived signal that smoothly transitions a given signal from its previous value to its next value whenever it changes.

Installation

npm install @solid-primitives/tween
# or
yarn add @solid-primitives/tween

How to use it

import { createSignal } from "solid-js";
import { createTween } from "@solid-primitives/tween";

const [value, setValue] = createSignal(0);
const tweenedValue = createTween(value, { duration: 500 });

setMyNumber(100);
// tweenedValue will now smoothly transition from 0 to 100 over 500 ms

Definition

function createTween(
  target: Accessor<number>,
  options: {
    duration?: number = 100; // ms
    easing?: (t: number) => number = (t) => t;
  }
): Accessor<number>;

target can be any reactive value (signal, memo, or function that calls such). For example, to use a component prop, specify () => props.value.

You can provide two options:

  • duration is the number of milliseconds to perform the transition from the previous value to the next value. Defaults to 100.
  • easing is a function that maps a number between 0 and 1 to a number between 0 and 1, to speed up or slow down different parts of the transition. The default easing function (t) => t is linear (no easing). A common choice is (t) => 0.5 - Math.cos(Math.PI * t) / 2.

Internally, createTween uses requestAnimationFrame to smoothly update the tweened value at the display refresh rate. After the tweened value reaches the underlying signal value, it will stop updating via requestAnimationFrame for efficiency.

Changelog

See CHANGELOG.md

1.4.1

2 months ago

1.4.0

5 months ago

1.3.0

1 year ago

1.2.8

1 year ago

1.2.7

1 year ago

1.2.6

2 years ago

1.2.5

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

3 years ago

1.2.1

3 years ago

1.2.0

3 years ago

1.1.0

3 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago