Package Exports
- use-scramble
- use-scramble/dist/index.js
- use-scramble/dist/use-scramble.esm.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (use-scramble) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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 |