Skip to content

Commit 2d867a9

Browse files
authored
Target refactor (#44)
* deps update * allow animate api animate({ el, ...to }) * Refactor * increase size * animate({el, ...config}, to) rather than animate (to, {el, ...config}) * rename useAnimini into useAnimate * handle rotate * chore: internal rename of variables * ts: fix api.start type * chore: invert two elements in array * ts: fix three types * ci
1 parent 034be22 commit 2d867a9

File tree

39 files changed

+1625
-1008
lines changed

39 files changed

+1625
-1008
lines changed

Diff for: .changeset/pink-fishes-walk.md

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
'@animini/core': minor
3+
'@animini/core-react': minor
4+
'@animini/react-dom': minor
5+
'@animini/react-three': minor
6+
'@animini/three': minor
7+
'@animini/target-dom': minor
8+
'@animini/target-three': minor
9+
---
10+
11+
Package refactor, introducing vanilla api

Diff for: README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ yarn add @animini/react-three
2222

2323
```js
2424
import { useDrag } from '@use-gesture/react'
25-
import { useAnimini, spring } from '@animini/react-dom'
25+
import { useAnimate, spring } from '@animini/react-dom'
2626

2727
const easing = spring()
2828

2929
export default function App() {
30-
const [ref, api] = useAnimini()
30+
const [ref, api] = useAnimate()
3131

3232
useDrag(
3333
({ active, movement: [x, y] }) => {
@@ -50,7 +50,7 @@ export default function App() {
5050
Lerp is the lightest, fastest and default easing algorithm for Animini. It supports a `factor` attribute that will change the momentum of the lerp.
5151

5252
```js
53-
import { useAnimini, lerp } from '@animini/react-dom'
53+
import { useAnimate, lerp } from '@animini/react-dom'
5454

5555
const easing = lerp({ factor: 0.05 })
5656
api.start({ x: 100 }, { easing })
@@ -59,7 +59,7 @@ api.start({ x: 100 }, { easing })
5959
### Spring
6060

6161
```js
62-
import { useAnimini, spring } from '@animini/react-dom'
62+
import { useAnimate, spring } from '@animini/react-dom'
6363

6464
const easing = spring({
6565
tension: 170, // spring tension
@@ -74,7 +74,7 @@ api.start({ x: 100 }, { easing })
7474
### Ease (Bezier)
7575

7676
```js
77-
import { useAnimini, ease } from '@animini/react-dom'
77+
import { useAnimate, ease } from '@animini/react-dom'
7878

7979
const easing = ease(
8080
300, // duration of the ease in ms
@@ -91,7 +91,7 @@ Inertia aims at emulating a thrown object. Inertia will not reach its destinatio
9191
Inertia supports `min` and `max` bounds which the element will bounce against as a rubberband bouncing on a wall.
9292

9393
```js
94-
import { useAnimini, inertia } from '@animini/react-dom'
94+
import { useAnimate, inertia } from '@animini/react-dom'
9595

9696
const easing = inertia({
9797
momentum: 0.998, // momentum of the inertia

Diff for: demo/package.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
"@leva-ui/plugin-bezier": "*",
1515
"@leva-ui/plugin-spring": "*",
1616
"@react-spring/web": "^9.4.5",
17-
"@react-three/drei": "9.11.3",
18-
"@react-three/fiber": "^8.0.19",
17+
"@react-three/drei": "9.13.0",
18+
"@react-three/fiber": "^8.0.24",
1919
"@use-gesture/react": "*",
2020
"animejs": "^3.2.1",
21-
"framer-motion": "^6.3.4",
21+
"framer-motion": "^6.3.11",
2222
"gsap": "^3.10.4",
2323
"leva": "*",
2424
"motion": "^10.10.0",
@@ -29,10 +29,10 @@
2929
"wouter": "^2.8.0-alpha.2"
3030
},
3131
"devDependencies": {
32-
"@types/three": "^0.140.0",
32+
"@types/three": "^0.141.0",
3333
"@vitejs/plugin-react": "^1.3.2",
34-
"typescript": "^4.7.2",
34+
"typescript": "^4.7.3",
3535
"typescript-plugin-css-modules": "^3.4.0",
36-
"vite": "2.9.9"
36+
"vite": "2.9.12"
3737
}
3838
}

Diff for: demo/src/sandboxes/animini-config/src/App.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useControls, button } from 'leva'
22
import { spring as levaSpring } from '@leva-ui/plugin-spring'
33
import { bezier } from '@leva-ui/plugin-bezier'
4-
import { useAnimini, spring, lerp, ease } from '@animini/react-dom'
4+
import { useAnimate, spring, lerp, ease } from '@animini/react-dom'
55

66
import styles from './styles.module.css'
77

@@ -26,15 +26,15 @@ export default function App() {
2626
easing = method(get('duration'), get('easeConfig'))
2727
}
2828
try {
29-
await api.start({ clipPath: 'rect(0, 0px, 0px, 0px)' }, { easing })
30-
await api.start({ x: '50%', position: 'fixed' }, { easing })
31-
await api.start({ scale: 0.5 }, { easing })
29+
await api.start({ scale: 1.5, rotate: 75 }, { easing })
30+
await api.start({ scale: 1, rotate: 0, x: '50%' }, { easing })
31+
await api.start({ clipPath: 'rect(0, 0px, 0px, 0px)', x: 0 }, { easing })
3232
} catch {}
3333
}),
3434
stop: button(() => api.stop())
3535
})
3636

37-
const [ref, api] = useAnimini<HTMLDivElement>()
37+
const [ref, api] = useAnimate<HTMLDivElement>()
3838

3939
return (
4040
<div className="flex fill center">

Diff for: demo/src/sandboxes/animini-config/src/styles.module.css

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
border-radius: 4px;
55
background-color: #ec625c;
66
touch-action: none;
7-
transform: translate(10%);
7+
transform: translate(10%) rotate(45deg);
8+
transform-origin: top;
89
clip-path: inset(10px 20px 30px 40px);
910
}

Diff for: demo/src/sandboxes/animini-drag/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"main": "src/index.tsx",
55
"dependencies": {
66
"@leva-ui/plugin-spring": "*",
7+
"@animini/dom": "*",
78
"@animini/react-dom": "*",
89
"@use-gesture/react": "*",
910
"leva": "*",

Diff for: demo/src/sandboxes/animini-drag/src/App.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useDrag } from '@use-gesture/react'
22
import { useControls } from 'leva'
33
import { spring as levaSpring } from '@leva-ui/plugin-spring'
4-
import { useAnimini, spring, lerp } from '@animini/react-dom'
4+
import { useAnimate, spring, lerp } from '@animini/react-dom'
55
import styles from './styles.module.css'
66

77
export default function App() {
@@ -12,7 +12,7 @@ export default function App() {
1212
springConfig: levaSpring({ render: (get) => get('easeMethod') === spring })
1313
})
1414

15-
const [ref, api] = useAnimini<HTMLDivElement>()
15+
const [ref, api] = useAnimate<HTMLDivElement>()
1616
const easing = easeMethod(easeMethod === lerp ? { factor } : springConfig)
1717

1818
useDrag(

Diff for: demo/src/sandboxes/animini-inertia/src/App.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { useDrag } from '@use-gesture/react'
2-
import { useAnimini, inertia } from '@animini/react-dom'
2+
import { useAnimate, inertia } from '@animini/react-dom'
33
import { useControls } from 'leva'
44
import styles from './styles.module.css'
55

66
export default function App() {
7-
const [ref, api] = useAnimini<HTMLDivElement>()
7+
const [ref, api] = useAnimate<HTMLDivElement>()
88
const { limitXY } = useControls({
99
limitXY: {
1010
value: { x: 200, y: 200 },

Diff for: demo/src/sandboxes/animini-perf/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
"@animini/react-dom": "*",
88
"@react-spring/web": "^9.4.5",
99
"animejs": "^3.2.1",
10-
"framer-motion": "^6.3.3",
10+
"framer-motion": "^6.3.11",
1111
"gsap": "^3.10.4",
1212
"leva": "0.9.25",
13-
"motion": "^10.8.1",
13+
"motion": "^10.10.0",
1414
"react": "^18.1.0",
1515
"react-dom": "^18.1.0",
1616
"tinycolor2": "^1.4.2",

Diff for: demo/src/sandboxes/animini-perf/src/App.jsx

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { useState } from 'react'
22
import { useControls, button } from 'leva'
33
import tinycolor from 'tinycolor2'
4-
import AniminiBox from './Boxes/AniminiBox'
5-
import AniminiVanillaBox from './Boxes/AniminiVanillaBox'
6-
import SpringBox from './Boxes/SpringBox'
7-
import MotionBox from './Boxes/MotionBox'
8-
import GsapBox from './Boxes/GsapBox'
9-
import FramerMotionBox from './Boxes/FramerMotionBox'
10-
import FatBox from './Boxes/FatBox'
11-
import AnimeBox from './Boxes/AnimeBox'
4+
import Animini from './Boxes/AniminiBox'
5+
import AniminiVanilla from './Boxes/AniminiVanillaBox'
6+
import ReactSpring from './Boxes/SpringBox'
7+
import Motion from './Boxes/MotionBox'
8+
import Gsap from './Boxes/GsapBox'
9+
import FramerMotion from './Boxes/FramerMotionBox'
10+
import FatJS from './Boxes/FatBox'
11+
import AnimeJS from './Boxes/AnimeBox'
1212

1313
const COUNT = 4000
1414

@@ -42,7 +42,7 @@ export default function Perf() {
4242
const { count, Model: Box } = useControls({
4343
count: { value: 1000, min: 100, max: 4000 },
4444
Model: {
45-
options: { AniminiBox, AniminiVanillaBox, AnimeBox, SpringBox, MotionBox, FramerMotionBox, GsapBox, FatBox }
45+
options: { Animini, AniminiVanilla, AnimeJS, ReactSpring, Motion, FramerMotion, Gsap, FatJS }
4646
},
4747
Shuffle: button(() => {
4848
const ts = performance.now()

Diff for: demo/src/sandboxes/animini-perf/src/Boxes/AniminiBox.jsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import React, { useEffect } from 'react'
2-
import { useAnimini, spring } from '@animini/react-dom'
2+
import { useAnimate, spring } from '@animini/react-dom'
33

44
const config = { easing: spring() }
55

66
export default function Box({ x, y, backgroundColor, scale, style }) {
7-
const [ref, api] = useAnimini()
7+
const [ref, api] = useAnimate()
88

99
useEffect(() => {
1010
api.start({ x, y, backgroundColor, scale }, config)

Diff for: demo/src/sandboxes/animini-perf/src/Boxes/AniminiVanillaBox.jsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ const config = { easing: spring() }
55

66
export default function Box({ x, y, backgroundColor, scale, style }) {
77
const ref = useRef()
8-
const apiRef = useRef()
98

109
useEffect(() => {
11-
apiRef.current = apiRef.current || animate(ref.current)
12-
apiRef.current.start({ x, y, backgroundColor, scale }, config)
10+
animate({ el: ref.current, ...config }, { x, y, backgroundColor, scale })
1311
}, [x, y, backgroundColor, scale])
1412

1513
return <div ref={ref} style={style} />

Diff for: demo/src/sandboxes/animini-scroll/src/App.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useControls, button } from 'leva'
2-
import { useAnimini } from '@animini/react-dom'
2+
import { useAnimate } from '@animini/react-dom'
33

44
import styles from './styles.module.css'
55

@@ -10,11 +10,11 @@ export default function App() {
1010
'scroll to top': button(() => api.start({ scrollTop: 0 }))
1111
})
1212

13-
const [ref, api] = useAnimini<HTMLDivElement>()
13+
const api = useAnimate({ el: window })
1414

1515
return (
16-
<div className="flex fill center">
17-
<div className={styles.scroller} ref={ref}>
16+
<div className="flex center">
17+
<div className={styles.scroller}>
1818
<div>
1919
<div>
2020
Introduction Any Fraoch Heather Ale can find lice on some sudsy dude, but it takes a real Full Sail IPA to

Diff for: demo/src/sandboxes/animini-scroll/src/styles.module.css

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.scroller {
22
width: 100vw;
3-
height: 100vh;
4-
overflow: scroll;
3+
/* height: 100vh; */
4+
/* overflow: scroll; */
55
line-height: 1.6;
66
font-size: 2.2em;
77
font-weight: 600;

Diff for: demo/src/sandboxes/animini-three-perf/src/App.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import React, { useState, useEffect, useLayoutEffect } from 'react'
22
import * as THREE from 'three'
33
import { Canvas } from '@react-three/fiber'
4-
import { useAnimini, spring } from '@animini/react-three'
4+
import { useAnimate, spring } from '@animini/react-three'
55
import { useControls } from 'leva'
66
import { spring as levaSpring } from '@leva-ui/plugin-spring'
77

88
const colors = ['#A2CCB6', '#FCEEB5', '#EE786E', '#e0feff']
99

1010
function Box({ position, scale, rotation, color }) {
11-
const [mesh, setMesh] = useAnimini()
12-
const [material, setMaterial] = useAnimini()
11+
const [mesh, setMesh] = useAnimate()
12+
const [material, setMaterial] = useAnimate()
1313
const { springConfig } = useControls({ springConfig: levaSpring() })
1414

1515
useLayoutEffect(() => {

Diff for: demo/src/sandboxes/animini-three/src/App.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useAnimini } from '@animini/react-three'
1+
import { useAnimate } from '@animini/react-three'
22
import { useControls, button } from 'leva'
33
import { Canvas } from '@react-three/fiber'
44
import { OrbitControls } from '@react-three/drei'
@@ -7,9 +7,9 @@ import * as THREE from 'three'
77
const torusknot = new THREE.TorusKnotBufferGeometry(3, 0.8, 256, 16)
88

99
const Mesh = () => {
10-
const [mat, apiMat] = useAnimini<THREE.MeshPhysicalMaterial>()
10+
const [mat, apiMat] = useAnimate<THREE.MeshPhysicalMaterial>()
1111

12-
const [ref, api] = useAnimini<THREE.Mesh>()
12+
const [ref, api] = useAnimate<THREE.Mesh>()
1313
useControls({
1414
changeColor: button(() => apiMat.start({ color: 'rgb(255,0,0)' })),
1515
changeScale: button(() => api.start({ scale: { x: 2, y: 1, z: 2 } })),

Diff for: package.json

+17-17
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@
3131
"size-limit": [
3232
{
3333
"name": "react-dom",
34-
"import": "{ useAnimini }",
35-
"limit": "3 KB",
34+
"import": "{ useAnimate }",
35+
"limit": "5 KB",
3636
"path": "packages/react-dom/dist/*.esm.js"
3737
},
3838
{
3939
"name": "react-three",
40-
"import": "{ useAnimini }",
40+
"import": "{ useAnimate }",
4141
"limit": "3 KB",
4242
"path": "packages/react-three/dist/*.esm.js",
4343
"ignore": [
@@ -56,35 +56,35 @@
5656
"react-dom": ">=16.8.0"
5757
},
5858
"devDependencies": {
59-
"@babel/core": "^7.18.2",
59+
"@babel/core": "^7.18.5",
6060
"@babel/eslint-parser": "^7.18.2",
6161
"@babel/preset-env": "^7.18.2",
6262
"@babel/preset-react": "^7.17.12",
6363
"@babel/preset-typescript": "^7.17.12",
64-
"@changesets/cli": "^2.22.0",
64+
"@changesets/cli": "^2.23.0",
6565
"@preconstruct/cli": "^2.1.5",
66-
"@react-three/fiber": "^8.0.19",
66+
"@react-three/fiber": "^8.0.24",
6767
"@size-limit/preset-small-lib": "^7.0.8",
68-
"@types/react": "^18.0.9",
68+
"@types/react": "^18.0.12",
6969
"@types/react-dom": "^18.0.4",
70-
"@types/three": "^0.140.0",
71-
"@typescript-eslint/eslint-plugin": "^5.26.0",
72-
"@typescript-eslint/parser": "^5.26.0",
70+
"@types/three": "^0.141.0",
71+
"@typescript-eslint/eslint-plugin": "^5.28.0",
72+
"@typescript-eslint/parser": "^5.28.0",
7373
"all-contributors-cli": "^6.20.0",
74-
"eslint": "^8.16.0",
74+
"eslint": "^8.17.0",
7575
"eslint-config-react-app": "^7.0.1",
7676
"husky": "^8.0.1",
77-
"jest": "^28.1.0",
78-
"pnpm": "^7.1.7",
79-
"prettier": "^2.6.2",
77+
"jest": "^28.1.1",
78+
"pnpm": "^7.2.1",
79+
"prettier": "^2.7.0",
8080
"pretty-quick": "^3.1.3",
8181
"react": "^18.1.0",
8282
"react-dom": "^18.1.0",
8383
"size-limit": "^7.0.8",
84-
"ts-jest": "^28.0.3",
85-
"tsd": "^0.20.0",
8684
"three": "^0.141.0",
87-
"typescript": "^4.7.2"
85+
"ts-jest": "^28.0.5",
86+
"tsd": "^0.21.0",
87+
"typescript": "^4.7.3"
8888
},
8989
"prettier": {
9090
"printWidth": 120,

0 commit comments

Comments
 (0)