Code Monkey home page Code Monkey logo

use-scramble's Introduction

useScramble

A lightweight (1KB), high performance, react-hook for random text animations.

The hook receives a set of parameteres that allows you to customize the pace, and style of the animation.

Development

  yarn dev

Will start the playground minisite at http://localhost:1234 and build the library on watch mode


Usage

Install to your react application

  npm install use-scramble

Import and call the useScramble hook

The hook returns a ref object, that you must apply to the target node, for the animation to take over.

import { useScramble } from 'use-scramble';

export const App = () => {
  const { ref } = useScramble({
    text: 'Achilles next, that nimble runner, swift on his feet as the wind',
    speed: 0.6,
    tick: 1,
    step: 1,
    scramble: 4,
    seed: 0,
  });

  return <p ref={ref} />;
};

Manual replay

Along with the ref, the hook returns a replay function, that you can call to start the animation manually.

You can also disable the first animation, by setting the playOnMount to false.

import { useScramble } from 'use-scramble';

export const App = () => {
  const { ref, replay } = useScramble({
    text: 'Achilles next, that nimble runner, swift on his feet as the wind',
    playOnMount: false
  });

  return <p ref={ref} onMouseOver={replay} onMouseOut={replay} />;
};

API Reference

Property type default range description
playOnMount boolean true Skip the animation on the first mount input
text string - Set the text value of the animation. The animation, will start automatically.
speed number 1 0-1 Internal clock framerate. 1 will tick 60 times a second. 0 will pause the animation
tick number 1 1-∞ Controls how many ticks pass for an animation redraw. Combined with speed, you can fully control the pace rate
step number 1 1-∞ Controls the animation step. On every redraw, the algorithm moves forward, by step characters.
scramble number 1 0-∞ Controls how many times to randomize each character. A value of 0 will emulate a typewriter effect.
seed number 1 0-∞ The seed, adds randomized characters ahead of the animation step, animating characters across the text block.
chance number 1 0-1 Chance of scrambling a character, range from 0 to 1, 0 being no chance, and 1 being 100% chance.
range number[] [65,125] Unicode characters range to select random characters from
overdrive boolean, number true Defaults to underscore (95) unicode character, or provide a custom unicode value
overflow boolean true Overflow, animates over the previous text, and when false resets the text contents, and restarts the animation from an empty string.
ignore string[] [" "] Ignore specific characters when animating a string. By default only spaces are ignored, used to maintain the shape of the text.
onAnimationStart function - callback invoked when the animation starts playing
onAnimationFrame function - callback invoked on every redraw
onAnimationEnd function - callback invoked on when the animation ends

Return Values

Along with the ref the return value, contains a replay function, that you can invoke to restart the animation.

const { ref, replay } = useScramble({ text: 'your_text' });

return <p ref={ref} onclick={replay} />;

Reduced Motion

If the user has requested to minimize non-essential motion with prefers-reduced-motion:reduce, the animation is entirely disabled.

Unicode Values

Glyph Unicode Description
  32 Space mark
! 33 Exclamation mark
" 34 Quotation mark
# 35 Hash
$ 36 Dollar sign
% 37 Percent sign
& 38 Ampersand
' 39 Apostrophe
( 40 Left parenthesis
) 41 Right parenthesis
* 42 Asterisk
+ 43 Plus sign
"," 44 Comma
- 45 Hyphen-minus
. 46 Full stop
/ 47 Slash (Solidus)
0 48 Digit Zero
1 49 Digit One
2 50 Digit Two
3 51 Digit Three
4 52 Digit Four
5 53 Digit Five
6 54 Digit Six
7 55 Digit Seven
8 56 Digit Eight
9 57 Digit Nine
: 58 Colon
; 59 Semicolon
< 60 Less-than sign
= 61 Equal sign
> 62 Greater-than sign
? 63 Question mark
@ 64 At sign
A 65 Latin Capital letter A
B 66 Latin Capital letter B
C 67 Latin Capital letter C
D 68 Latin Capital letter D
E 69 Latin Capital letter E
F 70 Latin Capital letter F
G 71 Latin Capital letter G
H 72 Latin Capital letter H
I 73 Latin Capital letter I
J 74 Latin Capital letter J
K 75 Latin Capital letter K
L 76 Latin Capital letter L
M 77 Latin Capital letter M
N 78 Latin Capital letter N
O 79 Latin Capital letter O
P 80 Latin Capital letter P
Q 81 Latin Capital letter Q
R 82 Latin Capital letter R
S 83 Latin Capital letter S
T 84 Latin Capital letter T
U 85 Latin Capital letter U
V 86 Latin Capital letter V
W 87 Latin Capital letter W
X 88 Latin Capital letter X
Y 89 Latin Capital letter Y
Z 90 Latin Capital letter Z
[ 91 Left Square Bracket
\ 92 Backslash
] 93 Right Square Bracket
^ 94 Circumflex accent
_ 95 Low line
` 96 Grave accent
a 97 Latin Small Letter A
b 98 Latin Small Letter B
c 99 Latin Small Letter C
d 100 Latin Small Letter D
e 101 Latin Small Letter E
f 102 Latin Small Letter F
g 103 Latin Small Letter G
h 104 Latin Small Letter H
i 105 Latin Small Letter I
j 106 Latin Small Letter J
k 107 Latin Small Letter K
l 108 Latin Small Letter L
m 109 Latin Small Letter M
n 110 Latin Small Letter N
o 111 Latin Small Letter O
p 112 Latin Small Letter P
q 113 Latin Small Letter Q
r 114 Latin Small Letter R
s 115 Latin Small Letter S
t 116 Latin Small Letter T
u 117 Latin Small Letter U
v 118 Latin Small Letter V
w 119 Latin Small Letter W
x 120 Latin Small Letter X
y 121 Latin Small Letter Y
z 122 Latin Small Letter Z
{ 123 Left Curly Bracket
| 124 Vertical bar
} 125 Right Curly Bracket
~ 126 Tilde

use-scramble's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

xyztlp

use-scramble's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.